Changeset 5760

Show
Ignore:
Timestamp:
05/22/08 15:42:19 (1 year ago)
Author:
uta
Message:

2008/05/22 sync

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • components/news/trunk/news/_install/component_info.rb

    r5690 r5760  
    88    @blocks         = [ 
    99      { 
    10         :title          => '[_News_Title_News]', 
    11         :controller     => '/news/news', 
    12         :action         => 'block', 
     10        :title          => '[_News_Info_BlockTitleIndex]', 
     11        :controller     => '/news/block', 
     12        :action         => 'index', 
    1313        :function       => 'access', 
    14         :description    => 'news block', 
     14        :description    => '[_News_Info_BlockDescIndex]', 
    1515        :widget         => { 
    1616          :default_height   => '240', 
     
    2323      { 
    2424        :name           => 'post', 
    25         :display_name   => '[_News_Authorize_Post]' 
     25        :display_name   => '[_News_Info_FunctionPost]' 
    2626      }, 
    2727      { 
    2828        :name           => 'approval', 
    29         :display_name   => '[_News_Authorize_Approval]' 
     29        :display_name   => '[_News_Info_FunctionApproval]' 
    3030      } 
    3131    ] 
    3232    @menus          = [ 
    3333      { 
     34        :controller     => '/news/news', 
    3435        :extend_page    => 'main', 
    35         :title          => '[_News_Title_Access]', 
    36         :controller     => '/news/news', 
    3736        :function       => 'access', 
    38         :description    => '' 
     37        :title          => '[_News_Info_MenuTitleIndex]', 
     38        :description    => '[_News_Info_MenuDescIndex]' 
    3939      }, 
    4040      { 
     41        :controller     => '/news/admin_category', 
     42        :extend_page    => 'main', 
     43        :function       => 'admin', 
     44        :title          => '[_News_Info_MenuTitleCategory]', 
     45        :description    => '[_News_Info_MenuDescCategory]' 
     46      },   
     47      { 
     48        :controller     => '/news/admin', 
    4149        :extend_page    => 'admin', 
    42         :title          => '[_News_Title_Config]', 
    43         :controller     => '/news/admin', 
    4450        :function       => 'admin', 
    45         :description    => '' 
     51        :title          => '[_News_Info_MenuTitleAdmin]', 
     52        :description    => '[_News_Info_MenuDescAdmin]' 
    4653      } 
    4754    ] 
  • components/news/trunk/news/_install/javascripts/news.js

    r5405 r5760  
    1 rubricks.news={news_list:null,become_edit_mode:function(){ 
     1Object.extend(rubricks.news,{admin:{},admin_category:{},become_edit_mode:function(){ 
    22rubricks.common.Validator.refresh(); 
    33remove_tiny_mce("news_article"); 
     
    77},become_read_mode:function(){ 
    88rubricks.common.FormEditor.readMode("news_edit_area","news_edit_form"); 
     9},change_style_to_normal:function(id){ 
     10$("news_list_title_"+id).style.fontWeight=""; 
     11},change_style_to_normal_for_block:function(id){ 
     12$("news_block_title_"+id).style.fontWeight=""; 
    913},close_news_create_window:function(){ 
    1014this.news_create_window.close(); 
    11 },delete_news:function(_1){ 
    12 new Ajax.Updater("news_list_frame",this.url_delete,{asynchronous:true,evalScripts:true,parameters:{delete_news_id:_1},onLoaded:function(_2){ 
     15},delete_news:function(_3){ 
     16new Ajax.Updater("news_list_frame",this.url_delete,{asynchronous:true,evalScripts:true,parameters:{delete_news_id:_3},onLoaded:function(_4){ 
    1317rubricks.common.rubricks_wait_message_close(); 
    14 },onLoading:function(_3){ 
     18},onLoading:function(_5){ 
    1519rubricks.common.rubricks_wait_message_open(); 
    1620}}); 
     21},detail_area_hide:function(){ 
     22Element.hide("news_info"); 
     23Element.show("news_empty_message"); 
     24},detail_area_show:function(){ 
     25Element.hide("news_empty_message"); 
     26Element.show("news_info"); 
    1727},edit_news_admin:function(){ 
    1828rubricks.common.Validator.refresh(); 
    1929rubricks.common.FormEditor.editMode("news_edit_area"); 
    20 },init:function(_4,_5){ 
     30},filter_blur:function(){ 
     31SelectableTableManager.start(); 
     32},filter_clear:function(){ 
     33$("news_filter_form").reset(); 
     34rubricks.common.fire_onsubmit("news_filter_form"); 
     35},filter_date_from_clear:function(){ 
     36$("news_filter_date_from").value=""; 
     37},filter_date_to_clear:function(){ 
     38$("news_filter_date_to").value=""; 
     39},filter_focus:function(){ 
     40SelectableTableManager.stop(); 
     41},filter_refocus:function(){ 
     42$("news_filter_word").focus(); 
     43},filter_select_target:function(n){ 
     44$("news_filter_form").reset(); 
     45$("news_filter_target").selectedIndex=n; 
     46Switcher.common.open("news_filter_switch","news_filter_area"); 
     47rubricks.common.fire_onsubmit("news_filter_form"); 
     48},init:function(_7,_8){ 
    2149Element.removeClassName("print_button","disabled"); 
    22 $("print_news_id").value=_4; 
     50$("print_news_id").value=_7; 
     51},item_return_comment_save:function(_9){ 
     52new Ajax.Updater("news_list_frame",this.url_item_return,{asynchronous:true,evalScripts:true,parameters:{id:_9,comment:$("news_item_return_comment").value},onLoaded:function(_a){ 
     53rubricks.common.rubricks_wait_message_close(); 
     54},onLoading:function(_b){ 
     55rubricks.common.rubricks_wait_message_open(); 
     56}}); 
     57},news_delete:function(_c){ 
     58new Ajax.Request(rubricks.news.url_delete,{asynchronous:true,evalScripts:true,parameters:{delete_news_id:_c},onLoaded:function(_d){ 
     59rubricks.common.rubricks_wait_message_close(); 
     60},onLoading:function(_e){ 
     61rubricks.common.rubricks_wait_message_open(); 
     62}}); 
    2363},news_delete_multiple:function(){ 
    24 var _6=this.news_list.getSelected().join(","); 
    25 if(_6.length==0){ 
     64var _f=this.news_list.getSelected().join(","); 
     65if(_f.length==0){ 
    2666rubricks.common.rubricks_message_window_open(this.msg_news_not_selected,"error"); 
    2767}else{ 
    2868rubricks.common.rubricks_confirm_window_open(this.msg_delete_confirm,function(){ 
    29 rubricks.news.validate_delete_news_multiple(rubricks.news.news_list.getSelected().join(",")); 
     69rubricks.news.news_delete(rubricks.news.news_list.getSelected().join(",")); 
    3070},null); 
    3171} 
    32 },no_selected_news:function(){ 
    33 this.show_news("",true); 
    34 },open_news_create_window:function(_7){ 
     72},news_return_unread_state:function(_10){ 
     73new Ajax.Request(this.url_return_unread_state,{asynchronous:true,evalScripts:true,parameters:{id:_10},onLoaded:function(_11){ 
     74rubricks.common.rubricks_wait_message_close(); 
     75},onLoading:function(_12){ 
     76rubricks.common.rubricks_wait_message_open(); 
     77}}); 
     78},open_item_return_comment_window:function(){ 
     79$("news_item_return_comment").value=""; 
     80rubricks.news.news_item_return_comment_window.center(); 
     81rubricks.news.news_item_return_comment_window.open(); 
     82$("news_item_return_comment").focus(); 
     83rubricks.common.Validator.refresh(); 
     84},open_news_create_window:function(_13){ 
    3585$("post_news_title").value=""; 
    36 $("post_news_display_name").value=_7; 
     86$("post_news[category_id]").selectedIndex=0; 
     87$("post_news_display_name").value=_13; 
    3788remove_tiny_mce("post_news_article"); 
    3889$("post_news_article").value=""; 
     
    4293this.news_create_window.open(); 
    4394$("post_news_title").focus(); 
    44 },overflow_news_textarea:function(_8,_9,_a){ 
    45 if(overflow_textarea(_8,_9)){ 
    46 $("rubricks_message").innerHTML=_a
     95},overflow_news_textarea:function(_14,_15,_16){ 
     96if(overflow_textarea(_14,_15)){ 
     97$("rubricks_message").innerHTML=_16
    4798rubricks.common.rubricks_message_window.options.modal=false; 
    4899rubricks.common.rubricks_message_window.center(); 
     
    56107rubricks.common.fire_submit("news_print_form","print_button"); 
    57108rubricks.common.rubricks_wait_message_close(); 
    58 },select_multiple_mode:function(_b){ 
     109},select_multiple_mode:function(_17){ 
    59110this.news_list.makeMultiple(); 
    60 $(_b+"select_multiple_form").style.display="none"; 
    61 $(_b+"select_singular_form").style.display="block"; 
    62 $(_b+"news_delete_multiple_form").style.display="block"; 
    63 },select_news_list:function(_c){ 
    64 if(_c!=""&&this.news_list!=null){ 
    65 this.news_list.selectEffect(this.news_list.buildTrId(_c)); 
    66 this.show_news(_c,false); 
     111$(_17+"select_multiple_form").style.display="none"; 
     112$(_17+"select_singular_form").style.display="block"; 
     113$(_17+"news_delete_multiple_form").style.display="block"; 
     114},select_news_list:function(_18){ 
     115if(_18!=""&&this.news_list!=null){ 
     116this.news_list.selectEffect(this.news_list.buildTrId(_18)); 
     117this.show_news(_18,false); 
    67118} 
    68119},select_singular_mode:function(){ 
     
    70121this.news_list.makeSingular(); 
    71122} 
    72 },show_tab_button:function(_d){ 
    73 $(_d+"news_delete_multiple_form").style.display="none"; 
    74 $(_d+"select_singular_form").style.display="none"; 
    75 $(_d+"select_multiple_form").style.display="block"; 
    76 },show_news:function(_e,_f){ 
    77 var _10=(_e=="")?{}:{id:_e}; 
    78 new Ajax.Updater("news_info",this.url_show_news,{asynchronous:true,evalScripts:true,parameters:_10,onLoaded:function(_11){ 
     123},show_tab_button:function(_19){ 
     124$(_19+"news_delete_multiple_form").style.display="none"; 
     125$(_19+"select_singular_form").style.display="none"; 
     126$(_19+"select_multiple_form").style.display="block"; 
     127},show_news:function(_1a,_1b){ 
     128var _1c={}; 
     129if(_1a!=""){ 
     130this.change_style_to_normal(_1a); 
     131_1c={id:_1a}; 
     132
     133new Ajax.Updater("news_info",this.url_show_news,{asynchronous:true,evalScripts:true,parameters:_1c,onLoaded:function(_1d){ 
    79134rubricks.common.rubricks_wait_message_close(); 
    80 },onLoading:function(_12){ 
     135},onLoading:function(_1e){ 
    81136rubricks.common.rubricks_wait_message_open(); 
    82 }}); 
    83 },show_public_news_tab:function(){ 
    84 rubricks.common.rubricks_wait_message_open(); 
    85 this.no_selected_news(); 
    86 new Ajax.Updater("public_news_list_tab",this.url_public_news_list,{asynchronous:true,evalScripts:true,onLoaded:function(_13){ 
    87 rubricks.common.rubricks_wait_message_close(); 
    88 }}); 
    89 },show_returned_news_tab:function(){ 
    90 rubricks.common.rubricks_wait_message_open(); 
    91 this.no_selected_news(); 
    92 this.select_singular_mode(); 
    93 new Ajax.Updater("returned_news_list_tab",this.url_returned_news_list,{asynchronous:true,evalScripts:true,onLoaded:function(_14){ 
    94 rubricks.common.rubricks_wait_message_close(); 
    95 show_tab_button("returned_"); 
    96 }}); 
    97 },show_waiting_news_tab:function(){ 
    98 rubricks.common.rubricks_wait_message_open(); 
    99 this.no_selected_news(); 
    100 this.select_singular_mode(); 
    101 new Ajax.Updater("waiting_news_list_tab",this.url_waiting_news_list,{asynchronous:true,evalScripts:true,onLoaded:function(_15){ 
    102 rubricks.common.rubricks_wait_message_close(); 
    103 show_tab_button("waiting_"); 
    104137}}); 
    105138},submit_create_news:function(){ 
     
    113146} 
    114147rubricks.common.fire_onsubmit("news_edit_form","news_edit_button","news_edit_area"); 
    115 },validate_delete_news_multiple:function(_16){ 
    116 new Ajax.Updater("validate_delete_news_div",this.url_delete_news_multiple,{asynchronous:true,evalScripts:true,parameters:{delete_news_id:_16},onLoaded:function(_17){ 
     148}}); 
     149Object.extend(rubricks.news.admin,{print:function(){ 
     150rubricks.common.fire_submit("news_admin_print_form","print_button"); 
    117151rubricks.common.rubricks_wait_message_close(); 
    118 },onLoading:function(_18){ 
     152}}); 
     153Object.extend(rubricks.news.admin_category,{category_window_close:function(){ 
     154this.category_window.close(); 
     155},category_window_open:function(id){ 
     156this.category_window.center(); 
     157this.category_window.open(); 
     158$("news_category_name").focus(); 
     159},category_window_render:function(id){ 
     160new Ajax.Updater("news_category_window_frame",this.url_category_window,{asynchronous:true,evalScripts:true,parameters:{id:id},onLoaded:function(_21){ 
     161rubricks.common.rubricks_wait_message_close(); 
     162},onLoading:function(_22){ 
    119163rubricks.common.rubricks_wait_message_open(); 
    120164}}); 
    121 }}; 
     165},create:function(){ 
     166if(this.category_list.length>=this.int_max_record){ 
     167rubricks.common.rubricks_message_window_open(this.err_max_record,"error"); 
     168}else{ 
     169this.category_window_render(); 
     170
     171},delete_confirm:function(){ 
     172var _23=this.category_list.getSelected(); 
     173if(_23.length<1){ 
     174rubricks.common.rubricks_message_window_open(this.msg_category_not_selected,"error"); 
     175}else{ 
     176var id=parseInt(_23.first(),10); 
     177if(id==1){ 
     178rubricks.common.rubricks_message_window_open(this.err_delete_default,"error"); 
     179}else{ 
     180rubricks.common.rubricks_confirm_window_open(rubricks.news.admin_category.msg_delete_confirm,function(){ 
     181rubricks.news.admin_category.destroy(id); 
     182}); 
     183
     184
     185},destroy:function(id){ 
     186new Ajax.Request(this.url_delete,{asynchronous:true,evalScripts:true,parameters:{id:id},onLoaded:function(_26){ 
     187rubricks.common.rubricks_wait_message_close(); 
     188},onLoading:function(_27){ 
     189rubricks.common.rubricks_wait_message_open(); 
     190}}); 
     191},edit:function(){ 
     192var _28=this.category_list.getSelected(); 
     193if(_28.length<1){ 
     194rubricks.common.rubricks_message_window_open(this.msg_category_not_selected,"error"); 
     195}else{ 
     196this.category_window_render(_28.first()); 
     197
     198}}); 
    122199 
  • components/news/trunk/news/_install/javascripts/src_news.js

    r5405 r5760  
    1 rubricks.news = { 
    2   news_list: null, 
     1/*** 
     2 * NewsController 
     3 */ 
     4Object.extend(rubricks.news, { 
     5  admin: {}, 
     6  admin_category: {}, 
    37  become_edit_mode: function() { 
    48    rubricks.common.Validator.refresh(); 
     
    1115    rubricks.common.FormEditor.readMode('news_edit_area', 'news_edit_form'); 
    1216  }, 
     17  change_style_to_normal: function(id) { 
     18    $('news_list_title_' + id).style.fontWeight = ''; 
     19  }, 
     20  change_style_to_normal_for_block: function(id) { 
     21    $('news_block_title_' + id).style.fontWeight = ''; 
     22  }, 
    1323  close_news_create_window: function() { 
    1424    this.news_create_window.close(); 
     
    1828      'news_list_frame', 
    1929      this.url_delete, 
     30      { 
     31        asynchronous:   true, 
     32        evalScripts:    true, 
     33        parameters:     {delete_news_id:delete_id}, 
     34        onLoaded:       function(request) {rubricks.common.rubricks_wait_message_close();}, 
     35        onLoading:      function(request) {rubricks.common.rubricks_wait_message_open();} 
     36      } 
     37    ); 
     38  }, 
     39  detail_area_hide: function() { 
     40    Element.hide('news_info'); 
     41    Element.show('news_empty_message'); 
     42  }, 
     43  detail_area_show: function() { 
     44    Element.hide('news_empty_message'); 
     45    Element.show('news_info'); 
     46  }, 
     47  edit_news_admin: function() { 
     48    rubricks.common.Validator.refresh(); 
     49    rubricks.common.FormEditor.editMode('news_edit_area'); 
     50  }, 
     51  filter_blur: function() { 
     52    SelectableTableManager.start(); 
     53  }, 
     54  filter_clear: function() { 
     55    $('news_filter_form').reset(); 
     56    rubricks.common.fire_onsubmit('news_filter_form'); 
     57  }, 
     58  filter_date_from_clear: function() { 
     59    $('news_filter_date_from').value = ''; 
     60  }, 
     61  filter_date_to_clear: function() { 
     62    $('news_filter_date_to').value = ''; 
     63  }, 
     64  filter_focus: function() { 
     65    SelectableTableManager.stop(); 
     66  }, 
     67  filter_refocus: function() { 
     68    $('news_filter_word').focus(); 
     69  }, 
     70  filter_select_target: function(n) { 
     71    $('news_filter_form').reset(); 
     72    $('news_filter_target').selectedIndex = n; 
     73    Switcher.common.open('news_filter_switch', 'news_filter_area'); 
     74    rubricks.common.fire_onsubmit('news_filter_form'); 
     75  }, 
     76  init: function(news_id, has_edit){ 
     77    Element.removeClassName('print_button', 'disabled'); 
     78    $('print_news_id').value = news_id; 
     79  }, 
     80  item_return_comment_save: function(news_id){ 
     81    new Ajax.Updater( 
     82      'news_list_frame', 
     83      this.url_item_return, 
     84      { 
     85        asynchronous:   true, 
     86        evalScripts:    true, 
     87        parameters:     {id:news_id, comment:$('news_item_return_comment').value}, 
     88        onLoaded:       function(request){rubricks.common.rubricks_wait_message_close();}, 
     89        onLoading:      function(request){rubricks.common.rubricks_wait_message_open();} 
     90      } 
     91    ); 
     92  }, 
     93  news_delete: function(delete_id) { 
     94    new Ajax.Request( 
     95      rubricks.news.url_delete, 
    2096      { 
    2197        asynchronous:   true, 
     
    26102      } 
    27103    ); 
    28   }, 
    29   edit_news_admin: function() { 
    30     rubricks.common.Validator.refresh(); 
    31     rubricks.common.FormEditor.editMode('news_edit_area'); 
    32   }, 
    33   init: function(news_id, has_edit){ 
    34     Element.removeClassName('print_button', 'disabled'); 
    35     $('print_news_id').value = news_id; 
    36104  }, 
    37105  news_delete_multiple: function() { 
     
    40108      rubricks.common.rubricks_message_window_open(this.msg_news_not_selected, 'error'); 
    41109    } else { 
    42       rubricks.common.rubricks_confirm_window_open(this.msg_delete_confirm, function() {rubricks.news.validate_delete_news_multiple(rubricks.news.news_list.getSelected().join(','));}, null); 
    43     } 
    44   }, 
    45   no_selected_news: function() { 
    46     this.show_news('', true) 
     110      rubricks.common.rubricks_confirm_window_open(this.msg_delete_confirm, function() {rubricks.news.news_delete(rubricks.news.news_list.getSelected().join(','));}, null); 
     111    } 
     112  }, 
     113  news_return_unread_state:function(news_id) { 
     114    new Ajax.Request( 
     115      this.url_return_unread_state, 
     116      { 
     117        asynchronous:true, 
     118        evalScripts:true, 
     119        parameters:{id:news_id}, 
     120        onLoaded:function(request){rubricks.common.rubricks_wait_message_close();}, 
     121        onLoading:function(request){rubricks.common.rubricks_wait_message_open();} 
     122      } 
     123    ); 
     124  }, 
     125  open_item_return_comment_window: function(){ 
     126    $('news_item_return_comment').value = ''; 
     127    rubricks.news.news_item_return_comment_window.center(); 
     128    rubricks.news.news_item_return_comment_window.open(); 
     129    $('news_item_return_comment').focus(); 
     130    rubricks.common.Validator.refresh(); 
    47131  }, 
    48132  open_news_create_window: function(display_name) { 
    49133    $('post_news_title').value = ''; 
     134    $('post_news[category_id]').selectedIndex  = 0; 
    50135    $('post_news_display_name').value = display_name; 
    51136    remove_tiny_mce('post_news_article'); 
     
    96181  }, 
    97182  show_news: function(news_id, show_wait_message) { 
    98     var params = (news_id == '') ? {} : {id:news_id}; 
     183    var params = {}; 
     184    if(news_id != '') { 
     185      this.change_style_to_normal(news_id); 
     186      params = {id:news_id}; 
     187    } 
    99188    new Ajax.Updater( 
    100189      'news_info', 
     
    104193        evalScripts:    true, 
    105194        parameters:     params, 
    106         onLoaded:       function(request){rubricks.common.rubricks_wait_message_close();}, 
    107         onLoading:      function(request){rubricks.common.rubricks_wait_message_open();} 
    108       } 
    109     ); 
    110   }, 
    111   show_public_news_tab: function(){ 
    112     rubricks.common.rubricks_wait_message_open(); 
    113     this.no_selected_news(); 
    114     new Ajax.Updater( 
    115       'public_news_list_tab', 
    116       this.url_public_news_list, 
    117       { 
    118         asynchronous:true, 
    119         evalScripts:true, 
    120         onLoaded:function(request){ 
    121           rubricks.common.rubricks_wait_message_close(); 
    122         } 
    123       } 
    124     ); 
    125   }, 
    126   show_returned_news_tab: function(){ 
    127     rubricks.common.rubricks_wait_message_open(); 
    128     this.no_selected_news(); 
    129     this.select_singular_mode(); 
    130     new Ajax.Updater( 
    131       'returned_news_list_tab', 
    132       this.url_returned_news_list, 
    133       { 
    134         asynchronous:true, 
    135         evalScripts:true, 
    136         onLoaded:function(request){ 
    137           rubricks.common.rubricks_wait_message_close(); 
    138           show_tab_button('returned_'); 
    139         } 
    140       } 
    141     ); 
    142   }, 
    143   show_waiting_news_tab: function(){ 
    144     rubricks.common.rubricks_wait_message_open(); 
    145     this.no_selected_news(); 
    146     this.select_singular_mode(); 
    147     new Ajax.Updater( 
    148       'waiting_news_list_tab', 
    149       this.url_waiting_news_list, 
    150       { 
    151         asynchronous:true, 
    152         evalScripts:true, 
    153         onLoaded:function(request){ 
    154           rubricks.common.rubricks_wait_message_close(); 
    155           show_tab_button('waiting_'); 
    156         } 
     195        onLoaded:       function(request) {rubricks.common.rubricks_wait_message_close();}, 
     196        onLoading:      function(request) {rubricks.common.rubricks_wait_message_open();} 
    157197      } 
    158198    ); 
     
    169209    } 
    170210    rubricks.common.fire_onsubmit('news_edit_form', 'news_edit_button', 'news_edit_area'); 
    171   }, 
    172   validate_delete_news_multiple: function(delete_id) { 
    173     new Ajax.Updater( 
    174       'validate_delete_news_div', 
    175       this.url_delete_news_multiple, 
    176       { 
    177         asynchronous:   true, 
    178         evalScripts:    true, 
    179         parameters:     {delete_news_id:delete_id}, 
    180         onLoaded:       function(request){rubricks.common.rubricks_wait_message_close();}, 
    181         onLoading:      function(request){rubricks.common.rubricks_wait_message_open();} 
    182       } 
    183     ); 
    184211  } 
    185 
     212}); 
     213 
     214/*** 
     215 * AdminController 
     216 */ 
     217Object.extend(rubricks.news.admin, { 
     218  print: function() { 
     219    rubricks.common.fire_submit('news_admin_print_form', 'print_button'); 
     220    rubricks.common.rubricks_wait_message_close(); 
     221  } 
     222}); 
     223 
     224/*** 
     225 * AdminCategoryController 
     226 */ 
     227Object.extend(rubricks.news.admin_category, { 
     228  category_window_close: function() { 
     229    this.category_window.close(); 
     230  }, 
     231  category_window_open: function(id) { 
     232    this.category_window.center(); 
     233    this.category_window.open(); 
     234    $('news_category_name').focus(); 
     235  }, 
     236  category_window_render: function(id) { 
     237    new Ajax.Updater( 
     238      'news_category_window_frame', 
     239      this.url_category_window, 
     240      { 
     241        asynchronous:   true, 
     242        evalScripts:    true, 
     243        parameters:     {id:id}, 
     244        onLoaded:       function(request) {rubricks.common.rubricks_wait_message_close();}, 
     245        onLoading:      function(request) {rubricks.common.rubricks_wait_message_open();} 
     246      } 
     247    ); 
     248  }, 
     249  create: function() { 
     250    if(this.category_list.length >= this.int_max_record) { 
     251      rubricks.common.rubricks_message_window_open(this.err_max_record, 'error'); 
     252    } else { 
     253      this.category_window_render(); 
     254    } 
     255  }, 
     256  delete_confirm: function() { 
     257    var selected = this.category_list.getSelected(); 
     258    if(selected.length < 1) { 
     259      rubricks.common.rubricks_message_window_open(this.msg_category_not_selected, 'error'); 
     260    } else { 
     261      var id = parseInt(selected.first(), 10); 
     262      if(id == 1) { 
     263        rubricks.common.rubricks_message_window_open(this.err_delete_default, 'error'); 
     264      } else { 
     265        rubricks.common.rubricks_confirm_window_open(rubricks.news.admin_category.msg_delete_confirm, function() {rubricks.news.admin_category.destroy(id);}); 
     266      } 
     267    } 
     268  }, 
     269  destroy: function(id) { 
     270    new Ajax.Request( 
     271      this.url_delete, 
     272      { 
     273        asynchronous:   true, 
     274        evalScripts:    true, 
     275        parameters:     {id:id}, 
     276        onLoaded:       function(request) {rubricks.common.rubricks_wait_message_close();}, 
     277        onLoading:      function(request) {rubricks.common.rubricks_wait_message_open();} 
     278      } 
     279    ); 
     280  }, 
     281  edit: function() { 
     282    var selected = this.category_list.getSelected(); 
     283    if(selected.length < 1) { 
     284      rubricks.common.rubricks_message_window_open(this.msg_category_not_selected, 'error'); 
     285    } else { 
     286      this.category_window_render(selected.first()); 
     287    } 
     288  } 
     289}); 
  • components/news/trunk/news/admin/main.rhtml

    r5690 r5760  
    1 <%= flash_for_feedback_msg(:news_admin_message) %> 
    2 <%= flash_for_error_msg(:news_admin_error) %> 
    3 <% validate_page do %> 
    4   <div class="rubricks_general_frame_borderless"> 
    5     <% render_operation_bar do %> 
    6       <%= form_tag({:controller => '/news/admin', :action => 'print', :page => 'print_admin'}, {:id => 'news_admin_print_form', :class => 'operationbar_button_right_inactive swap',  :target => "_blank"}) %> 
    7         <span id="print_button" class="buttons darkicon_print textcolor_white" onclick="rubricks.common.fire_submit('news_admin_print_form', 'print_button');rubricks.common.rubricks_wait_message_close();"><%= hl('[_Common_Print]') %></span> 
    8       </form> 
     1<div class="rubricks_general_frame_borderless"> 
     2  <% render_operation_bar do %> 
     3    <%= form_tag({:controller => '/news/admin', :action => 'print', :print_action => 'print_content'}, {:id => 'news_admin_print_form', :class => 'operationbar_button_right_inactive swap',  :target => "_blank"}) %> 
     4      <span id="print_button" class="buttons darkicon_print textcolor_white" onclick="rubricks.news.admin.print();"><%= hl('[_Common_Print]') %></span> 
     5    </form> 
     6  <% end %> 
     7  <% render_content_body do %> 
     8    <% render_detail_frame('00') do %> 
     9      <div id="news_edit_area"> 
     10        <div> 
     11          <%= render :partial => '/news/admin/main_read_content' %> 
     12        </div> 
     13        <div style="display:none;"> 
     14          <%= render :partial => '/news/admin/main_edit_content' %> 
     15        </div> 
     16      </div> 
    917    <% end %> 
    10     <% render_content_body do %> 
    11       <% render_detail_frame('00') do %> 
    12         <div id="news_edit_area"> 
    13           <div> 
    14             <% render_detail('00', hl('[_News_Setting]')) do %> 
    15               <% render_float_button('float_button_area_read') do %> 
    16                 <div id="news_edit_mode_form" class="float_button_right_inactive swap"> 
    17                   <span id="news_admin_edit_mode_button" class="buttons icon_edit" onclick="rubricks.news.edit_news_admin();"><%= hl('[_Common_Edit]') %></span> 
    18                 </div> 
    19               <% end %> 
    20               <%= render :partial => '/news/admin/admin_content' %> 
    21             <% end %> 
    22           </div> 
    23           <div style="display:none;"> 
    24             <% render_detail('00', hl('[_News_Setting]')) do %> 
    25               <% validate_form('news_admin_edit_button') do %> 
    26                 <% form_main_tag(:url=>{:controller => '/news/admin', :action => 'update'}, :html => {:id => 'news_edit_form'}) do %> 
    27                   <% render_float_button('float_button_area_admin_edit') do %> 
    28                     <div class="float_button_right_inactive swap"> 
    29                       <span id="news_edit_cancel_button" class="buttons icon_cancel" onclick="rubricks.common.FormEditor.readMode('news_edit_area', 'news_edit_form');"><%= hl('[_Common_Cancel]') %></span> 
    30                     </div> 
    31                     <div class="float_button_right_inactive swap"> 
    32                       <%= span_submit hl('[_Common_Save]'), 'news_admin_edit_button', :modal_area_id => 'news_edit_area' %> 
    33                     </div> 
    34                   <% end %> 
    35                   <table id="test" class="rubricks_general_table"> 
    36                     <tr class="rubricks_general_table_odd"> 
    37                       <td style="width:50%"><%= hl('[_News_Need_Approval_Posted_News]') %></td> 
    38                       <td style="width:50%"> 
    39                         <input type="radio" class="check" id="rubricks_news_need_approval_true" name="news_config[approval]" value="true" <%= "checked" if @nc.approval %>><label for="rubricks_news_need_approval_true"><%= hl('[_Common_Yes]') %></label> 
    40                         <input type="radio" class="check" id="rubricks_news_need_approval_false" name="news_config[approval]" value="false" <%= "checked" unless @nc.approval %>><label for="rubricks_news_need_approval_false"><%= hl('[_Common_No]') %></label> 
    41                       </td> 
    42                     </tr> 
    43                     <tr class="rubricks_general_table_even"> 
    44                       <%= validate 'news_config_news_per_page', [{:required => true}, {:numeric => true}, {:numeric_span => "1..100"}] %> 
    45                       <td><%= hl('[_News_News_Per_Page]') %></td> 
    46                       <td> 
    47                         <%= text_field 'news_config', 'news_per_page', :value => hl(@nc.news_per_page) %> 
    48                         <span id="news_config_news_per_page_msg"></span> 
    49                       </td> 
    50                     </tr> 
    51                     <tr class="rubricks_general_table_odd"> 
    52                       <%= validate 'news_config_news_per_block', [{:required => true}, {:numeric => true}, {:numeric_span => "1..20"}] %> 
    53                       <td><%= hl('[_News_News_Per_Block]') %></td> 
    54                       <td> 
    55                         <%= text_field 'news_config', 'news_per_block', :value => hl(@nc.news_per_block) %> 
    56                         <span id="news_config_news_per_block_msg"></span> 
    57                       </td> 
    58                     </tr> 
    59                     <tr class="rubricks_general_table_even"> 
    60                       <%= validate 'news_config_new_days', [{:required => true}, {:numeric => true}, {:numeric_span => "0..999"}] %> 
    61                       <td><%= hl('[_News_New_Days]') %></td> 
    62                       <td> 
    63                         <%= text_field 'news_config', 'new_days', :value => hl(@nc.new_days) %> 
    64                         <span id="news_config_new_days_msg"></span> 
    65                       </td> 
    66                     </tr> 
    67                   </table> 
    68                   <br class="cl" /> 
    69                 <% end %> 
    70               <% end %> 
    71             <% end %> 
    72           </div> 
    73         </div> 
    74       <% end %> 
    75     <% end %> 
    76   </div> 
    77   <script type="text/javascript"> 
    78     rubricks.common.FormEditor.readMode('news_edit_area'); 
    79   </script> 
    80 <% end %> 
     18  <% end %> 
     19</div> 
     20<script type="text/javascript"> 
     21  rubricks.common.FormEditor.readMode('news_edit_area'); 
     22</script> 
     23<%= flash_for_feedback_msg(:news_message) %> 
  • components/news/trunk/news/admin_controller.rb

    r5690 r5760  
    88  end 
    99 
     10  def print_content 
     11    @nc = News::NewsConfig.instance 
     12    render :partial => '/news/admin/main_read_content' 
     13  end 
     14 
    1015  def update 
    1116    begin 
    1217      ActiveRecord::Base.transaction do 
    13         News::NewsConfig.update!(1, params[:news_config]) 
    14         flash[:news_admin_message] = '[_News_Components_Setting_Update]' 
     18        @nc = News::NewsConfig.instance 
     19        @nc.update_attributes!({ 
     20          :approval         => params[:news_config][:approval], 
     21          :news_per_block   => params[:news_config][:news_per_block], 
     22          :news_per_page    => params[:news_config][:news_per_page], 
     23        }) 
    1524      end 
    1625    rescue Exception => ex 
    1726      logger.error(ex.message) 
    1827      logger.error(ex.backtrace.join("\n  ")) 
    19       flash[:news_admin_error] = '[_News_Components_Setting_Update_Failed]' 
     28      raise RubricksError::Common::AjaxError, '[_News_Admin_ErrorUpdate]' 
    2029    end 
     30    flash[:news_message] = '[_News_Admin_MessageUpdate]' 
     31    rubricks_logger(:action_type => :update, :data => @nc) 
    2132    redirect_to :controller => "/news/admin", :action => 'main' 
    2233  end 
    23  
    24   def print_admin 
    25     @nc = News::NewsConfig.instance 
    26     render :template => '/news/admin/_admin_content.rhtml' 
    27   end 
    2834end 
  • components/news/trunk/news/languages/chinese.rb

    r5704 r5760  
    11module RubricksLanguage 
    22  def define_lang 
    3     lang('chinese')['_News_Info_Description'] = '发衚和星瀺眑站曎新信息等新闻的组件。' 
    4     lang('chinese')['_News_Info_DisplayName'] = '新闻' 
    5     lang('chinese')['_News_Info_TrailRead'] = '查看新闻' 
    6     lang('chinese')['_News_Info_TrailUpdate'] = '新闻的发衚・猖蟑・删陀' 
    7     lang('chinese')['_News_Title_Config'] = '新闻讟眮' 
    8     lang('chinese')['_News_Need_Approval_Posted_News'] = '发衚的新闻需芁批准' 
    9     lang('chinese')['_News_News_Per_Page']= '新闻列衚每页星瀺的新闻数' 
    10     lang('chinese')['_News_News_Per_Block']= '圚版块䞊星瀺的新闻数' 
    11     lang('chinese')['_News_New_Days']= '星瀺䞺(new)的倩数' 
    12     lang('chinese')['_News_Last_Update'] = '最后修改日期' 
    13     lang('chinese')['_News_Title_News'] = '新闻' 
    14     lang('chinese')['_News_Setting'] = '新闻讟眮' 
    15     lang('chinese')['_News_Publish_Date'] = '发垃日期' 
    16     lang('chinese')['_News_Posted_Date'] = '发衚日期' 
    17     lang('chinese')['_News_Repost'] = '重新发衚' 
    18     lang('chinese')['_News_Article_Text'] = '正文' 
    19     lang('chinese')['_News_State_Waiting'] = '等埠
    20 æ‰¹å‡†' 
    21     lang('chinese')['_News_Approval_Item'] = '新闻' 
    22     lang('chinese')['_News_Title_Access'] = '新闻列衚' 
    23     lang('chinese')['_News_Authorize_Post'] = '发衚权限' 
    24     lang('chinese')['_News_Authorize_Approval'] = '批准权限' 
    25     lang('chinese')['_News_Not_Select'] = '请选择新闻。' 
    26     lang('chinese')['_News_Components_Setting_Update'] = '新闻讟眮修改完毕。' 
    27     lang('chinese')['_News_Posted_Waiting'] = '新闻发衚完毕。批准后å 
    28 ¬åŒ€å‘垃。' 
    29     lang('chinese')['_News_Posted_Public'] = '新闻发衚完毕。新闻å 
    30 ¬åŒ€å‘垃了。' 
    31     lang('chinese')['_News_Reposted_Waiting'] = '新闻重新发衚完毕。批准后å 
    32 ¬åŒ€å‘垃。' 
    33     lang('chinese')['_News_Reposted_Public'] = '新闻重新发衚完毕。新闻å 
    34 ¬åŒ€å‘垃了。' 
    35     lang('chinese')['_News_Update_Success'] = '新闻修改完毕。' 
    36     lang('chinese')['_News_Multiple_Delete_Failed'] = '选择了没有权限删陀的新闻。' 
    37     lang('chinese')['_News_Delete_Success'] = '新闻删陀完毕。' 
    38     lang('chinese')['_News_Waiting_Approval'] = '有%s条新闻等埠
    39 æ‰¹å‡†ã€‚请批准或退回。' 
    40     lang('chinese')['_News_Waiting_Message'] = '有%s条埠
    41 æ‰¹å‡†çš„æ–°é—»ã€‚' 
    42     lang('chinese')['_News_Returned_Repost'] = '有%s条被退回的新闻。请进行猖蟑后重新发衚。' 
    43     lang('chinese')['_News_Components_Setting_Update_Failed'] = '新闻讟眮的修改倱莥。' 
    44     lang('chinese')['_News_Post_Failed'] = '新闻发衚倱莥。' 
    45     lang('chinese')['_News_Update_Failed'] = '新闻修改倱莥。' 
    46     lang('chinese')['_News_Delete_Failed'] = '新闻删陀倱莥。' 
    47     lang('chinese')['_News_Confirm_Update'] = '猖蟑后需芁重新批准,确定芁猖蟑吗?' 
    48     lang('chinese')['_News_Returned_Message'] = '劂果想再次申请批准请[重新发衚]。' 
    49     lang('chinese')['_News_Post_User'] = '投皿甚户' 
    50     lang('chinese')['_News_Display_Only_Manager'] = 'ä» 
    51 å‘管理员、承讀甚户星瀺' 
    52     lang('chinese')['_News_Return_Confirm_User_Is_Effective'] = '投皿甚户䞺无效甚户所以䞍胜退回。劂果文章需芁修正请进行猖蟑。' 
    53     lang('chinese')['_News_Return_Confirm_User_Is_Effective_1'] = '投皿甚户䞺无效甚户所以䞍胜退回。' 
    54     lang('chinese')['_News_Return_Confirm_User_Is_Effective_2'] = '劂果文章需芁修正请进行猖蟑。' 
    55     lang('chinese')['_News_Return_Confirm_User_Is_Guest'] = '投皿甚户䞺匿名甚户所以䞍胜退回。' 
     3    lang('chinese').merge!({ 
     4      '_News_Admin_ErrorUpdate'                                 => '新闻讟眮的修改倱莥。', 
     5      '_News_Admin_MessageUpdate'                               => '新闻讟眮修改完毕。', 
     6      '_News_Category_ErrorCreate'                              => '分类创建倱莥。', 
     7      '_News_Category_ErrorCreateMaxRecord'                     => '####', 
     8      '_News_Category_ErrorDelete'                              => '分类删陀倱莥。', 
     9      '_News_Category_ErrorDeleteDefaultCategory'               => '####', 
     10      '_News_Category_ErrorUpdate'                              => '分类修改倱莥。', 
     11      '_News_Category_MessageCreate'                            => '分类创建完毕。', 
     12      '_News_Category_MessageDelete'                            => '分类删陀完毕。', 
     13      '_News_Category_MessageDeleteConfirm'                     => '####', 
     14      '_News_Category_MessageNotSelected'                       => '####', 
     15      '_News_Category_MessageUpdate'                            => '分类修改完毕。', 
     16      '_News_Common_Category'                                   => '分类', 
     17      '_News_Common_CategoryCreate'                             => '新建分类', 
     18      '_News_Common_CategoryList'                               => '分类列衚', 
     19      '_News_Common_CategoryName'                               => '分类名', 
     20      '_News_Common_CategoryUpdate'                             => '分类修改', 
     21      '_News_Common_Article'                                    => '正文', 
     22      '_News_Common_NeedApproval'                               => '发衚的新闻需芁批准', 
     23      '_News_Common_News'                                       => '新闻', 
     24      '_News_Common_NewsList'                                   => '新闻列衚', 
     25      '_News_Common_NewsPerBlock'                               => '圚版块䞊星瀺的新闻数', 
     26      '_News_Common_NewsPerPage'                                => '新闻列衚每页星瀺的新闻数', 
     27      '_News_Common_NewsSetting'                                => '新闻讟眮', 
     28      '_News_Common_LastUpdate'                                 => '最后修改日期', 
     29      '_News_Common_PostedDate'                                 => '发衚日期', 
     30      '_News_Common_PublishDate'                                => '发垃日期', 
     31      '_News_Common_Repost'                                     => '重新发衚', 
     32      '_News_Common_ReturnComment'                              => '泚释[%s]', 
     33      '_News_Common_Unread'                                     => '改䞺未读', 
     34      '_News_Filter_ButtonPublicNews'                           => 'å 
     35¬åŒ€çš„æ–°é—»', 
     36      '_News_Filter_ButtonReturnNews'                           => '退回的新闻', 
     37      '_News_Filter_ButtonWaitingNews'                          => '等埠
     38批准的新闻', 
     39      '_News_Filter_CategoryAll'                                => '所有分类', 
     40      '_News_Filter_StateAll'                                   => '已读・未读', 
     41      '_News_Filter_StateNotRead'                               => '未读', 
     42      '_News_Info_BlockDescIndex'                               => '新闻', 
     43      '_News_Info_BlockTitleIndex'                              => '新闻', 
     44      '_News_Info_Description'                                  => '发衚和星瀺眑站曎新信息等新闻的组件。', 
     45      '_News_Info_DisplayName'                                  => '新闻', 
     46      '_News_Info_FunctionApproval'                             => '批准权限', 
     47      '_News_Info_FunctionPost'                                 => '发衚权限', 
     48      '_News_Info_MenuDescAdmin'                                => '新闻讟眮', 
     49      '_News_Info_MenuDescCategory'                             => '分类管理', 
     50      '_News_Info_MenuDescIndex'                                => '新闻列衚', 
     51      '_News_Info_MenuTitleAdmin'                               => '新闻讟眮', 
     52      '_News_Info_MenuTitleCategory'                            => '分类管理', 
     53      '_News_Info_MenuTitleIndex'                               => '新闻列衚', 
     54      '_News_Info_TrailRead'                                    => '查看新闻', 
     55      '_News_Info_TrailUpdate'                                  => '新闻的发衚・猖蟑・删陀', 
     56      '_News_News_ErrorDelete'                                  => '新闻删陀倱莥。', 
     57      '_News_News_ErrorDeleteWithoutPermission'                 => '选择了没有权限删陀的新闻。', 
     58      '_News_News_ErrorPost'                                    => '新闻发衚倱莥。', 
     59      '_News_News_ErrorReturnInvalidUser'                       => '投皿甚户䞺无效甚户所以䞍胜退回。劂果文章需芁修正请进行猖蟑。', 
     60      '_News_News_ErrorUnread'                                  => '####', 
     61      '_News_News_ErrorUpdate'                                  => '新闻修改倱莥。', 
     62      '_News_News_MessageConfirmUnread'                         => '确实芁改䞺未读状态吗', 
     63      '_News_News_MessageConfirmUpdate'                         => '猖蟑后需芁重新批准,确定芁猖蟑吗?', 
     64      '_News_News_MessageDelete'                                => '新闻删陀完毕。', 
     65      '_News_News_MessageNewsNotSelected'                       => '请选择新闻。', 
     66      '_News_News_MessagePostToPublic'                          => '新闻发衚完毕。新闻å 
     67¬åŒ€å‘垃了。', 
     68      '_News_News_MessagePostToWaiting'                         => '新闻发衚完毕。批准后å 
     69¬åŒ€å‘垃。', 
     70      '_News_News_MessageRepostToPublic'                        => '新闻重新发衚完毕。新闻å 
     71¬åŒ€å‘垃了。', 
     72      '_News_News_MessageRepostToWaiting'                       => '新闻重新发衚完毕。批准后å 
     73¬åŒ€å‘垃。', 
     74      '_News_News_MessageReturnComment'                         => '可以蟓å 
     75¥æ³šé‡Š(可选)', 
     76      '_News_News_MessageReturned'                              => '劂果想再次申请批准请[重新发衚]。', 
     77      '_News_News_MessageThereAreReturnedNews'                  => '有%s条被退回的新闻。请进行猖蟑后重新发衚。', 
     78      '_News_News_MessageThereAreWaitingApprovalNews'           => '有%s条新闻等埠
     79批准。请批准或退回。', 
     80      '_News_News_MessageThereAreWaitingNews'                   => '有%s条埠
     81批准的新闻。', 
     82      '_News_News_MessageUnableToReturnInvalidUser'             => '投皿甚户䞺无效甚户所以䞍胜退回。', 
     83      '_News_News_MessageUnableToReturnGuestUser'               => '投皿甚户䞺匿名甚户所以䞍胜退回。', 
     84      '_News_News_MessageUnread'                                => '####', 
     85      '_News_News_MessageUpdate'                                => '新闻修改完毕。', 
     86    }) 
    5687  end 
    5788end 
  • components/news/trunk/news/languages/english.rb

    r5690 r5760  
    11module RubricksLanguage 
    22  def define_lang 
    3     lang('english')['_News_Info_Description'] = 'The component to register and display news.' 
    4     lang('english')['_News_Info_DisplayName'] = 'News' 
    5     lang('english')['_News_Info_TrailRead'] = 'Read a news' 
    6     lang('english')['_News_Info_TrailUpdate'] = 'Post/Edit/Delete a news' 
    7     lang('english')['_News_Title_Config'] = 'News Config' 
    8     lang('english')['_News_Need_Approval_Posted_News'] = 'Approval is necessary for contributed news' 
    9     lang('english')['_News_News_Per_Page']= 'News count per page' 
    10     lang('english')['_News_News_Per_Block']= 'News count per block' 
    11     lang('english')['_News_New_Days']= 'Days of new news' 
    12     lang('english')['_News_Last_Update'] = 'Last update' 
    13     lang('english')['_News_Title_News'] = 'News' 
    14     lang('english')['_News_Setting'] = 'News Config' 
    15     lang('english')['_News_Publish_Date'] = 'Publish date' 
    16     lang('english')['_News_Posted_Date'] = 'Posted date' 
    17     lang('english')['_News_Repost'] = 'Repost' 
    18     lang('english')['_News_Article_Text'] = 'Article text' 
    19     lang('english')['_News_State_Waiting'] = 'Waiting' 
    20     lang('english')['_News_Approval_Item'] = 'News' 
    21     lang('english')['_News_Title_Access'] = 'News List' 
    22     lang('english')['_News_Authorize_Post'] = 'post' 
    23     lang('english')['_News_Authorize_Approval'] = 'approval' 
    24     lang('english')['_News_Not_Select'] = 'Please select news.' 
    25     lang('english')['_News_Components_Setting_Update'] = 'The news setting was updated.' 
    26     lang('english')['_News_Posted_Waiting'] = 'The news was posted. After it is approved, it will be open to the public.' 
    27     lang('english')['_News_Posted_Public'] = 'The news was posted. it is open to the public.' 
    28     lang('english')['_News_Reposted_Waiting'] = 'The news was posted again. After it is approved, it will be open to the public.' 
    29     lang('english')['_News_Reposted_Public'] = 'The news was posted again. it is open to the public.' 
    30     lang('english')['_News_Update_Success'] = 'The news was updated.' 
    31     lang('english')['_News_Multiple_Delete_Failed'] = 'The news that cannot be deleted was selected.' 
    32     lang('english')['_News_Delete_Success'] = 'The news was deleted.' 
    33     lang('english')['_News_Waiting_Approval'] = 'There are %s articles waiting to be approved. Please approve or return it.' 
    34     lang('english')['_News_Waiting_Message'] = 'There are %s articles waiting to be approved. ' 
    35     lang('english')['_News_Returned_Repost'] = 'There are %s returned articles. Please edit and post again.' 
    36     lang('english')['_News_Components_Setting_Update_Failed'] = 'The news setting updating was failure.' 
    37     lang('english')['_News_Post_Failed'] = 'The news posting was failure.' 
    38     lang('english')['_News_Update_Failed'] = 'The news updating was failure.' 
    39     lang('english')['_News_Delete_Failed'] = 'The news deleting was failure.' 
    40     lang('english')['_News_Confirm_Update'] = 'This news needs approval again. Is it all right?' 
    41     lang('english')['_News_Returned_Message'] = 'Please do "Repost" when you do the approval request again.' 
    42     lang('english')['_News_Approval_Request'] = 'Repost' 
    43     lang('english')['_News_Post_User'] = 'Post user' 
    44     lang('english')['_News_Display_Only_Manager'] = 'Display only to manager and approver' 
    45     lang('english')['_News_Return_Confirm_User_Is_Effective'] = 'The user is not ffective,return is not enable.If the news need to be edited,please edit.' 
    46     lang('english')['_News_Return_Confirm_User_Is_Effective_1'] = 'The user is not ffective,return is not enable.' 
    47     lang('english')['_News_Return_Confirm_User_Is_Effective_2'] = 'If the news need to be edited,please edit.' 
    48     lang('english')['_News_Return_Confirm_User_Is_Guest'] = 'The user is guest,return is not enable.' 
     3    lang('english').merge!({ 
     4      '_News_Admin_ErrorUpdate'                                 => 'Failed to update news settings.', 
     5      '_News_Admin_MessageUpdate'                               => 'The news settings are updated.', 
     6      '_News_Category_ErrorCreate'                              => 'Failed to create the category.', 
     7      '_News_Category_ErrorCreateMaxRecord'                     => 'You can not create the category any more.', 
     8      '_News_Category_ErrorDelete'                              => 'Failed to delete the category.', 
     9      '_News_Category_ErrorDeleteDefaultCategory'               => 'You can not delete the default category.', 
     10      '_News_Category_ErrorUpdate'                              => 'Failed to update the category.', 
     11      '_News_Category_MessageCreate'                            => 'The category is created.', 
     12      '_News_Category_MessageDelete'                            => 'The category is deleted.', 
     13      '_News_Category_MessageDeleteConfirm'                     => 'Are you sure to delete the category?', 
     14      '_News_Category_MessageNotSelected'                       => 'Any categories are not selected.', 
     15      '_News_Category_MessageUpdate'                            => 'The category is updated.', 
     16      '_News_Common_Category'                                   => 'Category', 
     17      '_News_Common_CategoryCreate'                             => 'Create Category', 
     18      '_News_Common_CategoryList'                               => 'Category List', 
     19      '_News_Common_CategoryName'                               => 'Category Name', 
     20      '_News_Common_CategoryUpdate'                             => 'Update Category', 
     21      '_News_Common_Article'                                    => 'Article', 
     22      '_News_Common_NeedApproval'                               => 'The news must be approved to publish', 
     23      '_News_Common_News'                                       => 'News', 
     24      '_News_Common_NewsList'                                   => 'News List', 
     25      '_News_Common_NewsPerBlock'                               => 'News number per block', 
     26      '_News_Common_NewsPerPage'                                => 'News number per page', 
     27      '_News_Common_NewsSetting'                                => 'News Config', 
     28      '_News_Common_LastUpdate'                                 => 'Last updated', 
     29      '_News_Common_PostedDate'                                 => 'Posted date', 
     30      '_News_Common_PublishDate'                                => 'Published date', 
     31      '_News_Common_Repost'                                     => 'Repost', 
     32      '_News_Common_ReturnComment'                              => 'Comment: %s', 
     33      '_News_Common_Unread'                                     => 'Return to unread', 
     34      '_News_Filter_ButtonPublicNews'                           => 'Public News', 
     35      '_News_Filter_ButtonReturnNews'                           => 'Returned News', 
     36      '_News_Filter_ButtonWaitingNews'                          => 'Waiting News', 
     37      '_News_Filter_CategoryAll'                                => 'All', 
     38      '_News_Filter_StateAll'                                   => 'All', 
     39      '_News_Filter_StateNotRead'                               => 'Unread', 
     40      '_News_Info_BlockDescIndex'                               => 'News Block', 
     41      '_News_Info_BlockTitleIndex'                              => 'News', 
     42      '_News_Info_Description'                                  => 'The component to post and display news.', 
     43      '_News_Info_DisplayName'                                  => 'News', 
     44      '_News_Info_FunctionApproval'                             => 'Approval', 
     45      '_News_Info_FunctionPost'                                 => 'Post', 
     46      '_News_Info_MenuDescAdmin'                                => 'News Config', 
     47      '_News_Info_MenuDescCategory'                             => 'Category Management', 
     48      '_News_Info_MenuDescIndex'                                => 'News List', 
     49      '_News_Info_MenuTitleAdmin'                               => 'News Config', 
     50      '_News_Info_MenuTitleCategory'                            => 'Category Management', 
     51      '_News_Info_MenuTitleIndex'                               => 'News List', 
     52      '_News_Info_TrailRead'                                    => 'Read the newses', 
     53      '_News_Info_TrailUpdate'                                  => 'Post/Edit/Delete newses', 
     54      '_News_News_ErrorDelete'                                  => 'Failed to delete the news.', 
     55      '_News_News_ErrorDeleteWithoutPermission'                 => 'Failed to delete newses because these are not what you have posted.', 
     56      '_News_News_ErrorPost'                                    => 'Failed to post the news.', 
     57      '_News_News_ErrorReturnInvalidUser'                       => 'You can not return the news because poster is not effective now. Please edit if you want.', 
     58      '_News_News_ErrorUnread'                                  => 'Failed to return the news to unread.', 
     59      '_News_News_ErrorUpdate'                                  => 'Failed to update the news.', 
     60      '_News_News_MessageConfirmUnread'                         => 'Are you sure to return to unread?', 
     61      '_News_News_MessageConfirmUpdate'                         => 'This news will need to approve again. Are you sure to update?', 
     62      '_News_News_MessageDelete'                                => 'The news is deleted.', 
     63      '_News_News_MessageNewsNotSelected'                       => 'Please select a news.', 
     64      '_News_News_MessagePostToPublic'                          => 'The news is posted. It is open to the public.', 
     65      '_News_News_MessagePostToWaiting'                         => 'The news is posted. It will be open to the public after approval.', 
     66      '_News_News_MessageRepostToPublic'                        => 'The news is posted again. It is open to the public.', 
     67      '_News_News_MessageRepostToWaiting'                       => 'The news is posted again. It will be open to the public after approval.', 
     68      '_News_News_MessageReturnComment'                         => 'You can append comment.', 
     69      '_News_News_MessageReturned'                              => 'Please repost if you want to approve the news.', 
     70      '_News_News_MessageThereAreReturnedNews'                  => 'There are %s returned articles. Please edit and post again.', 
     71      '_News_News_MessageThereAreWaitingApprovalNews'           => 'There are %s articles waiting to be approved. Please approve or return.', 
     72      '_News_News_MessageThereAreWaitingNews'                   => 'There are %s articles waiting to be approved. ', 
     73      '_News_News_MessageUnableToReturnInvalidUser'             => 'You can not return the news because poster is not effective now.', 
     74      '_News_News_MessageUnableToReturnGuestUser'               => 'You can not return the news because poster is guest', 
     75      '_News_News_MessageUnread'                                => 'The news is returned to unread.', 
     76      '_News_News_MessageUpdate'                                => 'The news is updated.', 
     77    }) 
    4978  end 
    5079end 
  • components/news/trunk/news/languages/japanese.rb

    r5690 r5760  
    11module RubricksLanguage 
    22  def define_lang 
    3     lang('japanese')['_News_Info_Description'] = 'サむトの曎新惠
    4 å ±ç­‰ã‚’投皿・衚瀺するためのコンポヌネントです。' 
    5     lang('japanese')['_News_Info_DisplayName'] = 'ニュヌス' 
    6     lang('japanese')['_News_Info_TrailRead'] = 'ニュヌスの閲芧' 
    7     lang('japanese')['_News_Info_TrailUpdate'] = 'ニュヌスの投皿・線集・削陀' 
    8     lang('japanese')['_News_Title_Config'] = 'ニュヌス蚭定' 
    9     lang('japanese')['_News_Need_Approval_Posted_News'] = '投皿されたニュヌスに承認が忠
    10 èЁ' 
    11     lang('japanese')['_News_News_Per_Page']= 'ニュヌス䞀芧1ペヌゞに衚瀺するニュヌス件数' 
    12     lang('japanese')['_News_News_Per_Block']= 'ブロックに衚瀺するニュヌス件数' 
    13     lang('japanese')['_News_New_Days']= '新着ニュヌスずする日数' 
    14     lang('japanese')['_News_Last_Update'] = '最終曎新日' 
    15     lang('japanese')['_News_Title_News'] = 'ニュヌス' 
    16     lang('japanese')['_News_Setting'] = 'ニュヌス蚭定' 
    17     lang('japanese')['_News_Publish_Date'] = 'å 
    18 ¬é–‹æ—¥' 
    19     lang('japanese')['_News_Posted_Date'] = '投皿日' 
    20     lang('japanese')['_News_Repost'] = '再投皿' 
    21     lang('japanese')['_News_Article_Text'] = '蚘事本文' 
    22     lang('japanese')['_News_State_Waiting'] = '承認埠
    23 ã¡' 
    24     lang('japanese')['_News_Approval_Item'] = 'ニュヌス' 
    25     lang('japanese')['_News_Title_Access'] = 'ニュヌス䞀芧' 
    26     lang('japanese')['_News_Authorize_Post'] = '投皿暩限' 
    27     lang('japanese')['_News_Authorize_Approval'] = '承認暩限' 
    28     lang('japanese')['_News_Not_Select'] = 'ニュヌスを遞択しおください。' 
    29     lang('japanese')['_News_Components_Setting_Update'] = 'ニュヌス蚭定を曎新したした。' 
    30     lang('japanese')['_News_Posted_Waiting'] = 'ニュヌスを投皿したした。ニュヌスは承認埌å 
    31 ¬é–‹ã•れたす。' 
    32     lang('japanese')['_News_Posted_Public'] = 'ニュヌスを投皿したした。ニュヌスはå 
    33 ¬é–‹ã•れたした。' 
    34     lang('japanese')['_News_Reposted_Waiting'] = 'ニュヌスを再投皿したした。ニュヌスは承認埌å 
    35 ¬é–‹ã•れたす。' 
    36     lang('japanese')['_News_Reposted_Public'] = 'ニュヌスを再投皿したした。ニュヌスはå 
    37 ¬é–‹ã•れたした。' 
    38     lang('japanese')['_News_Update_Success'] = 'ニュヌスを曎新したした。' 
    39     lang('japanese')['_News_Multiple_Delete_Failed'] = '削陀暩限のないニュヌスが遞択されおいたす。' 
    40     lang('japanese')['_News_Delete_Success'] = 'ニュヌスを削陀したした。' 
    41     lang('japanese')['_News_Waiting_Approval'] = '承認埠
    42 ã¡ã®ãƒ‹ãƒ¥ãƒŒã‚¹ãŒ%s件ありたす。承認、又は差し戻しを行っおください。' 
    43     lang('japanese')['_News_Waiting_Message'] = '承認埠
    44 ã¡ã®ãƒ‹ãƒ¥ãƒŒã‚¹ãŒ%s件ありたす。' 
    45     lang('japanese')['_News_Returned_Repost'] = '差し戻しのニュヌスが%s件ありたす。再投皿を行っおください。' 
    46     lang('japanese')['_News_Components_Setting_Update_Failed'] = 'ニュヌス蚭定の曎新に倱敗したした。' 
    47     lang('japanese')['_News_Post_Failed'] = 'ニュヌスの投皿に倱敗したした。' 
    48     lang('japanese')['_News_Update_Failed'] = 'ニュヌスの曎新に倱敗したした。' 
    49     lang('japanese')['_News_Delete_Failed'] = 'ニュヌスの削陀に倱敗したした。' 
    50     lang('japanese')['_News_Confirm_Update'] = '線集埌、再承認が忠
    51 èŠã§ã™ãŒã‚ˆã‚ã—ã„ã§ã™ã‹ïŒŸ' 
    52     lang('japanese')['_News_Returned_Message'] = 'もう䞀床承認䟝頌を行う堎合は「再投皿」を行っおください。' 
    53     lang('japanese')['_News_Post_User'] = '投皿ナヌザ' 
    54     lang('japanese')['_News_Display_Only_Manager'] = '管理耠
    55 ã€æ‰¿èªè€ 
    56 ã®ã¿è¡šç€º' 
    57     lang('japanese')['_News_Return_Confirm_User_Is_Effective'] = '投皿したナヌザが無効になっおいるため、差し戻すこずはできたせん。蚘事の修正が忠
    58 èŠãªå Žåˆã¯ç·šé›†ã‚’è¡Œã£ãŠãã ã•ã„ã€‚' 
    59     lang('japanese')['_News_Return_Confirm_User_Is_Effective_1'] = '投皿したナヌザが無効になっおいるため、差し戻すこずはできたせん。' 
    60     lang('japanese')['_News_Return_Confirm_User_Is_Effective_2'] = '蚘事の修正が忠
    61 èŠãªå Žåˆã¯ç·šé›†ã‚’è¡Œã£ãŠãã ã•ã„ã€‚' 
    62     lang('japanese')['_News_Return_Confirm_User_Is_Guest'] = 'ゲストが投皿したニュヌスを差し戻すこずはできたせん。' 
     3    lang('japanese').merge!({ 
     4      '_News_Admin_ErrorUpdate'                                 => 'ニュヌス蚭定の曎新に倱敗したした。', 
     5      '_News_Admin_MessageUpdate'                               => 'ニュヌス蚭定を曎新したした。', 
     6      '_News_Category_ErrorCreate'                              => 'ニュヌス分類の䜜成に倱敗したした。', 
     7      '_News_Category_ErrorCreateMaxRecord'                     => 'これ以䞊ニュヌス分類を䜜成するこずはできたせん。', 
     8      '_News_Category_ErrorDelete'                              => 'ニュヌス分類の削陀に倱敗したした。', 
     9      '_News_Category_ErrorDeleteDefaultCategory'               => 'ニュヌス分類の初期倀を削陀するこずはできたせん。', 
     10      '_News_Category_ErrorUpdate'                              => 'ニュヌス分類の曎新に倱敗したした。', 
     11      '_News_Category_MessageCreate'                            => 'ニュヌス分類を䜜成したした。', 
     12      '_News_Category_MessageDelete'                            => 'ニュヌス分類を削陀したした。', 
     13      '_News_Category_MessageDeleteConfirm'                     => '削陀されるニュヌス分類に属するå 
     14šãŠã®ãƒ‹ãƒ¥ãƒŒã‚¹ã¯åˆæœŸå€€ã®ãƒ‹ãƒ¥ãƒŒã‚¹åˆ†é¡žã«ç§»å‹•したす。削陀しおよろしいですか', 
     15      '_News_Category_MessageNotSelected'                       => 'ニュヌス分類が遞択されおいたせん。', 
     16      '_News_Category_MessageUpdate'                            => 'ニュヌス分類を曎新したした。', 
     17      '_News_Common_Category'                                   => '分類', 
     18      '_News_Common_CategoryCreate'                             => '新芏ニュヌス分類', 
     19      '_News_Common_CategoryList'                               => 'ニュヌス分類䞀芧', 
     20      '_News_Common_CategoryName'                               => 'ニュヌス分類名', 
     21      '_News_Common_CategoryUpdate'                             => 'ニュヌス分類曎新', 
     22      '_News_Common_Article'                                    => '蚘事本文', 
     23      '_News_Common_NeedApproval'                               => '投皿されたニュヌスに承認が忠
     24芁', 
     25      '_News_Common_News'                                       => 'ニュヌス', 
     26      '_News_Common_NewsList'                                   => 'ニュヌス䞀芧', 
     27      '_News_Common_NewsPerBlock'                               => 'ブロックに衚瀺するニュヌス件数', 
     28      '_News_Common_NewsPerPage'                                => 'ニュヌス䞀芧1ペヌゞに衚瀺するニュヌス件数', 
     29      '_News_Common_NewsSetting'                                => 'ニュヌス蚭定', 
     30      '_News_Common_LastUpdate'                                 => '最終曎新日', 
     31      '_News_Common_PostedDate'                                 => '投皿日', 
     32      '_News_Common_PublishDate'                                => 'å 
     33¬é–‹æ—¥', 
     34      '_News_Common_Repost'                                     => '再投皿', 
     35      '_News_Common_ReturnComment'                              => 'コメント 「%s」', 
     36      '_News_Common_Unread'                                     => '未読に戻す', 
     37      '_News_Filter_ButtonPublicNews'                           => 'å 
     38¬é–‹ãƒ‹ãƒ¥ãƒŒã‚¹', 
     39      '_News_Filter_ButtonReturnNews'                           => '差戻ニュヌス', 
     40      '_News_Filter_ButtonWaitingNews'                          => '承認埠
     41ちニュヌス', 
     42      '_News_Filter_CategoryAll'                                => 'å 
     43šåˆ†é¡ž', 
     44      '_News_Filter_StateAll'                                   => '既読・未読', 
     45      '_News_Filter_StateNotRead'                               => '未読のみ', 
     46      '_News_Info_BlockDescIndex'                               => 'ニュヌスブロック', 
     47      '_News_Info_BlockTitleIndex'                              => 'ニュヌス', 
     48      '_News_Info_Description'                                  => 'サむトの曎新惠
     49報等を投皿・衚瀺するためのコンポヌネントです。', 
     50      '_News_Info_DisplayName'                                  => 'ニュヌス', 
     51      '_News_Info_FunctionApproval'                             => '承認暩限', 
     52      '_News_Info_FunctionPost'                                 => '投皿暩限', 
     53      '_News_Info_MenuDescAdmin'                                => 'ニュヌス蚭定', 
     54      '_News_Info_MenuDescCategory'                             => 'ニュヌス分類管理', 
     55      '_News_Info_MenuDescIndex'                                => 'ニュヌス䞀芧', 
     56      '_News_Info_MenuTitleAdmin'                               => 'ニュヌス蚭定', 
     57      '_News_Info_MenuTitleCategory'                            => 'ニュヌス分類管理', 
     58      '_News_Info_MenuTitleIndex'                               => 'ニュヌス䞀芧', 
     59      '_News_Info_TrailRead'                                    => 'ニュヌスの閲芧', 
     60      '_News_Info_TrailUpdate'                                  => 'ニュヌスの投皿・線集・削陀', 
     61      '_News_News_ErrorDelete'                                  => 'ニュヌスの削陀に倱敗したした。', 
     62      '_News_News_ErrorDeleteWithoutPermission'                 => '削陀暩限のないニュヌスが遞択されおいたす。', 
     63      '_News_News_ErrorPost'                                    => 'ニュヌスの投皿に倱敗したした。', 
     64      '_News_News_ErrorReturnInvalidUser'                       => '投皿したナヌザが無効になっおいるため、差し戻すこずはできたせん。蚘事の修正が忠
     65芁な堎合は線集を行っおください。', 
     66      '_News_News_ErrorUnread'                                  => 'ニュヌスを未読に戻す際に゚ラヌが発生したした。', 
     67      '_News_News_ErrorUpdate'                                  => 'ニュヌスの曎新に倱敗したした。', 
     68      '_News_News_MessageConfirmUnread'                         => '未読に戻したす。よろしいですか', 
     69      '_News_News_MessageConfirmUpdate'                         => '線集埌、再承認が忠
     70芁ですがよろしいですか', 
     71      '_News_News_MessageDelete'                                => 'ニュヌスを削陀したした。', 
     72      '_News_News_MessageNewsNotSelected'                       => 'ニュヌスを遞択しおください。', 
     73      '_News_News_MessagePostToPublic'                          => 'ニュヌスを投皿したした。ニュヌスはå 
     74¬é–‹ã•れたした。', 
     75      '_News_News_MessagePostToWaiting'                         => 'ニュヌスを投皿したした。ニュヌスは承認埌å 
     76¬é–‹ã•れたす。', 
     77      '_News_News_MessageRepostToPublic'                        => 'ニュヌスを再投皿したした。ニュヌスはå 
     78¬é–‹ã•れたした。', 
     79      '_News_News_MessageRepostToWaiting'                       => 'ニュヌスを再投皿したした。ニュヌスは承認埌å 
     80¬é–‹ã•れたす。', 
     81      '_News_News_MessageReturnComment'                         => 'コメントをå 
     82¥åŠ›ã™ã‚‹ã“ãšãŒã§ããŸã™ã€‚(任意)', 
     83      '_News_News_MessageReturned'                              => 'もう䞀床承認䟝頌を行う堎合は「再投皿」を行っおください。', 
     84      '_News_News_MessageThereAreReturnedNews'                  => '差し戻しのニュヌスが%s件ありたす。再投皿を行っおください。', 
     85      '_News_News_MessageThereAreWaitingApprovalNews'           => '承認埠
     86ちのニュヌスが%s件ありたす。承認、又は差し戻しを行っおください。', 
     87      '_News_News_MessageThereAreWaitingNews'                   => '承認埠
     88ちのニュヌスが%s件ありたす。', 
     89      '_News_News_MessageUnableToReturnInvalidUser'             => '投皿したナヌザが無効になっおいるため、差し戻すこずはできたせん。', 
     90      '_News_News_MessageUnableToReturnGuestUser'               => 'ゲストが投皿したニュヌスを差し戻すこずはできたせん。', 
     91      '_News_News_MessageUnread'                                => 'ニュヌスを未読に戻したした。', 
     92      '_News_News_MessageUpdate'                                => 'ニュヌスを曎新したした。', 
     93    }) 
    6394  end 
    6495end 
  • components/news/trunk/news/news/_main_news_create_window.rhtml

    r5697 r5760  
    11<% if has_post? %> 
    22  <% render_window('news_create_window', 'rubricks.news.news_create_window', hl('[_Common_New]'), {:width => 900, :height => 650,}) do %> 
    3     <%= tiny_mce_form_remote_tag(:update => 'news_list_frame',:url => {:controller=>'/news/news', :action=>'post'}, :textarea_id => 'post_news_article', :max_length => 10000, :html => {:onsubmit => "rubricks.news.submit_create_news();", :id => 'news_create_form'}) %> 
     3    <%= tiny_mce_form_remote_tag(:url => {:controller=>'/news/news', :action=>'post'}, :textarea_id => 'post_news_article', :max_length => 10000, :html => {:onsubmit => "rubricks.news.submit_create_news();", :id => 'news_create_form'}) %> 
    44      <% validate_form('news_create_button') do %> 
    55        <table class="rubricks_general_table"> 
     
    1010              <%= text_field 'post_news', 'title', :size => 32, :class => 'input_text_inactive focus' %> 
    1111              <span id="post_news_title_msg"></span> 
     12            </td> 
     13          </tr> 
     14          <tr class="rubricks_general_table_even"> 
     15            <td class="text_bold" style="width:20%;"><%= hl('[_Common_Category]') %></td> 
     16            <td style="width:80%;"> 
     17              <%= select_tag('post_news[category_id]', options_for_select(@select_options , @selected_category))%> 
    1218            </td> 
    1319          </tr> 
     
    2228          <tr class="rubricks_general_table_even"> 
    2329            <td class="text_bold" colspan=2> 
    24               <%= hl("[_News_Article_Text]") %> 
     30              <%= hl("[_News_Common_Article]") %> 
    2531              <%= text_area 'post_news', 'article', :class => "rubricks_general_window", :style => "width:100%; height:300px;" %> 
    2632            </td> 
  • components/news/trunk/news/news/_news_content.rhtml

    r5690 r5760  
    1 <table class="rubricks_wysiwyg_table" id="news_table" style='table-layout: fixed;'
     1<table class="rubricks_wysiwyg_table" id="news_table" <%= (msie?) ? 'style="table-layout:fixed;"' : '' %>
    22  <tbody> 
    3     <tr class="rubricks_general_table_even"> 
    4       <td class="rubricks_wysiwyg_table_td" style="width:15%;font-weight: bold;"><%= hl("[_Common_Title]") %></td> 
    5       <td id="news_detail_title" class="rubricks_wysiwyg_table_td" style="width:85%;" colspan="3"
    6         &nbsp;<%= hl(@news.title) %
    7       </td> 
     3    <tr style="height:0px;"> 
     4      <td style="width:15%;"></td> 
     5      <td style="width:35%;"></td
     6      <td style="width:15%;"></td
     7      <td style="width:35%;"></td> 
    88    </tr> 
    99    <tr class="rubricks_general_table_even"> 
    10     <% unless @news.rubricks_user %> 
    11       <td class="rubricks_wysiwyg_table_td" style="width:15%;font-weight: bold;"><%= hl("[_Common_Poster]") %></td> 
    12       <td id="news_detail_display_name" class="rubricks_wysiwyg_table_td poster_untrusted" style="overflow:hidden;width:40%;"> 
    13         &nbsp;<%= hl(@news.display_name) %> 
    14       </td> 
    15       <td class="rubricks_wysiwyg_table_td" style="width:15%;font-weight: bold;"><%= hl(@news_date_name) %></td> 
    16       <td id="news_detail_news_date" class="rubricks_wysiwyg_table_td" style="width:30%;"> 
    17         &nbsp;<%= hl(@news_date) %> 
    18       </td> 
    19      <% else %> 
    20       <td class="rubricks_wysiwyg_table_td" style="width:15%;font-weight: bold;"><%= hl("[_Common_Poster]") %></td> 
    21       <td id="news_detail_display_name" class="rubricks_wysiwyg_table_td poster_trusted" style="overflow:hidden;width:40%;"> 
    22         &nbsp;<%= hl(@news.rubricks_user.name) %> 
    23       </td> 
    24       <td class="rubricks_wysiwyg_table_td" style="width:15%;font-weight: bold;"><%= hl(@news_date_name) %></td> 
    25       <td id="news_detail_news_date" class="rubricks_wysiwyg_table_td" style="width:30%;"> 
    26         &nbsp;<%= hl(@news_date) %> 
    27       </td> 
    28      <% end %> 
     10      <td class="rubricks_wysiwyg_table_td"><span class="text_bold"><%= hl("[_Common_Title]") %></span></td> 
     11      <td id="news_detail_title" class="rubricks_wysiwyg_table_td" colspan="3"><div class="overflow_auto"><%= hl(@news.title) %></div></td> 
    2912    </tr> 
    3013    <tr class="rubricks_general_table_even"> 
    31       <td class="rubricks_wysiwyg_table_td" style="font-weight: bold;" colspan="4"><%= hl("[_News_Article_Text]") %></td> 
     14      <td class="rubricks_wysiwyg_table_td"><span class="text_bold"><%= hl("[_News_Common_Category]") %></span></td> 
     15      <td id="news_detail_category_name" class="rubricks_wysiwyg_table_td" colspan="3"><div class="overflow_auto"><%= hl(@news.display_category_name) %></div></td> 
     16    </tr> 
     17    <tr class="rubricks_general_table_even"> 
     18      <% if @news.rubricks_user %> 
     19        <td class="rubricks_wysiwyg_table_td"><span class="text_bold"><%= hl("[_Common_Poster]") %></span></td> 
     20        <td id="news_detail_display_name" class="rubricks_wysiwyg_table_td"><div class="overflow_auto"><%= render_user_link(@news.rubricks_user) %></div></td> 
     21        <td class="rubricks_wysiwyg_table_td"><span class="text_bold"><%= hl(@news_date_name) %></span></td> 
     22        <td id="news_detail_news_date" class="rubricks_wysiwyg_table_td"><div class="overflow_auto"><%= hl(@news_date) %></div></td> 
     23      <% else %> 
     24        <td class="rubricks_wysiwyg_table_td"><span class="text_bold"><%= hl("[_Common_Poster]") %></span></td> 
     25        <td id="news_detail_display_name" class="rubricks_wysiwyg_table_td poster_untrusted"><div class="overflow_auto"><%= hl(@news.display_name) %></div></td> 
     26        <td class="rubricks_wysiwyg_table_td"><span class="text_bold"><%= hl(@news_date_name) %></span></td> 
     27        <td id="news_detail_news_date" class="rubricks_wysiwyg_table_td"><div class="overflow_auto"><%= hl(@news_date) %></div></td> 
     28      <% end %> 
     29    </tr> 
     30    <tr class="rubricks_general_table_even"> 
     31      <td class="rubricks_wysiwyg_table_td" style="font-weight: bold;" colspan="4"><%= hl("[_News_Common_Article]") %></td> 
    3232    </tr> 
    3333    <tr class="rubricks_general_table_even"> 
    3434      <td class="rubricks_wysiwyg_table_td" colspan="4"> 
    35         <% if (@news.approval == Acts::Approval::APPROVALED) && (@news.publish_date < @news.updated_on) %> 
    36           <div style="text-align:right;"> 
    37             <%= hl("[_News_Last_Update]") %>:<%= hl(@news.updated_on.strftime(hl("[_Common_Date_HourMinSec_Format]"))) %> 
     35        <% if (@news.is_approvaled?) && (@news.publish_date < @news.updated_on) %> 
     36          <div class="text_right"> 
     37            <%= hl("[_News_Common_LastUpdate]") %>:<%= hl(@news.updated_on.strftime(hl("[_Common_Date_HourMinSec_Format]"))) %> 
    3838          </div> 
    3939        <% end %> 
    40         <% if params[:action] == "print_news" %> 
    41           <div style='overflow: hidden;width: 100%;'> 
    42         <% else %> 
    43           <div style='overflow: auto;width: 100%;'> 
    44         <% end %> 
     40        <div class="overflow_auto"> 
    4541          <%= render_content_tiny_mce(@news.article, {:id => 'news_detail_content'}) %> 
    46           <div style='height: 25px;'></div
     42          <br class="cl" /
    4743        </div> 
    4844      </td> 
  • components/news/trunk/news/news/delete_news_multiple.rhtml

    r3895 r5760  
    66<% else  %> 
    77  <script type="text/javascript"> 
    8     rubricks.news.delete_news('<%= @delete_news_ids %>'); 
     8    rubricks.news.news_delete('<%= @delete_news_ids %>'); 
    99    rubricks.news.no_selected_news(); 
    1010  </script> 
  • components/news/trunk/news/news/item_return_confirm.rhtml

    r5690 r5760  
    1313    ); 
    1414  <% else %> 
    15     rubricks.common.rubricks_message_window_open('<%= hl('[_News_Return_Confirm_User_Is_Effective]') %>'); 
     15    rubricks.common.rubricks_message_window_open('<%= hl('[_News_News_MessageUnableToReturnInvalidUser]') %>'); 
    1616  <% end %> 
    1717</script> 
  • components/news/trunk/news/news/main.rhtml

    r5690 r5760  
    44  <div class="rubricks_general_frame_borderless"> 
    55    <% render_operation_bar do %> 
    6       <%= form_tag({:controller => '/news/news', :action => 'print', :page => 'print_news'}, {:id => 'news_print_form', :class => 'operationbar_button_right_inactive swap',  :target => "_blank"}) %> 
     6      <%= form_tag({:controller => '/news/news', :action => 'print', :print_action => 'print_news'}, {:id => 'news_print_form', :class => 'operationbar_button_right_inactive swap',  :target => "_blank"}) %> 
    77        <%= hidden_field 'print_news', 'id' %> 
    88        <span id="print_button" class="buttons disabled darkicon_print textcolor_white" onclick="rubricks.news.print_news();"><%= hl('[_Common_Print]') %></span> 
     
    1212          <span id="open_news_create_window_button" class="buttons darkicon_new textcolor_white" onclick="rubricks.news.open_news_create_window('<%= hl(default_display_name.gsub("\\", "\\\\\\").gsub("'", "\\\\'").gsub("\"", "\\\\\"")) %>');"><%= hl('[_Common_New]') %></span> 
    1313        </div> 
     14        <% if @waiting_news_is_existent_true %> 
     15          <div id="operationbar_button_filter_target_wait" class="operationbar_button_left_inactive swap"> 
     16            <span id="news_select_waiting_news_id" class="buttons darkicon_search textcolor_white" onclick="rubricks.news.filter_select_target(1); Element.hide('operationbar_button_filter_target_wait');"><%= hl('[_News_Filter_ButtonWaitingNews]') %></span> 
     17          </div> 
     18        <% end %> 
     19        <% if @returned_news_is_existent_true %> 
     20          <div id="operationbar_button_filter_target_return" class="operationbar_button_left_inactive swap"> 
     21            <span id="news_select_returned_news_id" class="buttons darkicon_search textcolor_white" onclick="rubricks.news.filter_select_target(2); Element.hide('operationbar_button_filter_target_return');"><%= hl('[_News_Filter_ButtonReturnNews]') %></span> 
     22          </div> 
     23        <% end %> 
    1424      <% end %> 
    1525    <% end %> 
    1626    <% render_content_body do %> 
    1727      <% render_list_frame('01') do %> 
    18         <% render_list('01', hl('[_News_Title_Access]')) do %> 
     28        <% render_list('01', hl('[_News_Common_NewsList]')) do %> 
     29          <%= render :partial => '/news/news/news_filter' %> 
    1930          <div id="news_list_frame"> 
    20             <%= @news_list %> 
     31            <%= simple_render_component('/news/news', 'news_list', {}) %> 
    2132          </div>  
    2233        <% end %> 
    2334      <% end %> 
    2435      <% render_detail_frame('01') do %> 
    25         <div id="news_info"> 
    26           <%= @news_detail %> 
     36        <div id="news_empty_message" style="display:none;"> 
     37          <% render_detail('01', '') do %> 
     38            <div class="rubricks_detail_information"> 
     39              <%= hl('[_Common_DetailInformation]') %> 
     40            </div> 
     41          <% end %> 
     42        </div> 
     43        <div id="news_info" style="display:none;"> 
     44          <%= simple_render_component('/news/news', 'show_news', {:id => params[:id]}) %> 
    2745        </div> 
    2846      <% end %> 
  • components/news/trunk/news/news/news_list.rhtml

    r5690 r5760  
    1 <%= flash_for_feedback_msg(:news_message) %> 
    2 <% if News::NewsItem.waiting_news_empty? && News::NewsItem.returned_news_empty? %> 
    3   <%= @public_news_list %> 
     1<% if @news_items.empty? %> 
     2  <div class="rubricks_list_message"> 
     3    <%= hl(['[_Common_ListMessage]', hl('[_News_Common_News]')]) %> 
     4  </div> 
    45<% else %> 
    5   <div id="news_list_tab" style="display:none;"> 
    6     <div onclick="rubricks.news.show_public_news_tab();"> 
    7       <h3 id="public_news_tab" class="rubricks_general_tabBox_tab"><%= hl('[_Common_Open]') %></h3> 
    8       <div id="public_news_list_tab" class="rubricks_general_tabBox_content"><%= @public_news_list %></div> 
    9     </div> 
    10     <div onclick="rubricks.news.show_waiting_news_tab();"> 
    11       <h3 id="waiting_news_tab" class="rubricks_general_tabBox_tab"><%= hl('[_News_State_Waiting]') %></h3> 
    12       <div class="rubricks_general_tabBox_content"> 
    13         <div id="waiting_news_list_tab"><%= @waiting_news_list %></div> 
     6  <% render_float_button('news_operation_button') do %> 
     7    <% if has_delete_multiple? %> 
     8      <div id="news_select_multiple_form" class="float_button_right_inactive swap" style="display: block;"> 
     9        <span id="news_select_multiple_button" class="buttons icon_multiple" onclick="rubricks.news.select_multiple_mode('news_');"><%= hl('[_Common_SelectMultiple]') %></span> 
    1410      </div> 
    15     </div> 
    16     <div onclick="rubricks.news.show_returned_news_tab();"> 
    17       <h3 id="returned_news_tab" class="rubricks_general_tabBox_tab"><%= hl('[_Common_Admit_Return]') %></h3> 
    18       <div class="rubricks_general_tabBox_content"> 
    19         <div id="returned_news_list_tab"><%= @returned_news_list %></div> 
     11      <div id="news_select_singular_form" class="float_button_right_inactive swap" style="display: none;"> 
     12        <span id="news_select_singular_button" class="buttons icon_single" onclick="rubricks.news.select_singular_mode('news_');rubricks.news.show_tab_button('news_');"><%= hl('[_Common_SelectSingular]') %></span> 
    2013      </div> 
    21     </div> 
    22   </div> 
     14      <div id="news_news_delete_multiple_form" class="float_button_right_inactive swap" style="display: none;"> 
     15        <span id="news_news_delete_multiple_button" class="buttons icon_delete" onclick="rubricks.news.news_delete_multiple();"><%= hl('[_Common_Delete]') %></span> 
     16      </div> 
     17    <% end %> 
     18  <% end %> 
     19  <%= pagination_remote_links(@pages, {:params => {:update => 'news_list_frame', :url => {:controller => '/news/news', :action => 'news_list', :params => {:keep_detail_is_true => true}}}, :window_size => 5}, {:id => 'news_news_list_navigation_top'}) %> 
     20  <% render_selectable_table('news_news_list', 'rubricks.news.news_list', selectable_table_options(@news_id)) do %> 
     21    <tbody> 
     22      <% @news_items.each do |news| %> 
     23        <% render_selectable_tr(news.id) do %> 
     24          <td id="news_list_publish_date_<%= hl(news.id) %>" class="custom_selectableTable_td" style="width:72px;"> 
     25            <span> 
     26              <% if news.is_approvaled? %> 
     27                <%= hl(publish_date_to_s(news)) %> 
     28              <% else %> 
     29                <%= hl(updated_on_to_s(news)) %> 
     30              <% end %> 
     31            </span> 
     32          </td> 
     33          <td id="news_list_title_<%= hl(news.id) %>" class="custom_selectableTable_td" style="<%=(news.read?) ? '' : 'font-weight:bold;'%>"><div> 
     34            <%= hl(cutoff_news_title(news.title)) %> 
     35          </td> 
     36        <% end %> 
     37      <% end %> 
     38    </tbody> 
     39  <% end %> 
     40  <%= pagination_remote_links(@pages, {:params => {:update => 'news_list_frame', :url => {:controller => '/news/news', :action => 'news_list', :params => {:keep_detail_is_true => true}}}, :window_size => 5}, {:id => 'news_news_list_navigation_bottom'}) %> 
     41<% end %> 
     42<% if @search %> 
    2343  <script type="text/javascript"> 
    24     new TabBox('news_list_tab', {selected:<%= hl(@news_list_tab) %>}); 
     44    setTimeout(function() {rubricks.news.filter_refocus();}, 100); 
    2545  </script> 
    2646<% end %> 
  • components/news/trunk/news/news/show_news.rhtml

    r5709 r5760  
    1 <%= flash_for_feedback_msg(:news_message) %> 
    21<% if @news %> 
    32  <% validate_page do %> 
    43    <div id="news_edit_area"> 
    54      <div> 
    6         <% render_detail('01', hl('[_News_Title_News]')) do %> 
     5        <% render_detail('01', hl('[_News_Common_News]')) do %> 
    76          <% render_float_button('float_button_area_show') do %> 
    87            <% if has_edit?(@news) %> 
    98              <div id="news_delete_form" class="float_button_right_inactive swap"> 
    10                 <span id="news_delete_confirm_button" class="buttons icon_delete" onclick="<%= render_confirm_window('[_Common_Delete_Confirm]', "rubricks.news.delete_news('#{hl(@news.id)}');rubricks.news.no_selected_news();") %>"><%= hl('[_Common_Delete]') %></span> 
     9                <span id="news_delete_confirm_button" class="buttons icon_delete" onclick="<%= render_confirm_window('[_Common_Delete_Confirm]', "rubricks.news.news_delete('#{hl(@news.id)}');") %>"><%= hl('[_Common_Delete]') %></span> 
    1110              </div> 
    1211              <div id="news_edit_mode_form" class="float_button_right_inactive swap"> 
    13                 <span id="news_edit_mode_button" class="buttons icon_edit" onclick="<%= (need_confirm_update?(@news))? render_confirm_window('[_News_Confirm_Update]', "rubricks.news.become_edit_mode();") : 'rubricks.news.become_edit_mode();' %>"><%= hl(@edit_button_name) %></span> 
     12                <span id="news_edit_mode_button" class="buttons icon_edit" onclick="<%= (need_confirm_update?(@news))? render_confirm_window('[_News_News_MessageConfirmUpdate]', "rubricks.news.become_edit_mode();") : 'rubricks.news.become_edit_mode();' %>"><%= hl(@edit_button_name) %></span> 
    1413              </div> 
    1514            <% end %> 
    1615            <% if has_approval?(@news) %> 
    17               <%= form_remote_tag(:update => 'message_area',:url => {:controller=>'/news/news', :action=>'item_return_confirm', :id => @news}, :html => {:id => 'news_return_form', :class => 'float_button_right_inactive swap'}) %> 
     16              <%= form_tag({:controller => '/'}, {:id => 'news_return_form', :class => 'float_button_right_inactive swap'}) %> 
    1817                <% if @user_effectiv_is_true == true %> 
    19                   <span id="news_return_confirm_button" class="buttons icon_refusal" onclick="<%= render_confirm_window('[_Common_Admit_Return_Confirm]', "rubricks.common.fire_onsubmit('news_return_form', 'news_return_confirm_button');") %>"><%= hl('[_Common_Admit_Return]') %></span> 
     18                  <span id="news_return_confirm_button" class="buttons icon_refusal" onclick="rubricks.news.open_item_return_comment_window();"><%= hl('[_Common_Admit_Return]') %></span> 
     19                  <%= render :partial => '/news/news/item_return_confirm_window' %> 
    2020                <% else %> 
    21                   <span id="news_return_confirm_button" class="buttons icon_refusal"  ><%= hl('[_Common_Admit_Return]') %></span> 
     21                  <span id="news_return_confirm_button" class="buttons icon_refusal"><%= hl('[_Common_Admit_Return]') %></span> 
    2222                <% end %> 
    2323              </form> 
     
    2626              </form> 
    2727            <% end %> 
     28            <div id="news_return_unread_state_form" class="float_button_right_inactive swap" style="<%=(RubricksLib.guest?)? 'display:none;' : ''%>"> 
     29              <span id="news_return_unread_state" class="buttons icon_undo" onclick="<%= render_confirm_window('[_News_News_MessageConfirmUnread]', "rubricks.news.news_return_unread_state('#{hl(@news.id)}');") %>"><%= hl('[_News_Common_Unread]') %></span> 
     30            </div> 
    2831          <% end %> 
    2932          <% if @news.is_returned? && @nc.approval %> 
    30             <div class="pointcolor_text" style="margin:0 15px;"><%= hl('[_News_Returned_Message]') %></div> 
     33            <div class="pointcolor_text news_additional_commont"> 
     34              <p><%= hl('[_News_News_MessageReturned]') %></p> 
     35              <% unless @news.comment.blank? %> 
     36                <p><%= hl('[_News_Common_ReturnComment]', @news.comment) %></p> 
     37              <% end %> 
     38            </div> 
    3139          <% end %> 
    32           <% if (@user_effectiv_is_true != true)&& !(@news.is_returned?)&&(@news.approval != 1) %> 
    33             <div class="pointcolor_text" style="margin:0 15px;"> 
     40          <% if @user_effectiv_is_true.blank? && @news.is_waiting? %> 
     41            <div class="pointcolor_text news_additional_commont"> 
    3442              <% if @news.rubricks_user %> 
    35                 <%= hl('[_News_Return_Confirm_User_Is_Effective_1]') %> 
     43                <%= hl('[_News_News_MessageUnableToReturnInvalidUser]') %> 
    3644              <% else %> 
    37                 <%= hl('[_News_Return_Confirm_User_Is_Guest]') %> 
     45                <%= hl('[_News_News_MessageUnableToReturnGuestUser]') %> 
    3846              <% end %> 
    3947            </div> 
     
    4856      <div style="display:none;"> 
    4957        <% if has_edit?(@news) %> 
    50           <% render_detail('01', hl('[_News_Title_News]')) do %> 
     58          <% render_detail('01', hl('[_News_Common_News]')) do %> 
    5159            <% validate_form('news_edit_button') do %> 
    52               <%= tiny_mce_form_remote_tag(:update => 'news_list_frame',:url => {:controller=>'/news/news', :action=>'update', :id => @news}, :textarea_id => 'news_article', :max_length => 10000, :html => {:id => 'news_edit_form'}) %> 
     60              <%= tiny_mce_form_remote_tag(:url => {:controller=>'/news/news', :action=>'update', :id => @news}, :textarea_id => 'news_article', :max_length => 10000, :html => {:id => 'news_edit_form', :onsubmit => %Q|rubricks.common.FormEditor.readMode('news_edit_area');|}) %> 
    5361                <% render_float_button('float_button_area_edit') do %> 
    5462                  <div class="float_button_right_inactive swap"> 
     
    6876                    </td> 
    6977                  </tr> 
     78                  <tr class="rubricks_general_table_even"> 
     79                    <td class="text_bold" style="width:20%;"><%= hl('[_News_Common_Category]') %></td> 
     80                    <td style="width:80%;"> 
     81                      <%= select_tag('news[category_id]', options_for_select(@select_options, @selected_category)) %> 
     82                    </td> 
     83                  </tr> 
    7084                  <tr class="rubricks_general_table_even" <%= (@news.rubricks_user) ? 'style="display:none;"' : '' %>> 
    7185                    <%= validate 'news_display_name', [{:required => true}, {:length => '1..32'}] %> 
     
    7892                  <tr class="rubricks_general_table_even"> 
    7993                    <td class="text_bold" colspan=2> 
    80                       <%= hl("[_News_Article_Text]") %> 
     94                      <%= hl("[_News_Common_Article]") %> 
    8195                      <%= text_area 'news', 'article', :class => "rubricks_general_window", :style => "height:300px; width:100%;" %> 
    8296                    </td> 
     
    91105    </div> 
    92106  <% end %> 
    93   <div id="message_area" style="display:none"></div> 
    94107  <script type="text/javascript"> 
    95108    rubricks.news.init('<%= @news.id %>', <%= has_edit?(@news) %>); 
     109    rubricks.news.detail_area_show(); 
    96110  </script> 
    97111<% else %> 
    98   <% render_detail('01', hl('[_News_Title_News]')) do %> 
    99     <div class="rubricks_detail_information"> 
    100       <%= hl('[_Common_DetailInformation]') %> 
    101     </div> 
    102   <% end %> 
    103112  <script type="text/javascript"> 
    104113    Element.addClassName('print_button', 'disabled'); 
    105114    $('print_news_id').value = ''; 
     115    rubricks.news.detail_area_hide(); 
    106116  </script> 
    107117<% end %> 
  • components/news/trunk/news/news_config.rb

    r4612 r5760  
    11class News::NewsConfig < ActiveRecord::Base 
    2   acts_as_record_trails     :trails_fields => {:approval => '[_News_Need_Approval_Posted_News]', :news_per_block => '[_News_News_Per_Block]', :news_per_page => '[_News_News_Per_Page]', :new_days => '[_News_New_Days]'}, :default_methods => [:approval, :news_per_block, :news_per_page, :new_days], :auto_logger => {:update => true} 
     2  acts_as_record_trails     :trails_fields => {:approval => '[_News_Common_NeedApproval]', :news_per_block => '[_News_Common_NewsPerBlock]', :news_per_page => '[_News_Common_NewsPerPage]'}, :default_methods => [:approval, :news_per_block, :news_per_page] 
    33  validates_bool_of         :approval 
    44  validates_inclusion_of    :news_per_block, :in => 1..20 
  • components/news/trunk/news/news_controller.rb

    r5709 r5760  
    11class News::NewsController < ApplicationController 
    2   include News::NewsHelper 
    32  define_page 
    43  uses_component_template_root 
    54  use_tiny_mce_attachable 
    6   contents_approval_controller('/news/news_item', :approval_item => '[_News_Approval_Item]', :approval_action => 'main', 
    7                                :after_approve_action => 'news_list', :after_return_action => 'news_list', :approval_componemt => 'news', :approval_function => 'approval') 
     5  contents_approval_controller('/news/news_item', :approval_item => '[_News_Common_News]', :approval_action => 'main', :after_approve_action => 'news_approval', :after_return_action => 'news_approval', :approval_componemt => 'news', :approval_function => 'approval') 
     6  helper :'news/common' 
    87  authorize :access 
    98  authorize :approval,  :only   => [:before_approve, :item_approve, :item_return, :after_approve, :after_return] 
    10   authorize :post,      :only   => [:post
     9  authorize :post,      :only   => [:post,:create_news_window
    1110 
    1211  def main 
    13     @news_list = simple_render_component_as_string('/news/news', 'news_list', params) 
    14     @news_detail = simple_render_component_as_string('/news/news', 'show_news', params) 
    15  
    1612    if current_user.id != RubricksUser::GUEST_USER_ID 
    1713      waiting_count = News::NewsItem.waiting_news_count 
    1814      unless waiting_count == 0 
     15        @waiting_news_is_existent_true = true 
    1916        if permitted_current_component_function?('approval') 
    20           add_news_message(RubricksLib.hl('[_News_Waiting_Approval]', waiting_count)) 
    21         else 
    22           add_news_message(RubricksLib.hl('[_News_Waiting_Message]', waiting_count)) 
     17          add_news_message(RubricksLib.hl('[_News_News_MessageThereAreWaitingApprovalNews]', waiting_count)) 
     18        else 
     19          add_news_message(RubricksLib.hl('[_News_News_MessageThereAreWaitingNews]', waiting_count)) 
    2320        end 
    2421      end 
    2522      returned_count = News::NewsItem.returned_news_count 
    2623      unless returned_count == 0 
    27         add_news_message(RubricksLib.hl('[_News_Returned_Repost]', returned_count)) 
    28       end 
    29     end 
     24        @returned_news_is_existent_true = true 
     25        add_news_message(RubricksLib.hl('[_News_News_MessageThereAreReturnedNews]', returned_count)) 
     26      end 
     27    end 
     28    @select_options             = News::NewsCategory.select_options 
     29    @selected_category          = News::NewsCategory.selected_category 
     30    @select_options_for_filter  = @select_options.dup.unshift(News::NewsCategory.default_select_option) 
     31    set_filter_conditions('news_filter', {}) 
     32  end 
     33 
     34  def after_approve(item) 
     35    add_news_message(RubricksLib.hl('[_Common_Approval_Success]', RubricksLib.hl('[_News_Common_News]'))) 
     36  end 
     37 
     38  def after_return(item) 
     39    item.update_attribute(:comment, params[:comment]) 
     40    add_news_message(RubricksLib.hl('[_Common_Approval_Return_Success]', RubricksLib.hl('[_News_Common_News]'))) 
     41  end 
     42 
     43  def before_approve(item) 
     44    item.publish_date = DateTime.now.strftime("%Y-%m-%d %H:%M:%S") 
     45  end 
     46 
     47  def before_return(item) 
     48    news_user = RubricksUser.find_by_id(item.rubricks_user_id) 
     49    raise RubricksError::Common::AjaxError, '[_News_News_ErrorReturnInvalidUser]' unless news_user.effective 
     50  end 
     51 
     52  def delete 
     53    check_permission 
     54    delete_news_id_list = (params[:delete_news_id]) ? params[:delete_news_id].split(',') : [] 
     55    raise RubricksError::Common::AjaxError, '[_News_News_ErrorDeleteWithoutPermission]' unless check_all_own_news(delete_news_id_list) 
     56    if delete_news_id_list && delete_news_id_list.first 
     57      news_item = News::NewsItem.find(delete_news_id_list.first) 
     58      if news_item.is_waiting? 
     59        page_name = 'waiting_page' 
     60      elsif news_item.is_returned? 
     61        page_name = 'returned_page' 
     62      else 
     63        page_name = 'public_page' 
     64      end 
     65    end 
     66    ActiveRecord::Base.transaction do 
     67      delete_news_id_list.each do |delete_news_id| 
     68        news = News::NewsItem.find(delete_news_id) 
     69        unless News::NewsLib.administrator? 
     70          unless news.is_approvaled? 
     71            unless check_own_news(delete_news_id) 
     72              raise RubricksError::User::UnauthorizedException, RubricksMessage::MESSAGE_I0002, caller 
     73            end 
     74          end 
     75        end 
     76        if News::NewsItem.destroy(delete_news_id) 
     77          add_news_message('[_News_News_MessageDelete]') 
     78        else 
     79          add_news_message('[_News_News_ErrorDelete]') 
     80        end 
     81      end 
     82    end 
     83    @detail_hide = true 
     84    headers["Content-Type"] = "text/javascript" 
     85    render :template => '/news/news/update.rjs' 
     86  end 
     87 
     88  def file_accessable?(ra) 
     89    return true if News::NewsLib.administrator? 
     90    ral = ra.rubricks_attachment_links 
     91    if ral.empty? 
     92      return News::NewsLib.has_post? 
     93    end 
     94    news = News::NewsItem.find(ral.first.rubricks_attachable_id) 
     95    return false unless news 
     96    return news.accessable? 
     97  end 
     98 
     99  def news_approval 
    30100  end 
    31101 
    32102  def news_list 
    33     news_id = params[:news_id] ||= params[:id] 
    34     if news_id 
    35       news_item = News::NewsItem.find(news_id) rescue news_id = nil 
    36     end 
    37     unless params[:page_name] 
    38       if guest? || !news_item || news_item.is_approvaled? 
    39         params[:page_name] = 'public_page' 
    40       elsif news_item.is_waiting? 
    41         params[:page_name] = 'waiting_page' 
    42       elsif news_item.is_returned? 
    43         params[:page_name] = 'returned_page' 
    44       end 
    45     end 
    46     case params[:page_name] 
    47     when 'waiting_page' 
    48       params[:page_name] = 'public_page' if News::NewsItem.waiting_news_empty? 
    49     when 'returned_page' 
    50       params[:page_name] = 'public_page' if News::NewsItem.returned_news_empty? 
    51     end 
    52     case params[:page_name] 
    53     when 'public_page' 
    54       @news_list_tab = "1" 
    55       @public_news_list = simple_render_component_as_string('/news/news', 'public_news_list', params) 
    56     when 'waiting_page' 
    57       @news_list_tab = "2" 
    58       @waiting_news_list = simple_render_component_as_string('/news/news', 'waiting_news_list', params) 
    59     when 'returned_page' 
    60       @news_list_tab = "3" 
    61       @returned_news_list = simple_render_component_as_string('/news/news', 'returned_news_list', params) 
    62     end 
    63   end 
    64  
    65   def item_return_confirm 
    66     item = News::NewsItem.find_by_id(params[:id]) 
    67     news_user =  RubricksUser.find_by_id(item.rubricks_user_id) 
    68     if news_user.effective == true 
    69       @message_is_true = false 
    70       @item_id = params[:id] 
    71     else 
    72       @message_is_true = true 
    73     end 
    74   end 
    75    
    76   def public_news_list 
    77     news_id = params[:news_id] ||= params[:id] 
    78     @nc = News::NewsConfig.instance 
    79     if news_id 
    80       news_item = News::NewsItem.find(news_id) rescue news_item = nil 
    81       if news_item && (news_item.is_approvaled? || !guest?) 
    82         news_count = News::NewsItem.count(:conditions => ['approval = 1 and (publish_date > ? or (publish_date = ? and id > ?))', news_item.publish_date, news_item.publish_date, news_item.id]) 
    83         params[:page] = news_count / @nc.news_per_page + 1 
    84         @show_news_id = news_id 
    85       end 
    86     end 
    87     @pages, @news_items = paginate(:'news/news_item', :per_page => @nc.news_per_page, :conditions => ['approval = 1'], :order => 'publish_date DESC, id DESC') 
     103    @nc               = News::NewsConfig.instance 
     104    @news_id          = params[:id] || 0 
     105    per_page          = @nc.news_per_page 
     106    filter_conditions = filter_merge_conditions({:input_data => params[:news_filter], :page => params[:page].to_i}) 
     107    @search           = filter_conditions[:search] 
     108    count             = News::NewsItem.count(:all, :conditions => filter_conditions[:conditions], :include => :news_already_reads) 
     109    @pages            = ::ActionController::Pagination::Paginator.new(self, count, per_page, filter_conditions[:page]) 
     110    @news_items       = News::NewsItem.find(:all, :conditions => filter_conditions[:conditions], :include => :news_already_reads, :limit => @pages.items_per_page, :offset => @pages.current.offset, :order => filter_conditions[:order]) 
    88111    rubricks_logger({:action_type => :list, :data => @news_items}) 
    89   end 
    90  
    91   def waiting_news_list 
    92     approval_news_list(Acts::Approval::WAITING) 
    93   end 
    94  
    95   def returned_news_list 
    96     approval_news_list(Acts::Approval::RETURNED) 
    97   end 
    98  
    99   def show_news 
    100     @nc = News::NewsConfig.instance 
    101     news_id = params[:news_id] ||= params[:id] 
    102     if news_id 
    103       @news = News::NewsItem.find(news_id) rescue return 
    104       if !administrator? 
    105         if !@news.is_approvaled? 
    106           unless check_own_news(news_id) 
    107             raise RubricksError::User::UnauthorizedException, RubricksMessage::MESSAGE_I0002, caller 
    108           end 
    109         end 
    110       end 
    111       news_user =  RubricksUser.find_by_id(@news.rubricks_user_id) 
    112       if news_user 
    113         if news_user.effective == true 
    114           @user_effectiv_is_true = true 
    115         else 
    116           @user_effectiv_is_true = false 
    117         end 
    118       end 
    119       if @news.is_approvaled? 
    120         @news_date_name = '[_News_Publish_Date]' 
    121         @news_date = @news.publish_date.strftime(RubricksLib.hl('[_Common_Date_HourMinSec_Format]')) 
    122         @edit_button_name = '[_Common_Edit]' 
    123         @edit_submit_button_name = '[_Common_Save]' 
    124       elsif @news.is_waiting? 
    125         @news_date_name = '[_News_Posted_Date]' 
    126         @news_date = @news.updated_on.strftime(RubricksLib.hl('[_Common_Date_HourMinSec_Format]')) 
    127         @edit_button_name = '[_Common_Edit]' 
    128         @edit_submit_button_name = '[_Common_Save]' 
    129       elsif @news.is_returned? 
    130         @news_date_name = '[_News_Posted_Date]' 
    131         @news_date = @news.updated_on.strftime(RubricksLib.hl('[_Common_Date_HourMinSec_Format]')) 
    132         @edit_button_name = '[_News_Repost]' 
    133         @edit_submit_button_name = '[_Common_Submit]' 
    134       end 
    135     end 
    136     rubricks_logger({:action_type => :detail, :data => @news}) 
    137   end 
    138  
    139   def news_window 
    140     news_id = params[:id] 
    141     @news = News::NewsItem.find(news_id) rescue return 
    142     @news_date_name = '[_News_Publish_Date]' 
    143     @news_date = @news.publish_date.strftime(RubricksLib.hl('[_Common_Date_HourMinSec_Format]')) 
    144   end 
    145  
    146   def update 
    147     check_permission 
    148     nc = News::NewsConfig.instance 
    149     ru = current_user 
    150     news_id = params[:id] 
    151     unless check_own_news(news_id) 
    152       raise RubricksError::User::UnauthorizedException, RubricksMessage::MESSAGE_I0002, caller 
    153     end 
    154     @news_item = News::NewsItem.find(news_id) 
    155     before_approval = @news_item.approval 
    156     @news_item.title = params[:news][:title] 
    157     @news_item.display_name = params[:news][:display_name] 
    158     @news_item.article = params[:news][:article] 
    159     if @news_item.is_returned? 
    160       if !nc.approval  
    161         @news_item.approval = Acts::Approval::APPROVALED 
    162         @news_item.publish_date = DateTime.now.strftime("%Y-%m-%d %H:%M:%S") 
    163       else 
    164         @news_item.approval = Acts::Approval::WAITING 
    165       end   
    166     elsif need_confirm_update?(@news_item) 
    167       @news_item.approval = Acts::Approval::WAITING 
    168     end 
    169     if @news_item.save 
    170       if before_approval == Acts::Approval::RETURNED 
    171         if @news_item.is_approvaled? 
    172           add_news_message('[_News_Reposted_Public]') 
    173         else 
    174           add_news_message('[_News_Reposted_Waiting]') 
    175         end 
    176       else 
    177         add_news_message('[_News_Update_Success]') 
    178       end 
    179     else 
    180       add_news_message('[_News_Post_Failed]') 
    181     end 
    182     redirect_to :controller => "/news/news", :action => 'news_list', :params => {:id => @news_item.id, :show_news => true} 
    183112  end 
    184113 
     
    193122    @news_item.rubricks_user_id = ru.id unless ru.id == RubricksUser::GUEST_USER_ID 
    194123    @news_item.approval = Acts::Approval::WAITING 
    195  
     124    @news_item.news_category_id = params[:post_news][:category_id] 
    196125    if @news_item.is_waiting? && (!nc.approval || permitted_current_component_function?('approval') && @news_item.my_news?) 
    197126      @news_item.approval = Acts::Approval::APPROVALED 
    198127      @news_item.publish_date = DateTime.now.strftime("%Y-%m-%d %H:%M:%S") 
    199128    end 
    200  
    201     if @news_item.save 
    202       if @news_item.is_approvaled? 
    203         add_news_message('[_News_Posted_Public]') 
     129    count = News::NewsCategory.count(:conditions =>['id = ?', params[:post_news][:category_id]]) 
     130    if count == 0 
     131      raise ActiveRecord::RecordNotFound 
     132    else 
     133      if @news_item.save 
     134        if @news_item.is_approvaled? 
     135          add_news_message('[_News_News_MessagePostToPublic]') 
     136        else 
     137          add_news_message('[_News_News_MessagePostToWaiting]') 
     138        end 
    204139      else 
    205         add_news_message('[_News_Posted_Waiting]') 
    206       end 
    207     else 
    208       add_news_message('[_News_Post_Failed]') 
    209     end 
    210     redirect_to :controller => "/news/news", :action => 'news_list', :params => {:id => @news_item.id} 
    211   end 
    212  
    213   def delete_news_multiple 
    214     check_permission 
    215      
    216     delete_news_id_list = (params[:delete_news_id]) ? params[:delete_news_id].split(',') : [] 
    217     if !check_all_own_news(delete_news_id_list) 
    218       flash[:validate_delete_news_message] = '[_News_Multiple_Delete_Failed]' 
    219     else 
    220       @delete_news_ids = (params[:delete_news_id]) ? params[:delete_news_id] : '' 
    221     end 
    222   end 
    223  
    224   def delete 
    225     check_permission 
    226      
    227     delete_news_id_list = (params[:delete_news_id]) ? params[:delete_news_id].split(',') : [] 
    228  
    229     if delete_news_id_list && delete_news_id_list.first 
    230       news_item = News::NewsItem.find(delete_news_id_list.first) 
    231       if news_item.is_waiting? 
    232         page_name = 'waiting_page' 
    233       elsif news_item.is_returned? 
    234         page_name = 'returned_page' 
    235       else 
    236         page_name = 'public_page' 
    237       end 
    238     end 
    239     ActiveRecord::Base.transaction do 
    240       delete_news_id_list.each do |delete_news_id| 
    241         news = News::NewsItem.find(delete_news_id) 
    242         if !administrator? 
    243           if !news.is_approvaled? 
    244             unless check_own_news(delete_news_id) 
    245               raise RubricksError::User::UnauthorizedException, RubricksMessage::MESSAGE_I0002, caller 
    246             end 
    247           end 
    248         end 
    249         if News::NewsItem.destroy(delete_news_id) 
    250           add_news_message('[_News_Delete_Success]') 
    251         else 
    252           add_news_message('[_News_Delete_Failed]') 
    253         end 
    254       end 
    255     end 
    256  
    257     redirect_to :controller => "/news/news", :action => 'news_list', :params => {:page_name => page_name} 
    258   end 
    259  
    260   def block 
    261     News::NewsItem.approved_scope do 
    262       @nc = News::NewsConfig.instance 
    263       @news_items =  News::NewsItem.find(:all, :limit => @nc.news_per_block, :order => 'publish_date DESC, id DESC') 
    264     end 
    265   end 
    266  
    267   def before_approve(item) 
    268     item.publish_date = DateTime.now.strftime("%Y-%m-%d %H:%M:%S") 
    269   end 
    270  
    271   def after_approve(item) 
    272     add_news_message(RubricksLib.hl('[_Common_Approval_Success]', RubricksLib.hl('[_News_Approval_Item]'))) 
    273   end 
    274  
    275   def after_return(item) 
    276     add_news_message(RubricksLib.hl('[_Common_Approval_Return_Success]', RubricksLib.hl('[_News_Approval_Item]'))) 
     140        add_news_message('[_News_News_ErrorPost]') 
     141      end 
     142      headers["Content-Type"] = "text/javascript" 
     143      render :template => '/news/news/update.rjs' 
     144    end 
    277145  end 
    278146 
     
    280148    @news = News::NewsItem.find(params[:print_news][:id]) 
    281149    if @news.is_approvaled? 
    282       @news_date_name = '[_News_Publish_Date]' 
     150      @news_date_name = '[_News_Common_PublishDate]' 
    283151      @news_date = @news.publish_date.strftime(RubricksLib.hl('[_Common_Date_HourMinSec_Format]')) 
    284152    elsif @news.is_waiting? 
    285       @news_date_name = '[_News_Posted_Date]' 
     153      @news_date_name = '[_News_Common_PostedDate]' 
    286154      @news_date = @news.updated_on.strftime(RubricksLib.hl('[_Common_Date_HourMinSec_Format]')) 
    287155    elsif @news.is_returned? 
    288       @news_date_name = '[_News_Posted_Date]' 
     156      @news_date_name = '[_News_Common_PostedDate]' 
    289157      @news_date = @news.updated_on.strftime(RubricksLib.hl('[_Common_Date_HourMinSec_Format]')) 
    290158    end 
     
    292160  end 
    293161 
    294   def file_accessable?(ra) 
    295     return true if administrator? 
    296     ral = ra.rubricks_attachment_links 
    297     if ral.empty? 
    298       return has_post?  
    299     end 
    300     news = News::NewsItem.find(ral.first.rubricks_attachable_id) 
    301     return false unless news 
    302     return news.accessable? 
     162  def return_unread_state 
     163    @ni_id = params[:id].to_i 
     164    begin 
     165      ActiveRecord::Base.transaction do 
     166        news_already_read = News::NewsAlreadyRead.find(:first, :conditions => ["news_item_id = ? and rubricks_user_id = ?  ", @ni_id, RubricksLib.current_user.id]) 
     167        news_already_read.destroy 
     168      end 
     169    rescue Exception => ex 
     170      logger.error(ex.message) 
     171      logger.error(ex.backtrace.join("\n  ")) 
     172      raise RubricksError::Common::AjaxError, '[_News_News_ErrorUnread]' 
     173    end 
     174    flash[:news_message] = '[_News_News_MessageUnread]' 
     175    headers["Content-Type"] = "text/javascript" 
     176    render :template => '/news/news/return_unread_state.rjs' 
     177  end 
     178 
     179  def show_news 
     180    @nc = News::NewsConfig.instance 
     181    news_id = params[:news_id] ||= params[:id] 
     182    if news_id 
     183      @news = News::NewsItem.find(news_id) rescue return 
     184      if !News::NewsLib.administrator? 
     185        if !@news.is_approvaled? 
     186          unless check_own_news(news_id) 
     187            raise RubricksError::User::UnauthorizedException, RubricksMessage::MESSAGE_I0002, caller 
     188          end 
     189        end 
     190      end 
     191      news_user =  RubricksUser.find_by_id(@news.rubricks_user_id) 
     192      if news_user 
     193        if news_user.effective == true 
     194          @user_effectiv_is_true = true 
     195        else 
     196          @user_effectiv_is_true = false 
     197        end 
     198      end 
     199      if @news.is_approvaled? 
     200        @news_date_name = '[_News_Common_PublishDate]' 
     201        @news_date = @news.publish_date.strftime(RubricksLib.hl('[_Common_Date_HourMinSec_Format]')) 
     202        @edit_button_name = '[_Common_Edit]' 
     203        @edit_submit_button_name = '[_Common_Save]' 
     204      elsif @news.is_waiting? 
     205        @news_date_name = '[_News_Common_PostedDate]' 
     206        @news_date = @news.updated_on.strftime(RubricksLib.hl('[_Common_Date_HourMinSec_Format]')) 
     207        @edit_button_name = '[_Common_Edit]' 
     208        @edit_submit_button_name = '[_Common_Save]' 
     209      elsif @news.is_returned? 
     210        @news_date_name = '[_News_Common_PostedDate]' 
     211        @news_date = @news.updated_on.strftime(RubricksLib.hl('[_Common_Date_HourMinSec_Format]')) 
     212        @edit_button_name = '[_News_Common_Repost]' 
     213        @edit_submit_button_name = '[_Common_Submit]' 
     214      end 
     215      @news.read 
     216      @select_options       = News::NewsCategory.select_options 
     217      @selected_category    = News::NewsCategory.selected_category(@news.news_category_id) 
     218      rubricks_logger({:action_type => :detail, :data => @news}) 
     219    end 
     220  end 
     221 
     222  def update 
     223    check_permission 
     224    nc = News::NewsConfig.instance 
     225    ru = current_user 
     226    news_id = params[:id] 
     227    unless check_own_news(news_id) 
     228      raise RubricksError::User::UnauthorizedException, RubricksMessage::MESSAGE_I0002, caller 
     229    end 
     230    @news_item = News::NewsItem.find(news_id) 
     231    before_approval = @news_item.approval 
     232    @news_item.title = params[:news][:title] 
     233    @news_item.display_name = params[:news][:display_name] 
     234    @news_item.article = params[:news][:article] 
     235    @news_item.news_category_id = params[:news][:category_id] 
     236    if @news_item.is_returned? 
     237      if !nc.approval 
     238        @news_item.approval = Acts::Approval::APPROVALED 
     239        @news_item.publish_date = DateTime.now.strftime("%Y-%m-%d %H:%M:%S") 
     240      else 
     241        @news_item.approval = Acts::Approval::WAITING 
     242      end 
     243    elsif News::NewsLib.need_confirm_update?(@news_item) 
     244      @news_item.approval = Acts::Approval::WAITING 
     245    end 
     246    if @news_item.save 
     247      if before_approval == Acts::Approval::RETURNED 
     248        if @news_item.is_approvaled? 
     249          add_news_message('[_News_News_MessageRepostToPublic]') 
     250        else 
     251          add_news_message('[_News_News_MessageRepostToWaiting]') 
     252        end 
     253      else 
     254        add_news_message('[_News_News_MessageUpdate]') 
     255      end 
     256    else 
     257      add_news_message('[_News_News_ErrorUpdate]') 
     258    end 
     259    headers["Content-Type"] = "text/javascript" 
     260    render :template => '/news/news/update.rjs' 
    303261  end 
    304262 
    305263  private 
    306   def approval_news_list(approval) 
    307     news_id = params[:id] 
    308     nc = News::NewsConfig.instance 
    309     if news_id 
    310       news_item = News::NewsItem.find(news_id) rescue news_item = nil 
    311       if news_item 
    312         news_count = News::NewsItem.count(:conditions => ['approval = 1 and (publish_date > ? or (publish_date = ? and id > ?))', news_item.publish_date, news_item.publish_date, news_item.id]) 
    313         if administrator? 
    314           news_count = News::NewsItem.count(:conditions => ['approval = ? and (updated_on > ? or (updated_on = ? and id > ?))', approval, news_item.updated_on, news_item.updated_on, news_item.id]) 
    315         else 
    316           news_count = News::NewsItem.count(:conditions => ['rubricks_user_id = ? and approval = ? and (updated_on > ? or (updated_on = ? and id > ?))', current_user.id, approval, news_item.updated_on, news_item.updated_on, news_item.id]) 
    317         end 
    318         params[:page] = news_count / nc.news_per_page + 1 
    319         @show_news_id = news_id 
    320       end 
    321     end 
    322     if administrator? 
    323       @pages, @news_items = paginate(:'news/news_item', :per_page => nc.news_per_page, :conditions => ['approval = ?', approval], :order => 'updated_on DESC, id DESC') 
    324       rubricks_logger({:action_type => :list, :data => @news_items}) 
    325     else 
    326       @pages, @news_items = paginate(:'news/news_item', :per_page => nc.news_per_page, :conditions => ['rubricks_user_id = ? and approval = ?', current_user.id, approval], :order => 'updated_on DESC, id DESC') 
    327       rubricks_logger({:action_type => :list, :data => @news_items}) 
    328     end 
    329   end 
    330  
    331   def check_permission 
    332     unless administrator? || permitted_current_component_function?("post") 
    333       raise RubricksError::User::UnauthorizedException, RubricksMessage::MESSAGE_I0002, caller 
    334     end 
     264  def add_news_message(message) 
     265    flash[:news_message] ||= Array.new 
     266    flash[:news_message] << message 
     267  end 
     268 
     269  def check_all_own_news(news_id_list) 
     270    news_id_list.each do |news_id| 
     271      return false unless check_own_news(news_id) 
     272    end 
     273    return true 
    335274  end 
    336275 
     
    339278    news_item = News::NewsItem.find(news_id) 
    340279    if guest? || !news_item.my_news? 
    341       unless administrator? 
     280      unless News::NewsLib.administrator? 
    342281        return false 
    343282      end 
     
    346285  end 
    347286 
    348   def check_all_own_news(news_id_list) 
    349     news_id_list.each do |news_id| 
    350       return false unless check_own_news(news_id) 
    351     end 
    352     return true 
    353   end 
    354  
    355   def add_news_message(message) 
    356     flash[:news_message] ||= Array.new 
    357     flash[:news_message] << message 
     287  def check_permission 
     288    unless News::NewsLib.administrator? || permitted_current_component_function?("post") 
     289      raise RubricksError::User::UnauthorizedException, RubricksMessage::MESSAGE_I0002, caller 
     290    end 
     291  end 
     292 
     293  def filter_merge_conditions(options) 
     294    options = { 
     295      :input_data   => {}, 
     296      :page         => 0, 
     297    }.merge(options) 
     298    options[:input_data].symbolize_keys! rescue {} 
     299    filter_conditions_hash = get_filter_conditions('news_filter') || {} 
     300    filter_conditions_hash = News::NewsItem.filter_merge_hash(filter_conditions_hash, options[:input_data], options[:page]) 
     301    set_filter_conditions('news_filter', filter_conditions_hash) 
     302    return News::NewsItem.filter_merge_conditions(filter_conditions_hash) 
     303  end 
     304 
     305  def get_search_keyword(keyword) 
     306    if keyword == nil 
     307      return nil 
     308    else 
     309      keyword.escape_sql_for_like 
     310    end 
    358311  end 
    359312end 
  • components/news/trunk/news/news_item.rb

    r4994 r5760  
    55  acts_as_tiny_mce_attachable   :article 
    66  belongs_to                    :rubricks_user 
    7   validates_not_nil_of          :rubricks_user_id 
     7  belongs_to                    :news_category 
     8  has_many                      :news_already_reads 
     9  validates_numericality_of     :rubricks_user_id,  :only_integer => true 
     10  validates_numericality_of     :news_category_id,  :only_integer => true 
    811  validates_not_nil_of          :approval 
    912  validates_not_nil_of          :article 
    10   validates_length_of           :display_name, :in => 1..32 
    11   validates_length_of           :title, :in => 1..64 
     13  validates_length_of           :display_name,      :in => 1..32 
     14  validates_length_of           :title,             :in => 1..64 
     15  validates_length_of           :comment,           :in => 0..80 
     16  after_create                  {|record| News::NewsAlreadyRead.read(record, true)} 
     17  after_update                  {|record| News::NewsAlreadyRead.refresh(record)} 
     18  before_destroy                {|record| News::NewsAlreadyRead.destroy(record)} 
    1219 
    1320  class << self 
     
    3744      return returned_news_count == 0 
    3845    end 
     46 
     47    def filter_merge_conditions(filter_conditions_hash) 
     48      filter_conditions, query, conditions = {}, [], [] 
     49      unless filter_conditions_hash[:word].blank? 
     50        conditions   = RubricksLib.query_to_conditions(filter_conditions_hash[:word], ['title', 'article_plain']) 
     51        query       << conditions.shift 
     52      end 
     53      case filter_conditions_hash[:state] 
     54      when 'not_read' 
     55        nar_list = News::NewsAlreadyRead.find(:all, :conditions => ['rubricks_user_id = ?', RubricksLib.current_user.id]) 
     56        query       << 'news_items.id not in (?)' 
     57        conditions  << nar_list.map{|nar| nar.news_item_id} 
     58      end 
     59      unless filter_conditions_hash[:category].to_i == 0 
     60        query       << 'news_items.news_category_id = ?' 
     61        conditions  << filter_conditions_hash[:category].to_i 
     62      end 
     63      case filter_conditions_hash[:target] 
     64      when 'wait' 
     65        query       << 'news_items.approval = ?' 
     66        query       << 'news_items.rubricks_user_id = ?' unless News::NewsLib.administrator? 
     67        conditions  << Acts::Approval::WAITING 
     68        conditions  << RubricksLib.current_user.id unless News::NewsLib.administrator? 
     69      when 'return' 
     70        query       << 'news_items.approval = ?' 
     71        query       << 'news_items.rubricks_user_id = ?' unless News::NewsLib.administrator? 
     72        conditions  << Acts::Approval::RETURNED 
     73        conditions  << RubricksLib.current_user.id unless News::NewsLib.administrator? 
     74      else 
     75        query       << 'news_items.approval = ?' 
     76        conditions  << Acts::Approval::APPROVALED 
     77      end 
     78      date_range = RubricksLib.dates_to_range(filter_conditions_hash[:date_from], filter_conditions_hash[:date_to]) 
     79      if date_range.first == date_range.last && date_range.first != RubricksLib::DATE_DUMMY 
     80        if filter_conditions_hash[:target] == 'open' 
     81          temp = date_range.first.is_in_a_day_conditions('publish_date') 
     82        else 
     83          temp= date_range.first.is_in_a_day_conditions('updated_on') 
     84        end 
     85        query.concat(temp.shift.split(' AND ')) 
     86        conditions.concat(temp) 
     87      else 
     88        date_string = (filter_conditions_hash[:target] == 'open') ? 'publish_date' : 'updated_on' 
     89        if date_range.first != RubricksLib::DATE_DUMMY 
     90          query << "#{date_string} >= ?" 
     91          conditions << date_range.first 
     92        else 
     93          query << "#{date_string} >= ?" 
     94          conditions << RubricksLib::DATE_START 
     95        end 
     96        if date_range.last != RubricksLib::DATE_DUMMY 
     97          query << "#{date_string} <= ?" 
     98          conditions << date_range.last 
     99        end 
     100      end 
     101      conditions.unshift(query.join(' and ')) 
     102      filter_conditions[:conditions]    = conditions 
     103      filter_conditions[:order]         = (filter_conditions_hash[:target] == 'open') ? 'publish_date desc' : 'updated_on desc' 
     104      filter_conditions[:page]          = filter_conditions_hash[:page] 
     105      filter_conditions[:search]        = !filter_conditions_hash[:word].blank? 
     106      return filter_conditions 
     107    end 
     108 
     109    def filter_merge_hash(filter_conditions_hash, input_data, page) 
     110      if input_data.is_a?(Hash) 
     111        input_data = input_data.symbolize_keys 
     112        filter_conditions_hash[:word]       = input_data[:word]         unless input_data[:word].nil? 
     113        filter_conditions_hash[:category]   = input_data[:category]     unless input_data[:category].nil? 
     114        filter_conditions_hash[:state]      = input_data[:state]        unless input_data[:state].nil? 
     115        filter_conditions_hash[:target]     = input_data[:target]       unless input_data[:target].nil? 
     116        filter_conditions_hash[:date_from]  = input_data[:date_from]    unless input_data[:date_from].nil? 
     117        filter_conditions_hash[:date_to]    = input_data[:date_to]      unless input_data[:date_to].nil? 
     118      end 
     119      filter_conditions_hash[:page] = page if page != 0 
     120      return filter_conditions_hash 
     121    end 
    39122  end 
    40123 
     
    46129   return is_approvaled? || my_news? 
    47130  end 
     131 
     132  def display_category_name 
     133    self.news_category.name 
     134  end 
     135 
     136  def read 
     137    News::NewsAlreadyRead.read(self) 
     138  end 
     139 
     140  def read?(ru_id = nil) 
     141    if RubricksLib.guest? 
     142      return true 
     143    else 
     144      ru_id ||= RubricksLib.current_user.id 
     145      read_list = self.news_already_reads.map{|nar| nar.rubricks_user_id} 
     146      return read_list.include?(ru_id) 
     147    end 
     148  end 
    48149end 
  • components/news/trunk/news/preload/_preload.rhtml

    r5690 r5760  
     1<%= stylesheet_link_tag    '/stylesheets/components/news/news' %> 
    12<%= javascript_include_tag '/javascripts/components/news/news' %> 
    23<script type="text/javascript"> 
    34  Object.extend(rubricks.news, { 
    4     msg_delete_confirm:         "<%= hl('[_Common_Delete_Confirm]') %>", 
    5     msg_news_article_max:       "<%= hl('[_Common_ExceedMaxCharacter]', 10000) %>", 
    6     msg_news_not_selected:      "<%= hl('[_News_Not_Select]') %>", 
    7     url_delete:                 "<%= url_for(:controller => "/news/news", :action => 'delete') %>", 
    8     url_delete_news_multiple:   "<%= url_for(:controller => "/news/news", :action => 'delete_news_multiple') %>", 
    9     url_public_news_list:       "<%= url_for(:controller => '/news/news', :action => 'public_news_list') %>", 
    10     url_returned_news_list:     "<%= url_for(:controller => '/news/news', :action => 'returned_news_list') %>", 
    11     url_show_news:              "<%= url_for(:controller => '/news/news', :action => 'show_news') %>", 
    12     url_waiting_news_list:      "<%= url_for(:controller => '/news/news', :action => 'waiting_news_list') %>" 
     5    msg_delete_confirm:         '<%= jl('[_Common_Delete_Confirm]') %>', 
     6    msg_news_article_max:       '<%= jl('[_Common_ExceedMaxCharacter]', 10000) %>', 
     7    msg_news_not_selected:      '<%= jl('[_News_News_MessageNewsNotSelected]') %>', 
     8    url_delete:                 '<%= url_for(:controller => '/news/news', :action => 'delete') %>', 
     9    url_item_return:            '<%= url_for(:controller => '/news/news', :action => 'item_return') %>', 
     10    url_public_news_list:       '<%= url_for(:controller => '/news/news', :action => 'public_news_list') %>', 
     11    url_return_unread_state:    '<%= url_for(:controller => '/news/news', :action => 'return_unread_state') %>', 
     12    url_returned_news_list:     '<%= url_for(:controller => '/news/news', :action => 'returned_news_list') %>', 
     13    url_show_news:              '<%= url_for(:controller => '/news/news', :action => 'show_news') %>', 
     14    url_waiting_news_list:      '<%= url_for(:controller => '/news/news', :action => 'waiting_news_list') %>' 
     15  }); 
     16  Object.extend(rubricks.news.admin_category, { 
     17    err_delete_default:         '<%= jl('[_News_Category_ErrorDeleteDefaultCategory]') %>', 
     18    err_max_record:             '<%= jl('[_News_Category_ErrorCreateMaxRecord]') %>', 
     19    int_max_record:             <%= News::NewsCategory::MAX_RECORD %>, 
     20    msg_category_not_selected:  '<%= jl('[_News_Category_MessageNotSelected]') %>', 
     21    msg_delete_confirm:         '<%= jl('[_News_Category_MessageDeleteConfirm]') %>', 
     22    url_category_window:        '<%= url_for(:controller => '/news/admin_category', :action => 'category_window') %>', 
     23    url_delete:                 '<%= url_for(:controller => '/news/admin_category', :action => 'delete') %>' 
    1324  }); 
    1425</script> 
  • components/news/trunk/news/rubricks_search.rb

    r4578 r5760  
    33    result = [] 
    44    conditions = RubricksLib.query_to_conditions(query, target_list) 
    5     query = conditions.shift 
    6     query = "(#{query}) AND approval=1" 
    7     conditions.unshift(query) 
    8     ni_list = News::NewsItem.find(:all, :conditions => conditions, :offset => offset,:limit => limit, :order => 'created_on DESC') 
     5    ni_list = News::NewsItem.approved_scope {News::NewsItem.find(:all, :conditions => conditions, :offset => offset,:limit => limit, :order => 'created_on DESC')} 
    96    ni_list.each do |ni| 
    107      result << { 
    11         :url        => {:controller => '/news/news', :action => 'main', :params => {:id => ni.id}}, 
    12         :permalink  => {:controller => '/news/news', :main => '_main', :params => {:id => ni.id}}, 
     8        :url        => {:controller => '/news/news', :action => 'main', :params => {:id => ni.id}}, 
     9        :permalink  => {:controller => '/news/news', :action => 'index', :params => {:id => ni.id}}, 
    1310        :title      => ni.title, 
    1411        :author     => ni.display_name, 
     
    2219  def count(query, ru, target_list = ['display_name', 'title', 'article_plain']) 
    2320    conditions = RubricksLib.query_to_conditions(query, target_list) 
    24     query = conditions.shift 
    25     query = "(#{query}) AND approval=1" 
    26     conditions.unshift(query) 
    27     count = News::NewsItem.count(:all, :conditions => conditions) 
    28     return count 
     21    return News::NewsItem.approved_scope {News::NewsItem.count(:all, :conditions => conditions)} 
    2922  end 
    3023 
     
    3326      'display_name'    => '[_Common_Poster]', 
    3427      'title'           => '[_Common_Title]', 
    35       'article_plain'   => '[_News_Article_Text]' 
     28      'article_plain'   => '[_News_Common_Article]' 
    3629    } 
    3730  end