diff --git a/Gemfile b/Gemfile index 19c41e5..6743862 100644 --- a/Gemfile +++ b/Gemfile @@ -31,6 +31,7 @@ gem "mini_magick", github: 'minimagick/minimagick' gem 'carrierwave' gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid' gem 'mongoid-grid_fs', github: 'ahoward/mongoid-grid_fs' +gem "impressionist" #built in modules eval(File.read(File.dirname(__FILE__) + '/built_in_extensions.rb')) diff --git a/app/assets/javascripts/admin/tags.js b/app/assets/javascripts/admin/tags.js new file mode 100644 index 0000000..3283b23 --- /dev/null +++ b/app/assets/javascripts/admin/tags.js @@ -0,0 +1,21 @@ +//= require lib/tags + +$(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/tags/'); + pageslide.find('form').attr('method', 'post'); + } + else { + setForm(item.data('form')); + pageslide.find('form').attr('action', '/admin/tags/' + item.data('id')); + pageslide.find('form').attr('method', 'put'); + } + }); +}) \ No newline at end of file diff --git a/app/assets/javascripts/back_end.js b/app/assets/javascripts/back_end.js index 9bdcf86..0b2af80 100644 --- a/app/assets/javascripts/back_end.js +++ b/app/assets/javascripts/back_end.js @@ -1 +1,6 @@ -//= require basic \ No newline at end of file +//= require basic +//= require lib/footable-0.1.js +//= require lib/all-list +//= require lib/jquery.fastLiveFilter.js +//= require lib/checkbox.card.js +//= require lib/jquery.form.js \ No newline at end of file diff --git a/app/assets/javascripts/lib/tags.js.erb b/app/assets/javascripts/lib/tags.js.erb index 92593a5..b24d0d2 100755 --- a/app/assets/javascripts/lib/tags.js.erb +++ b/app/assets/javascripts/lib/tags.js.erb @@ -71,14 +71,14 @@ function checkedLength() { $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_module_tags_path %>" + "?module_app_id=" + $('#module_app_id').val() + "&ids=" + ids); + $('#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_module_tags_path %>" + "?module_app_id=" + $('#module_app_id').val() + "&ids=" + ids); + $('#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'); diff --git a/app/controllers/admin/tags_controller.rb b/app/controllers/admin/tags_controller.rb new file mode 100644 index 0000000..513c250 --- /dev/null +++ b/app/controllers/admin/tags_controller.rb @@ -0,0 +1,104 @@ +class Admin::TagsController < ApplicationController + 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 + 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 + end + + def update + @tag = Tag.find(params[:id]) + if @tag.update_attributes(tag_params) + redirect_to action: :index, :status => 303 + else + flash.now[:error] = t('update.error.tag') + render :action => "edit" + end + end + + def delete_tags + tags = Tag.find(params[:ids].split(',')) rescue nil + if tags + tags.each(&:destroy) + end + redirect_to admin_tags_url + end + + def add_to_default + tags = Tag.find(params[:ids].split(',')) rescue nil + if tags + tags.each do |tag| + tag.update_attribute(:is_default, true) + end + end + redirect_to admin_tags_url + end + + def merge + tags = Tag.find(params[:ids]) + new_tag = Tag.new tag_params + + mods = [] + + tags.each do |tag| + new_tag.is_default = true if tag.is_default + + tag.taggings.each do |tagging| + taggable = tagging.taggable + taggable.tags = taggable.tags - [tag] + [new_tag] + taggable.save + end + + unless tag.module_app.nil? + tag.module_app.each do |mod| + mods << mod + mod.tags = mod.tags - [tag] + [new_tag] + mod.save + end + end + + tag.destroy + end + + new_tag.is_default = true if mods.flatten.uniq.size > 1 + + new_tag.save + + redirect_to admin_tags_url + end + + def tag_params + params.require(:tag).permit! + end + + protected + + def setup_vars + @module_app = ModuleApp.where(:key=>"tag").first + end + +end \ No newline at end of file diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index ad71e4e..c6f2b26 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -22,13 +22,13 @@ class ApplicationController < ActionController::Base end def current_site - @current_site = Site.find_by(site_active: true) + @current_site = Site.first end private def current_user - @current_user ||= User.find(session[:user_id]) if session[:user_id] + @current_user ||= User.find(session[:user_id]) if session[:user_id] rescue nil end protected @@ -36,8 +36,10 @@ class ApplicationController < ActionController::Base def authenticate_user if session[:user_id] # set current user object to @current_user object variable - @current_user = User.find(session[:user_id]) - return true + @current_user = User.find(session[:user_id]) rescue nil + + redirect_to new_session_path if @current_user.nil? + return true else redirect_to new_session_path return false diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 2bf91f2..c3ffda6 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -5,7 +5,7 @@ class SessionsController < ApplicationController end def create - user = User.find_by(user_name: params[:user_name]) + user = User.find_by(user_name: params[:user_name]) rescue nil if user && user.authenticate(params[:password]) session[:user_id] = user.id redirect_to admin_dashboards_path, :notice => "Logged in!" diff --git a/app/helpers/admin/tags_helper.rb b/app/helpers/admin/tags_helper.rb new file mode 100644 index 0000000..5481c99 --- /dev/null +++ b/app/helpers/admin/tags_helper.rb @@ -0,0 +1,3 @@ +module Admin::TagsHelper + +end \ No newline at end of file diff --git a/app/helpers/orbit_helper.rb b/app/helpers/orbit_helper.rb index 68fe445..bb0a33d 100644 --- a/app/helpers/orbit_helper.rb +++ b/app/helpers/orbit_helper.rb @@ -1,47 +1,85 @@ module OrbitHelper - def self.set_params(params) - @params = params - end + def self.set_params(params) + @params = params + end - def self.get_params - @params - end + def self.get_params + @params + end - def self.url_to_show(slug) - if @params[:url] - "/#{@site_locale}#{@params[:url]}/#{slug}" - else - page = Page.where(:module => self.current_widget_module).first - "/#{@site_locale}#{page.url}/#{slug}" - end - end + def self.url_to_show(slug) + if @params[:url] + "/#{@site_locale}#{@params[:url]}/#{slug}" + else + page = Page.where(:module => self.current_widget_module).first + "/#{@site_locale}#{page.url}/#{slug}" + end + end - def page_url(url) - "#{request.host_with_port}/#{locale}#{url}" - end + def page_url(url) + "#{request.host_with_port}/#{locale}#{url}" + end - def self.set_site_locale(locale) - @site_locale = locale - end + def self.set_site_locale(locale) + @site_locale = locale + end - def self.get_site_locale - @site_locale - end + def self.get_site_locale + @site_locale + end - def self.current_widget_module - @controller_name - end + def self.current_widget_module + @controller_name + end - def self.set_current_widget_module(name) - @controller_name = name - end + def self.set_current_widget_module(name) + @controller_name = name + end + + def get_item_module_infos(page) + if page.parent_page_id.nil? + ["Home","icons-house"] + else + module_app = ModuleApp.where(:key => page.module).first + [module_app.title, module_app.get_registration.icon_class] + end + end + + # =============================================================== + # Breadcrumbs + # =============================================================== + def back_end_breadcrumb + res = '' + divider = "/" + res << "
+ +
+ <%= hidden_field_tag "ids[]", tag.id, class: "tag_id" %> + <% end %> + + <% if defined?(in_module) && tag.is_default %> + + <%= tag.get_module_tagging_count @mod.taggable_model %> + <%= tag.show_names_slash %> + + <% else %> + <%= link_to '#', class: "open-slide", data: {title: t('editing.tag'), id: tag.id.to_s, form: tag.name_translations} do %> + <%= tag.taggings.count %> + <%= tag.show_names_slash %> + <% end %> + <% end %> +