summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------drassm_app0
-rw-r--r--ishtar_common/static/js/ishtar.js21
-rw-r--r--ishtar_common/templates/blocks/DataTables.html2
-rw-r--r--ishtar_common/templates/ishtar/forms/bookmark_delete.html7
-rw-r--r--ishtar_common/templates/ishtar/forms/qa_base.html4
-rw-r--r--ishtar_common/urls.py2
-rw-r--r--ishtar_common/views.py40
-rw-r--r--scss/custom.scss5
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;