diff --git a/app/assets/javascripts/inc/jquery.imagesloaded.js b/app/assets/javascripts/inc/jquery.imagesloaded.js
new file mode 100644
index 00000000..5b35bb9c
--- /dev/null
+++ b/app/assets/javascripts/inc/jquery.imagesloaded.js
@@ -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);
+ });
+ });
+ });
+});
\ No newline at end of file
diff --git a/app/assets/javascripts/inc/modal-preview.js b/app/assets/javascripts/inc/modal-preview.js
index 2f915f6c..35195999 100644
--- a/app/assets/javascripts/inc/modal-preview.js
+++ b/app/assets/javascripts/inc/modal-preview.js
@@ -6,10 +6,17 @@ $(document).ready(function() {
$("a.preview_trigger").click(function(){
$(this).after(" ");
$.ajax({
- type:"put",
+ type: 'PUT',
+ //async : true,
url:$(this).attr("href"),
- data:$(this).parents("form").serialize()
- }).done(function(){ $("#"+start_modal_with_id).modal('show');});
- return false;}
- );
+ contentType: 'application/javascript; charset=utf-8',
+ data:$(this).parents("form").serialize(),
+ success: function (msg) {
+ $("#"+start_modal_with_id).modal('show'); },
+ error: function(){
+ alert("ERROR");
+ }
+ });
+ return false;
+ });
});
\ No newline at end of file
diff --git a/app/assets/stylesheets/bootstrap.css.erb b/app/assets/stylesheets/bootstrap.css.erb
index e763d67e..40b3afca 100644
--- a/app/assets/stylesheets/bootstrap.css.erb
+++ b/app/assets/stylesheets/bootstrap.css.erb
@@ -66,6 +66,7 @@ textarea {
margin: 0;
font-size: 100%;
vertical-align: middle;
+ margin-bottom: 10px;
}
button, input {
*overflow: visible;
diff --git a/app/assets/stylesheets/inc/permission-checkbox.css.erb b/app/assets/stylesheets/inc/permission-checkbox.css.erb
new file mode 100644
index 00000000..9e61df20
--- /dev/null
+++ b/app/assets/stylesheets/inc/permission-checkbox.css.erb
@@ -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;
+}
\ No newline at end of file
diff --git a/app/assets/stylesheets/new_admin.css.erb b/app/assets/stylesheets/new_admin.css.erb
index 4b004d3d..99542101 100644
--- a/app/assets/stylesheets/new_admin.css.erb
+++ b/app/assets/stylesheets/new_admin.css.erb
@@ -5,8 +5,8 @@
*= require reset
*= require_self
*= require message
- *= require style
*= require bootstrap
+ *= require style
*= require bootstrap-orbit
*= require list
*= require widgets
diff --git a/app/assets/stylesheets/style.css.erb b/app/assets/stylesheets/style.css.erb
index c08a23e4..e0a704ef 100644
--- a/app/assets/stylesheets/style.css.erb
+++ b/app/assets/stylesheets/style.css.erb
@@ -565,7 +565,9 @@
padding: 5px;
}
.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;
}
.popover-title {
diff --git a/app/assets/stylesheets/widgets.css b/app/assets/stylesheets/widgets.css
index 5f36326d..80756ecb 100644
--- a/app/assets/stylesheets/widgets.css
+++ b/app/assets/stylesheets/widgets.css
@@ -84,7 +84,7 @@
border-radius: 0 3px 3px 0;
text-align: left;
margin: 0;
- width: 180px;
+ width: 193px;
}
.file-upload .upload {
margin:0;
diff --git a/app/controllers/admin/ad_banners_controller.rb b/app/controllers/admin/ad_banners_controller.rb
index 19983b66..1e96907f 100644
--- a/app/controllers/admin/ad_banners_controller.rb
+++ b/app/controllers/admin/ad_banners_controller.rb
@@ -46,7 +46,7 @@ class Admin::AdBannersController < ApplicationController
def realtime_preview
@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
def index
diff --git a/app/controllers/admin/ad_images_controller.rb b/app/controllers/admin/ad_images_controller.rb
index 3fb681da..d2039ab5 100644
--- a/app/controllers/admin/ad_images_controller.rb
+++ b/app/controllers/admin/ad_images_controller.rb
@@ -19,6 +19,8 @@ class Admin::AdImagesController < ApplicationController
def 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}
end
diff --git a/app/models/ad_banner.rb b/app/models/ad_banner.rb
index 0147c3d2..39112960 100644
--- a/app/models/ad_banner.rb
+++ b/app/models/ad_banner.rb
@@ -4,7 +4,7 @@ class AdBanner
include Mongoid::MultiParameterAttributes
field :title
- field :transition_sec,type: Integer
+ field :transition_msec,type: Integer
field :ad_fx #TODO Design should explain
before_save :save_or_destroy
@@ -13,6 +13,14 @@ class AdBanner
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"]
+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
preview_banner = self.clone
diff --git a/app/models/ad_image.rb b/app/models/ad_image.rb
index 3eb63511..9d7fe55b 100644
--- a/app/models/ad_image.rb
+++ b/app/models/ad_image.rb
@@ -24,16 +24,15 @@ class AdImage
# 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_presence_of :post_date,:message => 'Need a valid post date'
attr_reader :parse_post_date,:parse_unpost_date
def parse_post_date=(att)
- self.post_date = (Date.parse att rescue nil)
+ self.post_date = (Date.parse att.gsub(/\s+/, "") rescue nil)
end
def parse_unpost_date=(att)
- self.unpost_date = (Date.parse att rescue nil)
+ self.unpost_date = (Date.parse att.gsub(/\s+/, "") rescue nil)
end
def display?
diff --git a/app/views/admin/ad_banners/_ad_banner_tab.html.erb b/app/views/admin/ad_banners/_ad_banner_tab.html.erb
index 27047348..c1e406db 100644
--- a/app/views/admin/ad_banners/_ad_banner_tab.html.erb
+++ b/app/views/admin/ad_banners/_ad_banner_tab.html.erb
@@ -5,7 +5,7 @@
<%= f.label :ad_fx, t('admin.ad.ab_fx') %>
<%= f.select :ad_fx ,AdBanner::FX_TYPES %>
<%= 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("cancel"),:type=>'reset' %>
diff --git a/app/views/admin/ad_banners/_modal_ad_banner_form.html.erb b/app/views/admin/ad_banners/_modal_ad_banner_form.html.erb
index 235e7e15..cac5f1a1 100644
--- a/app/views/admin/ad_banners/_modal_ad_banner_form.html.erb
+++ b/app/views/admin/ad_banners/_modal_ad_banner_form.html.erb
@@ -40,11 +40,13 @@ $('#new_ad_banner_tab_but').on('shown', function (e) {
$('#new-a-banner').modal({show: true});
});
-<% if params[:action] == "new" -%>
- $('#new-a-banner').modal({show: true});
-<% end -%>
+
$('#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");
+
});
diff --git a/app/views/admin/ad_images/_form.html.erb b/app/views/admin/ad_images/_form.html.erb
index 075f01b4..ea30634c 100644
--- a/app/views/admin/ad_images/_form.html.erb
+++ b/app/views/admin/ad_images/_form.html.erb
@@ -6,6 +6,7 @@
<%= javascript_include_tag "lib/date.format" %>
<%= javascript_include_tag "inc/modal-preview" %>
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
+ <%= javascript_include_tag "inc/jquery.imagesloaded" %>
<% end %>
@@ -23,8 +24,8 @@
▼
- <%= f.hidden_field :parse_post_date %>
- <%= f.hidden_field :parse_unpost_date%>
+ <%= f.hidden_field :parse_post_date,:value => @ad_image.post_date.strftime('%Y / %m / %d') %>
+ <%= f.hidden_field :parse_unpost_date,:value => @ad_image.unpost_date.strftime('%Y / %m / %d')%>
@@ -74,49 +75,24 @@
-
-
-
- <%= image_tag @ad_image.file,:width=> "456",:height=>'700' rescue ''%>
-
-
-
此區塊圖片尺寸請使用580px × 225px
-
-
- Choose file
-
- <%= f.file_field :file,:id=>"input-upload",:class => "upload", :onchange=> "document.getElementById('fu1').innerHTML = this.form.fu1.value = this.value;" %>
-
-
-
-
-
-
-
+
+
+
+ <%= image_tag @ad_image.file rescue ''%>
+
+
此區塊圖片尺寸請使用580px × 225px
+
+
+ Choose file
+ <%= f.file_field :file,:id=>"input-upload",:class => "upload", :onchange=> "document.getElementById('fu1').innerHTML = this.form.fu1.value = this.value;" %>
+
+
+
+
+
- Preview/預覽
- Submit/送出
- Cancel/取消
+ <%= 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("cancel"),:class=>"btn ",:type => 'reset' %>
-
- <%= 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("cancel"),:class=>"btn ",:type => 'reset' %>
-
\ No newline at end of file
diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb
index 74c78d0b..562cdfdf 100644
--- a/app/views/devise/sessions/new.html.erb
+++ b/app/views/devise/sessions/new.html.erb
@@ -7,7 +7,7 @@
<%= form_for :user, :url => user_session_path, :html => {:class => 'user_new form-horizontal'} do |f| %>
-
Notice
+
Notice
You need to sign in or sign up before continuing.
diff --git a/app/views/layouts/_orbit_bar.html.erb b/app/views/layouts/_orbit_bar.html.erb
index e7bcdb1a..7e0c627e 100644
--- a/app/views/layouts/_orbit_bar.html.erb
+++ b/app/views/layouts/_orbit_bar.html.erb
@@ -5,12 +5,12 @@
Orbit
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 6877b6bd..8e75e61c 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -9,6 +9,7 @@ en:
account_settings: Account settings
add: Add
back: Back
+ browse: Browse
cancel: Cancel
create: Create
delete: Delete
@@ -46,6 +47,7 @@ en:
action: Action
ad_banner: AD Banner
ad:
+ sec_place_holder: Enter 3 if 3 sec
ab_fx: FX
all_banners: AdBanner list
banner_best_size: Banner Best Size
diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml
index 550f454e..660efc0e 100644
--- a/config/locales/zh_tw.yml
+++ b/config/locales/zh_tw.yml
@@ -6,6 +6,7 @@ zh_tw:
account_settings: 帳號設定
add: 新增
back: 回上一步
+ browse: 選擇檔案
cancel: 取消
create: 創建
delete: 刪除
@@ -43,6 +44,7 @@ zh_tw:
action: 操作
ad_banner: 廣告輪播
ad:
+ sec_place_holder: 3秒請輸入3
ab_fx: 轉場特效
all_banners: 輪播清單
banner_best_size: Banner 尺寸
@@ -59,7 +61,7 @@ zh_tw:
add_language: 新增語言
add_drop_down_item: +增加Orbit選單
admin: 管理
- announcement: 公告系統
+ announcement: 公告管理
asset: 資產
assets:
file: 檔案
@@ -155,6 +157,7 @@ zh_tw:
purchase: 購買
role: 角色
roles: 角色
+ site_setting: 基本設定
setup_member: 成員設置
setup_translations: 語系設定
setup_designs: 版型設定
diff --git a/config/routes.rb b/config/routes.rb
index fabeb93d..1d57b020 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -25,7 +25,7 @@ Orbit::Application.routes.draw do
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
collection do
match 'new_ad_image' => 'ad_images#new',:as => :new_ad_image,:via => :get
diff --git a/lib/parsers/parser_common.rb b/lib/parsers/parser_common.rb
index 94a968c4..403c05e4 100644
--- a/lib/parsers/parser_common.rb
+++ b/lib/parsers/parser_common.rb
@@ -110,13 +110,17 @@ module ParserCommon
def parse_sub_menus(body = nil, page = nil, id = nil)
body.css('sub_menu').each do |sub_menu|
res = ''
- res << ""
+ res << ""
+ res << "
#{page.i18n_variable[I18n.locale]} "
+ res << "
"
+ res << ""
+ res << "
"
fragment = Nokogiri::HTML::DocumentFragment.new(body, res)
sub_menu.swap(fragment)
end
diff --git a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb
index 77d2c9c1..3c2134fe 100644
--- a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb
+++ b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb
@@ -91,7 +91,7 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController
# GET /bulletins/1/edit
def edit
@bulletin = Bulletin.find(params[:id])
- if @bulletin.is_rejected?
+ if !current_user.admin? && (@bulletin.is_rejected? || @bulletin.is_checked?)
redirect_to :action => :index
else
# @summary_variable = @bulletin.summary_variable
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletin.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletin.html.erb
index 7db70593..c4e134cc 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletin.html.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_bulletin.html.erb
@@ -14,7 +14,7 @@
<%= t(:pending) %>
<% end %>
<% if bulletin.is_checked? %>
- <%= t(:checked) %>
+ <%= t(:passed) %>
<% end %>
<% if bulletin.is_rejected? %>
<%= t(:rejected) %>
@@ -25,23 +25,23 @@
<%= link_to bulletin.title[I18n.locale], panel_announcement_front_end_bulletin_path(bulletin, :category_id => bulletin.bulletin_category.id) rescue ''%>
- <% unless bulletin.is_rejected?%>
- <%= link_to t('bulletin.edit'), edit_panel_announcement_back_end_bulletin_path(bulletin) %>
-
- <%= t(:quick_edit) %>
-
-
- <%#= debugger %>
- <%#= a=1 %>
- <% if (bulletin.bulletin_category.authed_users('fact_check').include?(current_user) or is_manager?) and !bulletin.is_expired? %>
- <%= link_to t('bulletin.fact_check'), edit_panel_announcement_back_end_bulletin_path(bulletin) %> <%#= #TODO add ancher so user can quick access into that part %>
- <% end %>
+ <% if current_user.admin? || (!bulletin.is_rejected? && !bulletin.is_checked?) %>
+ <%= link_to t('bulletin.edit'), edit_panel_announcement_back_end_bulletin_path(bulletin) %>
+
+ <%= t(:quick_edit) %>
+
+
+ <%#= debugger %>
+ <%#= a=1 %>
+ <% if (bulletin.bulletin_category.authed_users('fact_check').include?(current_user) or is_manager?) and !bulletin.is_expired? %>
+ <%= link_to t('bulletin.fact_check'), edit_panel_announcement_back_end_bulletin_path(bulletin) %> <%#= #TODO add ancher so user can quick access into that part %>
+ <% end %>
<% end %>
<%= link_to t('bulletin.delete'), panel_announcement_back_end_bulletin_path(bulletin), :confirm => t('announcement.sure?'), :method => :delete, :remote => true %>
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_form.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_form.html.erb
index fe35d98d..a8fb3587 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_form.html.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_form.html.erb
@@ -4,23 +4,31 @@
<%= f.error_messages %>