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 committed 2013-03-04 12:17:14 +08:00
commit ee4b94ace0
33 files changed
+211 -50

No files matched your search

@@ -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();
});
+1 -1
View File
@@ -43,7 +43,7 @@ $("#tag_list 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() {
@@ -54,6 +54,7 @@ class Admin::PagePartsController < ApplicationController
end
def update
@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]
@@ -63,6 +64,17 @@ class Admin::PagePartsController < ApplicationController
if params[:page_part][:module_app].blank?
params[:page_part][:module_app] = nil
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])
set_children_sub_menu(@part) if @part.public_r_tag && @part.public_r_tag.eql?('sub_menu')
flash.now[:notice] = t('update.success.content')
@@ -96,6 +108,7 @@ class Admin::PagePartsController < ApplicationController
@part = PagePart.find params[:id]
@choosen_field = params[:widget_field_value]
@module_app = @part.module_app
@module_app = ModuleApp.find params[:module_app_id] if @module_app.nil?
end
def reload_widgets
+16
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_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])
flash[:notice] = t('update.success.page')
respond_to do |format|
@@ -172,4 +180,12 @@ helper Admin::PagePartsHelper
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
+26 -3
View File
@@ -10,12 +10,33 @@ class DefaultWidgetController< OrbitWidgetController
@page_part.module_app.enable_frontend?
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
if !params[:id].blank?
redirect_to eval("#{@page_part.module_app.widget_fields_link_method['title']['method']}('#{params[:id]}', {inner: #{params[:inner] || true}})")
else
@tag_class = nil
@default_widget = @page_part.module_app.get_default_widget
@widget_image_field = @default_widget["image"] || @default_widget[:image]
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)
end
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
@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
case params[:type]
when "typeA"
+22 -10
View File
@@ -21,11 +21,10 @@ module Admin::PagePartsHelper
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 = @page if local_item.nil? && @page
res = ''
choosen_value = prefill_value || (local_item[:widget_field][i][0] rescue nil)
if choosen_value
@@ -38,13 +37,13 @@ module Admin::PagePartsHelper
if choosen_field_is_link
value = case local_item
when Page
local_item[:frontend_field][i][2]
local_item[:frontend_field][i][2] rescue false
when PagePart
local_item[:widget_field][i][2]
local_item[:widget_field][i][2] rescue false
end
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
else # choosen_field_not_link
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)
if radio_value.blank?
(part.nil? || part[:tag].blank?)? true : false
(part.nil? || part[:tag].blank?) ? true : false
else
part and (part[:tag] == radio_value.to_s) ? true : false
part and (part[:tag].include?(radio_value.to_s)) ? true : false
end
end
def category_checked_value(part,radio_value)
if radio_value.blank?
(part.nil? || part[:category].blank?)? true : false
(part.nil? || part[:category].blank?) ? true : false
else
part and (part[:category] == radio_value.to_s) ? true : false
part and (part[:category].include?(radio_value.to_s)) ? true : false
end
end
@@ -117,6 +116,19 @@ module Admin::PagePartsHelper
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)
field_name = case part
when PagePart
+2 -2
View File
@@ -6,7 +6,7 @@ module DefaultWidgetHelper
def link_to_field(row_data,field, switch, options=nil)
method_ary = @page_part.module_app.widget_fields_link_method
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]
when nil # no args
get_data_link(method_ary[field]["method"], options)
@@ -51,7 +51,7 @@ module DefaultWidgetHelper
eval eval("#{method_entry}(#{options})")
when BSON::ObjectId
object = "'#{object.to_s}'"
eval("#{method_entry}(#{{:id => object}.merge options})")
eval("#{method_entry}(#{{:id => object}.merge options})")
when Hash
eval("#{method_entry}(#{object.merge options})")
else
+2 -2
View File
@@ -8,8 +8,8 @@ class Page < Item
field :content, localize: true
field :app_frontend_url
field :theme_id, :type => BSON::ObjectId, :default => nil
field :category, :default => ''
field :tag, :default => ''
field :category,type: Array, :default => []
field :tag, type: Array,:default => []
field :view_count, :type => Integer, :default => 0
field :page_title, localize: true
+2
View File
@@ -11,6 +11,8 @@ class PagePart
field :public_r_tag_option, :default => nil
field :page_title, localize: true
field :widget_path
field :category,type: Array, :default => []
field :tag, type: Array,:default => []
field :widget_style
field :widget_field , :type => Array
@@ -2,11 +2,9 @@
<% when PagePart %>
<% object_name = 'page_part' %>
<% field_name = 'widget_field' %>
<% data_count = 'widget_data_count' %>
<% when Page %>
<% object_name = 'page' %>
<% field_name = 'frontend_field' %>
<% data_count = 'frontend_data_count' %>
<% end %>
<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 />
</span>
<span class="span5 link_switch_holder">
<%= field_link_switch(i,object_name,field_name) %>
<%= link_to_field_switch(i,object_name,field_name) %>
</span>
</div><br/>
<% 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>
@@ -19,3 +19,5 @@
</div>
<% end %>
<%=javascript_include_tag "inc/update_cates_and_tags.js" %>
@@ -45,3 +45,8 @@
<div id="widget_setting">
<%= render :partial => 'widget_setting' ,:locals=>{:f=>f,:object=>@part} %>
</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>
@@ -10,9 +10,9 @@
<div class="well controls">
<% if @categories %>
<fieldset>
<%= nil_radio_button(object,:category) %>
<%= nil_checkbox_button(object,: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%>
<% end %>
</fieldset>
@@ -10,9 +10,9 @@
<div class="well controls">
<% if @categories %>
<fieldset>
<%= nil_radio_button(object,:tag) %>
<%= nil_checkbox_button(object,: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]%>
<% end if @tags%>
</fieldset>
+4
View File
@@ -2,4 +2,8 @@
<%= render 'admin/items/site_map_left_bar' %>
<% end -%>
<%= render 'edit' %>
@@ -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) %>");
@@ -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_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} %>");
$("#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 show_default_widget_setting_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_list select').html("<%= j options_for_select([]) %>");
<% end %>
update_cates_and_tags();
rebind();
@@ -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>
+4
View File
@@ -66,6 +66,9 @@
<%= render :partial => 'frontend_setting', :locals=>{:object=>@item,:f=>f} %>
</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">
<%= f.label :is_published, "#{t('front_page.is_published')} ?", :class => 'control-label' %>
@@ -109,3 +112,4 @@
</div>
</div>
<%=javascript_include_tag "inc/update_cates_and_tags.js" %>
+1 -1
View File
@@ -3,4 +3,4 @@
<%= render 'admin/items/site_map_left_bar' %>
<% end -%>
<%= render 'edit' %>
<%= render 'edit' %>
@@ -1,7 +1,8 @@
<% if @module_app %>
$('#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} %>");
$("#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? %>
$('#app_page_url').html("<%= escape_javascript(select 'page', 'app_frontend_url', options_for_select(@app_frontend_urls, @app_frontend_urls.first)) %>");
<%else %>
@@ -31,3 +32,5 @@
$('#app_page_url').html("<%= t('default_widget.no_support_setting')%>");
$('#frontend_setting').html("<%= j render :partial => 'custom_frontend_setting' %>");
<% end %>
update_cates_and_tags();
rebind();
@@ -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) %>");
-1
View File
@@ -13,5 +13,4 @@
<% end %>
<% end %>
</ul>
<div class="more">more</div>
<% end %>
-1
View File
@@ -11,5 +11,4 @@
<% end %>
<% end %>
</ul>
<div class="more">more</div>
<% end %>
@@ -1,4 +1,7 @@
<%= render @partial %>
<% if @paginate %>
<%= 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 %>