diff --git a/combo/apps/assets/templates/combo/manager_assets.html b/combo/apps/assets/templates/combo/manager_assets.html
index 1c8d9de6..fa80f1f7 100644
--- a/combo/apps/assets/templates/combo/manager_assets.html
+++ b/combo/apps/assets/templates/combo/manager_assets.html
@@ -38,41 +38,7 @@
diff --git a/combo/apps/assets/templates/combo/manager_assets_fragment.html b/combo/apps/assets/templates/combo/manager_assets_fragment.html
new file mode 100644
index 00000000..ccb9661c
--- /dev/null
+++ b/combo/apps/assets/templates/combo/manager_assets_fragment.html
@@ -0,0 +1,35 @@
+{% load i18n %}
+
+
+
+ {% trans "Name" %} |
+ {% trans "Size" %} |
+ |
+ |
+
+
+
+ {% for asset in object_list %}
+
+ {{ asset.name }} |
+ {% if asset.size %}{{ asset.size|filesizeformat }}{% else %}-{% endif %} |
+ {% if asset.is_image %}{% endif %} |
+
+ {% if asset.key %}{# theme asset #}
+ {% trans 'Overwrite' %}
+ {% if asset.asset %}
+ {% trans 'Delete' %}
+ {% endif %}
+ {% else %}
+ {% trans 'Overwrite' %}
+ {% trans 'Delete' %}
+ {% endif %}
+ |
+
+ {% endfor %}
+
+
diff --git a/combo/apps/assets/templates/combo/manager_slot_assets.html b/combo/apps/assets/templates/combo/manager_slot_assets.html
new file mode 100644
index 00000000..6905430d
--- /dev/null
+++ b/combo/apps/assets/templates/combo/manager_slot_assets.html
@@ -0,0 +1,19 @@
+{% extends "combo/manager_base.html" %}
+{% load i18n %}
+
+{% block appbar %}
+{% trans 'Assets' %}
+{% endblock %}
+
+{% block breadcrumb %}
+{{ block.super }}
+{% trans 'Assets' %}
+{% endblock %}
+
+{% block content %}
+
+
+{% include "combo/manager_assets_fragment.html" %}
+
+
+{% endblock %}
diff --git a/combo/apps/assets/urls.py b/combo/apps/assets/urls.py
index ebdb8494..1f947898 100644
--- a/combo/apps/assets/urls.py
+++ b/combo/apps/assets/urls.py
@@ -23,6 +23,7 @@ from . import api_views
assets_manager_urls = [
url(r'^$', views.assets, name='combo-manager-assets'),
+ url(r'^slots/(?P[\w_-]+)/$', views.slot_assets, name='combo-manager-slot-assets'),
url(r'^delete$', views.asset_delete, name='combo-manager-asset-delete'),
url(r'^overwrite/$', views.asset_overwrite, name='combo-manager-asset-overwrite'),
url(r'^upload/$', views.asset_upload, name='combo-manager-asset-upload'),
@@ -37,6 +38,6 @@ urlpatterns = [
url(r'^manage/assets/', decorated_includes(manager_required,
include(assets_manager_urls))),
- url('^api/assets/set/(?P[\w_:-]+)/$', api_views.view_set,
+ url(r'^api/assets/set/(?P[\w_:-]+)/$', api_views.view_set,
name='api-assets-set'),
]
diff --git a/combo/apps/assets/views.py b/combo/apps/assets/views.py
index f9005b5e..8e04b262 100644
--- a/combo/apps/assets/views.py
+++ b/combo/apps/assets/views.py
@@ -20,7 +20,7 @@ import os
from django.conf import settings
from django.contrib import messages
-from django.core.exceptions import PermissionDenied
+from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
from django.core.files.storage import default_storage
from django.core.urlresolvers import reverse, reverse_lazy
from django.http import Http404, HttpResponse
@@ -230,9 +230,41 @@ class AssetDelete(TemplateView):
Assets(request=self.request).get_anchored_url(
name=os.path.basename(img_orig)))
+
asset_delete = AssetDelete.as_view()
+class SlotAssets(ListView):
+ template_name = 'combo/manager_slot_assets.html'
+
+ def get_assets(self, cell):
+ asset_slots = cell.get_asset_slots()
+ assets = dict([(x.key, x) for x in Asset.objects.filter(key__in=asset_slots.keys())])
+ for key, value in asset_slots.items():
+ yield SlotAsset(
+ key,
+ name=value.get('short_label'),
+ asset_type=value.get('asset-type', 'image'),
+ asset=assets.get(key))
+
+ def get_queryset(self):
+ cell_reference = self.kwargs['cell_reference']
+ try:
+ cell = CellBase.get_cell(cell_reference)
+ except ObjectDoesNotExist:
+ raise Http404()
+
+ return self.get_assets(cell)
+
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ context['cell_reference'] = self.kwargs['cell_reference']
+ return context
+
+
+slot_assets = SlotAssets.as_view()
+
+
class SlotAssetUpload(FormView):
form_class = AssetUploadForm
template_name = 'combo/manager_asset_upload.html'
@@ -248,8 +280,18 @@ class SlotAssetUpload(FormView):
return super(SlotAssetUpload, self).form_valid(form)
def get_success_url(self):
+ if self.request.GET.get('cell_reference'):
+ cell_reference = self.request.GET['cell_reference']
+ try:
+ cell = CellBase.get_cell(cell_reference)
+ except ObjectDoesNotExist:
+ pass
+ else:
+ return reverse('combo-manager-page-view', kwargs={'pk': cell.page_id}) + '#cell-' + cell_reference
+
return Assets(request=self.request).get_anchored_url(key=self.kwargs['key'])
+
slot_asset_upload = SlotAssetUpload.as_view()
@@ -258,8 +300,18 @@ class SlotAssetDelete(TemplateView):
def post(self, request, *args, **kwargs):
Asset.objects.filter(key=kwargs['key']).delete()
+ if self.request.GET.get('cell_reference'):
+ cell_reference = self.request.GET['cell_reference']
+ try:
+ cell = CellBase.get_cell(cell_reference)
+ except ObjectDoesNotExist:
+ pass
+ else:
+ return redirect(
+ reverse('combo-manager-page-view', kwargs={'pk': cell.page_id}) + '#cell-' + cell_reference)
return redirect(Assets(request=self.request).get_anchored_url(key=kwargs['key']))
+
slot_asset_delete = SlotAssetDelete.as_view()
diff --git a/combo/data/models.py b/combo/data/models.py
index 2b0158bc..da8fce5f 100644
--- a/combo/data/models.py
+++ b/combo/data/models.py
@@ -658,8 +658,13 @@ class CellBase(six.with_metaclass(CellMeta, models.Model)):
'label': self.get_label_for_asset(),
'suffix': suffix
}
+ short_label = u'%(prefix)s%(suffix)s' % {
+ 'prefix': slot_template_data['prefix'],
+ 'suffix': suffix
+ }
slots[slot_key] = {
- 'label': label
+ 'label': label,
+ 'short_label': short_label,
}
slots[slot_key].update(slot_template_data)
return slots
diff --git a/combo/manager/static/css/combo.manager.css b/combo/manager/static/css/combo.manager.css
index 5a31fd02..57b48d9f 100644
--- a/combo/manager/static/css/combo.manager.css
+++ b/combo/manager/static/css/combo.manager.css
@@ -258,23 +258,23 @@ div.navigation li.nav-up::before {
width: 80%;
}
-#assets-browser #assets-listing table th,
-#assets-browser #assets-listing table td {
+#assets-listing table th,
+#assets-listing table td {
text-align: left;
padding-left: 1ex;
}
-#assets-browser #assets-listing table td.image {
+#assets-listing table td.image {
padding: 0;
text-align: center;
}
-#assets-browser #assets-listing table td.actions {
+#assets-listing table td.actions {
width: 80px;
}
-#assets-browser #assets-listing table td.actions a.overwrite,
-#assets-browser #assets-listing table td.actions a.delete {
+#assets-listing table td.actions a.overwrite,
+#assets-listing table td.actions a.delete {
display: inline-block;
border: none;
overflow: hidden;
@@ -283,7 +283,7 @@ div.navigation li.nav-up::before {
line-height: 30px;
}
-#assets-browser #assets-listing table td.actions a.delete::before {
+#assets-listing table td.actions a.delete::before {
text-align: center;
font-family: FontAwesome;
content: "\f057"; /* remove-sign */
@@ -291,7 +291,7 @@ div.navigation li.nav-up::before {
width: 30px;
}
-#assets-browser #assets-listing table td.actions a.overwrite::before {
+#assets-listing table td.actions a.overwrite::before {
text-align: center;
font-family: FontAwesome;
content: "\f093"; /* upload */
diff --git a/combo/manager/templates/combo/manager_edit_cell_block.html b/combo/manager/templates/combo/manager_edit_cell_block.html
index 337d7a38..4b716a37 100644
--- a/combo/manager/templates/combo/manager_edit_cell_block.html
+++ b/combo/manager/templates/combo/manager_edit_cell_block.html
@@ -17,6 +17,7 @@
{% trans 'Delete' %} |
{% trans 'Visibility' %} |
{% trans 'Options' %} |
+{% if cell.can_have_assets %}{% trans 'Assets' %} |{% endif %}
{% trans 'Close' %}
{% if form %}
diff --git a/tests/test_manager.py b/tests/test_manager.py
index 0a76ba09..a09ae27c 100644
--- a/tests/test_manager.py
+++ b/tests/test_manager.py
@@ -1136,6 +1136,7 @@ def test_asset_management_search(app, admin_user):
resp = resp.form.submit()
assert resp.text.count('|