Merge branch 'design_team' into ldap
Conflicts: vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_sort_headers.html.erb
This commit is contained in:
commit
70f6c7b540
|
@ -0,0 +1,137 @@
|
||||||
|
/*!
|
||||||
|
* jQuery imagesLoaded plugin v2.0.1
|
||||||
|
* http://github.com/desandro/imagesloaded
|
||||||
|
*
|
||||||
|
* MIT License. by Paul Irish et al.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*jshint curly: true, eqeqeq: true, noempty: true, strict: true, undef: true, browser: true */
|
||||||
|
/*global jQuery: false */
|
||||||
|
|
||||||
|
;(function($, undefined) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// blank image data-uri bypasses webkit log warning (thx doug jones)
|
||||||
|
var BLANK = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';
|
||||||
|
|
||||||
|
$.fn.imagesLoaded = function( callback ) {
|
||||||
|
var $this = this,
|
||||||
|
deferred = $.isFunction($.Deferred) ? $.Deferred() : 0,
|
||||||
|
hasNotify = $.isFunction(deferred.notify),
|
||||||
|
$images = $this.find('img').add( $this.filter('img') ),
|
||||||
|
loaded = [],
|
||||||
|
proper = [],
|
||||||
|
broken = [];
|
||||||
|
|
||||||
|
function doneLoading() {
|
||||||
|
var $proper = $(proper),
|
||||||
|
$broken = $(broken);
|
||||||
|
|
||||||
|
if ( deferred ) {
|
||||||
|
if ( broken.length ) {
|
||||||
|
deferred.reject( $images, $proper, $broken );
|
||||||
|
} else {
|
||||||
|
deferred.resolve( $images );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $.isFunction( callback ) ) {
|
||||||
|
callback.call( $this, $images, $proper, $broken );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function imgLoaded( img, isBroken ) {
|
||||||
|
// don't proceed if BLANK image, or image is already loaded
|
||||||
|
if ( img.src === BLANK || $.inArray( img, loaded ) !== -1 ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// store element in loaded images array
|
||||||
|
loaded.push( img );
|
||||||
|
|
||||||
|
// keep track of broken and properly loaded images
|
||||||
|
if ( isBroken ) {
|
||||||
|
broken.push( img );
|
||||||
|
} else {
|
||||||
|
proper.push( img );
|
||||||
|
}
|
||||||
|
|
||||||
|
// cache image and its state for future calls
|
||||||
|
$.data( img, 'imagesLoaded', { isBroken: isBroken, src: img.src } );
|
||||||
|
|
||||||
|
// trigger deferred progress method if present
|
||||||
|
if ( hasNotify ) {
|
||||||
|
deferred.notifyWith( $(img), [ isBroken, $images, $(proper), $(broken) ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
// call doneLoading and clean listeners if all images are loaded
|
||||||
|
if ( $images.length === loaded.length ){
|
||||||
|
setTimeout( doneLoading );
|
||||||
|
$images.unbind( '.imagesLoaded' );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if no images, trigger immediately
|
||||||
|
if ( !$images.length ) {
|
||||||
|
doneLoading();
|
||||||
|
} else {
|
||||||
|
$images.bind( 'load.imagesLoaded error.imagesLoaded', function( event ){
|
||||||
|
// trigger imgLoaded
|
||||||
|
imgLoaded( event.target, event.type === 'error' );
|
||||||
|
}).each( function( i, el ) {
|
||||||
|
var src = el.src;
|
||||||
|
|
||||||
|
// find out if this image has been already checked for status
|
||||||
|
// if it was, and src has not changed, call imgLoaded on it
|
||||||
|
var cached = $.data( el, 'imagesLoaded' );
|
||||||
|
if ( cached && cached.src === src ) {
|
||||||
|
imgLoaded( el, cached.isBroken );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if complete is true and browser supports natural sizes, try
|
||||||
|
// to check for image status manually
|
||||||
|
if ( el.complete && el.naturalWidth !== undefined ) {
|
||||||
|
imgLoaded( el, el.naturalWidth === 0 || el.naturalHeight === 0 );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// cached images don't fire load sometimes, so we reset src, but only when
|
||||||
|
// dealing with IE, or image is complete (loaded) and failed manual check
|
||||||
|
// webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
|
||||||
|
if ( el.readyState || el.complete ) {
|
||||||
|
el.src = BLANK;
|
||||||
|
el.src = src;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return deferred ? deferred.promise( $this ) : $this;
|
||||||
|
};
|
||||||
|
|
||||||
|
})(jQuery);
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('.upload-picture').find('img').imagesLoaded(function(){
|
||||||
|
var picH = $('.upload-picture').width()/$('.upload-picture').find('img').width()*$('.upload-picture').find('img').height();
|
||||||
|
var imgMarginTop = ($('.upload-picture').height()-picH)/2;
|
||||||
|
var d = $('.upload-picture').height();
|
||||||
|
if(imgMarginTop>0){
|
||||||
|
imgMarginTop = 0;
|
||||||
|
d = picH;
|
||||||
|
$('.upload-picture').css({height:d})
|
||||||
|
}
|
||||||
|
$('.upload-picture').find('img').css({marginTop:imgMarginTop})
|
||||||
|
$('.upload-picture').each(function (i){
|
||||||
|
$(this).mouseenter(function(){
|
||||||
|
var h= picH;
|
||||||
|
$(this).stop().animate({height:h}, 500);
|
||||||
|
$(this).find('img').stop().animate({marginTop:0}, 500);
|
||||||
|
});
|
||||||
|
$(this).mouseleave(function(){
|
||||||
|
$(this).stop().animate({height:d}, 500);
|
||||||
|
$(this).find('img').stop().animate({marginTop:imgMarginTop}, 500);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -6,10 +6,17 @@ $(document).ready(function() {
|
||||||
$("a.preview_trigger").click(function(){
|
$("a.preview_trigger").click(function(){
|
||||||
$(this).after("<span id='show_preview'></span>");
|
$(this).after("<span id='show_preview'></span>");
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type:"put",
|
type: 'PUT',
|
||||||
|
//async : true,
|
||||||
url:$(this).attr("href"),
|
url:$(this).attr("href"),
|
||||||
data:$(this).parents("form").serialize()
|
contentType: 'application/javascript; charset=utf-8',
|
||||||
}).done(function(){ $("#"+start_modal_with_id).modal('show');});
|
data:$(this).parents("form").serialize(),
|
||||||
return false;}
|
success: function (msg) {
|
||||||
);
|
$("#"+start_modal_with_id).modal('show'); },
|
||||||
|
error: function(){
|
||||||
|
alert("ERROR");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
});
|
});
|
|
@ -66,6 +66,7 @@ textarea {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-size: 100%;
|
font-size: 100%;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
button, input {
|
button, input {
|
||||||
*overflow: visible;
|
*overflow: visible;
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*permission-checkbox*/
|
||||||
|
|
||||||
|
.checkblock {
|
||||||
|
display: inline-block;
|
||||||
|
float: left;
|
||||||
|
width: 200px;
|
||||||
|
}
|
||||||
|
.check[type="checkbox"]{
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
.checkbox{
|
||||||
|
padding: 5px;
|
||||||
|
margin: 5px 5px 10px;
|
||||||
|
display: inline-block;
|
||||||
|
color:#777777;
|
||||||
|
text-shadow: 0 1px 0px rgba(255,255,255,.4);
|
||||||
|
border-radius: 3px;
|
||||||
|
-moz-border-radius: 3px;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
height: 30px;
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #ededed), color-stop(1, #dfdfdf) );
|
||||||
|
background:-moz-linear-gradient( center top, #ededed 5%, #dfdfdf 100% );
|
||||||
|
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#dfdfdf');
|
||||||
|
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
}
|
||||||
|
.checkbox .check-icon {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
background: url(<%= asset_path 'check.png' %>) no-repeat left top;
|
||||||
|
right: -10px;
|
||||||
|
top: 15px;
|
||||||
|
}
|
||||||
|
.checkbox .member-name {
|
||||||
|
cursor: pointer;
|
||||||
|
font-family: helvetica;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 30px;
|
||||||
|
padding: 0 10px 0 40px;
|
||||||
|
color: #333333;
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
.member-avatar {
|
||||||
|
position: absolute;
|
||||||
|
width: 34px;
|
||||||
|
height: 34px;
|
||||||
|
overflow: hidden;
|
||||||
|
margin-top: -2px;
|
||||||
|
}
|
||||||
|
img.member-img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
.checked .check-icon {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.popover-inner {
|
||||||
|
width: auto;
|
||||||
|
display: inline-block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.popover-title {
|
||||||
|
display: block;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: normal;
|
||||||
|
padding: 3px 10px;
|
||||||
|
}
|
||||||
|
.popover-content {
|
||||||
|
padding: 3px 10px;
|
||||||
|
color: #898989;
|
||||||
|
}
|
||||||
|
.popover-content p {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
|
@ -5,8 +5,8 @@
|
||||||
*= require reset
|
*= require reset
|
||||||
*= require_self
|
*= require_self
|
||||||
*= require message
|
*= require message
|
||||||
*= require style
|
|
||||||
*= require bootstrap
|
*= require bootstrap
|
||||||
|
*= require style
|
||||||
*= require bootstrap-orbit
|
*= require bootstrap-orbit
|
||||||
*= require list
|
*= require list
|
||||||
*= require widgets
|
*= require widgets
|
||||||
|
|
|
@ -565,7 +565,9 @@
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
.popover-content {
|
.popover-content {
|
||||||
border-radius: 3px;
|
-webkit-border-radius: 0 0 3px 3px;
|
||||||
|
-moz-border-radius: 0 0 3px 3px;
|
||||||
|
border-radius: 0 0 3px 3px;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
.popover-title {
|
.popover-title {
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
border-radius: 0 3px 3px 0;
|
border-radius: 0 3px 3px 0;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
width: 180px;
|
width: 193px;
|
||||||
}
|
}
|
||||||
.file-upload .upload {
|
.file-upload .upload {
|
||||||
margin:0;
|
margin:0;
|
||||||
|
|
|
@ -46,7 +46,7 @@ class Admin::AdBannersController < ApplicationController
|
||||||
|
|
||||||
def realtime_preview
|
def realtime_preview
|
||||||
@ad_banner = AdBanner.first(conditions: { title: params[:title] }).preview_clone
|
@ad_banner = AdBanner.first(conditions: { title: params[:title] }).preview_clone
|
||||||
@ad_banner.update_attributes(params[:ad_banner]).update_attributes(params[:ad_images])
|
#@ad_banner.update_attributes(params[:ad_banner]).update_attributes(params[:ad_images])
|
||||||
end
|
end
|
||||||
|
|
||||||
def index
|
def index
|
||||||
|
|
|
@ -19,6 +19,8 @@ class Admin::AdImagesController < ApplicationController
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@ad_image =AdImage.new
|
@ad_image =AdImage.new
|
||||||
|
@ad_image.post_date = Date.today
|
||||||
|
@ad_image.unpost_date = Date.today + 30
|
||||||
#render :action => 'new',:url=> {:ad_banner_id => params.has_key?(:ad_banner_id)? params[:ad_banner_id],nil}
|
#render :action => 'new',:url=> {:ad_banner_id => params.has_key?(:ad_banner_id)? params[:ad_banner_id],nil}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ class AdBanner
|
||||||
include Mongoid::MultiParameterAttributes
|
include Mongoid::MultiParameterAttributes
|
||||||
|
|
||||||
field :title
|
field :title
|
||||||
field :transition_sec,type: Integer
|
field :transition_msec,type: Integer
|
||||||
field :ad_fx #TODO Design should explain
|
field :ad_fx #TODO Design should explain
|
||||||
|
|
||||||
before_save :save_or_destroy
|
before_save :save_or_destroy
|
||||||
|
@ -13,6 +13,14 @@ class AdBanner
|
||||||
has_many :ad_images , dependent: :delete
|
has_many :ad_images , dependent: :delete
|
||||||
|
|
||||||
FX_TYPES = ["blindX","blindY","blindZ","cover","curtainX","curtainY","fade","fadeZoom","growX","growY","scrollUp","scrollDown","scrollLeft","scrollRight","scrollHorz","scrollVert","shuffle","slideX","slideY","toss","turnUp","turnDown","turnLeft","turnRight","uncover","wipe","zoom"]
|
FX_TYPES = ["blindX","blindY","blindZ","cover","curtainX","curtainY","fade","fadeZoom","growX","growY","scrollUp","scrollDown","scrollLeft","scrollRight","scrollHorz","scrollVert","shuffle","slideX","slideY","toss","turnUp","turnDown","turnLeft","turnRight","uncover","wipe","zoom"]
|
||||||
|
attr_writer :transition_sec
|
||||||
|
def transition_sec
|
||||||
|
self.transition_msec/1000 rescue nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def transition_sec=(sec)
|
||||||
|
self.transition_msec = sec.to_i*1000
|
||||||
|
end
|
||||||
|
|
||||||
def preview_clone
|
def preview_clone
|
||||||
preview_banner = self.clone
|
preview_banner = self.clone
|
||||||
|
|
|
@ -24,16 +24,15 @@ class AdImage
|
||||||
|
|
||||||
# validates_numericality_of :weight, greater_than_or_equal_to: 1,less_than_or_equal_to: 10
|
# validates_numericality_of :weight, greater_than_or_equal_to: 1,less_than_or_equal_to: 10
|
||||||
# validates_format_of :out_link, with: /(http:\/\/.*|)/ ,:message => 'Need a valid URL'
|
# validates_format_of :out_link, with: /(http:\/\/.*|)/ ,:message => 'Need a valid URL'
|
||||||
# validates_presence_of :post_date,:message => 'Need a valid post date'
|
|
||||||
attr_reader :parse_post_date,:parse_unpost_date
|
attr_reader :parse_post_date,:parse_unpost_date
|
||||||
|
|
||||||
def parse_post_date=(att)
|
def parse_post_date=(att)
|
||||||
self.post_date = (Date.parse att rescue nil)
|
self.post_date = (Date.parse att.gsub(/\s+/, "") rescue nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def parse_unpost_date=(att)
|
def parse_unpost_date=(att)
|
||||||
self.unpost_date = (Date.parse att rescue nil)
|
self.unpost_date = (Date.parse att.gsub(/\s+/, "") rescue nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
def display?
|
def display?
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<%= f.label :ad_fx, t('admin.ad.ab_fx') %>
|
<%= f.label :ad_fx, t('admin.ad.ab_fx') %>
|
||||||
<%= f.select :ad_fx ,AdBanner::FX_TYPES %>
|
<%= f.select :ad_fx ,AdBanner::FX_TYPES %>
|
||||||
<%= f.label :transition_sec, t('admin.ad.transition_sec') %>
|
<%= f.label :transition_sec, t('admin.ad.transition_sec') %>
|
||||||
<%= f.text_field :transition_sec,:placeholder=>"3秒請輸入3000",:class=> "span3" %> <%= t("admin.ad.trans_unit_sec") %>
|
<%= f.text_field :transition_sec,:placeholder=>t('admin.ad.sec_place_holder'),:class=> "span3" %> <%= t("admin.ad.trans_unit_sec") %>
|
||||||
<%= f.submit t("admin.ad.update_banner") %>
|
<%= f.submit t("admin.ad.update_banner") %>
|
||||||
<%= f.submit t("cancel"),:type=>'reset' %>
|
<%= f.submit t("cancel"),:type=>'reset' %>
|
||||||
<div class="adbanner-list">
|
<div class="adbanner-list">
|
||||||
|
|
|
@ -40,11 +40,13 @@ $('#new_ad_banner_tab_but').on('shown', function (e) {
|
||||||
$('#new-a-banner').modal({show: true});
|
$('#new-a-banner').modal({show: true});
|
||||||
});
|
});
|
||||||
|
|
||||||
<% if params[:action] == "new" -%>
|
|
||||||
$('#new-a-banner').modal({show: true});
|
|
||||||
<% end -%>
|
|
||||||
$('#new-a-banner').on('hidden', function (e) {
|
$('#new-a-banner').on('hidden', function (e) {
|
||||||
$(".nav.nav-tabs a[id!='new_ad_banner_tab_but']:last").tab('show');
|
$('#post-body-content').find(".nav.nav-tabs").children('li.active').removeClass("active");
|
||||||
|
|
||||||
|
$('#post-body-content').find(".nav.nav-tabs").children('li[id!="new_ad_banner_tab_but"]').last().addClass("active");
|
||||||
|
$('.tab-pane').find(".nav.nav-tabs").children('li[id!="new_ad_banner_tab_but"]').last().addClass("active");
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
<%= javascript_include_tag "lib/date.format" %>
|
<%= javascript_include_tag "lib/date.format" %>
|
||||||
<%= javascript_include_tag "inc/modal-preview" %>
|
<%= javascript_include_tag "inc/modal-preview" %>
|
||||||
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
|
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
|
||||||
|
<%= javascript_include_tag "inc/jquery.imagesloaded" %>
|
||||||
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
@ -23,8 +24,8 @@
|
||||||
<div id="calendarRange">
|
<div id="calendarRange">
|
||||||
<div class="input-append">
|
<div class="input-append">
|
||||||
<span class="showDate"></span><span class="add-on btn">▼</span>
|
<span class="showDate"></span><span class="add-on btn">▼</span>
|
||||||
<%= f.hidden_field :parse_post_date %>
|
<%= f.hidden_field :parse_post_date,:value => @ad_image.post_date.strftime('%Y / %m / %d') %>
|
||||||
<%= f.hidden_field :parse_unpost_date%>
|
<%= f.hidden_field :parse_unpost_date,:value => @ad_image.unpost_date.strftime('%Y / %m / %d')%>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div id="widgetCalendar">
|
<div id="widgetCalendar">
|
||||||
|
@ -77,41 +78,16 @@
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<div class="upload-picture">
|
<div class="upload-picture">
|
||||||
<!--請程式務必將圖片尺寸加入到行內裡-->
|
<!--請程式務必將圖片尺寸加入到行內裡-->
|
||||||
<%= image_tag @ad_image.file,:width=> "456",:height=>'700' rescue ''%>
|
<%= image_tag @ad_image.file rescue ''%>
|
||||||
<script type="text/javascript">
|
|
||||||
var picH = $('.upload-picture').width()/$('.upload-picture').find('img').attr("width")*$('.upload-picture').find('img').attr("height")
|
|
||||||
var imgMarginTop = ($('.upload-picture').height()-picH)/2;
|
|
||||||
var d = $('.upload-picture').height();
|
|
||||||
if(imgMarginTop>0){
|
|
||||||
imgMarginTop = 0;
|
|
||||||
d = picH;
|
|
||||||
$('.upload-picture').css({height:d})
|
|
||||||
}
|
|
||||||
$('.upload-picture').find('img').css({marginTop:imgMarginTop})
|
|
||||||
$('.upload-picture').each(function (i){
|
|
||||||
$(this).mouseenter(function(){
|
|
||||||
var h= picH;
|
|
||||||
$(this).stop().animate({height:h}, 500);
|
|
||||||
$(this).find('img').stop().animate({marginTop:0}, 500);
|
|
||||||
});
|
|
||||||
$(this).mouseleave(function(){
|
|
||||||
$(this).stop().animate({height:d}, 500);
|
|
||||||
$(this).find('img').stop().animate({marginTop:imgMarginTop}, 500);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</div>
|
</div>
|
||||||
<span class="alert widgetInfo">此區塊圖片尺寸請使用580px × 225px</span>
|
<span class="alert widgetInfo">此區塊圖片尺寸請使用580px × 225px</span>
|
||||||
<div class="controls file-upload input-prepend">
|
<div class="controls file-upload input-prepend">
|
||||||
<label class="control-label add-on btn" for="input-upload">
|
<label class="control-label add-on btn" for="input-upload">
|
||||||
Choose file
|
Choose file
|
||||||
|
|
||||||
<%= f.file_field :file,:id=>"input-upload",:class => "upload", :onchange=> "document.getElementById('fu1').innerHTML = this.form.fu1.value = this.value;" %>
|
<%= f.file_field :file,:id=>"input-upload",:class => "upload", :onchange=> "document.getElementById('fu1').innerHTML = this.form.fu1.value = this.value;" %>
|
||||||
</label>
|
</label>
|
||||||
<span id="fu1" class="file-name"></span>
|
<span id="fu1" class="file-name"></span>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
|
||||||
<input name="fu1" class="input-medium" type="text">
|
<input name="fu1" class="input-medium" type="text">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -180,17 +156,12 @@
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-actions">
|
|
||||||
<button class="btn btn-success" type="submit">Preview/預覽</button>
|
|
||||||
<button class="btn btn-primary" type="submit">Submit/送出</button>
|
|
||||||
<button class="btn" type="reset">Cancel/取消</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!--Post End-->
|
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<%= link_to t("modal.preview"), admin_realtime_preview_ad_banner_path(@ad_image.ad_banner.title) ,:class=>"preview_trigger btn btn-success" rescue nil%>
|
<%= link_to t("modal.preview"), admin_realtime_preview_ad_banner_path(@ad_image.ad_banner.title) ,:class=>"preview_trigger btn btn-success" rescue nil%>
|
||||||
<%= f.submit t("submit"),:class=>"btn btn-primary" %>
|
<%= f.submit t("submit"),:class=>"btn btn-primary" %>
|
||||||
<%= f.submit t("cancel"),:class=>"btn ",:type => 'reset' %>
|
<%= f.submit t("cancel"),:class=>"btn ",:type => 'reset' %>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
<!--Post End-->
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
|
@ -7,7 +7,7 @@
|
||||||
<div id="container" class="sign-in">
|
<div id="container" class="sign-in">
|
||||||
<%= form_for :user, :url => user_session_path, :html => {:class => 'user_new form-horizontal'} do |f| %>
|
<%= form_for :user, :url => user_session_path, :html => {:class => 'user_new form-horizontal'} do |f| %>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<p class="notice hide">Notice</p>
|
<p class="notice label label-warning">Notice</p>
|
||||||
<p class="alert hide">You need to sign in or sign up before continuing.</p>
|
<p class="alert hide">You need to sign in or sign up before continuing.</p>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<div class="control-group clear">
|
<div class="control-group clear">
|
||||||
|
|
|
@ -5,12 +5,12 @@
|
||||||
<a class="brand dropdown-toggle" data-toggle="dropdown" href="#">Orbit</a>
|
<a class="brand dropdown-toggle" data-toggle="dropdown" href="#">Orbit</a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
<li><%= link_to content_tag(:i, nil, :class => 'icons-dashboard') + t('admin.dashboard'), admin_dashboards_path %></li>
|
<li><%= link_to content_tag(:i, nil, :class => 'icons-dashboard') + t('admin.dashboard'), admin_dashboards_path %></li>
|
||||||
<li><a href="#"><i class="icons-content"></i><%= t('admin.content') %></a></li>
|
<li><%#= link_to content_tag(:i, nil, :class => 'icons-content') + t('admin.content') %></li>
|
||||||
<li><%= link_to content_tag(:i, nil, :class => 'icons-member') + t('admin.member'), admin_users_path %></li>
|
<li><%#= link_to content_tag(:i, nil, :class => 'icons-member') + t('admin.member'), admin_users_path %></li>
|
||||||
<li><%= link_to content_tag(:i, nil, :class => 'icons-asset') + t('admin.asset'), admin_assets_path %></li>
|
<li><%#= link_to content_tag(:i, nil, :class => 'icons-asset') + t('admin.asset'), admin_assets_path %></li>
|
||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
<li><%= link_to content_tag(:i, nil, :class => 'icons-structure') + t('admin.structure'), admin_items_path %></li>
|
<li><%= link_to content_tag(:i, nil, :class => 'icons-structure') + t('admin.structure'), admin_items_path %></li>
|
||||||
<li><a href="#"><i class="icons-plus-cube"></i><%= t('admin.add_item') %></a></li>
|
<li><%#= link_to content_tag(:i, nil, :class => 'icons-plus-cube') + t('admin.add_item') %></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
|
|
|
@ -9,6 +9,7 @@ en:
|
||||||
account_settings: Account settings
|
account_settings: Account settings
|
||||||
add: Add
|
add: Add
|
||||||
back: Back
|
back: Back
|
||||||
|
browse: Browse
|
||||||
cancel: Cancel
|
cancel: Cancel
|
||||||
create: Create
|
create: Create
|
||||||
delete: Delete
|
delete: Delete
|
||||||
|
@ -46,6 +47,7 @@ en:
|
||||||
action: Action
|
action: Action
|
||||||
ad_banner: AD Banner
|
ad_banner: AD Banner
|
||||||
ad:
|
ad:
|
||||||
|
sec_place_holder: Enter 3 if 3 sec
|
||||||
ab_fx: FX
|
ab_fx: FX
|
||||||
all_banners: AdBanner list
|
all_banners: AdBanner list
|
||||||
banner_best_size: Banner Best Size
|
banner_best_size: Banner Best Size
|
||||||
|
|
|
@ -6,6 +6,7 @@ zh_tw:
|
||||||
account_settings: 帳號設定
|
account_settings: 帳號設定
|
||||||
add: 新增
|
add: 新增
|
||||||
back: 回上一步
|
back: 回上一步
|
||||||
|
browse: 選擇檔案
|
||||||
cancel: 取消
|
cancel: 取消
|
||||||
create: 創建
|
create: 創建
|
||||||
delete: 刪除
|
delete: 刪除
|
||||||
|
@ -43,6 +44,7 @@ zh_tw:
|
||||||
action: 操作
|
action: 操作
|
||||||
ad_banner: 廣告輪播
|
ad_banner: 廣告輪播
|
||||||
ad:
|
ad:
|
||||||
|
sec_place_holder: 3秒請輸入3
|
||||||
ab_fx: 轉場特效
|
ab_fx: 轉場特效
|
||||||
all_banners: 輪播清單
|
all_banners: 輪播清單
|
||||||
banner_best_size: Banner 尺寸
|
banner_best_size: Banner 尺寸
|
||||||
|
@ -59,7 +61,7 @@ zh_tw:
|
||||||
add_language: 新增語言
|
add_language: 新增語言
|
||||||
add_drop_down_item: +增加Orbit選單
|
add_drop_down_item: +增加Orbit選單
|
||||||
admin: 管理
|
admin: 管理
|
||||||
announcement: 公告系統
|
announcement: 公告管理
|
||||||
asset: 資產
|
asset: 資產
|
||||||
assets:
|
assets:
|
||||||
file: 檔案
|
file: 檔案
|
||||||
|
@ -155,6 +157,7 @@ zh_tw:
|
||||||
purchase: 購買
|
purchase: 購買
|
||||||
role: 角色
|
role: 角色
|
||||||
roles: 角色
|
roles: 角色
|
||||||
|
site_setting: 基本設定
|
||||||
setup_member: 成員設置
|
setup_member: 成員設置
|
||||||
setup_translations: 語系設定
|
setup_translations: 語系設定
|
||||||
setup_designs: 版型設定
|
setup_designs: 版型設定
|
||||||
|
|
|
@ -25,7 +25,7 @@ Orbit::Application.routes.draw do
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
match 'ad_banner/:title/preivew' => 'ad_banners#realtime_preview',:as => :realtime_preview_ad_banner,:via => :put
|
match 'ad_banner/:title/preview' => 'ad_banners#realtime_preview',:as => :realtime_preview_ad_banner,:via => :put
|
||||||
resources :ad_banners do
|
resources :ad_banners do
|
||||||
collection do
|
collection do
|
||||||
match 'new_ad_image' => 'ad_images#new',:as => :new_ad_image,:via => :get
|
match 'new_ad_image' => 'ad_images#new',:as => :new_ad_image,:via => :get
|
||||||
|
|
|
@ -110,13 +110,17 @@ module ParserCommon
|
||||||
def parse_sub_menus(body = nil, page = nil, id = nil)
|
def parse_sub_menus(body = nil, page = nil, id = nil)
|
||||||
body.css('sub_menu').each do |sub_menu|
|
body.css('sub_menu').each do |sub_menu|
|
||||||
res = ''
|
res = ''
|
||||||
res << "<ul>"
|
res << "<div class='category_list'>"
|
||||||
|
res << "<h3 class='h3'>#{page.i18n_variable[I18n.locale]}</h3>"
|
||||||
|
res << "<ul class='list'>"
|
||||||
page.children.each do |child|
|
page.children.each do |child|
|
||||||
res << "<li>"
|
res << "<li>"
|
||||||
res << "<a href='#{child.full_name}'>#{child.i18n_variable[I18n.locale]}</a>"
|
res << "<a href='#{child.full_name}'>#{child.i18n_variable[I18n.locale]}</a>"
|
||||||
res << "</li>"
|
res << "</li>"
|
||||||
end
|
end
|
||||||
res << "</ul>"
|
res << "</ul>"
|
||||||
|
res << "</h3>"
|
||||||
|
res << "</div>"
|
||||||
fragment = Nokogiri::HTML::DocumentFragment.new(body, res)
|
fragment = Nokogiri::HTML::DocumentFragment.new(body, res)
|
||||||
sub_menu.swap(fragment)
|
sub_menu.swap(fragment)
|
||||||
end
|
end
|
||||||
|
|
|
@ -91,7 +91,7 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
|
||||||
# GET /bulletins/1/edit
|
# GET /bulletins/1/edit
|
||||||
def edit
|
def edit
|
||||||
@bulletin = Bulletin.find(params[:id])
|
@bulletin = Bulletin.find(params[:id])
|
||||||
if @bulletin.is_rejected?
|
if !current_user.admin? && (@bulletin.is_rejected? || @bulletin.is_checked?)
|
||||||
redirect_to :action => :index
|
redirect_to :action => :index
|
||||||
else
|
else
|
||||||
# @summary_variable = @bulletin.summary_variable
|
# @summary_variable = @bulletin.summary_variable
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<span class="label"><%= t(:pending) %></span>
|
<span class="label"><%= t(:pending) %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if bulletin.is_checked? %>
|
<% if bulletin.is_checked? %>
|
||||||
<span class="label"><%= t(:checked) %></span>
|
<span class="label"><%= t(:passed) %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if bulletin.is_rejected? %>
|
<% if bulletin.is_rejected? %>
|
||||||
<span class="label"><%= t(:rejected) %></span>
|
<span class="label"><%= t(:rejected) %></span>
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
<%= link_to bulletin.title[I18n.locale], panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id) rescue ''%>
|
<%= link_to bulletin.title[I18n.locale], panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id) rescue ''%>
|
||||||
<div class="quick-edit">
|
<div class="quick-edit">
|
||||||
<ul class="nav nav-pills hide">
|
<ul class="nav nav-pills hide">
|
||||||
<% unless bulletin.is_rejected?%>
|
<% if current_user.admin? || (!bulletin.is_rejected? && !bulletin.is_checked?) %>
|
||||||
<li><%= link_to t('bulletin.edit'), edit_panel_announcement_back_end_bulletin_path(bulletin) %></li>
|
<li><%= link_to t('bulletin.edit'), edit_panel_announcement_back_end_bulletin_path(bulletin) %></li>
|
||||||
<li class="dropdown">
|
<li class="dropdown">
|
||||||
<a href="#" data-toggle="dropdown" class="dropdown-toggle"><%= t(:quick_edit) %><b class="caret"></b></a>
|
<a href="#" data-toggle="dropdown" class="dropdown-toggle"><%= t(:quick_edit) %><b class="caret"></b></a>
|
||||||
|
|
|
@ -4,23 +4,31 @@
|
||||||
<%= f.error_messages %>
|
<%= f.error_messages %>
|
||||||
|
|
||||||
<div id="sub-wiget">
|
<div id="sub-wiget">
|
||||||
<div id="widget-picture" class="widget-box widget-size-300">
|
<div id="widget-picture" class="widget-box">
|
||||||
<div class="widget-action clear">
|
<div class="widget-action clear">
|
||||||
<a class="action"><i title="Upload pictures" class="icon-exclamation-sign icon-white tip"></i></a>
|
<a class="action"><i title="Upload pictures" class="icon-exclamation-sign icon-white tip"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<h3 class="widget-title"><i class="icons-picture icons-white"></i>Picture</h3>
|
<h3 class="widget-title"><i class="icons-picture icons-white"></i>Picture</h3>
|
||||||
<div class="widget-content clear">
|
<div class="widget-content clear">
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
|
<!-- <img class="pull-left upload-picture" src="/assets/default-img.png" /> -->
|
||||||
|
<div class="upload-picture">
|
||||||
|
<!--請程式務必將圖片尺寸加入到行內裡-->
|
||||||
|
<% if @bulletin.image %>
|
||||||
|
<%= image_tag @bulletin.image, :width=> "456", :height=>'700' rescue ''%>
|
||||||
|
<% else %>
|
||||||
<img class="pull-left upload-picture" src="/assets/default-img.png" />
|
<img class="pull-left upload-picture" src="/assets/default-img.png" />
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<div class="controls file-upload">
|
</div>
|
||||||
<label class="control-label btn" for="input-upload">
|
<div class="controls file-upload input-prepend">
|
||||||
Browse/選擇檔案
|
<label class="control-label add-on btn" for="input-upload">
|
||||||
|
<%= t(:browse) %>
|
||||||
<%= f.file_field :image, :id => "input-upload", :class => 'upload', :onchange => "document.getElementById('fu').innerHTML = this.form.fu.value = this.value;" %>
|
<%= f.file_field :image, :id => "input-upload", :class => 'upload', :onchange => "document.getElementById('fu').innerHTML = this.form.fu.value = this.value;" %>
|
||||||
</label>
|
</label>
|
||||||
<span id='fu' class="file-name"></span>
|
<span id='fu' class="file-name"></span>
|
||||||
<br>
|
<br>
|
||||||
<input name='fu' class="input-large" type="text">
|
<input name='fu' class="input-medium" type="text">
|
||||||
<br>
|
<br>
|
||||||
<% if @bulletin.image.file %>
|
<% if @bulletin.image.file %>
|
||||||
<%= f.check_box :remove_image %>
|
<%= f.check_box :remove_image %>
|
||||||
|
@ -31,6 +39,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="widget-date" class="widget-box widget-size-300">
|
<div id="widget-date" class="widget-box widget-size-300">
|
||||||
<div class="widget-action clear">
|
<div class="widget-action clear">
|
||||||
<a href="#" class="action"><i title="Set the announcement to start and end dates" class="icon-exclamation-sign icon-white tip"></i></a>
|
<a href="#" class="action"><i title="Set the announcement to start and end dates" class="icon-exclamation-sign icon-white tip"></i></a>
|
||||||
|
@ -198,7 +208,7 @@
|
||||||
<td style="text-align:center" colspan="4">
|
<td style="text-align:center" colspan="4">
|
||||||
<div id='add_bulletin_link' class="info_input bulletin_links_block">
|
<div id='add_bulletin_link' class="info_input bulletin_links_block">
|
||||||
<%= hidden_field_tag 'bulletin_link_field_count', @bulletin.bulletin_links.count %>
|
<%= hidden_field_tag 'bulletin_link_field_count', @bulletin.bulletin_links.count %>
|
||||||
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> ADD/新增</span></a>
|
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i><%= t(:add) %></span></a>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -243,7 +253,7 @@
|
||||||
<td style="text-align:center" colspan="4">
|
<td style="text-align:center" colspan="4">
|
||||||
<div id='add_bulletin_file' class="info_input bulletin_files_block">
|
<div id='add_bulletin_file' class="info_input bulletin_files_block">
|
||||||
<%= hidden_field_tag 'bulletin_file_field_count', @bulletin.bulletin_files.count %>
|
<%= hidden_field_tag 'bulletin_file_field_count', @bulletin.bulletin_files.count %>
|
||||||
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i> ADD/新增</span></a>
|
<a class="add"><span class="btn btn-primary btn-small"><i class="icon-plus icon-white"></i><%= t(:add) %></span></a>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -281,6 +291,7 @@
|
||||||
|
|
||||||
<% content_for :page_specific_javascript do %>
|
<% content_for :page_specific_javascript do %>
|
||||||
<%= javascript_include_tag "bulletin_form" %>
|
<%= javascript_include_tag "bulletin_form" %>
|
||||||
|
<%= javascript_include_tag "inc/jquery.imagesloaded" %>
|
||||||
<script>
|
<script>
|
||||||
$('#add_bulletin_link a.add').live('click', function(){
|
$('#add_bulletin_link a.add').live('click', function(){
|
||||||
var new_id = $(this).prev().attr('value');
|
var new_id = $(this).prev().attr('value');
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= f.file_field :file %>
|
<%= f.file_field :file %>
|
||||||
|
<%= form_bulletin_file.file.file ? ( link_to t(:view), form_bulletin_file.file.url, {:target => '_blank', :title => t(:view)} ) : '' %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -19,7 +20,7 @@
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label for="link-<%= locale %>" class="control-label"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></label>
|
<label for="link-<%= locale %>" class="control-label"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= f.text_field locale, :id => "link-#{locale}", :class => "input-xlarge" %>
|
<%= f.text_field locale, :id => "link-#{locale}" %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -43,7 +44,7 @@
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label for="link-<%= locale %>" class="control-label"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></label>
|
<label for="link-<%= locale %>" class="control-label"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></label>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<%= f.text_field locale, :id => "link-#{locale}", :class => "input-xlarge" %>
|
<%= f.text_field locale, :id => "link-#{locale}" %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -6,25 +6,25 @@
|
||||||
<a href='#' class="list-remove"><i class="icon-trash"></i></a>
|
<a href='#' class="list-remove"><i class="icon-trash"></i></a>
|
||||||
</th>
|
</th>
|
||||||
<th class="sort span1-2 <%= is_sort_active?('status') %>">
|
<th class="sort span1-2 <%= is_sort_active?('status') %>">
|
||||||
<%= link_to t('bulletin.status') + content_tag(:b, nil, :class => is_sort?('status')), panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('status'))), :class => 'js_history' %>
|
<%= link_to (t('bulletin.status') + content_tag(:b, nil, :class => is_sort?('status'))).html_safe, panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('status'))), :class => 'js_history' %>
|
||||||
</th>
|
</th>
|
||||||
<th class="sort span1-2 <%= is_sort_active?('category') %>">
|
<th class="sort span1-2 <%= is_sort_active?('category') %>">
|
||||||
<%= (link_to t('bulletin.category') + content_tag(:b, nil, :class => is_sort?('category')), panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('category'))), :class => 'js_history').html_safe %>
|
<%= link_to (t('bulletin.category') + content_tag(:b, nil, :class => is_sort?('category'))).html_safe, panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('category'))), :class => 'js_history' %>
|
||||||
</th>
|
</th>
|
||||||
<th class="sort span7 <%= is_sort_active?('title') %>">
|
<th class="sort span7 <%= is_sort_active?('title') %>">
|
||||||
<%= link_to t('bulletin.title') + content_tag(:b, nil, :class => is_sort?('title')), panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('title'))), :class => 'js_history' %>
|
<%= link_to (t('bulletin.title') + content_tag(:b, nil, :class => is_sort?('title'))).html_safe, panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('title'))), :class => 'js_history' %>
|
||||||
</th>
|
</th>
|
||||||
<th class="sort span1-2 <%= is_sort_active?('postdate') %>">
|
<th class="sort span1-2 <%= is_sort_active?('postdate') %>">
|
||||||
<%= link_to t('bulletin.start_date') + content_tag(:b, nil, :class => is_sort?('postdate')), panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('postdate'))), :class => 'js_history' %>
|
<%= link_to (t('bulletin.start_date') + content_tag(:b, nil, :class => is_sort?('postdate'))).html_safe, panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('postdate'))), :class => 'js_history' %>
|
||||||
</th>
|
</th>
|
||||||
<th class="sort span1-2 <%= is_sort_active?('deadline') %>">
|
<th class="sort span1-2 <%= is_sort_active?('deadline') %>">
|
||||||
<%= link_to t('bulletin.end_date') + content_tag(:b, nil, :class => is_sort?('deadline')), panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('deadline'))), :class => 'js_history' %>
|
<%= link_to (t('bulletin.end_date') + content_tag(:b, nil, :class => is_sort?('deadline'))).html_safe, panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('deadline'))), :class => 'js_history' %>
|
||||||
</th>
|
</th>
|
||||||
<th class="sort span1-2 <%= is_sort_active?('tags') %>">
|
<th class="sort span1-2 <%= is_sort_active?('tags') %>">
|
||||||
<%= link_to t('bulletin.tags') + content_tag(:b, nil, :class => is_sort?('tags')), panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('tags'))), :class => 'js_history' %>
|
<%= link_to (t('bulletin.tags') + content_tag(:b, nil, :class => is_sort?('tags'))).html_safe, panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('tags'))), :class => 'js_history' %>
|
||||||
</th>
|
</th>
|
||||||
<th class="sort span1-3 <%= is_sort_active?('update_user_id') %>">
|
<th class="sort span1-3 <%= is_sort_active?('update_user_id') %>">
|
||||||
<%= link_to t('bulletin.last_modified') + content_tag(:b, nil, :class => is_sort?('update_user_id')), panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('update_user_id'))), :class => 'js_history' %>
|
<%= link_to (t('bulletin.last_modified') + content_tag(:b, nil, :class => is_sort?('update_user_id'))).html_safe, panel_announcement_back_end_bulletins_path({:filter => @filter}.merge(sortable('update_user_id'))), :class => 'js_history' %>
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
<% content_for :page_specific_javascript do %>
|
<% content_for :page_specific_javascript do %>
|
||||||
<%= javascript_include_tag "bootstrap" %>
|
<%= javascript_include_tag "bootstrap" %>
|
||||||
<%= javascript_include_tag "inc/permission-checkbox" %>
|
<%#= javascript_include_tag "inc/permission-checkbox" %>
|
||||||
<%= javascript_include_tag "inc/search" %>
|
<%#= javascript_include_tag "inc/search" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%#= label_tag :fact_check_setting, t("announcement.bulletin.fact_check_setting") %>
|
<%#= label_tag :fact_check_setting, t("announcement.bulletin.fact_check_setting") %>
|
||||||
<%= form_tag('', :remote => true) %>
|
<%= form_tag('', :remote => true) %>
|
||||||
|
|
|
@ -5,6 +5,12 @@ en:
|
||||||
|
|
||||||
_locale: English
|
_locale: English
|
||||||
|
|
||||||
|
basic: Basic
|
||||||
|
picture: Piture
|
||||||
|
tags: Tag
|
||||||
|
link: Link
|
||||||
|
file: File
|
||||||
|
|
||||||
add: Add
|
add: Add
|
||||||
back: Back
|
back: Back
|
||||||
create: Create
|
create: Create
|
||||||
|
@ -23,6 +29,14 @@ en:
|
||||||
update: Update
|
update: Update
|
||||||
yes_: "Yes"
|
yes_: "Yes"
|
||||||
|
|
||||||
|
hot: Hot
|
||||||
|
top: Top
|
||||||
|
hidden: Hidden
|
||||||
|
passed: Passed
|
||||||
|
pending: Pending
|
||||||
|
rejected: Rejected
|
||||||
|
clear: Clear
|
||||||
|
|
||||||
announcement:
|
announcement:
|
||||||
sure?: Sure?
|
sure?: Sure?
|
||||||
campus_news: Campus News
|
campus_news: Campus News
|
||||||
|
|
|
@ -24,12 +24,12 @@ zh_tw:
|
||||||
update: 更新
|
update: 更新
|
||||||
yes_: "Yes"
|
yes_: "Yes"
|
||||||
|
|
||||||
is_hot: 熱門
|
hot: 熱門
|
||||||
is_top: 置頂
|
top: 置頂
|
||||||
is_hidden: 隱藏
|
hidden: 隱藏
|
||||||
is_checked: 通過
|
passed: 通過
|
||||||
is_pending: 待審核
|
pending: 待審核
|
||||||
is_rejected: 不通過
|
rejected: 不通過
|
||||||
clear: 清除
|
clear: 清除
|
||||||
|
|
||||||
quick_edit: 快速編輯
|
quick_edit: 快速編輯
|
||||||
|
|
Reference in New Issue