Merge branch 'desktop' of https://github.com/Rulingcom/orbit into desktop

* 'desktop' of https://github.com/Rulingcom/orbit:
  fix widget field reload
  link to more
  fix default widget link
  fixed Widget data count should be available for other widgets, not only for default widget. The availability of this option must be set in the init
  fix javascript disable checkbox failed after cate and tags being reloaded.
  first version of multi categories and tags
  fix widget field reload
  link to more
  fix default widget link
  fixed Widget data count should be available for other widgets, not only for default widget. The availability of this option must be set in the init
  fix javascript disable checkbox failed after cate and tags being reloaded.
  first version of multi categories and tags
This commit is contained in:
Rueshyna 2013-03-04 12:17:14 +08:00
commit ee4b94ace0
33 changed files with 211 additions and 50 deletions

View File

@ -0,0 +1,21 @@
function update_cates_and_tags()
{
$('.select_option,.select_all').removeAttr('disabled');
$(".select_all:checked").each(function( obj ) {
$(this).parent().siblings('label').find('.select_option').attr('disabled',true);
$(this).parent().siblings('label').find('.select_option').removeAttr('checked');
});
$(".select_option:checked").each(function( obj ) {
$(this).parent().siblings('label').find('.select_all').attr('disabled',true);
$(this).parent().siblings('label').find('.select_all').removeAttr('checked');
});
}
function rebind(){
$("#widget_data_source_category,#widget_data_source_tag,#app_page_category,#app_page_tag").find('input').change(function(){update_cates_and_tags()});
}
$(document).ready(function(){
update_cates_and_tags();
rebind();
});

View File

@ -43,7 +43,7 @@ $("#tag_list select").live('change', function() {
}); });
$("select.widget_field_select").live('change', function() { $("select.widget_field_select").live('change', function() {
$.getScript(get_object_path() + '/reload_after_widget_field_changed?widget_field_value='+ $(this).val()+'&dom_id=' + $(this).attr("id") + '&field_seri=' +$(this).attr('field_seri')); $.getScript(get_object_path() + '/reload_after_widget_field_changed?widget_field_value='+ $(this).val()+'&dom_id=' + $(this).attr("id") + '&field_seri=' +$(this).attr('field_seri')+ '&module_app_id=' +$("#page_module_app_id,page_part_module_app_id").val());
}); });
$('.part_kind').live('click', function() { $('.part_kind').live('click', function() {

View File

@ -54,6 +54,7 @@ class Admin::PagePartsController < ApplicationController
end end
def update def update
@part = PagePart.find(params[:id]) @part = PagePart.find(params[:id])
params[:page_part][:widget_field] = params[:page_part][:widget_field].zip( params[:page_part][:widget_field_type],params[:page_part][:widget_field_is_link] ) if params[:page_part][:widget_field] params[:page_part][:widget_field] = params[:page_part][:widget_field].zip( params[:page_part][:widget_field_type],params[:page_part][:widget_field_is_link] ) if params[:page_part][:widget_field]
@ -63,6 +64,17 @@ class Admin::PagePartsController < ApplicationController
if params[:page_part][:module_app].blank? if params[:page_part][:module_app].blank?
params[:page_part][:module_app] = nil params[:page_part][:module_app] = nil
end end
if params[:page_part][:tag].include?("nil")
params[:page_part][:tag] = []
end
if params[:page_part][:category].include?("nil")
params[:page_part][:category] = []
end
params[:page_part][:widget_field].each{|t| t[2] = (t[2]=="true" ? true : false )}
if @part.update_attributes(params[:page_part]) if @part.update_attributes(params[:page_part])
set_children_sub_menu(@part) if @part.public_r_tag && @part.public_r_tag.eql?('sub_menu') set_children_sub_menu(@part) if @part.public_r_tag && @part.public_r_tag.eql?('sub_menu')
flash.now[:notice] = t('update.success.content') flash.now[:notice] = t('update.success.content')
@ -96,6 +108,7 @@ class Admin::PagePartsController < ApplicationController
@part = PagePart.find params[:id] @part = PagePart.find params[:id]
@choosen_field = params[:widget_field_value] @choosen_field = params[:widget_field_value]
@module_app = @part.module_app @module_app = @part.module_app
@module_app = ModuleApp.find params[:module_app_id] if @module_app.nil?
end end
def reload_widgets def reload_widgets

View File

@ -96,6 +96,14 @@ helper Admin::PagePartsHelper
params[:page][:frontend_field] = params[:page][:frontend_field].zip( params[:page][:frontend_field_type] ) if params[:page][:frontend_field] params[:page][:frontend_field] = params[:page][:frontend_field].zip( params[:page][:frontend_field_type] ) if params[:page][:frontend_field]
params[:page][:frontend_field_type] = nil params[:page][:frontend_field_type] = nil
if params[:page][:tag].include?("nil")
params[:page][:tag] = []
end
if params[:page][:category].include?("nil")
params[:page][:category] = []
end
if @item.update_attributes(params[:page]) if @item.update_attributes(params[:page])
flash[:notice] = t('update.success.page') flash[:notice] = t('update.success.page')
respond_to do |format| respond_to do |format|
@ -172,4 +180,12 @@ helper Admin::PagePartsHelper
end end
end end
def reload_widget_field
@index = params[:field_seri].to_i
@page = Page.find params[:id]
@choosen_field = params[:widget_field_value]
@module_app = @page.module_app
@module_app = ModuleApp.find params[:module_app_id] if @module_app.nil?
end
end end

View File

@ -10,12 +10,33 @@ class DefaultWidgetController< OrbitWidgetController
@page_part.module_app.enable_frontend? @page_part.module_app.enable_frontend?
end end
def query_for_default_widget
ori_class_name = @default_widget["query"].split('.')[0]
result = nil
result_objects = nil
if !params["tag_id"].blank?
@tags = Tag.find(params["tag_id"]) rescue nil
result_ids = nil
if params["category_id"].blank?
result_ids = @tags.collect{|tag| tag.send(ori_class_name.downcase.pluralize).entries.collect{|t| t.id}}.flatten
else
result_ids = @tags.collect{|tag| tag.send(ori_class_name.downcase.pluralize).where(:category_id=>params["category_id"]).available_for_lang(I18n.locale).can_display.collect{|t| t.id}}.flatten
end
result = eval("#{ori_class_name}.where(:id=>result_ids)")
elsif params["category_id"].blank?
result = eval(@default_widget["query"])
else
result = eval("#{ori_class_name}.where(:category_id=>params['category_id'])")
end
result.available_for_lang(I18n.locale).can_display
end
def default_widget def default_widget
if !params[:id].blank? if !params[:id].blank?
redirect_to eval("#{@page_part.module_app.widget_fields_link_method['title']['method']}('#{params[:id]}', {inner: #{params[:inner] || true}})") redirect_to eval("#{@page_part.module_app.widget_fields_link_method['title']['method']}('#{params[:id]}', {inner: #{params[:inner] || true}})")
else else
@tag_class = nil @tag_class = nil
@default_widget = @page_part.module_app.get_default_widget @default_widget = @page_part.module_app.get_default_widget
@widget_image_field = @default_widget["image"] || @default_widget[:image] @widget_image_field = @default_widget["image"] || @default_widget[:image]
case @page_part case @page_part
@ -29,9 +50,11 @@ class DefaultWidgetController< OrbitWidgetController
@data_limit = @page_part.widget_data_count.is_a?(Fixnum) ? @page_part.widget_data_count : (@page_part.widget_data_count.to_i rescue 3) @data_limit = @page_part.widget_data_count.is_a?(Fixnum) ? @page_part.widget_data_count : (@page_part.widget_data_count.to_i rescue 3)
end end
if @paginate if @paginate
@data = eval(@default_widget["query"]).includes(@widget_image_field).page(params[:page_main]).per(@data_limit).desc(:created_at) @data = query_for_default_widget.includes(@widget_image_field).page(params[:page_main]).per(@data_limit)
# @data = query_for_default_widget.limit(@data_limit).includes(@widget_image_field)
else else
@data = eval(@default_widget["query"]).limit(@data_limit).includes(@widget_image_field).desc(:created_at) @data = eval(@default_widget["query"]).includes(@widget_image_field).page(params[:page_main]).per(@data_limit).desc(:created_at)
# @data = eval(@default_widget["query"]).limit(@data_limit).includes(@widget_image_field).desc(:created_at)
end end
case params[:type] case params[:type]
when "typeA" when "typeA"

View File

@ -21,11 +21,10 @@ module Admin::PagePartsHelper
end end
end end
def field_link_switch(i,object_name,field_name,local_item=nil,prefill_value=nil) def link_to_field_switch(i,object_name,field_name,local_item=nil,prefill_value=nil) #link_to_field is for showing
local_item = @part if local_item.nil? && @part local_item = @part if local_item.nil? && @part
local_item = @page if local_item.nil? && @page local_item = @page if local_item.nil? && @page
res = '' res = ''
choosen_value = prefill_value || (local_item[:widget_field][i][0] rescue nil) choosen_value = prefill_value || (local_item[:widget_field][i][0] rescue nil)
if choosen_value if choosen_value
@ -38,13 +37,13 @@ module Admin::PagePartsHelper
if choosen_field_is_link if choosen_field_is_link
value = case local_item value = case local_item
when Page when Page
local_item[:frontend_field][i][2] local_item[:frontend_field][i][2] rescue false
when PagePart when PagePart
local_item[:widget_field][i][2] local_item[:widget_field][i][2] rescue false
end end
res = label_tag '' do res = label_tag '' do
check_box_tag("#{object_name}[#{field_name}_is_link][]", value = "true", value) + I18n.t("default_widget.field_is_link") check_box_tag("#{object_name}[#{field_name}_is_link][]", "true", value) + I18n.t("default_widget.field_is_link")
end end
else # choosen_field_not_link else # choosen_field_not_link
res = hidden_field_tag "#{object_name}[#{field_name}_is_link][]", 'false' res = hidden_field_tag "#{object_name}[#{field_name}_is_link][]", 'false'
@ -84,17 +83,17 @@ module Admin::PagePartsHelper
def tag_checked_value(part,radio_value) def tag_checked_value(part,radio_value)
if radio_value.blank? if radio_value.blank?
(part.nil? || part[:tag].blank?)? true : false (part.nil? || part[:tag].blank?) ? true : false
else else
part and (part[:tag] == radio_value.to_s) ? true : false part and (part[:tag].include?(radio_value.to_s)) ? true : false
end end
end end
def category_checked_value(part,radio_value) def category_checked_value(part,radio_value)
if radio_value.blank? if radio_value.blank?
(part.nil? || part[:category].blank?)? true : false (part.nil? || part[:category].blank?) ? true : false
else else
part and (part[:category] == radio_value.to_s) ? true : false part and (part[:category].include?(radio_value.to_s)) ? true : false
end end
end end
@ -117,6 +116,19 @@ module Admin::PagePartsHelper
end end
end end
def nil_checkbox_button(part,tag_or_cate)
field_name = case part
when PagePart
'page_part'
when Page
'page'
end
content_tag :label,:class=>"radio inline" do
op = check_box_tag("#{field_name}[#{tag_or_cate}][]", 'nil' , eval("#{tag_or_cate}_checked_value(part,'')"),:class=>'select_all')
op << I18n.t("default_widget.no_value")
end
end
def nil_radio_button(part,tag_or_cate) def nil_radio_button(part,tag_or_cate)
field_name = case part field_name = case part
when PagePart when PagePart

View File

@ -6,7 +6,7 @@ module DefaultWidgetHelper
def link_to_field(row_data,field, switch, options=nil) def link_to_field(row_data,field, switch, options=nil)
method_ary = @page_part.module_app.widget_fields_link_method method_ary = @page_part.module_app.widget_fields_link_method
field = field.to_sym field = field.to_sym
if(method_ary.has_key?(field) and (switch == "true")) if(method_ary.has_key?(field) and (switch == true))
url = case method_ary[field][:args] url = case method_ary[field][:args]
when nil # no args when nil # no args
get_data_link(method_ary[field]["method"], options) get_data_link(method_ary[field]["method"], options)
@ -51,7 +51,7 @@ module DefaultWidgetHelper
eval eval("#{method_entry}(#{options})") eval eval("#{method_entry}(#{options})")
when BSON::ObjectId when BSON::ObjectId
object = "'#{object.to_s}'" object = "'#{object.to_s}'"
eval("#{method_entry}(#{{:id => object}.merge options})") eval("#{method_entry}(#{{:id => object}.merge options})")
when Hash when Hash
eval("#{method_entry}(#{object.merge options})") eval("#{method_entry}(#{object.merge options})")
else else

View File

@ -8,8 +8,8 @@ class Page < Item
field :content, localize: true field :content, localize: true
field :app_frontend_url field :app_frontend_url
field :theme_id, :type => BSON::ObjectId, :default => nil field :theme_id, :type => BSON::ObjectId, :default => nil
field :category, :default => '' field :category,type: Array, :default => []
field :tag, :default => '' field :tag, type: Array,:default => []
field :view_count, :type => Integer, :default => 0 field :view_count, :type => Integer, :default => 0
field :page_title, localize: true field :page_title, localize: true

View File

@ -11,6 +11,8 @@ class PagePart
field :public_r_tag_option, :default => nil field :public_r_tag_option, :default => nil
field :page_title, localize: true field :page_title, localize: true
field :widget_path field :widget_path
field :category,type: Array, :default => []
field :tag, type: Array,:default => []
field :widget_style field :widget_style
field :widget_field , :type => Array field :widget_field , :type => Array

View File

@ -2,11 +2,9 @@
<% when PagePart %> <% when PagePart %>
<% object_name = 'page_part' %> <% object_name = 'page_part' %>
<% field_name = 'widget_field' %> <% field_name = 'widget_field' %>
<% data_count = 'widget_data_count' %>
<% when Page %> <% when Page %>
<% object_name = 'page' %> <% object_name = 'page' %>
<% field_name = 'frontend_field' %> <% field_name = 'frontend_field' %>
<% data_count = 'frontend_data_count' %>
<% end %> <% end %>
<div class="style_switch control-group"> <div class="style_switch control-group">
@ -37,20 +35,9 @@
<%= select_tag "#{object_name}[#{field_name}_type][]", widget_fiield_type_options(i), :include_blank => true %> <br /> <%= select_tag "#{object_name}[#{field_name}_type][]", widget_fiield_type_options(i), :include_blank => true %> <br />
</span> </span>
<span class="span5 link_switch_holder"> <span class="span5 link_switch_holder">
<%= field_link_switch(i,object_name,field_name) %> <%= link_to_field_switch(i,object_name,field_name) %>
</span> </span>
</div><br/> </div><br/>
<% end %> <% end %>
<br/>
<div class="rows clear">
<span class="span4">
<%= label_tag t("default_widget.widget_data_count") %>
</span>
</div>
<div class="rows clear">
<span class="span4">
<%= text_field_tag "#{object_name}[#{data_count}]",object.send(data_count) %>
</span>
</div>
</div> </div>
</div> </div>

View File

@ -19,3 +19,5 @@
</div> </div>
<% end %> <% end %>
<%=javascript_include_tag "inc/update_cates_and_tags.js" %>

View File

@ -45,3 +45,8 @@
<div id="widget_setting"> <div id="widget_setting">
<%= render :partial => 'widget_setting' ,:locals=>{:f=>f,:object=>@part} %> <%= render :partial => 'widget_setting' ,:locals=>{:f=>f,:object=>@part} %>
</div> </div>
<div class="control-group" id='data_count'>
<%= render :partial=>'admin/pages/data_count_field',:locals=>{:field_name=>"page_part[widget_data_count]",:field_value=>@part.widget_data_count } %>
</div>

View File

@ -10,9 +10,9 @@
<div class="well controls"> <div class="well controls">
<% if @categories %> <% if @categories %>
<fieldset> <fieldset>
<%= nil_radio_button(object,:category) %> <%= nil_checkbox_button(object,:category) %>
<%= content_tag_for(:label, @categories,:class=>"radio inline") do |category|%> <%= content_tag_for(:label, @categories,:class=>"radio inline") do |category|%>
<%= radio_button_tag("#{field_name}[category]", category.id, category_checked_value(object,category.id) )%> <%= check_box_tag("#{field_name}[category][]", category.id, category_checked_value(object,category.id),:class=>'select_option' )%>
<%= category.title%> <%= category.title%>
<% end %> <% end %>
</fieldset> </fieldset>

View File

@ -10,9 +10,9 @@
<div class="well controls"> <div class="well controls">
<% if @categories %> <% if @categories %>
<fieldset> <fieldset>
<%= nil_radio_button(object,:tag) %> <%= nil_checkbox_button(object,:tag) %>
<%= content_tag_for(:label, @tags,:class=>"radio inline") do |tag|%> <%= content_tag_for(:label, @tags,:class=>"radio inline") do |tag|%>
<%= radio_button_tag("#{field_name}[tag]", tag.id, tag_checked_value(object,tag.id) ) %> <%= check_box_tag("#{field_name}[tag][]", tag.id, tag_checked_value(object,tag.id),:class=>'select_option' ) %>
<%= tag[I18n.locale]%> <%= tag[I18n.locale]%>
<% end if @tags%> <% end if @tags%>
</fieldset> </fieldset>

View File

@ -2,4 +2,8 @@
<%= render 'admin/items/site_map_left_bar' %> <%= render 'admin/items/site_map_left_bar' %>
<% end -%> <% end -%>
<%= render 'edit' %> <%= render 'edit' %>

View File

@ -1 +1 @@
$("#<%= params[:dom_id] %>").parents(".rows").find(".link_switch_holder").html("<%= j field_link_switch(@index,'page_part','widget_field',nil,@choosen_field) %>"); $("#<%= params[:dom_id] %>").parents(".rows").find(".link_switch_holder").html("<%= j link_to_field_switch(@index,'page_part','widget_field',nil,@choosen_field) %>");

View File

@ -2,7 +2,7 @@
$('#widget_list select').html("<%= j options_for_select(@module_app.widgets.collect{|k,v| [I18n.t(v['i18n']),k]},@part.widget_path) %>"); $('#widget_list select').html("<%= j options_for_select(@module_app.widgets.collect{|k,v| [I18n.t(v['i18n']),k]},@part.widget_path) %>");
$("#widget_data_source_category").html("<%= j render :partial => 'widget_data_source_category',:locals=>{:object=>@part} %>"); $("#widget_data_source_category").html("<%= j render :partial => 'widget_data_source_category',:locals=>{:object=>@part} %>");
$("#widget_data_source_tag").html("<%= j render :partial => 'widget_data_source_tag',:locals=>{:object=>@part} %>"); $("#widget_data_source_tag").html("<%= j render :partial => 'widget_data_source_tag',:locals=>{:object=>@part} %>");
$("#data_count").html("<%= j render :partial => 'admin/pages/data_count_field',:locals=>{:field_name=>'page_part[widget_data_count]',:field_value=>@part.widget_data_count } %>");
<% if @part %> <% if @part %>
<% if show_default_widget_setting_panel %> <% if show_default_widget_setting_panel %>
$('#widget_setting').html("<%= j render :partial => 'default_widget_style_panel' %>"); $('#widget_setting').html("<%= j render :partial => 'default_widget_style_panel' %>");
@ -16,3 +16,5 @@
$('#widget_setting').html("<%=j render :partial=> 'reset',:locals=>{:label_i18n=>'default_widget.select_widget_style'}%>"); $('#widget_setting').html("<%=j render :partial=> 'reset',:locals=>{:label_i18n=>'default_widget.select_widget_style'}%>");
$('#widget_list select').html("<%= j options_for_select([]) %>"); $('#widget_list select').html("<%= j options_for_select([]) %>");
<% end %> <% end %>
update_cates_and_tags();
rebind();

View File

@ -0,0 +1,6 @@
<label for="<%= field_name %>" class="control-label">
<%= t("default_widget.widget_data_count") %>
</label>
<div class="controls">
<%= select_tag(field_name,options_for_select(@module_app.get_registration.get_data_count,field_value )) %>
</div>

View File

@ -66,6 +66,9 @@
<%= render :partial => 'frontend_setting', :locals=>{:object=>@item,:f=>f} %> <%= render :partial => 'frontend_setting', :locals=>{:object=>@item,:f=>f} %>
</div> </div>
<div class="control-group" id='data_count'>
<%= render :partial=>'data_count_field',:locals=>{:field_name=>"page[frontend_data_count]",:field_value=>@item.frontend_data_count} %>
</div>
<div class="control-group"> <div class="control-group">
<%= f.label :is_published, "#{t('front_page.is_published')} ?", :class => 'control-label' %> <%= f.label :is_published, "#{t('front_page.is_published')} ?", :class => 'control-label' %>
@ -109,3 +112,4 @@
</div> </div>
</div> </div>
<%=javascript_include_tag "inc/update_cates_and_tags.js" %>

View File

@ -3,4 +3,4 @@
<%= render 'admin/items/site_map_left_bar' %> <%= render 'admin/items/site_map_left_bar' %>
<% end -%> <% end -%>
<%= render 'edit' %> <%= render 'edit' %>

View File

@ -1,7 +1,8 @@
<% if @module_app %> <% if @module_app %>
$('#app_page_category').html("<%= j render :partial => 'admin/page_parts/widget_data_source_category' ,:locals=>{:object=>@page}%>"); $('#app_page_category').html("<%= j render :partial => 'admin/page_parts/widget_data_source_category' ,:locals=>{:object=>@page}%>");
$('#app_page_tag').html("<%= j render :partial => 'admin/page_parts/widget_data_source_tag',:locals=>{:object=>@page} %>"); $('#app_page_tag').html("<%= j render :partial => 'admin/page_parts/widget_data_source_tag',:locals=>{:object=>@page} %>");
$("#data_count").html("<%= j render :partial => 'admin/pages/data_count_field',:locals=>{:field_name=>'page[frontend_data_count]',:field_value=>@page.frontend_data_count} %>");
<% if !@module_app.app_pages.blank? %> <% if !@module_app.app_pages.blank? %>
$('#app_page_url').html("<%= escape_javascript(select 'page', 'app_frontend_url', options_for_select(@app_frontend_urls, @app_frontend_urls.first)) %>"); $('#app_page_url').html("<%= escape_javascript(select 'page', 'app_frontend_url', options_for_select(@app_frontend_urls, @app_frontend_urls.first)) %>");
<%else %> <%else %>
@ -31,3 +32,5 @@
$('#app_page_url').html("<%= t('default_widget.no_support_setting')%>"); $('#app_page_url').html("<%= t('default_widget.no_support_setting')%>");
$('#frontend_setting').html("<%= j render :partial => 'custom_frontend_setting' %>"); $('#frontend_setting').html("<%= j render :partial => 'custom_frontend_setting' %>");
<% end %> <% end %>
update_cates_and_tags();
rebind();

View File

@ -0,0 +1 @@
$("#<%= params[:dom_id] %>").parents(".rows").find(".link_switch_holder").html("<%= j link_to_field_switch(@index,'page','frontend_field',nil,@choosen_field) %>");

View File

@ -13,5 +13,4 @@
<% end %> <% end %>
<% end %> <% end %>
</ul> </ul>
<div class="more">more</div>
<% end %> <% end %>

View File

@ -11,5 +11,4 @@
<% end %> <% end %>
<% end %> <% end %>
</ul> </ul>
<div class="more">more</div>
<% end %> <% end %>

View File

@ -1,4 +1,7 @@
<%= render @partial %> <%= render @partial %>
<% if @paginate %> <% if @paginate %>
<%= paginate @data, :param_name => :page_main, :params => {:same_page_id => @page_id} %> <%= paginate @data, :param_name => :page_main, :params => {:same_page_id => @page_id} %>
<% end %> <% end %>
<% if @page_part.module_app %>
<%= @page_part.module_app.get_registration.default_widget_setting.link_to_more_tag(request,params) %>
<% end %>

View File

@ -90,6 +90,7 @@ Orbit::Application.routes.draw do
get 'reload_themes' get 'reload_themes'
get 'reload_after_module_changed',:action=>'reload_frontend_pages' get 'reload_after_module_changed',:action=>'reload_frontend_pages'
get 'reload_after_list_changed',:action=> 'reload_front_end_setting' get 'reload_after_list_changed',:action=> 'reload_front_end_setting'
get 'reload_after_widget_field_changed',:action=> 'reload_widget_field'
end end
end end

View File

@ -3,6 +3,7 @@ require "orbit_app/dsl"
require "orbit_app/helper/renderer" require "orbit_app/helper/renderer"
require "orbit_app/helper/side_bar_renderer" require "orbit_app/helper/side_bar_renderer"
require "orbit_app/helper/context_link_renderer" require "orbit_app/helper/context_link_renderer"
require "orbit_app/helper/default_widget_tag_helper"
require "orbit_app/module/side_bar" require "orbit_app/module/side_bar"
require "orbit_app/module/widget" require "orbit_app/module/widget"
require "orbit_app/module/front_end" require "orbit_app/module/front_end"

View File

@ -0,0 +1,12 @@
module DefaultWidgetTagHelper
include Renderer
include AdminHelper
def link_to_more_tag(req,params)
@request = req
@params =params
content_tag :div,:class=> 'more' do
link_to I18n.t(@more_link[:label_i18n]),eval(@more_link[:path_method])
end
end
end

View File

@ -28,7 +28,7 @@ module OrbitApp
end end
class DataSheet class DataSheet
attr_reader :name,:key,:base_path,:module_label attr_reader :name,:key,:base_path,:module_label,:data_count
def initialize(name, &block) def initialize(name, &block)
@name = name @name = name
@ -36,6 +36,7 @@ module OrbitApp
@side_bar = nil @side_bar = nil
@front_end_app_pages = nil @front_end_app_pages = nil
@module_label = 'rulingcom.errors.init.module_app_noname' @module_label = 'rulingcom.errors.init.module_app_noname'
@data_count = 1..15 # as default
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
setup_module_app setup_module_app
end end
@ -86,6 +87,10 @@ module OrbitApp
@front_end_app_pages.nil? ? [] : @front_end_app_pages.to_module_app_format @front_end_app_pages.nil? ? [] : @front_end_app_pages.to_module_app_format
end end
def get_data_count
@data_count
end
def get_widget_by_path(path) def get_widget_by_path(path)
if @widget_set if @widget_set
@widget_set.find_by_path(path) @widget_set.find_by_path(path)
@ -94,6 +99,14 @@ module OrbitApp
end end
end end
def default_widget_setting
@widget_set.default_widget_setting
end
def widget_setting
@widget_set
end
def get_widgets def get_widgets
@widget_set.nil? ? {} : @widget_set.to_module_app_format @widget_set.nil? ? {} : @widget_set.to_module_app_format
end end
@ -127,7 +140,7 @@ module OrbitApp
# @default_widget = widget_set.default_widget # @default_widget = widget_set.default_widget
end end
%w{module_label category base_url version organization author intro update_info}.each do |field| %w{data_count module_label category base_url version organization author intro update_info}.each do |field|
define_method(field){|var| instance_variable_set( "@" + field, var)} define_method(field){|var| instance_variable_set( "@" + field, var)}
end end

View File

@ -34,6 +34,10 @@ module OrbitApp
define_method(field){|var| instance_variable_set( "@" + field, var)} define_method(field){|var| instance_variable_set( "@" + field, var)}
end end
# def data_count(var)
# @data_count = var
# end
def find_by_path(path) def find_by_path(path)
@widgets.each do |widget| @widgets.each do |widget|
return widget if widget.name == path return widget if widget.name == path
@ -44,10 +48,14 @@ module OrbitApp
eval(@categories_query) rescue nil eval(@categories_query) rescue nil
end end
def get_tags def get_tags
eval(@tags_query) rescue nil eval(@tags_query) rescue nil
end end
def default_widget_setting
@default_widget
end
def default_widget(&block) def default_widget(&block)
@default_widget = DefaultWidget.new(&block) @default_widget = DefaultWidget.new(&block)
end end
@ -85,6 +93,7 @@ module OrbitApp
end end
class DefaultWidget class DefaultWidget
include DefaultWidgetTagHelper
STYLE = ["typeA","typeB_style2","typeB_style3","typeB_style4","typeC"] STYLE = ["typeA","typeB_style2","typeB_style3","typeB_style4","typeC"]
def initialize(&block) def initialize(&block)
@ -95,9 +104,10 @@ module OrbitApp
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
end end
def more_link_to(label_i18n,path_method)
@more_link[:label_i18n] = label_i18n def link_to_more(*args)
@more_link[:path_method] = path_method @more_link[:label_i18n] = (args[1] ? args[1][:title_i18n] : 'default_widget.default_link_to_more' )
@more_link[:path_method] = args[0]
end end
def self.get_interface_args def self.get_interface_args
@ -106,7 +116,7 @@ module OrbitApp
end end
def to_module_app_format def to_module_app_format
{"query"=>@query,"image"=>@image} rescue nil {"query"=>@query,"image"=>@image,"more_link"=>@more_link} rescue nil
end end
def link_field(field_name,setting) def link_field(field_name,setting)

View File

@ -190,6 +190,25 @@ namespace :migrate do
end end
end end
task :convert_cate_tag_type => :environment do
[Page,PagePart].each do |obj|
obj.all.each do |pp|
if pp.category.blank?
pp.category = []
else
pp.category = [pp.category]
end
if pp.tag.blank?
pp.tag = []
else
pp.tag = [pp.tag]
end
pp.save
end
end
end
task :clean_parts => :environment do task :clean_parts => :environment do
PagePart.where(widget_style: /\d/, kind: 'module_widget').each{|part| part.update_attributes({kind: 'text', widget_style: nil, widget_field: nil})} PagePart.where(widget_style: /\d/, kind: 'module_widget').each{|part| part.update_attributes({kind: 'text', widget_style: nil, widget_field: nil})}
PagePart.where(widget_style: /\d/).each{|part| part.update_attributes({widget_style: nil, widget_field: nil})} PagePart.where(widget_style: /\d/).each{|part| part.update_attributes({widget_style: nil, widget_field: nil})}

View File

@ -27,6 +27,7 @@ zh_tw:
approval_setting: 審核權限 approval_setting: 審核權限
tags: 標籤 tags: 標籤
default_widget: default_widget:
to_more: 更多
bulletin_category_with_title: 分類 bulletin_category_with_title: 分類
title: 標題 title: 標題
postdate: 張貼日期 postdate: 張貼日期

View File

@ -18,6 +18,7 @@ module Announcement
end end
category ["BulletinCategory"] category ["BulletinCategory"]
data_count 3..10
widgets do widgets do
default_widget do default_widget do
@ -26,6 +27,7 @@ module Announcement
field :postdate field :postdate
link_field :title,{:method => 'panel_announcement_front_end_bulletin_path',:args=>:self} link_field :title,{:method => 'panel_announcement_front_end_bulletin_path',:args=>:self}
link_field :bulletin_category_with_title,{:method => 'panel_announcement_front_end_bulletins_path',:args=>{:category_id => [:bulletin_category,:id]}} link_field :bulletin_category_with_title,{:method => 'panel_announcement_front_end_bulletins_path',:args=>{:category_id => [:bulletin_category,:id]}}
link_to_more 'panel_announcement_front_end_bulletins_path',:title_i18n=> 'announcement.default_widget.to_more'
end end
categories_query 'BulletinCategory.all' categories_query 'BulletinCategory.all'