diff options
| m--------- | drassm_app | 0 | ||||
| -rw-r--r-- | ishtar_common/static/js/ishtar.js | 21 | ||||
| -rw-r--r-- | ishtar_common/templates/blocks/DataTables.html | 2 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/forms/bookmark_delete.html | 7 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/forms/qa_base.html | 4 | ||||
| -rw-r--r-- | ishtar_common/urls.py | 2 | ||||
| -rw-r--r-- | ishtar_common/views.py | 40 | ||||
| -rw-r--r-- | scss/custom.scss | 5 | 
8 files changed, 72 insertions, 9 deletions
| diff --git a/drassm_app b/drassm_app new file mode 160000 +Subproject fd2371a1603ef80f141d8b9a75fa44221d8509b diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index 9eae1b04d..326a4cb85 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -330,6 +330,7 @@ $(document).on("click", '#to_top_arrow', function(){  });  var bookmark_url = ""; +var bookmark_delete_url = "/bookmark/delete/";  var load_bookmark_list = function(){      if (!bookmark_url) return; @@ -337,9 +338,13 @@ var load_bookmark_list = function(){          var bookmark_list = "";          for (idx in data['bookmarks']){              var bookmark = data['bookmarks'][idx]; -            bookmark_list += '<span class="dropdown-item input-link" ' + -                'data-query="' + bookmark['query'].replace(/"/g, "''") + -                '" href="#">' + bookmark['label'] + '</span>'; +            bookmark_list += '<span class="dropdown-item d-flex">' + +                '<a data-query="' + bookmark['query'].replace(/"/g, "''") + +                '" href="#" class="flex-grow-1 input-link">' + bookmark['label'] + +                '</a>' + +                '<a class="close" href="#" data-id="' + bookmark['id'] + '">' + +                '<i class="fa fa-times text-danger" aria-hidden="true"></i>' + +                '</a></span>';          }          $('#bookmark-list').html(bookmark_list);          if (!bookmark_list){ @@ -347,11 +352,17 @@ var load_bookmark_list = function(){          } else {              $('#load-bookmark').removeClass('disabled');          } -        $("#bookmark-list span").click(function(){ +        $("#bookmark-list span a.input-link").click(function(){              $("#id_search_vector").val(                  $(this).attr('data-query').replace(/''/g, '"'));              enable_save();              $(".search_button").click(); +            return false; +        }); +        $("#bookmark-list span a.close").click(function(){ +            var id = $(this).attr('data-id'); +            dt_qa_open(bookmark_delete_url + id + '/'); +            return false;          });      }, 'json');  } @@ -811,6 +822,7 @@ var dt_qa_open = function (url){              close_wait();          }      }); +    return false;  };  var ajax_post = function(url, data, target, callback){ @@ -835,6 +847,7 @@ var ajax_post = function(url, data, target, callback){  };  var qa_action_register = function(url) { +      $('#qa-action').on('submit', function(event){          event.preventDefault();          $('#modal-dynamic-form').modal("hide"); diff --git a/ishtar_common/templates/blocks/DataTables.html b/ishtar_common/templates/blocks/DataTables.html index 7fad1f121..309bb0b09 100644 --- a/ishtar_common/templates/blocks/DataTables.html +++ b/ishtar_common/templates/blocks/DataTables.html @@ -140,8 +140,6 @@ datatable_submit_search = function(){      return false;  }; - -  jQuery(document).ready(function(){    jQuery("#search_{{name}}").click(datatable_submit_search); diff --git a/ishtar_common/templates/ishtar/forms/bookmark_delete.html b/ishtar_common/templates/ishtar/forms/bookmark_delete.html new file mode 100644 index 000000000..23d7cc172 --- /dev/null +++ b/ishtar_common/templates/ishtar/forms/bookmark_delete.html @@ -0,0 +1,7 @@ +{% extends "ishtar/forms/qa_base.html" %} +{% load i18n inline_formset table_form %} + +{% block main_form %} +    <p>{% trans "Are you sure you want to delete: "%} {{item}}</p> +{% endblock %} + diff --git a/ishtar_common/templates/ishtar/forms/qa_base.html b/ishtar_common/templates/ishtar/forms/qa_base.html index ee4c242b7..70fe70e65 100644 --- a/ishtar_common/templates/ishtar/forms/qa_base.html +++ b/ishtar_common/templates/ishtar/forms/qa_base.html @@ -51,8 +51,8 @@                  {% block footer %}                  <button type="submit" id="submit_form" name='validate'                          value="validate" class="btn btn-success"> -                    {% if confirm %} -                    {% trans "Confirm" %} +                    {% if action_name %} +                    {{ action_name }}                      {% else %}                      {% trans "Modify" %}                      {% endif %} diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index ee1b3805e..91b527959 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -131,6 +131,8 @@ urlpatterns = [          views.BookmarkList.as_view(), name='bookmark-list'),      url(r'^bookmark/(?P<pk>[0-9]+)/$',          views.get_bookmark, name='bookmark'), +    url(r'^bookmark/delete/(?P<pk>[0-9]+)/$', +        views.SearchQueryDelete.as_view(), name='bookmark-delete'),      url(r'^alerts/$', views.AlertList.as_view(), name='alert-list'),      url(r'^success(?:/(?P<context>[a-z-]+))?/$',          TemplateView.as_view(template_name="ishtar/forms/success.html"), diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 9946a9dee..8214f22d7 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1757,10 +1757,47 @@ class BookmarkList(SearchQueryMixin, JSONResponseMixin, LoginRequiredMixin,          )          return {              'bookmarks': [ -                {'label': sq.label, 'query': sq.query} for sq in q.all()] +                {'label': sq.label, 'query': sq.query, +                 'id': sq.id} for sq in q.all()]          } +class SearchQueryDelete(LoginRequiredMixin, DeleteView): +    model = models.SearchQuery +    template_name = 'ishtar/forms/bookmark_delete.html' +    page_name = _(u"Delete bookmark") + +    def dispatch(self, request, *args, **kwargs): +        if not request.user.pk: +            raise Http404() +        try: +            self.profile = models.UserProfile.objects.get( +                current=True, person__ishtaruser__user_ptr=request.user) +        except models.UserProfile.DoesNotExist: +            # no current profile +            raise Http404() +        try: +            self.search_query = models.SearchQuery.objects.get( +                profile=self.profile, +                pk=kwargs['pk'] +            ) +        except models.SearchQuery.DoesNotExist: +            raise Http404() +        return super(SearchQueryDelete, self).dispatch(request, *args, **kwargs) + +    def get_context_data(self, **kwargs): +        data = super(SearchQueryDelete, self).get_context_data(**kwargs) +        data['modal_size'] = "small" +        data['page_name'] = _(u"Bookmark - Delete") +        data['action_name'] = _(u"Delete") +        data['item'] = self.search_query.label +        data['url'] = reverse('bookmark-delete', args=[self.search_query.pk]) +        return data + +    def get_success_url(self): +        return reverse('success', args=['bookmark']) + +  class AlertList(JSONResponseMixin, LoginRequiredMixin,                  TemplateView):      def dispatch(self, request, *args, **kwargs): @@ -1873,6 +1910,7 @@ class QAItemEditForm(QAItemForm):              if 'confirm' not in self.url:                  data['url'] = self.url.split('?')[0] + "confirm/"              data['confirm'] = True +            data['action_name'] = _(u"Confirm")          return data      def form_valid(self, form): diff --git a/scss/custom.scss b/scss/custom.scss index 1b23c0c33..476108129 100644 --- a/scss/custom.scss +++ b/scss/custom.scss @@ -222,6 +222,11 @@ textarea {  .sheet h4 { color: $text-muted; } +#bookmark-list .input-link{ +    width: 100%; +    padding-right: 5px; +} +  #window-fixed-menu{      background-color: $gray-200;      position: fixed; | 
