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: 快速編輯
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue