Showing
9 changed files
with
57 additions
and
23 deletions
| @@ -1351,11 +1351,16 @@ $('body').on('click', '.delete-image-from-list', function(){ | @@ -1351,11 +1351,16 @@ $('body').on('click', '.delete-image-from-list', function(){ | ||
| 1351 | 1351 | ||
| 1352 | $('body').on('click', '.delete-tag-from-list', function(){ | 1352 | $('body').on('click', '.delete-tag-from-list', function(){ |
| 1353 | var $this = $(this), | 1353 | var $this = $(this), |
| 1354 | + $label = $this.closest('label'), | ||
| 1354 | url = $this.attr('href'), | 1355 | url = $this.attr('href'), |
| 1355 | title = "Are you sure? If files are assigned to this tag, the assignment is removed."; | 1356 | title = "Are you sure? If files are assigned to this tag, the assignment is removed."; |
| 1356 | 1357 | ||
| 1357 | bootbox.confirm(title, function(result) { | 1358 | bootbox.confirm(title, function(result) { |
| 1358 | if(result){ | 1359 | if(result){ |
| 1360 | + if($label.hasClass('active')){ | ||
| 1361 | + $label.trigger('click'); | ||
| 1362 | + } | ||
| 1363 | + | ||
| 1359 | jQuery.ajax({ | 1364 | jQuery.ajax({ |
| 1360 | type: 'GET', | 1365 | type: 'GET', |
| 1361 | url: url, | 1366 | url: url, |
| @@ -2163,6 +2168,9 @@ jQuery(document).ready(function(){ | @@ -2163,6 +2168,9 @@ jQuery(document).ready(function(){ | ||
| 2163 | $('.modal').modal('hide'); | 2168 | $('.modal').modal('hide'); |
| 2164 | $('#gallery_image_' + data.id).find('.card-img-top').attr('src', data.link); | 2169 | $('#gallery_image_' + data.id).find('.card-img-top').attr('src', data.link); |
| 2165 | $('#gallery_image_' + data.id).find('.card-title').text(data.title); | 2170 | $('#gallery_image_' + data.id).find('.card-title').text(data.title); |
| 2171 | + saveCurrentTags(); | ||
| 2172 | + $('.tags-list-block').html(data.tag_list); | ||
| 2173 | + setCurrentTags(); | ||
| 2166 | }else{ | 2174 | }else{ |
| 2167 | $this.find('.error-message').html(data.message); | 2175 | $this.find('.error-message').html(data.message); |
| 2168 | } | 2176 | } |
| 1 | +var currentChooseTags = []; | ||
| 2 | + | ||
| 3 | +var saveCurrentTags = function(){ | ||
| 4 | + $('.tags-list-block label.active').each(function(){ | ||
| 5 | + currentChooseTags.push($(this).data('value')); | ||
| 6 | + }); | ||
| 7 | +} | ||
| 8 | + | ||
| 9 | +var setCurrentTags = function(){ | ||
| 10 | + $('.tags-list-block label').each(function(){ | ||
| 11 | + if(currentChooseTags.indexOf($(this).data('value')) != -1){ | ||
| 12 | + $(this).addClass('active'); | ||
| 13 | + } | ||
| 14 | + }); | ||
| 15 | +} | ||
| 16 | + | ||
| 1 | jQuery(document).ready(function(){ | 17 | jQuery(document).ready(function(){ |
| 2 | - var loadImage = function($wrapper){ | 18 | + var loadImage = function($wrapper, update_tag){ |
| 3 | var url = $wrapper.data('url'), | 19 | var url = $wrapper.data('url'), |
| 4 | $loader = $wrapper.find('.loader-demo'), | 20 | $loader = $wrapper.find('.loader-demo'), |
| 5 | $images = $wrapper.find('.exist-image-list'); | 21 | $images = $wrapper.find('.exist-image-list'); |
| @@ -16,11 +32,16 @@ jQuery(document).ready(function(){ | @@ -16,11 +32,16 @@ jQuery(document).ready(function(){ | ||
| 16 | type: 'POST', | 32 | type: 'POST', |
| 17 | url: url, | 33 | url: url, |
| 18 | data: ({tags: mas}), | 34 | data: ({tags: mas}), |
| 19 | - dataType: 'html', | 35 | + dataType: 'json', |
| 20 | success: function(data){ | 36 | success: function(data){ |
| 21 | - $images.html(data); | 37 | + $images.html(data.images); |
| 22 | $loader.addClass('not-visible'); | 38 | $loader.addClass('not-visible'); |
| 23 | - $images.removeClass('not-visible'); | 39 | + $images.removeClass('not-visible'); |
| 40 | + if(update_tag){ | ||
| 41 | + saveCurrentTags(); | ||
| 42 | + $('.tags-list-block').html(data.tag_list); | ||
| 43 | + setCurrentTags(); | ||
| 44 | + } | ||
| 24 | } | 45 | } |
| 25 | }); | 46 | }); |
| 26 | }; | 47 | }; |
| @@ -28,9 +49,9 @@ jQuery(document).ready(function(){ | @@ -28,9 +49,9 @@ jQuery(document).ready(function(){ | ||
| 28 | 49 | ||
| 29 | if($('.image-list').length > 0){ | 50 | if($('.image-list').length > 0){ |
| 30 | var $wrapper = $('.image-list'); | 51 | var $wrapper = $('.image-list'); |
| 31 | - loadImage($wrapper); | ||
| 32 | - $wrapper.find('.filter label').click(function(e){ | ||
| 33 | - if(e.target.tagName != 'A'){ | 52 | + loadImage($wrapper, false); |
| 53 | + $wrapper.on('click', '.filter label', function(e){ | ||
| 54 | + if(e.target.tagName != 'A' && e.target.tagName != 'I'){ | ||
| 34 | var $this = $(this); | 55 | var $this = $(this); |
| 35 | if($this.hasClass('active')){ | 56 | if($this.hasClass('active')){ |
| 36 | $this.removeClass('active'); | 57 | $this.removeClass('active'); |
| @@ -43,14 +64,14 @@ jQuery(document).ready(function(){ | @@ -43,14 +64,14 @@ jQuery(document).ready(function(){ | ||
| 43 | if($this.data('value') != 'all' && $this.hasClass('active')){ | 64 | if($this.data('value') != 'all' && $this.hasClass('active')){ |
| 44 | $wrapper.find(".filter label.active[data-value=all]").removeClass('active'); | 65 | $wrapper.find(".filter label.active[data-value=all]").removeClass('active'); |
| 45 | }; | 66 | }; |
| 46 | - loadImage($wrapper); | 67 | + loadImage($wrapper, false); |
| 47 | } | 68 | } |
| 48 | }); | 69 | }); |
| 49 | } | 70 | } |
| 50 | 71 | ||
| 51 | $(window).bind('images:update', function(){ | 72 | $(window).bind('images:update', function(){ |
| 52 | if($('.image-list').length > 0){ | 73 | if($('.image-list').length > 0){ |
| 53 | - loadImage($('.image-list')); | 74 | + loadImage($('.image-list'), true); |
| 54 | }; | 75 | }; |
| 55 | }); | 76 | }); |
| 56 | 77 |
| @@ -48,10 +48,12 @@ | @@ -48,10 +48,12 @@ | ||
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | .filter .btn-group-toggle > .btn{margin-bottom:5px;position:relative;} | 50 | .filter .btn-group-toggle > .btn{margin-bottom:5px;position:relative;} |
| 51 | -.filter .btn-group-toggle > .btn a, .filter .btn-group-toggle > .btn a:hover{text-decoration:none;position:absolute;top:-14px;right:2px;font-size:14px;line-height:14px;} | 51 | +.filter .btn-group-toggle > .btn a, .filter .btn-group-toggle > .btn a:hover{text-decoration:none;position:absolute;top:-16px;right:2px;font-size:14px;line-height:14px;} |
| 52 | .filter .btn-group-toggle > .btn a{display:none;} | 52 | .filter .btn-group-toggle > .btn a{display:none;} |
| 53 | .filter .btn-group-toggle > .btn:hover a{display:inline;} | 53 | .filter .btn-group-toggle > .btn:hover a{display:inline;} |
| 54 | .checkbox-list{ | 54 | .checkbox-list{ |
| 55 | input{margin-right:3px;} | 55 | input{margin-right:3px;} |
| 56 | label{margin-right:10px;} | 56 | label{margin-right:10px;} |
| 57 | -} | ||
| 57 | +} | ||
| 58 | + | ||
| 59 | +.block{display:block !important;} |
| @@ -13,7 +13,7 @@ module Kanjai | @@ -13,7 +13,7 @@ module Kanjai | ||
| 13 | collection = collection.tagged_with(params[:tags], :any => true) | 13 | collection = collection.tagged_with(params[:tags], :any => true) |
| 14 | end | 14 | end |
| 15 | 15 | ||
| 16 | - render partial: 'kanjai/admin/images/gallery_exist_images', locals: {collection: collection} | 16 | + render json: {images: render_to_string(partial: 'kanjai/admin/images/gallery_exist_images', locals: {collection: collection}), tag_list: render_to_string(partial: 'kanjai/admin/images/tags')} |
| 17 | end | 17 | end |
| 18 | 18 | ||
| 19 | def edit | 19 | def edit |
| @@ -34,7 +34,7 @@ module Kanjai | @@ -34,7 +34,7 @@ module Kanjai | ||
| 34 | @file.resize! | 34 | @file.resize! |
| 35 | 35 | ||
| 36 | end | 36 | end |
| 37 | - render json: {status: 'ok', id: @file.id, link: @file.preview_link, title: @file.title} | 37 | + render json: {status: 'ok', id: @file.id, link: @file.preview_link, title: @file.title, tag_list: render_to_string(partial: 'kanjai/admin/images/tags')} |
| 38 | else | 38 | else |
| 39 | render json: {status: 'error', message: @file.errors.full_message} | 39 | render json: {status: 'error', message: @file.errors.full_message} |
| 40 | end | 40 | end |
app/views/kanjai/admin/images/_tags.html.erb
0 → 100644
| 1 | +<label data-value='all' class="btn btn-primary active">All</label> | ||
| 2 | +<% ActsAsTaggableOn::Tag.most_used.each do |tag| %> | ||
| 3 | + <label data-value='<%= tag.name %>' class="btn btn-primary tag-item-<%= tag.id %>"> | ||
| 4 | + <%= tag.name %> | ||
| 5 | + <a class="delete-tag-from-list" href="<%= url_for(controller: 'tags', action: 'delete', id: tag.id) %>"><i class="fa fa-trash"></i></a> | ||
| 6 | + </label> | ||
| 7 | +<% end %> |
| @@ -32,7 +32,7 @@ | @@ -32,7 +32,7 @@ | ||
| 32 | <label class="col-md-2 col-form-label">Tags</label> | 32 | <label class="col-md-2 col-form-label">Tags</label> |
| 33 | <div class="col-md-10"> | 33 | <div class="col-md-10"> |
| 34 | <%= f.text_field :tag_list, class: 'form-control', data: {role: 'tagsinput'}, value: f.object.tag_list.join(', ') %> | 34 | <%= f.text_field :tag_list, class: 'form-control', data: {role: 'tagsinput'}, value: f.object.tag_list.join(', ') %> |
| 35 | - <div class="form-text"><%= t('tag_input_help_text') %></div> | 35 | + <div class="invalid-feedback block"><%= t('tag_input_help_text') %></div> |
| 36 | </div> | 36 | </div> |
| 37 | </div> | 37 | </div> |
| 38 | </fieldset> | 38 | </fieldset> |
| @@ -26,14 +26,8 @@ | @@ -26,14 +26,8 @@ | ||
| 26 | 26 | ||
| 27 | <div class="mt-20 image-list" data-url='<%= list_admin_images_url %>'> | 27 | <div class="mt-20 image-list" data-url='<%= list_admin_images_url %>'> |
| 28 | <div class="filter"> | 28 | <div class="filter"> |
| 29 | - <div class="btn-group-toggle"> | ||
| 30 | - <label data-value='all' class="btn btn-primary active">All</label> | ||
| 31 | - <% ActsAsTaggableOn::Tag.most_used.each do |tag| %> | ||
| 32 | - <label data-value='<%= tag.name %>' class="btn btn-primary tag-item-<%= tag.id %>"> | ||
| 33 | - <%= tag.name %> | ||
| 34 | - <a class="delete-tag-from-list" href="<%= url_for(controller: 'tags', action: 'delete', id: tag.id) %>"><i class="fa fa-times"></i></a> | ||
| 35 | - </label> | ||
| 36 | - <% end %> | 29 | + <div class="btn-group-toggle tags-list-block"> |
| 30 | + <%= render partial: 'kanjai/admin/images/tags' %> | ||
| 37 | </div> | 31 | </div> |
| 38 | </div> | 32 | </div> |
| 39 | <div class="loader-demo"> | 33 | <div class="loader-demo"> |