PagePart widgets except "system widget"
| 
		 Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 123 KiB  | 
| 
		 Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 127 KiB  | 
| 
		 Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 126 KiB  | 
| 
		 Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 126 KiB  | 
| 
		 Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 125 KiB  | 
| 
						 | 
				
			
			@ -189,7 +189,7 @@ function pageSetting(id, edit) {
 | 
			
		|||
            });
 | 
			
		||||
            $pageCategoryGroup.show();
 | 
			
		||||
          }
 | 
			
		||||
          if(val.category.length > 0) {
 | 
			
		||||
          if(val.tag.length > 0) {
 | 
			
		||||
            $.each(val.tags, function(index, val) {
 | 
			
		||||
              var _arr = $.inArray($(this)[1], _selectData.module.tags[1]);
 | 
			
		||||
              $pageTags.append('<label class="checkbox"><input type="checkbox" name="page[tag][]" value="'+ $(this)[1] + '">'+ $(this)[0] +'</label>');
 | 
			
		||||
| 
						 | 
				
			
			@ -385,6 +385,7 @@ $(function() {
 | 
			
		|||
              $pageDivCount.show();
 | 
			
		||||
 | 
			
		||||
              if(event.target.id == 'page_module_app_id') {
 | 
			
		||||
                $pageCategory.empty();
 | 
			
		||||
                if(val.category.length > 0) {
 | 
			
		||||
                  $.each(val.category, function(index, val) {
 | 
			
		||||
                    if(val !== 0) {
 | 
			
		||||
| 
						 | 
				
			
			@ -398,9 +399,9 @@ $(function() {
 | 
			
		|||
                  });
 | 
			
		||||
                  $pageCategoryGroup.show();
 | 
			
		||||
                } else {
 | 
			
		||||
                  $pageCategory.empty();
 | 
			
		||||
                  $pageCategoryGroup.hide();
 | 
			
		||||
                }
 | 
			
		||||
                $pageTags.empty();
 | 
			
		||||
                if(val.tags.length > 0) {
 | 
			
		||||
                  $.each(val.tags, function(index, val) {
 | 
			
		||||
                    if(val !== 0) {
 | 
			
		||||
| 
						 | 
				
			
			@ -414,7 +415,6 @@ $(function() {
 | 
			
		|||
                  });
 | 
			
		||||
                  $pageTagsGroup.show();
 | 
			
		||||
                } else {
 | 
			
		||||
                  $pageTags.empty();
 | 
			
		||||
                  $pageTagsGroup.hide();
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,141 @@
 | 
			
		|||
function getPageData() {
 | 
			
		||||
  $.getJSON("<%= Rails.application.routes.url_helpers.get_page_module_json_admin_page_parts_path %>").done(function(data) {
 | 
			
		||||
    _pageData = data;
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getView(module_id, id) {
 | 
			
		||||
  var _data = {};
 | 
			
		||||
      _data.val = $('#module_widget #page_part_widget_path option:selected').val();
 | 
			
		||||
      _data.id = id;
 | 
			
		||||
      _data.module_id = module_id
 | 
			
		||||
  $.ajax({
 | 
			
		||||
    url: "<%= Rails.application.routes.url_helpers.get_display_style_admin_page_parts_path %>",
 | 
			
		||||
    dataType: "script",
 | 
			
		||||
    data: _data,
 | 
			
		||||
    contentType: "application/html; charset=utf-8",
 | 
			
		||||
    cache: false,
 | 
			
		||||
  });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
$(function() {
 | 
			
		||||
  $pageModule = $('#module_widget #page_part_module_app'),
 | 
			
		||||
  $pageF2E = $('#module_widget #page_part_widget_path'),
 | 
			
		||||
  $pageCategory = $('#module_widget #page-category'),
 | 
			
		||||
  $pageCategoryGroup = $('#module_widget #page-category-groups'),
 | 
			
		||||
  $pageTags = $('#module_widget #page-tags'),
 | 
			
		||||
  $pageTagsGroup = $('#module_widget #page-tags-groups'),
 | 
			
		||||
  $pageCount = $('#module_widget #page_count'),
 | 
			
		||||
  _boolean = null,
 | 
			
		||||
  _ID = null,
 | 
			
		||||
  _type = null,
 | 
			
		||||
  _status = null,
 | 
			
		||||
  _pageData = null,
 | 
			
		||||
  _selectData = null;
 | 
			
		||||
 | 
			
		||||
  $('#module_widget').on('change', '.change', function(event) {
 | 
			
		||||
    var _data, _select, $subSelete;
 | 
			
		||||
    if(event.target.id !== 'page_part_widget_path') {
 | 
			
		||||
      _data = _pageData.module;
 | 
			
		||||
      _select = _boolean ? _selectData.module : null;
 | 
			
		||||
      $subSelete = $('#module_widget #page_part_widget_path');
 | 
			
		||||
      $(this).children("option:selected").each(function () {
 | 
			
		||||
        var _val = $(this).val();
 | 
			
		||||
        $subSelete.empty();
 | 
			
		||||
        if(_val) {
 | 
			
		||||
          $.each(_data, function(index, val) {
 | 
			
		||||
            if(_val == val.main[1]) {
 | 
			
		||||
              getView(val.main[1]);
 | 
			
		||||
              $.each(val.sub, function(index, val) {
 | 
			
		||||
                var _selected = _select && $(this)[1] == _select.sub ? 'selected="selected"' : '';
 | 
			
		||||
                $subSelete.append('<option value="' + $(this)[1] + '" ' + _selected.sub + '>' + $(this)[0] + '</option>');
 | 
			
		||||
              });
 | 
			
		||||
              $.each(val.count, function(index, val) {
 | 
			
		||||
                $pageCount.append('<option value="' + val + '" ' + (_select && _select.main == _val && val == _selectData.module.count ? 'selected="selected"' : '') + '>' + val+ '</option>');
 | 
			
		||||
              });      
 | 
			
		||||
 | 
			
		||||
              if(event.target.id == 'page_part_module_app') {
 | 
			
		||||
                $pageCategory.empty();
 | 
			
		||||
                if(val.category.length > 0) {
 | 
			
		||||
                  $.each(val.category, function(index, val) {
 | 
			
		||||
                    if(val !== 0) {
 | 
			
		||||
                      var _arr = _select ? $.inArray($(this)[1], _select.category[1]) : '';
 | 
			
		||||
                      $pageCategory.append('<label class="checkbox"><input type="checkbox" name="page[category][]" value="'+ $(this)[1] + '">'+ $(this)[0] +'</label>');
 | 
			
		||||
                      if(_select && !_select.category[0] && _arr !== -1) {
 | 
			
		||||
                        $pageCategory.find('input[type="checkbox"]').eq(index).prop('checked', true);
 | 
			
		||||
                      }
 | 
			
		||||
                      _select && _val == _select.main && _select.category[0] ? $pageCategory.siblings('.checkbox').children('.select_all').prop('checked', true) : '';
 | 
			
		||||
                    }
 | 
			
		||||
                  });
 | 
			
		||||
                  $pageCategoryGroup.show();
 | 
			
		||||
                } else {
 | 
			
		||||
                  $pageCategoryGroup.hide();
 | 
			
		||||
                }
 | 
			
		||||
                if(val.tags.length > 0) {
 | 
			
		||||
                  $pageTags.empty();
 | 
			
		||||
                  $.each(val.tags, function(index, val) {
 | 
			
		||||
                    if(val !== 0) {
 | 
			
		||||
                      var _arr = _select ? $.inArray($(this)[1], _select.tags[1]) : '';
 | 
			
		||||
                      $pageTags.append('<label class="checkbox"><input type="checkbox" name="page[tag][]" value="'+ $(this)[1] + '">'+ $(this)[0] +'</label>');
 | 
			
		||||
                      if(_select && !_select.tags[0] && _arr !== -1) {
 | 
			
		||||
                        $pageTags.find('input[type="checkbox"]').eq(index).prop('checked', true);
 | 
			
		||||
                      }
 | 
			
		||||
                      _select && _val == _select.main && _select.tags[0] ? $pageTags.siblings('.checkbox').children('.select_all').prop('checked', true) : '';
 | 
			
		||||
                    }  
 | 
			
		||||
                  });
 | 
			
		||||
                  $pageTagsGroup.show();
 | 
			
		||||
                } else {
 | 
			
		||||
                  $pageTagsGroup.hide();
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
              return false;
 | 
			
		||||
            };
 | 
			
		||||
          });
 | 
			
		||||
        } else {
 | 
			
		||||
          $pageCategory.empty();
 | 
			
		||||
          $pageCategoryGroup.hide();
 | 
			
		||||
          $pageTags.empty();
 | 
			
		||||
          $pageTagsGroup.hide();
 | 
			
		||||
          $pageF2E.empty();
 | 
			
		||||
          $pageCount.empty();  
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      getView($pageModule.val());
 | 
			
		||||
    }
 | 
			
		||||
    event.preventDefault();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  $('#module_widget').on('change', '.checkbox-groups input', function(event) {
 | 
			
		||||
    var $checked = $(this);
 | 
			
		||||
    if($checked.attr('type') == 'checkbox') {
 | 
			
		||||
      if($checked.hasClass('select_all') && $checked.prop('checked')) {
 | 
			
		||||
        $checked.closest('.checkbox').siblings('.groups').find('input[type="checkbox"]').prop('checked', false);
 | 
			
		||||
      } else if($checked.prop('checked') && !$checked.hasClass('lang-enable')) {
 | 
			
		||||
        $checked.closest('.groups').siblings('.checkbox').find('.select_all').prop('checked', false);
 | 
			
		||||
      } else {
 | 
			
		||||
        if($checked.prop('checked')) {
 | 
			
		||||
          $checked.closest('.active-link').addClass('active').siblings('active-link').removeClass('active').end().find('.active-mune').slideDown(300);
 | 
			
		||||
          if(_status) {
 | 
			
		||||
            var _index = $checked.closest('.link-options').find('.active').index() - 1,
 | 
			
		||||
                _index = _type == 'page' ? _selectData.module.link[_index][1] : _linkData.link[_index][1] ;
 | 
			
		||||
            $checked.closest('.active-link').find('.active-mune input').eq(_index).prop('checked', true);
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          $('.active-link').removeClass('active');
 | 
			
		||||
          $checked.closest('.active-link').find('.active-mune').slideUp(300, function() {
 | 
			
		||||
            $(this).find('input:eq(0)').prop('checked', true);
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
    } else if($checked.attr('type') == 'radio' && !$(this).closest('div').hasClass('active-mune')) {
 | 
			
		||||
      $('#module_widget #page_is_published_true').prop('checked') || $('#module_widget #link_is_published_true').prop('checked') ? $('.link-options').slideDown(300) : $('.link-options').slideUp(300);
 | 
			
		||||
      return false;
 | 
			
		||||
    }
 | 
			
		||||
    event.preventDefault();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  getPageData();
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			@ -2,4 +2,3 @@
 | 
			
		|||
//= require jquery.ui.sortable
 | 
			
		||||
//= require lib/jquery.ui.touch-punch.min.js
 | 
			
		||||
//= require lib/jquery.mjs.nestedSortable.js
 | 
			
		||||
//= require lib/items/items
 | 
			
		||||
| 
						 | 
				
			
			@ -334,6 +334,75 @@
 | 
			
		|||
.main-forms .control-group .add-target .btn-group .btn.last {
 | 
			
		||||
	border-radius: 0 4px 4px 0;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .parts-none {
 | 
			
		||||
	width: 100%;
 | 
			
		||||
	text-align: center;
 | 
			
		||||
	padding: 50px 0 70px;
 | 
			
		||||
	font-size: 2em;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .display-mode .typesetting {
 | 
			
		||||
	margin: 0 0 10px 0;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .display-mode table td:last-child {
 | 
			
		||||
	text-align: right;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .display-mode .typesetting li {
 | 
			
		||||
	display: inline-block;
 | 
			
		||||
	float: left;
 | 
			
		||||
	width: 120px;
 | 
			
		||||
	position: relative;
 | 
			
		||||
	padding: 2px;
 | 
			
		||||
	text-align: center;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .display-mode .typesetting li + li {
 | 
			
		||||
	margin-left: 10px;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .display-mode .typesetting li.active {
 | 
			
		||||
	padding: 0;
 | 
			
		||||
	width: 124px;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .display-mode .typesetting li.active:after {
 | 
			
		||||
	font-family: FontAwesome;
 | 
			
		||||
	content: "\f00c";
 | 
			
		||||
	font-size: 12px;
 | 
			
		||||
	text-indent: 15px;
 | 
			
		||||
	line-height: 18px;
 | 
			
		||||
	color: #FFF;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	top: 2px;
 | 
			
		||||
	right: 2px;
 | 
			
		||||
	width: 0px;
 | 
			
		||||
	height: 0px;
 | 
			
		||||
	border-style: solid;
 | 
			
		||||
	border-width: 0 30px 30px 0;
 | 
			
		||||
	border-color: transparent #FFA307 transparent transparent;
 | 
			
		||||
	z-index: 1;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .display-mode .typesetting li.active img {
 | 
			
		||||
	border-radius: 5px;
 | 
			
		||||
	background-color: #FFA307;
 | 
			
		||||
	padding: 2px;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .display-mode .typesetting img {
 | 
			
		||||
	width: 120px;
 | 
			
		||||
	height: 120px;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .display-mode .typesetting input[type="radio"] {
 | 
			
		||||
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
 | 
			
		||||
  filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0)0;
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
}
 | 
			
		||||
.main-forms .display-mode .typesetting .style_description {
 | 
			
		||||
	display: block;
 | 
			
		||||
	line-height: 1.2em;
 | 
			
		||||
	font-size: 12px;
 | 
			
		||||
	color: #686868;
 | 
			
		||||
	padding-top: 10px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#user-forms .control-group .add-target .input-append input.last {
 | 
			
		||||
	border-radius: 4px;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,7 +70,7 @@
 | 
			
		|||
}
 | 
			
		||||
#pageslide .preview {
 | 
			
		||||
  position: relative;
 | 
			
		||||
  /*height: 80px;*/
 | 
			
		||||
  height: 80px;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -155,8 +155,8 @@
 | 
			
		|||
  list-style: none;
 | 
			
		||||
}
 | 
			
		||||
#pageslide .typesetting li {
 | 
			
		||||
  width: 72px;
 | 
			
		||||
  height: 72px;
 | 
			
		||||
  width: 60px;
 | 
			
		||||
  height: 60px;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  margin-bottom: 10px;
 | 
			
		||||
  padding: 2px;
 | 
			
		||||
| 
						 | 
				
			
			@ -197,9 +197,13 @@
 | 
			
		|||
}
 | 
			
		||||
#pageslide .typesetting .style_description {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  width: 240%;
 | 
			
		||||
  width: 195px;
 | 
			
		||||
  top: 0;
 | 
			
		||||
  left: 85px;
 | 
			
		||||
  left: 75px;
 | 
			
		||||
  line-height: 1.1em;
 | 
			
		||||
  font-size: 12px;
 | 
			
		||||
  color: #E7E7E7;
 | 
			
		||||
  padding-top: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,36 +19,117 @@ class Admin::PagePartsController < OrbitBackendController
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
  def edit
 | 
			
		||||
    # @part = PagePart.find(params[:id])
 | 
			
		||||
    # @r_tag = @part.public_r_tag.blank? ? LIST[:public_r_tags][0] : @part.public_r_tag
 | 
			
		||||
    # @tag_objects = @r_tag.classify.constantize.all rescue nil
 | 
			
		||||
    # if @r_tag.eql?('tag_cloud')
 | 
			
		||||
    #   @tag_objects = ModuleApp.where(has_tag: true)
 | 
			
		||||
    # else
 | 
			
		||||
    #   @tag_objects = @r_tag.classify.constantize.all rescue nil
 | 
			
		||||
    # end
 | 
			
		||||
 | 
			
		||||
    # @module_apps = ModuleApp.for_widget_select
 | 
			
		||||
    # @categories = nil
 | 
			
		||||
    # @tags = nil
 | 
			
		||||
    # @page_frontend_data_counts = nil
 | 
			
		||||
    # # @frontend_styles = nil
 | 
			
		||||
 | 
			
		||||
    # @selected={
 | 
			
		||||
    #   :module_app=> @part.module_app ? @part.module_app : nil,
 | 
			
		||||
    #   :app_frontend_url=> @part.widget_path || "default_widget", #@module_apps.first
 | 
			
		||||
    #   :category=>nil, #fetch by method: get_categories_and_tags
 | 
			
		||||
    #   :tag=>nil, #fetch by method: get_categories_and_tags
 | 
			
		||||
    #   :page_frontend_data_count=>nil,
 | 
			
		||||
    #   :frontend_style => nil,
 | 
			
		||||
    #   :widget_path=> nil
 | 
			
		||||
    # }
 | 
			
		||||
 | 
			
		||||
    # @selected[:widget_path] = @part.widget_path ? @part.widget_path : (@selected[:module_app].widgets.keys[0] rescue nil)
 | 
			
		||||
    # get_categories_and_tags
 | 
			
		||||
    # get_frontend_data_count
 | 
			
		||||
    # @app_frontend_urls = get_app_frontend_urls
 | 
			
		||||
    # @no_orbit_bar = @side_bar = @no_header = true
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @id = params[:id]
 | 
			
		||||
    @part = PagePart.find(params[:id])
 | 
			
		||||
    @r_tag = @part.public_r_tag.blank? ? LIST[:public_r_tags][0] : @part.public_r_tag
 | 
			
		||||
    @tag_objects = @r_tag.classify.constantize.all rescue nil
 | 
			
		||||
    if @r_tag.eql?('tag_cloud')
 | 
			
		||||
      @tag_objects = ModuleApp.where(has_tag: true)
 | 
			
		||||
    @module_apps = ModuleApp.for_widget_select
 | 
			
		||||
    @module_app = @part.module_app
 | 
			
		||||
    if @module_app
 | 
			
		||||
      @module_app_categories = @module_app.categories
 | 
			
		||||
      @module_app_tags = @module_app.tags
 | 
			
		||||
      @widget_paths = ModuleApp.find(@module_app.id).widgets.map{|name, data| [t(data["i18n"]), name]} rescue []
 | 
			
		||||
      if @part.widget_path.present?
 | 
			
		||||
        if @part.widget_path.eql?("default_widget")
 | 
			
		||||
          @checked_style = @part.widget_style
 | 
			
		||||
          @enabled_styles = @module_app.get_default_widget["enabled_styles"]
 | 
			
		||||
          @widget_fields = @module_app.widget_fields.collect do |widget_field| 
 | 
			
		||||
            label = I18n.t("#{@module_app.key}.default_widget.#{widget_field[0]}")
 | 
			
		||||
            [label, widget_field[0], class: widget_field[2]] 
 | 
			
		||||
          end
 | 
			
		||||
          @class_options = LIST[:widget_field_type].collect{|widget_field| [widget_field.humanize, widget_field]}
 | 
			
		||||
          @partial = 'default_widget'
 | 
			
		||||
        else
 | 
			
		||||
      @tag_objects = @r_tag.classify.constantize.all rescue nil
 | 
			
		||||
          @frontend_styles = @module_app.widgets[params[:val]]["style"] rescue nil
 | 
			
		||||
          @partial = 'custom_widget' if @frontend_styles.present?
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      @data_count = @module_app.get_registration.get_data_count.to_a rescue []
 | 
			
		||||
    end
 | 
			
		||||
    @no_orbit_bar = @side_bar = @no_header = true
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
    @module_apps = ModuleApp.for_widget_select
 | 
			
		||||
    @categories = nil
 | 
			
		||||
    @tags = nil
 | 
			
		||||
    @page_frontend_data_counts = nil
 | 
			
		||||
    # @frontend_styles = nil
 | 
			
		||||
  def get_page_setting_json
 | 
			
		||||
    begin
 | 
			
		||||
      part = PagePart.find(params[:id])
 | 
			
		||||
      m = {}
 | 
			
		||||
      m["main"] = part.module_app_id.to_s
 | 
			
		||||
      m["sub"] = part.widget_path
 | 
			
		||||
      m["category"] = part.category.present? ? [0, part.category.map{|c| c.to_s}] : [1]
 | 
			
		||||
      m["tags"] = part.tag.present? ? [0, part.tag.map{|c| c.to_s}] : [1]
 | 
			
		||||
      m["count"] = part.widget_data_count 
 | 
			
		||||
      render json: JSON.pretty_generate({module: m})
 | 
			
		||||
    rescue
 | 
			
		||||
      render :json => {error: ''}, status: 422
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
    @selected={
 | 
			
		||||
      :module_app=> @part.module_app ? @part.module_app : nil,
 | 
			
		||||
      :app_frontend_url=> @part.widget_path || "default_widget", #@module_apps.first
 | 
			
		||||
      :category=>nil, #fetch by method: get_categories_and_tags
 | 
			
		||||
      :tag=>nil, #fetch by method: get_categories_and_tags
 | 
			
		||||
      :page_frontend_data_count=>nil,
 | 
			
		||||
      :frontend_style => nil,
 | 
			
		||||
      :widget_path=> nil
 | 
			
		||||
    }
 | 
			
		||||
  def get_page_module_json
 | 
			
		||||
    modules = ModuleApp.for_widget_select.inject([]) do |module_apps, module_app|
 | 
			
		||||
      m = {}
 | 
			
		||||
      m["main"] = [module_app.title, module_app.id.to_s]
 | 
			
		||||
      m["sub"] = module_app.widgets.map{|name, data| [t(data["i18n"]), name]} rescue []
 | 
			
		||||
      m["sub"] << [I18n.t('default_widget.default_widget'),'default_widget'] if module_app.has_default_widget?
 | 
			
		||||
      m["category"] = module_app.categories.map{|category| [category.title, category.id.to_s] } rescue ''
 | 
			
		||||
      m["tags"] = module_app.tags.map{|tag| [tag.name, tag.id.to_s] } rescue ''
 | 
			
		||||
      m["count"] = module_app.get_registration.get_data_count.to_a
 | 
			
		||||
      module_apps << m
 | 
			
		||||
    end
 | 
			
		||||
    render json: JSON.pretty_generate({module: modules})
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
    @selected[:widget_path] = @part.widget_path ? @part.widget_path : (@selected[:module_app].widgets.keys[0] rescue nil)
 | 
			
		||||
    get_categories_and_tags
 | 
			
		||||
    get_frontend_data_count
 | 
			
		||||
    @app_frontend_urls = get_app_frontend_urls
 | 
			
		||||
    @no_orbit_bar = @side_bar = @no_header = true
 | 
			
		||||
  def get_display_style
 | 
			
		||||
    @part = PagePart.find(params[:id]) rescue nil
 | 
			
		||||
    @module_app = ModuleApp.find(params[:module_id]) rescue nil
 | 
			
		||||
    if @module_app
 | 
			
		||||
      if params[:val].eql?("default_widget")
 | 
			
		||||
        @checked_style = @part.widget_path.present? ? @part.widget_style : nil if @part && @part.widget_path.eql?("default_widget")
 | 
			
		||||
        @enabled_styles = @module_app.get_default_widget["enabled_styles"]
 | 
			
		||||
        @widget_fields = @module_app.widget_fields.collect do |widget_field| 
 | 
			
		||||
          label = I18n.t("#{@module_app.key}.default_widget.#{widget_field[0]}")
 | 
			
		||||
          [label, widget_field[0], class: widget_field[2]] 
 | 
			
		||||
        end
 | 
			
		||||
        @class_options = LIST[:widget_field_type].collect{|widget_field| [widget_field.humanize, widget_field]}
 | 
			
		||||
        @partial = 'default_widget'
 | 
			
		||||
      else
 | 
			
		||||
        @frontend_styles = @module_app.widgets[params[:val]]["style"] rescue nil
 | 
			
		||||
        @partial = 'custom_widget' if @frontend_styles.present?
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def reload_widgets
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,13 @@ class Admin::PagesController < Admin::ItemsController
 | 
			
		|||
  # helper Admin::PagePartsHelper
 | 
			
		||||
  # include Admin::FrontendWidgetInterface
 | 
			
		||||
 | 
			
		||||
  def show
 | 
			
		||||
    @item = Page.find(params[:id])
 | 
			
		||||
    @no_orbit_bar = true
 | 
			
		||||
    @edit = true
 | 
			
		||||
    render :text => parse_page_content(@item), :layout => 'page_layout'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def create
 | 
			
		||||
    @item = Page.new(params[:page])
 | 
			
		||||
  	if @item.module_app && @item.module_app.key == 'page_content'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,35 +19,12 @@ protected
 | 
			
		|||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def clean_tags_and_category_params
 | 
			
		||||
    field_name = set_field_name
 | 
			
		||||
    if self.class==Admin::PagePartsController and params[field_name][:module_app].blank?
 | 
			
		||||
      params[field_name][:module_app] = nil
 | 
			
		||||
    end
 | 
			
		||||
    if params[field_name][:tag].nil? || params[field_name][:tag].include?("nil")
 | 
			
		||||
      params[field_name][:tag] = []
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    if params[field_name][:category].nil? || params[field_name][:category].include?("nil")
 | 
			
		||||
      params[field_name][:category] = []
 | 
			
		||||
    end       
 | 
			
		||||
  end  #of clean_tags_and_category_params
 | 
			
		||||
 | 
			
		||||
  def set_local_item
 | 
			
		||||
    local_item = @part 
 | 
			
		||||
    local_item = @item if local_item.nil? && @item
 | 
			
		||||
    local_item
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def set_field_name
 | 
			
		||||
    case self.class.to_s
 | 
			
		||||
    when "Admin::PagesController"
 | 
			
		||||
       return "page"
 | 
			
		||||
    when "Admin::PagePartsController"
 | 
			
		||||
      return  "page_part"
 | 
			
		||||
    end # of  case
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def select_array_for_app_frontend_urls(hash)
 | 
			
		||||
    ary =  hash.collect{|name,data| [I18n.t(data["i18n"]),name]}
 | 
			
		||||
    ary << [I18n.t('default_widget.name'),'default_widget'] if @selected[:module_app] and @selected[:module_app].has_default_widget? 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ class PagePart
 | 
			
		|||
 | 
			
		||||
  field :name
 | 
			
		||||
  field :content, localize: true
 | 
			
		||||
  field :kind
 | 
			
		||||
  field :kind, default: "none"
 | 
			
		||||
  field :public_r_tag
 | 
			
		||||
  field :public_r_tag_object_id, :default => nil
 | 
			
		||||
  field :public_r_tag_option, :default => nil
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,7 @@
 | 
			
		|||
<% content_for :page_specific_javascript do %>
 | 
			
		||||
  <%= javascript_include_tag "lib/items/items" %>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<% node = Item.root %>
 | 
			
		||||
<% unless node.nil? %>
 | 
			
		||||
<ol id='<%= node.id %>' class="sortable item-groups">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
<div class="control-group input-content">
 | 
			
		||||
  <label class="control-label muted"><%= t("default_widget.select_widget_style") %></label>
 | 
			
		||||
  <div class="controls">
 | 
			
		||||
    <%= select 'page_part', 'widget_style', @frontend_styles, {:selected => (@part && @part[:widget_style])}, class: "input-xlarge" %>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,109 @@
 | 
			
		|||
 | 
			
		||||
<div class="control-group input-content">
 | 
			
		||||
  <label class="control-label muted"><%= t("default_widget.select_widget_style") %></label>
 | 
			
		||||
  <div class="controls">
 | 
			
		||||
    <ul class="typesetting clearfix">
 | 
			
		||||
      <% if @enabled_styles.include?("typeA") %>
 | 
			
		||||
        <li>
 | 
			
		||||
          <%= radio_button_tag "page_part[widget_style]", "typeA", @checked_style ? @checked_style.eql?("typeA") : true, class: "d-theme" %>
 | 
			
		||||
          <%= image_tag 'module/default_widgets/style01.png'%>
 | 
			
		||||
          <span class="style_description"><%= t("default_widget.caption.typeA") %></span>  
 | 
			
		||||
        </li>
 | 
			
		||||
      <% end %>
 | 
			
		||||
      <% if @enabled_styles.include?("typeB_style2") %>
 | 
			
		||||
        <li>
 | 
			
		||||
          <%= radio_button_tag "page_part[widget_style]", "typeB_style2", @checked_style ? @checked_style.eql?("typeB_style2") : false, class: "d-theme" %>
 | 
			
		||||
          <%= image_tag 'module/default_widgets/style02.png'%>
 | 
			
		||||
          <span class="style_description"><%= t("default_widget.caption.typeB_style2") %></span>
 | 
			
		||||
        </li>
 | 
			
		||||
      <% end %>
 | 
			
		||||
      <% if @enabled_styles.include?("typeB_style3") %>
 | 
			
		||||
        <li>
 | 
			
		||||
          <%= radio_button_tag "page_part[widget_style]", "typeB_style3", @checked_style ? @checked_style.eql?("typeB_style3") : false, class: "d-theme" %>
 | 
			
		||||
          <%= image_tag 'module/default_widgets/style03.png'%>
 | 
			
		||||
          <span class="style_description"><%= t("default_widget.caption.typeB_style3") %></span>
 | 
			
		||||
        </li>
 | 
			
		||||
      <% end %>
 | 
			
		||||
      <% if @enabled_styles.include?("typeB_style4") %>
 | 
			
		||||
        <li>
 | 
			
		||||
          <%= radio_button_tag "page_part[widget_style]", "typeB_style4", @checked_style ? @checked_style.eql?("typeB_style4") : false, class: "d-theme" %>
 | 
			
		||||
          <%= image_tag 'module/default_widgets/style04.png'%>
 | 
			
		||||
          <span class="style_description"><%= t("default_widget.caption.typeB_style4") %></span>
 | 
			
		||||
        </li>
 | 
			
		||||
      <% end %>
 | 
			
		||||
      <% if @enabled_styles.include?("typeC") %>
 | 
			
		||||
        <li>
 | 
			
		||||
          <%= radio_button_tag "page_part[widget_style]", "typeC", @checked_style ? @checked_style.eql?("typeC") : false, class: "d-theme" %>
 | 
			
		||||
          <%= image_tag 'module/default_widgets/style05.png'%>
 | 
			
		||||
          <span class="style_description"><%= t("default_widget.caption.typeC") %></span>
 | 
			
		||||
        </li>
 | 
			
		||||
      <% end %>
 | 
			
		||||
    </ul>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
<div class="control-group input-content">
 | 
			
		||||
  <label class="control-label muted"><%= t("default_widget.fields_") %></label>
 | 
			
		||||
  <div class="controls">
 | 
			
		||||
    <table>
 | 
			
		||||
      <tbody class="form-inline">
 | 
			
		||||
        <% @widget_fields.count.times do |i| %>
 | 
			
		||||
          <tr>
 | 
			
		||||
            <td>
 | 
			
		||||
              <%= select_tag "page_part[widget_field][][field_name]", options_for_select(@widget_fields, (@part.widget_field_name[i] if @part)), include_blank: true, class: "input-large widget_field" %>
 | 
			
		||||
            </td>
 | 
			
		||||
            <td><i class="icons-arrow-right-6"></i></td>
 | 
			
		||||
            <td>
 | 
			
		||||
              <%= select_tag "page_part[widget_field][][class]", options_for_select(@class_options, (@part.widget_class[i] if @part)), include_blank: true, class: "input-large" %>
 | 
			
		||||
            </td>
 | 
			
		||||
            <td>
 | 
			
		||||
              <label class="checkbox">
 | 
			
		||||
                <span class="checkbox_link hide"><%= check_box_tag 'page_part[widget_field][][sat_to_link]', true, @part && @part.widget_sat_to_link[i] || false %> <%= t(:link) %></span>
 | 
			
		||||
              </label>
 | 
			
		||||
            </td>
 | 
			
		||||
          </tr>
 | 
			
		||||
        <% end %>
 | 
			
		||||
      </tbody>
 | 
			
		||||
      <tfoot>
 | 
			
		||||
        <tr>
 | 
			
		||||
          <th><%= t "default_widget.fields_order" %></th>
 | 
			
		||||
          <th></th>
 | 
			
		||||
          <th><%= t "default_widget.fields_style" %></th>
 | 
			
		||||
          <th class="span2"></th>
 | 
			
		||||
        </tr>
 | 
			
		||||
      </tfoot>
 | 
			
		||||
    </table>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  $('.typesetting li').each(function(index, el) {
 | 
			
		||||
    $(this).find('input').prop('checked') ? $(this).addClass('active') : '';
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  $('.controls').on(clickEvent, '.typesetting input[type="radio"]', function(event) {
 | 
			
		||||
    $(this).prop('checked') ? $(this).closest('li').addClass('active').siblings('li').removeClass('active') : '';
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  $('#module_widget select.widget_field').each(function() {
 | 
			
		||||
    if($(this).find(":selected").prop('class') == 'link') {
 | 
			
		||||
      $(this).closest('tr').find('.checkbox_link').show();
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
  
 | 
			
		||||
  $('#module_widget').on('change', '.widget_field', function() {
 | 
			
		||||
    if($(this).find(":selected").prop('class') == 'link') {
 | 
			
		||||
      $(this).closest('tr').find('.checkbox_link')
 | 
			
		||||
                            .show()
 | 
			
		||||
                            .end()
 | 
			
		||||
                            .find('.checkbox_link input[type="checkbox"]')
 | 
			
		||||
                            .prop('checked', false);
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      $(this).closest('tr').find('.checkbox_link')
 | 
			
		||||
                            .hide()
 | 
			
		||||
                            .end()
 | 
			
		||||
                            .find('.checkbox_link input[type="checkbox"]')
 | 
			
		||||
                            .prop('checked', false);
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,21 +1,136 @@
 | 
			
		|||
<%= stylesheet_link_tag "admin/default_widget_setting" %>
 | 
			
		||||
<% content_for :page_specific_javascript do %>
 | 
			
		||||
  <%= javascript_include_tag "lib/items/page_part" %>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<%= form_for @part, :url => admin_page_part_path(@part),:html=>{:class=>"clear form-horizontal edit_page_part"} do |f| %>
 | 
			
		||||
	<% LIST[:page_part_kinds].each do |kind| %>
 | 
			
		||||
          <%= label_tag '',:class=>'checkbox inline' do  %>
 | 
			
		||||
		<%= f.radio_button :kind, kind, :class => 'part_kind' %>
 | 
			
		||||
		<%= t(kind, :scope => 'page_part_kinds') %>
 | 
			
		||||
<%= form_for @part, url: admin_page_part_path(@part), html: { class: "form-horizontal main-forms"} do |f| %>
 | 
			
		||||
  <div class="btn-group" data-toggle="buttons-radio">
 | 
			
		||||
    <label href="#none" class="btn btn-large" data-toggle="tab">
 | 
			
		||||
      <%= t("page_part_kinds.none") %>
 | 
			
		||||
      <%= f.radio_button :kind, "none", class: "hide" %>
 | 
			
		||||
    </label>
 | 
			
		||||
    <label href="#text" class="btn btn-large" data-toggle="tab">
 | 
			
		||||
      <%= t("page_part_kinds.text") %>
 | 
			
		||||
      <%= f.radio_button :kind, "text", class: "hide" %>
 | 
			
		||||
    </label>
 | 
			
		||||
    <label href="#public_r_tag" class="btn btn-large" data-toggle="tab">
 | 
			
		||||
      <%= t("page_part_kinds.public_r_tag") %>
 | 
			
		||||
      <%= f.radio_button :kind, "public_r_tag", class: "hide" %>
 | 
			
		||||
    </label>
 | 
			
		||||
    <label href="#module_widget" class="btn btn-large" data-toggle="tab">
 | 
			
		||||
      <%= t("page_part_kinds.module_widget") %>
 | 
			
		||||
      <%= f.radio_button :kind, "module_widget", class: "hide" %>
 | 
			
		||||
    </label>
 | 
			
		||||
  </div>
 | 
			
		||||
  <fieldset>
 | 
			
		||||
    <div class="input-area tab-content">
 | 
			
		||||
      <div id="none" class="parts-none tab-pane fade in"><%= t(:select_one_function) %></div>
 | 
			
		||||
      <div id="text" class="tab-pane fade in">
 | 
			
		||||
        <div class="nav-name">
 | 
			
		||||
          <strong><%= t(:language) %></strong>
 | 
			
		||||
        </div>
 | 
			
		||||
        <ul class="nav nav-pills language-nav">
 | 
			
		||||
          <% @site_valid_locales.each_with_index do |locale, i| %>
 | 
			
		||||
            <li class="<%= 'active' if i == 0 %>">
 | 
			
		||||
              <a href=".<%= locale %>" data-toggle="tab"><%= I18nVariable.from_locale(locale) %></a>
 | 
			
		||||
            </li>
 | 
			
		||||
          <% end %>
 | 
			
		||||
        </ul>
 | 
			
		||||
        <div class="tab-content language-area">
 | 
			
		||||
          <% @site_valid_locales.each_with_index do |locale, i| %>
 | 
			
		||||
            <div class="tab-pane fade <%= locale %> <%= 'active in' if i == 0 %>">
 | 
			
		||||
              <div class="control-group input-content">
 | 
			
		||||
                <label class="control-label muted"><%= t(:content) %></label>
 | 
			
		||||
                <div class="controls">
 | 
			
		||||
                  <div class="textarea">
 | 
			
		||||
                    <%= f.fields_for :content_translations do |f| %>
 | 
			
		||||
                       <%= f.text_area locale, class: "ckeditor input-block-level", value: (@part.content_translations[locale] rescue nil) %>
 | 
			
		||||
                    <% end %>
 | 
			
		||||
	<% LIST[:page_part_kinds].each do |kind| %>
 | 
			
		||||
		<div id='<%= "part_#{kind}" %>' class='part_kind_partial' style="display:<%= kind.eql?(@part.kind) ? 'block' : 'none' %>">
 | 
			
		||||
			<%= render :partial => kind, :locals => {:f => f} %>
 | 
			
		||||
                  </div>
 | 
			
		||||
                </div>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          <% end %>
 | 
			
		||||
	
 | 
			
		||||
  <div class="form-actions form-fixed pagination-right">
 | 
			
		||||
                <%= f.submit t(:update_),:class=>"btn btn-primary" %> 
 | 
			
		||||
                <%= link_back("btn") %>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div id="module_widget" class="tab-pane fade in">
 | 
			
		||||
        <%= f.fields_for :title_translations do |f| %>
 | 
			
		||||
          <% @site_valid_locales.each do |locale| %>
 | 
			
		||||
            <div class="control-group input-content">
 | 
			
		||||
              <%= f.label :locale, "#{t(:title)} #{I18nVariable.from_locale(locale)}", class: "control-label muted" %>
 | 
			
		||||
              <div class="controls">
 | 
			
		||||
                <%= f.text_field locale, class: 'input-xlarge page_title', placeholder: "#{t(:title)} #{I18nVariable.from_locale(locale)}", id: locale %>
 | 
			
		||||
              </div>
 | 
			
		||||
            </div>
 | 
			
		||||
          <% end %>
 | 
			
		||||
        <% end %>
 | 
			
		||||
        <div class="control-group input-content">
 | 
			
		||||
          <%= f.label :module_app_id, t(:module), class: "control-label muted" %>
 | 
			
		||||
          <div class="controls">
 | 
			
		||||
            <%= f.select :module_app, options_from_collection_for_select(@module_apps, :id, :module_name, selected: (@part.module_app_id rescue nil)), {}, {include_blank: true, class: "input-xlarge change"} %>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div id="front_url" class="control-group input-content <%= 'hide' if @widget_paths.blank? %>">
 | 
			
		||||
          <%= f.label :widget_path, t('front_page.display_mode'), class: "control-label muted" %>
 | 
			
		||||
          <div class="controls">
 | 
			
		||||
            <%= f.select :widget_path, @widget_paths, {}, selected: (@part.widget_path rescue nil), class: "input-xlarge change" %>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="control-group input-content checkbox-groups <%= 'hide' if @module_app_categories.blank? %>" id="page-category-groups">
 | 
			
		||||
          <%= f.label :categories, t(:categories), class: "control-label muted" %>
 | 
			
		||||
          <div class="controls">
 | 
			
		||||
            <%= content_tag :label, class: "checkbox" do %>
 | 
			
		||||
              <%= check_box_tag nil, nil, true, class: "select_all" %> <%= t(:all) %>
 | 
			
		||||
            <% end %>
 | 
			
		||||
            <div class="groups" id="page-category">
 | 
			
		||||
              <%= content_tag_for(:label, @module_app_categories, class: "checkbox") do |category|%>
 | 
			
		||||
                <%= check_box_tag("page_part[tag][]", category.id, (@part.category.include?(category.id) rescue false) ) %>
 | 
			
		||||
                <%= category.title %>
 | 
			
		||||
              <% end if @module_app_tags %>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div> 
 | 
			
		||||
        <div class="control-group input-content checkbox-groups <%= 'hide' if @module_app_tags.blank? %>" id="page-tags-groups">
 | 
			
		||||
          <%= f.label :tags, t(:tags), class: "control-label muted" %>
 | 
			
		||||
          <div class="controls">
 | 
			
		||||
            <%= content_tag :label, class: "checkbox" do %>
 | 
			
		||||
              <%= check_box_tag nil, nil, true, class: "select_all" %> <%= t(:all) %>
 | 
			
		||||
            <% end %>
 | 
			
		||||
            <div class="groups" id="page-tags">
 | 
			
		||||
              <%= content_tag_for(:label, @module_app_tags, class: "checkbox") do |tag|%>
 | 
			
		||||
                <%= check_box_tag("page_part[tag][]", tag.id, (@part.tag.include?(tag.id) rescue false) ) %>
 | 
			
		||||
                <%= tag.name %>
 | 
			
		||||
              <% end if @module_app_tags %>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="display-mode">
 | 
			
		||||
          <%= render @partial %>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="control-group input-content <%= 'hide' if @module_app.blank? %>">
 | 
			
		||||
          <%= f.label :widget_data_count, t(:widget_data_count), class: "control-label muted" %>
 | 
			
		||||
          <div class="controls">
 | 
			
		||||
            <%= f.select :widget_data_count, options_for_select(@data_count, @part.widget_data_count), {}, class: "input-mini", id: "page_count" %>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="form-actions">
 | 
			
		||||
      <%= f.submit t(:update_), class: "btn btn-primary" %> 
 | 
			
		||||
      <button type="button" class="btn" onclick="window.history.back()"><%= t(:cancel) %></button>
 | 
			
		||||
    </div>
 | 
			
		||||
  </fieldset>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  $('.btn-group input[type="radio"]').each(function(index, el) {
 | 
			
		||||
    if($(this).prop('checked')) {
 | 
			
		||||
    	$(this).closest('label').addClass('active');
 | 
			
		||||
    	$("#" + $(this).val()).addClass('active');
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
  
 | 
			
		||||
  $('.btn-group').on(clickEvent, 'label', function(event) {
 | 
			
		||||
    $(this).find('input').prop('checked', true);
 | 
			
		||||
    event.preventDefault();
 | 
			
		||||
  });
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1 +1,2 @@
 | 
			
		|||
<%= stylesheet_link_tag "lib/main-forms" %>
 | 
			
		||||
<%= render 'edit' %>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
<% if @partial %>
 | 
			
		||||
	$("#module_widget .display-mode").html("<%= j render @partial %>")
 | 
			
		||||
<% else %>
 | 
			
		||||
	$("#module_widget .display-mode").html('')
 | 
			
		||||
<% end %>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,7 @@
 | 
			
		|||
<label><%= t("default_widget.select_widget_style") %></label>
 | 
			
		||||
<ul class="typesetting">
 | 
			
		||||
  <% if @enabled_styles.include?("typeA") %>
 | 
			
		||||
    <li class="active">
 | 
			
		||||
      <input type="radio" class="d-theme" name="page[frontend_style]" value="typeA" checked="checked">
 | 
			
		||||
    <li>
 | 
			
		||||
      <%= radio_button_tag "page[frontend_style]", "typeA", @checked_style ? @checked_style.eql?("typeA") : true, class: "d-theme" %>
 | 
			
		||||
      <%= image_tag 'module/default_widgets/style01.png'%>
 | 
			
		||||
      <span class="style_description"><%= t("default_widget.caption.typeA") %></span>  
 | 
			
		||||
| 
						 | 
				
			
			@ -69,15 +68,20 @@
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
  $(document).ready(function() {
 | 
			
		||||
  $('.typesetting li').each(function(index, el) {
 | 
			
		||||
    $(this).find('input').prop('checked') ? $(this).addClass('active') : '';
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  $('#pageslide').on(clickEvent, '.typesetting input[type="radio"]', function(event) {
 | 
			
		||||
    $(this).prop('checked') ? $(this).closest('li').addClass('active').siblings('li').removeClass('active') : '';
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  $('#pageslide select.widget_field').each(function() {
 | 
			
		||||
    if($(this).find(":selected").prop('class') == 'link') {
 | 
			
		||||
      $(this).closest('tr').find('.checkbox_link').show();
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
  
 | 
			
		||||
  $('#pageslide').on('change', '.widget_field', function() {
 | 
			
		||||
    if($(this).find(":selected").prop('class') == 'link') {
 | 
			
		||||
      $(this).closest('tr').find('.checkbox_link')
 | 
			
		||||
| 
						 | 
				
			
			@ -94,5 +98,4 @@
 | 
			
		|||
                            .prop('checked', false);
 | 
			
		||||
    }
 | 
			
		||||
  });
 | 
			
		||||
  });
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,10 +30,10 @@
 | 
			
		|||
  <% if @edit %>
 | 
			
		||||
    <script>
 | 
			
		||||
      $(document).ajaxStop(function() {
 | 
			
		||||
        $('a').not('.nav').on('click', function(e){
 | 
			
		||||
        $('a').not('.backend_edit').on('click', function(e){
 | 
			
		||||
          e.preventDefault();
 | 
			
		||||
        });
 | 
			
		||||
        $('a').not('.nav').css("cursor", "default");
 | 
			
		||||
        $('a').not('.backend_edit').css("cursor", "default");
 | 
			
		||||
      });
 | 
			
		||||
    </script>
 | 
			
		||||
    <style>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,6 +7,7 @@
 | 
			
		|||
	<%= stylesheet_link_tag "structure" %>
 | 
			
		||||
	<%= render 'layouts/ie_html5_fix' %>
 | 
			
		||||
	<%= javascript_include_tag "structure" %>
 | 
			
		||||
  <%= yield :page_specific_javascript %>
 | 
			
		||||
	<%= csrf_meta_tag %>
 | 
			
		||||
</head>
 | 
			
		||||
<body id="sideset">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -322,6 +322,7 @@ en:
 | 
			
		|||
  page: Page
 | 
			
		||||
  page_part_kinds:
 | 
			
		||||
    module_widget: Plug-in Module Widget
 | 
			
		||||
    none: None
 | 
			
		||||
    public_r_tag: System Widget
 | 
			
		||||
    text: Text Area
 | 
			
		||||
  passed: Approved
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,6 +59,7 @@ en:
 | 
			
		|||
  select_all: Select all
 | 
			
		||||
  select_file: Select file
 | 
			
		||||
  select_image: Select image
 | 
			
		||||
  select_one_function: Please select one of the functions above
 | 
			
		||||
  sort_number: Sort number
 | 
			
		||||
  tag:
 | 
			
		||||
    add: Add tag
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,6 +56,7 @@ zh_tw:
 | 
			
		|||
  select_all: 全選
 | 
			
		||||
  select_file: 選擇檔案
 | 
			
		||||
  select_image: 選擇圖片
 | 
			
		||||
  select_one_function: 請選擇一個以上的功能
 | 
			
		||||
  sort_number: 排序數
 | 
			
		||||
  tag:
 | 
			
		||||
    add: 新增標籤
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -323,6 +323,7 @@ zh_tw:
 | 
			
		|||
  page: 頁面
 | 
			
		||||
  page_part_kinds:
 | 
			
		||||
    module_widget: 外掛模塊
 | 
			
		||||
    non: 沒有
 | 
			
		||||
    public_r_tag: 系統模塊
 | 
			
		||||
    text: 文字區域
 | 
			
		||||
  passed: 通過審核
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -151,6 +151,11 @@ Orbit::Application.routes.draw do
 | 
			
		|||
    end
 | 
			
		||||
 | 
			
		||||
    resources :page_parts do
 | 
			
		||||
      collection do
 | 
			
		||||
        get 'get_display_style'
 | 
			
		||||
        get 'get_page_module_json'
 | 
			
		||||
        get 'get_page_setting_json'
 | 
			
		||||
      end
 | 
			
		||||
      member do
 | 
			
		||||
        get 'reload_after_widget_field_changed',:action=>'reload_widget_field'
 | 
			
		||||
        get 'reload_after_module_changed',:action=>'reload_widgets'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ module ParserFrontEnd
 | 
			
		|||
        ret = ''
 | 
			
		||||
        ret << "<div class='editable'>"
 | 
			
		||||
        ret << "<div class='edit_link'>"
 | 
			
		||||
        ret << "<a href='#{edit_admin_page_part_path(page_part['part_id'])}' title='#{part ? part.edit_title : ''}'>#{t(:edit)}</a>"
 | 
			
		||||
        ret << "<a href='#{edit_admin_page_part_path(page_part['part_id'])}' class='backend_edit' title='#{part ? part.edit_title : ''}'>#{t(:edit)}</a>"
 | 
			
		||||
        ret << '</div>'
 | 
			
		||||
        ret << page_part.child.to_html rescue nil
 | 
			
		||||
        ret << '</div>'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||