diff --git a/app/assets/javascripts/admin/categories.js b/app/assets/javascripts/admin/categories.js new file mode 100644 index 0000000..03cb492 --- /dev/null +++ b/app/assets/javascripts/admin/categories.js @@ -0,0 +1,21 @@ +$(function() { + $.pageslide.closeCallback(function(pageslide, item) { + $('.filter-item').removeClass("active"); + }); + $.pageslide.loadComplete(function(pageslide, item) { + $('.filter-item').removeClass("active"); + item.closest('li').addClass('active'); + if(item.data('id') == 'new') { + resetForm(); + pageslide.find('form').attr('action', '/admin/module_apps/' + item.data('module') + '/categories/'); + pageslide.find('form').attr('method', 'post'); + } + else { + setForm(item.data('form')); + pageslide.find('form').attr('action', '/admin/module_apps/' + item.data('module') + '/categories/' + item.data('id')); + pageslide.find('form').attr('method', 'put'); + console.log(item.data('disable')); + pageslide.find('input[type="checkbox"]').prop( 'checked', item.data('disable') ); + } + }); +}) \ No newline at end of file diff --git a/app/assets/javascripts/admin/tags.js b/app/assets/javascripts/admin/tags.js index 3283b23..54396f4 100644 --- a/app/assets/javascripts/admin/tags.js +++ b/app/assets/javascripts/admin/tags.js @@ -1,21 +1,40 @@ //= require lib/tags $(function() { + $('a[data-toggle="tab"]').click(function (e) { + e.preventDefault(); + $(this).tab('show'); + }); + + // $('#tags-list .filter-item.default .card').click(function(){ + // $('#removeDefaults').attr('rel', "<%= Rails.application.routes.url_helpers.remove_default_admin_tags_path %>" + "?module_app_id=" + $('#module_app_id').val() + "&ids=" + ids); + // $('#removeDefaults').removeClass('hide'); + // console.log("@@"); + // }); + $.pageslide.closeCallback(function(pageslide, item) { $('.filter-item').removeClass("active"); }); + $.pageslide.loadComplete(function(pageslide, item) { + $('.filter-item').removeClass("active"); + item.closest('li').addClass('active'); + + if(item.hasClass('btn')) { + $('#filter-default-tag').fastLiveFilter('.add-default-tags-list', '.filter-item', '.tag'); + } + if(item.data('id') == 'new') { resetForm(); - pageslide.find('form').attr('action', '/admin/tags/'); - pageslide.find('form').attr('method', 'post'); - } - else { + pageslide.find('form:eq(0)').attr('action', window.location.pathname); + pageslide.find('form:eq(0)').attr('method', 'post'); + }else { setForm(item.data('form')); - pageslide.find('form').attr('action', '/admin/tags/' + item.data('id')); - pageslide.find('form').attr('method', 'put'); + pageslide.find('form:eq(0)').attr('action', window.location.pathname + '/' + item.data('id')); + pageslide.find('form:eq(0)').attr('method', 'put'); } + }); }) \ No newline at end of file diff --git a/app/assets/javascripts/ckeditor/config.js.erb b/app/assets/javascripts/ckeditor/config.js.erb index 199ec32..1fe6b38 100644 --- a/app/assets/javascripts/ckeditor/config.js.erb +++ b/app/assets/javascripts/ckeditor/config.js.erb @@ -26,9 +26,9 @@ CKEDITOR.editorConfig = function( config ) { // config.filebrowserImageBrowseUrl = '/browser/browse.php?type=Images'; // config.filebrowserUploadUrl = '/uploader/upload.php'; - config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.admin_assets_path(:module_app_id=>ModuleApp.where(:key=>'asset').first.id) %>"; - config.filebrowserImageBrowseUrl = "<%= Rails.application.routes.url_helpers.admin_assets_path(:type=>'image',:module_app_id=>ModuleApp.where(:key=>'asset').first.id) %>"; - // config.filebrowserUploadUrl = "<%= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>"; + config.filebrowserBrowseUrl = "<%= Rails.application.routes.url_helpers.admin_assets_path(:module_app_id=>ModuleApp.where(:key=>'asset').first.id) rescue '' %>"; + config.filebrowserImageBrowseUrl = "<%= Rails.application.routes.url_helpers.admin_assets_path(:type=>'image',:module_app_id=>ModuleApp.where(:key=>'asset').first.id) rescue '' %>"; + // config.filebrowserUploadUrl = "<%#= Rails.application.routes.url_helpers.file_upload_admin_assets_path %>"; // config.contentsCss = '/orbit_4.0.1/assets/javascripts/lib/ckeditor/plugins/stylesheetparser/samples/assets/sample.css'; diff --git a/app/assets/javascripts/lib/tags.js.erb b/app/assets/javascripts/lib/tags.js.erb index b24d0d2..9cdc70b 100755 --- a/app/assets/javascripts/lib/tags.js.erb +++ b/app/assets/javascripts/lib/tags.js.erb @@ -1,207 +1,209 @@ function checkTagsQuantity() { - var $tagLead = $('.tag-lead'), - $tagsGroups = $('.tags-groups'); + var $tagLead = $('.tag-lead'), + $tagsGroups = $('.tags-groups'); - $tagsGroups.each(function(i) { - var $children = $(this).children().length; - $tagLead.eq(i).children('.badge').text($children); - }) + $tagsGroups.each(function(i) { + var $children = $(this).children().length; + $tagLead.eq(i).children('.badge').text($children); + }) } function checkedLength() { - var $tagsList = $('#tags-list'), - $moduleTags, - $defaultTags, - $toDefault; - function reload_links() { - if($('.default-tags').length) { - $moduleTags = $('.module-tags input[type="checkbox"]:checked'); - $defaultTags = $('.default-tags input[type="checkbox"]:checked'); + var $tagsList = $('#tags-list'), + $moduleTags, + $defaultTags, + $toDefault; + function reload_links() { + if($('.default-tags').length) { + $moduleTags = $('.module-tags input[type="checkbox"]:checked'); + $defaultTags = $('.default-tags input[type="checkbox"]:checked'); - if($moduleTags.length > 1 || $moduleTags.length+$defaultTags.length > 1) { - $('#mergerTags').removeClass('hide'); - } else { - $('#mergerTags').addClass('hide'); - }; + if($moduleTags.length > 1 || $moduleTags.length+$defaultTags.length > 1) { + $('#mergerTags').removeClass('hide'); + } else { + $('#mergerTags').addClass('hide'); + }; + } else { + $moduleTags = $('li.module input[type="checkbox"]:checked'); + $defaultTags = $('li.default input[type="checkbox"]:checked'); - if ($moduleTags.length > 0 || $defaultTags.length > 0) { - $('#deselect').removeClass('hide'); - var ids = new Array(); - $defaultTags.each(function(i) { - ids.push($defaultTags.eq(i).parent().siblings('.tag_id').val()); - }); - $moduleTags.each(function(i) { - ids.push($moduleTags.eq(i).parent().siblings('.tag_id').val()); - }); - $('#deleteTags').attr('rel', "<%= Rails.application.routes.url_helpers.delete_tags_admin_tags_path %>" + "?ids=" + ids); - $('#deleteTags').removeClass('hide'); - $('#deselect').on('click', deselect); - } else { - $('#deselect').addClass('hide'); - $('#deleteTags').attr('rel', ""); - $('#deleteTags').addClass('hide'); - $('#deselect').off('click', deselect); - }; + if($defaultTags.length > 0 || $moduleTags.length > 0) { + $('#deselect').removeClass('hide'); + $('#deselect').on('click', deselect); + if($defaultTags.length > 0 && $moduleTags.length > 0) { + $('#deleteTags').attr('rel', ""); + $('#deleteTags').addClass('hide'); + $('#removeDefaults').attr('rel', ""); + $('#removeDefaults').addClass('hide'); + $('#mergerTags').addClass('hide'); + } else if ($defaultTags.length > 0) { + var ids = new Array(); + $defaultTags.each(function(i) { + ids.push($defaultTags.eq(i).parent().siblings('.tag_id').val()); + }); + $('#removeDefaults').attr('href', "<%= Rails.application.routes.url_helpers.remove_default_admin_tags_path %>" + "?module_app_id=" + $('#module_app_id').val() + "&ids=" + ids); + $('#removeDefaults').removeClass('hide'); + } else { + var ids = new Array(); + $moduleTags.each(function(i) { + ids.push($moduleTags.eq(i).parent().siblings('.tag_id').val()); + }); + $('#deleteTags').attr('rel', "<%= Rails.application.routes.url_helpers.delete_tags_admin_tags_path %>" + "?ids=" + ids); + $('#deleteTags').removeClass('hide'); + if($moduleTags.length > 1) { + $('#mergerTags').removeClass('hide'); + } else { + $('#mergerTags').addClass('hide'); + }; + }; + } else { + $('#deselect').addClass('hide'); + $('#deleteTags').attr('rel', ""); + $('#deleteTags').addClass('hide'); + $('#removeDefaults').attr('rel', ""); + $('#removeDefaults').addClass('hide'); + $('#mergerTags').addClass('hide'); + $('#deselect').off('click', deselect); + }; + }; - if ($moduleTags.length > 0 && $defaultTags.length == 0) { - var ids = new Array(); - $moduleTags.each(function(i) { - ids.push($moduleTags.eq(i).parent().siblings('.tag_id').val()); - }); - $('#addDefault').attr('href', "<%= Rails.application.routes.url_helpers.add_to_default_admin_tags_path %>" + "?ids=" + ids); - $('#addDefault').removeClass('hide'); - } else { - $('#addDefault').attr('href', ""); - $('#addDefault').addClass('hide'); - }; - } else { - $moduleTags = $('.module-tags li.module input[type="checkbox"]:checked'); - $defaultTags = $('.module-tags li.default input[type="checkbox"]:checked'); - if($defaultTags.length > 0 || $moduleTags.length > 0) { - $('#deselect').removeClass('hide'); - $('#deselect').on('click', deselect); - if($defaultTags.length > 0 && $moduleTags.length > 0) { - $('#deleteTags').attr('rel', ""); - $('#deleteTags').addClass('hide'); - $('#removeDefaults').attr('rel', ""); - $('#removeDefaults').addClass('hide'); - $('#mergerTags').addClass('hide'); - } else if ($defaultTags.length > 0) { - var ids = new Array(); - $defaultTags.each(function(i) { - ids.push($defaultTags.eq(i).parent().siblings('.tag_id').val()); - }); - $('#removeDefaults').attr('rel', "<%= Rails.application.routes.url_helpers.remove_default_admin_tags_path %>" + "?module_app_id=" + $('#module_app_id').val() + "&ids=" + ids); - $('#removeDefaults').removeClass('hide'); - } else { - var ids = new Array(); - $moduleTags.each(function(i) { - ids.push($moduleTags.eq(i).parent().siblings('.tag_id').val()); - }); - $('#deleteTags').attr('rel', "<%= Rails.application.routes.url_helpers.delete_tags_admin_tags_path %>" + "?module_app_id=" + $('#module_app_id').val() + "&ids=" + ids); - $('#deleteTags').removeClass('hide'); - if($moduleTags.length > 1) { - $('#mergerTags').removeClass('hide'); - } else { - $('#mergerTags').addClass('hide'); - }; - }; - } else { - $('#deselect').addClass('hide'); - $('#deleteTags').attr('rel', ""); - $('#deleteTags').addClass('hide'); - $('#removeDefaults').attr('rel', ""); - $('#removeDefaults').addClass('hide'); - $('#mergerTags').addClass('hide'); - $('#deselect').off('click', deselect); - }; - }; - } - $tagsList.delegate('.card', 'click', function() { - reload_links(); - }); - $('#selectAllTags').on('click', function() { - $('.filter-item:not(".mark") input[type="checkbox"]').attr('checked', true); - $('.filter-item:not(".mark") .card').addClass('active'); - reload_links(); - }); - $('#deleteTags').on('click', function() { - $('#delete_tags .tags-groups').empty(); + if ($moduleTags.length > 0 && $defaultTags.length == 0) { + var ids = new Array(); + $moduleTags.each(function(i) { + ids.push($moduleTags.eq(i).parent().siblings('.tag_id').val()); + }); + $('#addDefault').attr('href', "<%= Rails.application.routes.url_helpers.add_to_default_admin_tags_path %>" + "?ids=" + ids); + $('#addDefault').removeClass('hide'); + } else { + $('#addDefault').attr('href', ""); + $('#addDefault').addClass('hide'); + }; + + if ($moduleTags.length > 0 || $defaultTags.length > 0) { + $('#deselect').removeClass('hide'); + var ids = new Array(); + $defaultTags.each(function(i) { + ids.push($defaultTags.eq(i).parent().siblings('.tag_id').val()); + }); + + $moduleTags.each(function(i) { + ids.push($moduleTags.eq(i).parent().siblings('.tag_id').val()); + }); + $('#deleteTags').attr('rel', "<%= Rails.application.routes.url_helpers.delete_tags_admin_tags_path %>" + "?ids=" + ids); + $('#deleteTags').removeClass('hide'); + $('#deselect').on('click', deselect); + } else { + $('#deselect').addClass('hide'); + $('#deleteTags').attr('rel', ""); + $('#deleteTags').addClass('hide'); + $('#deselect').off('click', deselect); + }; + } + $tagsList.delegate('.card', 'click', function() { + reload_links(); + }); + $('#selectAllTags').on('click', function() { + $('.filter-item:not(".mark") input[type="checkbox"]').attr('checked', true); + $('.filter-item:not(".mark") .card').addClass('active'); + reload_links(); + }); + $('#deleteTags').on('click', function() { + $('#delete_tags .tags-groups').empty(); $('#delete_tags a.delete-tags').attr("href", $(this).attr("rel")); if($defaultTags) { - $defaultTags.each(function(i) { - $defaultTags.eq(i).parents('.filter-item').clone().appendTo('#delete_tags .tags-groups'); - $('#delete_tags .tags-groups .filter-item').addClass('def'); - }); - } - $moduleTags.each(function(i) { - $moduleTags.eq(i).parents('.filter-item').clone().appendTo('#delete_tags .tags-groups'); - }); + $defaultTags.each(function(i) { + $defaultTags.eq(i).parents('.filter-item').clone().appendTo('#delete_tags .tags-groups'); + $('#delete_tags .tags-groups .filter-item').addClass('def'); + }); + } + $moduleTags.each(function(i) { + $moduleTags.eq(i).parents('.filter-item').clone().appendTo('#delete_tags .tags-groups'); + }); $('#delete_tags').modal('show', cleanTagInputs()); function cleanTagInputs(){ - var $tagsDelete = $('#delete_tags'), - $filterItem = $tagsDelete.find('.filter-item'); - $filterItem.find('.card, .amount').remove(); - $filterItem.find('a').removeAttr('class'); - $filterItem.find('a').removeAttr('href'); + var $tagsDelete = $('#delete_tags'), + $filterItem = $tagsDelete.find('.filter-item'); + $filterItem.find('.card, .amount').remove(); + $filterItem.find('a').removeAttr('class'); + $filterItem.find('a').removeAttr('href'); } - }); - $('#mergerTags').on('click', function() { - if($moduleTags || $defaultTags) { - if($moduleTags.length > 1 || $moduleTags.length+$defaultTags.length > 1) { - $('#tags-merger form').attr("action", $(this).attr("rel")); - mergerTags() - } - } - }); - $('#removeDefaults').on('click', function() { - $('#remove_defaults .tags-groups').empty(); + }); + $('#mergerTags').on('click', function() { + if($moduleTags || $defaultTags) { + if($moduleTags.length > 1 || $moduleTags.length+$defaultTags.length > 1) { + $('#tags-merger form').attr("action", $(this).attr("rel")); + mergerTags() + } + } + }); + $('#removeDefaults').on('click', function() { + $('#remove_defaults .tags-groups').empty(); $('#remove_defaults a.remove-defaults').attr("href", $(this).attr("rel")); - $defaultTags.each(function(i) { - $defaultTags.eq(i).parents('.filter-item').clone().appendTo('#remove_defaults .tags-groups'); - }); + $defaultTags.each(function(i) { + $defaultTags.eq(i).parents('.filter-item').clone().appendTo('#remove_defaults .tags-groups'); + }); $('#remove_defaults').modal('show', cleanTagInputs()); function cleanTagInputs(){ - var $removeDefaults = $('#remove_defaults'), - $filterItem = $removeDefaults.find('.filter-item'); - $filterItem.find('.card, .amount').remove(); - $filterItem.find('a').removeAttr('class'); - $filterItem.find('a').removeAttr('href'); + var $removeDefaults = $('#remove_defaults'), + $filterItem = $removeDefaults.find('.filter-item'); + $filterItem.find('.card, .amount').remove(); + $filterItem.find('a').removeAttr('class'); + $filterItem.find('a').removeAttr('href'); } - }); + }); - function deselect() { - $('.tags input[type="checkbox"]').attr('checked', false); - $('.card').removeClass('active'); - $('.bottomnav .toggable').not('.open-slide').addClass('hide'); - $('#deleteTags').attr('rel', "<%= Rails.application.routes.url_helpers.delete_tags_admin_tags_path %>"); - $('#addDefault').attr('href', "<%= Rails.application.routes.url_helpers.add_to_default_admin_tags_path %>"); - } + function deselect() { + $('.tags input[type="checkbox"]').attr('checked', false); + $('.card').removeClass('active'); + $('.bottomnav .toggable').not('.open-slide').addClass('hide'); + $('#deleteTags').attr('rel', "<%= Rails.application.routes.url_helpers.delete_tags_admin_tags_path %>"); + $('#addDefault').attr('href', "<%= Rails.application.routes.url_helpers.add_to_default_admin_tags_path %>"); + } } function addTagsTab() { - $('a[data-toggle="tab"]').click(function (e) { - e.preventDefault(); - $(this).tab('show'); - }) + $('a[data-toggle="tab"]').click(function (e) { + e.preventDefault(); + $(this).tab('show'); + }) } function mergerTags() { - var $moduleTags = $('.module-tags input[type="checkbox"]:checked'), - $defaultTags = $('.default-tags input[type="checkbox"]:checked'); + var $moduleTags = $('.module-tags input[type="checkbox"]:checked'), + $defaultTags = $('.default-tags input[type="checkbox"]:checked'); - $defaultTags.each(function(i) { - $defaultTags.eq(i).parents('.filter-item').clone().appendTo('#tags-merger .tags-groups'); - $('#tags-merger .tags-groups .filter-item').addClass('def'); - }); - $moduleTags.each(function(i) { - $moduleTags.eq(i).parents('.filter-item').clone().appendTo('#tags-merger .tags-groups'); - }); + $defaultTags.each(function(i) { + $defaultTags.eq(i).parents('.filter-item').clone().appendTo('#tags-merger .tags-groups'); + $('#tags-merger .tags-groups .filter-item').addClass('def'); + }); + $moduleTags.each(function(i) { + $moduleTags.eq(i).parents('.filter-item').clone().appendTo('#tags-merger .tags-groups'); + }); - $('#tags-merger').modal('show', changeTagName()); - function changeTagName() { - var $tagsMerger = $('#tags-merger'), - $newTagsName = $('.new-tags-name'), - $filterItem = $tagsMerger.find('.filter-item'); - $filterItem.find('.card, .amount').remove(); - $filterItem.find('a').removeAttr('class'); - $filterItem.find('a').removeAttr('href'); - $filterItem.on('click', function() { - $(this).find('.tag').each(function(i) { - $newTagsName.eq(i).val($(this).text()) - }); - }); - } + $('#tags-merger').modal('show', changeTagName()); + function changeTagName() { + var $tagsMerger = $('#tags-merger'), + $newTagsName = $('.new-tags-name'), + $filterItem = $tagsMerger.find('.filter-item'); + $filterItem.find('.card, .amount').remove(); + $filterItem.find('a').removeAttr('class'); + $filterItem.find('a').removeAttr('href'); + $filterItem.on('click', function() { + $(this).find('.tag').each(function(i) { + $newTagsName.eq(i).val($(this).text()) + }); + }); + } } $(function() { - if($('.default-tags').length) { - checkedLength(); - $('#tags-merger').on('hidden', function () { - $(this).find('.filter-item').remove(); - }); - } else { - checkedLength(); - }; + if($('.default-tags').length) { + checkedLength(); + $('#tags-merger').on('hidden', function () { + $(this).find('.filter-item').remove(); + }); + } else { + checkedLength(); + }; }); diff --git a/app/assets/stylesheets/admin/categories.css.scss b/app/assets/stylesheets/admin/categories.css.scss new file mode 100644 index 0000000..42f3561 --- /dev/null +++ b/app/assets/stylesheets/admin/categories.css.scss @@ -0,0 +1,6 @@ +// Place all the styles related to the admin/categories controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ +/* + *= require lib/tags-groups +*/ \ No newline at end of file diff --git a/app/assets/stylesheets/lib/tags-groups.css b/app/assets/stylesheets/lib/tags-groups.css index dff88fc..a1d47f1 100644 --- a/app/assets/stylesheets/lib/tags-groups.css +++ b/app/assets/stylesheets/lib/tags-groups.css @@ -55,6 +55,16 @@ .tags-groups li.active .amount { color: #8cb8be; } +.tags-groups li.add { + background-color: #cccccc; + cursor: pointer; +} +.tags-groups li.add a{ + color: #333333; +} +.tags-groups li.disabled { + background-color: #707070; +} .tags-groups li a { text-decoration: none; color: #ededed; diff --git a/app/controllers/admin/categories_controller.rb b/app/controllers/admin/categories_controller.rb new file mode 100644 index 0000000..9480e21 --- /dev/null +++ b/app/controllers/admin/categories_controller.rb @@ -0,0 +1,46 @@ +class Admin::CategoriesController < OrbitAdminController + before_action :setup_vars + + def index + unless @module_app.nil? + @categories = Kaminari.paginate_array(@module_app.categories).page(params[:page]).per(10) + end + end + + def create + category = @module_app.categories.build(category_params) + category.save + redirect_to request.referer, :status => 303 + end + + def create_in_form + @category = @module_app.categories.build(category_params) + @category.save + render :json => {:id=>@category.id.to_s, :title=>@category.title}.to_json ,:layout => false + end + + def update + @category = Category.find(params[:id]) + @category.update_attributes(category_params) + redirect_to request.referer, :status => 303 + end + + def toggle + category = Category.find(params[:id]) + category.disable = category.disable ? false : true + category.save! + redirect_to request.referer, :status => 303 + end + + private + + def setup_vars + @module_apps = params[:module_app_id].blank? ? ModuleApp.where(categorizable: true) : [ModuleApp.find(params[:module_app_id])] + @module_app = params[:module_app_id].blank? ? ModuleApp.find_by(:key=>'category') : ModuleApp.find(params[:module_app_id]) + end + + def category_params + params.require(:category).permit! + end + +end diff --git a/app/controllers/admin/tags_controller.rb b/app/controllers/admin/tags_controller.rb index 513c250..e991bd2 100644 --- a/app/controllers/admin/tags_controller.rb +++ b/app/controllers/admin/tags_controller.rb @@ -1,39 +1,31 @@ -class Admin::TagsController < ApplicationController +class Admin::TagsController < OrbitAdminController before_filter :setup_vars - layout "back_end" - def index @tag = Tag.new - @tags = Tag.where(:is_default=>true) - @module_apps = ModuleApp.where(taggable: true) - end - - def new - @tag = Tag.new - render layout: false - end - - def edit - @tag = Tag.find(params[:id]) - render layout: false + @tags = @is_module_tag ? @module_app.tags.where(:is_default=>true) : Tag.where(:is_default=>true) + @default_tags = Tag.where(:is_default=>true).not_in(:id => @module_app.tag_ids) end def create - @tag = Tag.new(tag_params.merge(is_default: true)) - if @tag.save - redirect_to admin_tags_url - else - @tag = Tag.new(tag_params) - flash.now[:error] = t('create.error.tag') - render :action => "new" - end + @tag = Tag.new(tag_params.merge(is_default: !@is_module_tag)) + if @tag.save + @module_app.tags << @tag if @is_module_tag + end + redirect_to request.referer, :status => 303 + end + + def create_in_form + @tag = Tag.new(tag_params.merge(is_default: !@is_module_tag)) + @tag.save + @module_app.tags << @tag + render :json => {:id=>@tag.id.to_s, :name=>@tag.name}.to_json ,:layout => false end def update @tag = Tag.find(params[:id]) if @tag.update_attributes(tag_params) - redirect_to action: :index, :status => 303 + redirect_to request.referer, :status => 303 else flash.now[:error] = t('update.error.tag') render :action => "edit" @@ -45,7 +37,15 @@ class Admin::TagsController < ApplicationController if tags tags.each(&:destroy) end - redirect_to admin_tags_url + redirect_to request.referer, :status => 303 + end + + def add_from_default + tags = Tag.find(params[:ids].split(',')) rescue nil + if tags + @module_app.tags << tags + end + redirect_to request.referer, :status => 303 end def add_to_default @@ -55,7 +55,17 @@ class Admin::TagsController < ApplicationController tag.update_attribute(:is_default, true) end end - redirect_to admin_tags_url + redirect_to request.referer, :status => 303 + end + + def remove_default + tags = Tag.find(params[:ids].split(',')) rescue nil + if tags + tags.each do |tag| + tag.update_attribute(:is_default, false) + end + end + redirect_to request.referer, :status => 303 end def merge @@ -88,17 +98,19 @@ class Admin::TagsController < ApplicationController new_tag.save - redirect_to admin_tags_url + redirect_to request.referer, :status => 303 end def tag_params - params.require(:tag).permit! + params.require(:tag).permit! unless params[:tag].blank? end protected def setup_vars - @module_app = ModuleApp.where(:key=>"tag").first + @is_module_tag = !params[:module_app_id].blank? + @module_apps = @is_module_tag ? [ModuleApp.find(params[:module_app_id])] : ModuleApp.where(categorizable: true) + @module_app = @is_module_tag ? ModuleApp.find(params[:module_app_id]) : ModuleApp.find_by(:key=>'tag') end end \ No newline at end of file diff --git a/app/helpers/admin/categories_helper.rb b/app/helpers/admin/categories_helper.rb new file mode 100644 index 0000000..f586acd --- /dev/null +++ b/app/helpers/admin/categories_helper.rb @@ -0,0 +1,2 @@ +module Admin::CategoriesHelper +end diff --git a/app/helpers/orbit_backend_helper.rb b/app/helpers/orbit_backend_helper.rb index 3691b0d..75857e8 100644 --- a/app/helpers/orbit_backend_helper.rb +++ b/app/helpers/orbit_backend_helper.rb @@ -78,6 +78,14 @@ module OrbitBackendHelper def is_filter_active?(field, value) params[:filters][field].include?(value.to_s) ? "active" : "" rescue "" end + + def select_category(f, module_app) + render :partial => '/admin/categories/select_form', :locals => {:f=> f, :module_app=>module_app } + end + + def select_tag(f, module_app, object) + render :partial => '/admin/tags/tag_form', :locals => {:f=> f, :module_app=>module_app, :object=>object } + end end diff --git a/app/helpers/orbit_helper.rb b/app/helpers/orbit_helper.rb index 1e81311..7733818 100644 --- a/app/helpers/orbit_helper.rb +++ b/app/helpers/orbit_helper.rb @@ -82,11 +82,19 @@ module OrbitHelper res << "