Projet

Général

Profil

0003-admin-use-backoffice-now-unified-menu-items-in-heade.patch

Frédéric Péters, 22 avril 2015 12:31

Télécharger (19,3 ko)

Voir les différences:

Subject: [PATCH 03/11] admin: use backoffice (now unified) menu items in
 header (#6726)

 wcs/admin/bounces.py         |  3 ++-
 wcs/admin/categories.py      |  2 +-
 wcs/admin/fields.py          |  3 ++-
 wcs/admin/forms.py           |  2 +-
 wcs/admin/menu.py            |  3 ++-
 wcs/admin/roles.py           |  2 +-
 wcs/admin/settings.py        |  3 ++-
 wcs/admin/users.py           |  3 ++-
 wcs/admin/workflows.py       |  3 ++-
 wcs/qommon/admin/emails.py   |  2 +-
 wcs/qommon/admin/logger.py   |  3 ++-
 wcs/qommon/admin/menu.py     | 59 --------------------------------------------
 wcs/qommon/admin/settings.py |  2 +-
 wcs/qommon/admin/texts.py    |  3 ++-
 wcs/qommon/ident/idp.py      | 22 ++++++++---------
 wcs/qommon/ident/password.py | 32 +++++++++---------------
 16 files changed, 43 insertions(+), 104 deletions(-)
wcs/admin/bounces.py
24 24
from qommon import errors
25 25
from qommon import misc
26 26
from qommon.bounces import Bounce
27
from qommon.admin.menu import html_top, command_icon
27
from qommon.backoffice.menu import html_top
28
from qommon.admin.menu import command_icon
28 29

  
29 30
from qommon.form import *
30 31

  
wcs/admin/categories.py
20 20

  
21 21
from wcs.categories import Category
22 22
from qommon.form import *
23
from qommon.admin.menu import html_top
23
from qommon.backoffice.menu import html_top
24 24

  
25 25
from wcs.formdef import FormDef
26 26

  
wcs/admin/fields.py
20 20

  
21 21
from qommon.form import *
22 22
from qommon import errors, misc
23
from qommon.admin.menu import html_top, command_icon
23
from qommon.backoffice.menu import html_top
24
from qommon.admin.menu import command_icon
24 25

  
25 26
from wcs import fields
26 27
from wcs.formdef import FormDef
wcs/admin/forms.py
29 29
from qommon import misc
30 30
from qommon.errors import *
31 31
from qommon.form import *
32
from qommon.admin.menu import html_top
32
from qommon.backoffice.menu import html_top
33 33
from qommon import get_logger
34 34

  
35 35
from qommon import tokens
wcs/admin/menu.py
14 14
# You should have received a copy of the GNU General Public License
15 15
# along with this program; if not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from qommon.admin.menu import html_top, command_icon, error_page, get_vc_version
17
from qommon.backoffice.menu import html_top
18
from qommon.admin.menu import command_icon, error_page, get_vc_version
wcs/admin/roles.py
20 20

  
21 21
from qommon.form import *
22 22

  
23
from qommon.admin.menu import html_top
23
from qommon.backoffice.menu import html_top
24 24

  
25 25
from wcs.roles import Role
26 26
from wcs.formdef import FormDef
wcs/admin/settings.py
38 38
from qommon.form import *
39 39
from qommon.sms import SMS
40 40

  
41
from qommon.admin.menu import html_top, error_page
41
from qommon.backoffice.menu import html_top
42
from qommon.admin.menu import error_page
42 43
from qommon.admin.cfg import cfg_submit
43 44
from qommon.admin.emails import EmailsDirectory
44 45
from qommon.admin.texts import TextsDirectory
wcs/admin/users.py
27 27
import qommon.ident
28 28
from qommon.form import *
29 29
from qommon.admin.emails import EmailsDirectory
30
from qommon.admin.menu import html_top, error_page
30
from qommon.backoffice.menu import html_top
31
from qommon.admin.menu import error_page
31 32

  
32 33
class UserUI(object):
33 34
    def __init__(self, user):
wcs/admin/workflows.py
29 29
from qommon import errors
30 30
from qommon import misc
31 31
from qommon.form import *
32
from qommon.admin.menu import html_top, command_icon
32
from qommon.backoffice.menu import html_top
33
from qommon.admin.menu import command_icon
33 34
from qommon import get_logger
34 35

  
35 36
from wcs.workflows import *
wcs/qommon/admin/emails.py
20 20

  
21 21
from qommon.form import *
22 22
from qommon import misc, get_cfg
23
from qommon.admin.menu import html_top
23
from qommon.backoffice.menu import html_top
24 24
from qommon.admin.cfg import cfg_submit
25 25

  
26 26
class EmailsDirectory(Directory):
wcs/qommon/admin/logger.py
22 22
from quixote.directory import Directory
23 23

  
24 24
from qommon import logger, errors
25
from qommon.admin.menu import html_top, error_page
25
from qommon.backoffice.menu import html_top
26
from qommon.admin.menu import error_page
26 27

  
27 28
class ByUserDirectory(Directory):
28 29
    def _q_lookup(self, component):
wcs/qommon/admin/menu.py
122 122
def get_vc_version():
123 123
    return vc_version
124 124

  
125
def generate_header_menu(selected = None):
126
    return get_publisher().get_admin_root().generate_header_menu(selected=selected)
127

  
128
def generate_user_info():
129
    if not get_request().user:
130
        return ''
131

  
132
    try:
133
        username = get_session().get_user_object().display_name
134
    except:
135
        username = None
136
        raise
137

  
138
    r = TemplateIO(html=True)
139
    logout_url = get_publisher().get_root_url() + 'logout'
140
    r += htmltext('<ul class="user-info">')
141
    if username:
142
        r += htmltext('<li class="ui-name">%s</li>') % username
143
    if get_publisher().backoffice_directory_class:
144
        backoffice_url = get_publisher().get_root_url() + 'backoffice/'
145
        r += htmltext('<li><a href="%s">%s</a></li>') % (backoffice_url, _('backoffice'))
146
    r += htmltext('<li class="ui-logout"><a href="%s">%s</a></li>') % (logout_url, _('logout'))
147

  
148
    if get_publisher().admin_help_url and get_request().language in get_publisher().admin_help_url:
149
        help_url = get_publisher().admin_help_url[get_request().language]
150
        get_response().add_javascript(['jquery.js', 'jquery-ui.js', 'qommon.admin.js'])
151
        get_response().add_css_include('../js/smoothness/jquery-ui-1.10.0.custom.min.css')
152
        r += htmltext('<li class="ui-help"><a href="%s">%s</a></li>') % (help_url, _('help'))
153

  
154
    r += htmltext('</ul>')
155
    return r.getvalue()
156

  
157

  
158
def html_top(section, title = None, scripts = None):
159
    header_menu = generate_header_menu(section)
160
    user_info = generate_user_info()
161
    subtitle = ''
162
    for s in get_publisher().get_admin_root().menu_items:
163
        if s[0] == section or s[0] == '%s/' % section:
164
            subtitle = _(s[1])
165
    if not title:
166
        title = ''
167
    if not scripts:
168
        script = ''
169
    else:
170
        script = '\n'.join(['<script src="%s" type="text/javascript"></script>' % x for x in scripts])
171

  
172
    org_name = get_cfg('sp', {}).get('organization_name', get_publisher().APP_NAME)
173
    site_name = get_cfg('misc', {}).get('sitename', org_name)
174
    if site_name:
175
        sitetitle = _('Administration of %s') % site_name
176
    else:
177
        sitetitle = _('Administration')
178
    if title:
179
        sitetitle += ' - '
180

  
181
    admin_ezt = True
182
    get_response().filter.update(locals())
183

  
184 125
def command_icon(url, type, label = None, icon = None, popup = False):
185 126
    icons = {
186 127
        'edit': 'stock_edit_16.png',
wcs/qommon/admin/settings.py
20 20

  
21 21
from qommon.form import *
22 22
from qommon.admin.cfg import cfg_submit
23
from qommon.admin.menu import html_top
23
from qommon.backoffice.menu import html_top
24 24

  
25 25
class SettingsDirectory(AccessControlled, Directory):
26 26
    def _q_access(self):
wcs/qommon/admin/texts.py
23 23

  
24 24
from qommon.form import *
25 25
from qommon import misc, get_cfg, ezt
26
from qommon.admin.menu import html_top, is_accessible
26
from qommon.backoffice.menu import html_top
27
from qommon.admin.menu import is_accessible
27 28

  
28 29

  
29 30
class TextsDirectory(Directory):
wcs/qommon/ident/idp.py
38 38
from qommon import template
39 39
from qommon import errors
40 40

  
41
from qommon.admin.menu import html_top as admin_html_top
41
from qommon.backoffice.menu import html_top
42 42
from qommon.admin.menu import command_icon
43 43

  
44 44
from base import AuthMethod
......
226 226
        return Directory._q_traverse(self, path)
227 227

  
228 228
    def _q_index(self):
229
        admin_html_top('settings', title = _(self.title))
229
        html_top('settings', title = _(self.title))
230 230
        r = TemplateIO(html=True)
231 231
        r += htmltext('<h2>%s</h2>') % _('Identity Providers')
232 232
        r += htmltext('<ul id="nav-idp-admin">\n')
......
319 319
        form = self.get_form()
320 320

  
321 321
        if not ('submit' in get_request().form and form.is_submitted()) or form.has_errors():
322
            admin_html_top('settings', title = _('New Identity Provider'))
322
            html_top('settings', title = _('New Identity Provider'))
323 323
            r = TemplateIO(html=True)
324 324
            r += htmltext('<h2>%s</h2>') % _('New Identity Provider')
325 325
            r += form.render()
......
497 497
                os.unlink(metadata_pathname)
498 498

  
499 499
        get_response().breadcrumb.append(('new_remote', _('New')))
500
        admin_html_top('settings', title = _('New Identity Provider'))
500
        html_top('settings', title = _('New Identity Provider'))
501 501
        r = TemplateIO(html=True)
502 502
        r += htmltext('<h2>%s</h2>') % _('New Identity Provider')
503 503
        r += form.render()
......
582 582
                misc.get_abs_path(self.idp['metadata']),
583 583
                misc.get_abs_path(self.idp.get('publickey')),
584 584
                misc.get_abs_path(self.idp.get('cacertchain', None)))
585
        admin_html_top('settings', title = _('Identity Provider'))
585
        html_top('settings', title = _('Identity Provider'))
586 586
        r = TemplateIO(html=True)
587 587
        r += htmltext('<h2>%s - %s</h2>') % (_('Identity Provider'), p.providerId)
588 588
        r += htmltext('<div class="form">')
......
608 608
        form = AdminIDPDir.get_form(self.idp)
609 609

  
610 610
        if not ('submit' in get_request().form and form.is_submitted()) or form.has_errors():
611
            admin_html_top('settings', title = _('Edit Identity Provider'))
611
            html_top('settings', title = _('Edit Identity Provider'))
612 612
            r = TemplateIO(html=True)
613 613
            r += htmltext('<h2>%s</h2>') % _('Edit Identity Provider')
614 614
            r += form.render()
......
635 635
        if form.get_widget('cancel').parse():
636 636
            return redirect('..')
637 637
        if not form.is_submitted() or form.has_errors():
638
            admin_html_top('settings', title = _('Identity Provider'))
638
            html_top('settings', title = _('Identity Provider'))
639 639
            r = TemplateIO(html=True)
640 640
            if p:
641 641
                r += htmltext('<h2>%s %s</h2>') % (_('Deleting'), p.providerId)
......
779 779
        return Directory._q_traverse(self, path)
780 780

  
781 781
    def _q_index(self):
782
        admin_html_top('settings', title = _(self.title))
782
        html_top('settings', title = _(self.title))
783 783
        r = TemplateIO(html=True)
784 784
        r += htmltext('<h2>SAML 2.0</h2>')
785 785
        r += htmltext('<dl> <dt><a href="sp">%s</a></dt> <dd>%s</dd>') % (
......
879 879
            else:
880 880
                return redirect('.')
881 881

  
882
        admin_html_top('settings', title = _('Service Provider Configuration'))
882
        html_top('settings', title = _('Service Provider Configuration'))
883 883
        r = TemplateIO(html=True)
884 884
        r += htmltext('<h2>%s</h2>') % _('Service Provider Configuration')
885 885
        r += form.render()
......
1030 1030
            return redirect('.')
1031 1031

  
1032 1032
        get_response().breadcrumb.append(('identities', _('Identities Interface')))
1033
        admin_html_top('settings', title = _('Identities Interface'))
1033
        html_top('settings', title = _('Identities Interface'))
1034 1034
        r = TemplateIO(html=True)
1035 1035
        r += htmltext('<h2>%s</h2>') % _('Identities Interface')
1036 1036
        r += form.render()
......
1059 1059
        if request.form.has_key('cancel') or request.form.has_key('done'):
1060 1060
            return redirect('..')
1061 1061

  
1062
        admin_html_top('users', title = _('Email with Identification Token'))
1062
        html_top('users', title = _('Email with Identification Token'))
1063 1063
        r = TemplateIO(html=True)
1064 1064
        r += htmltext('<h2>%s</h2>') % _('Email with Identification Token')
1065 1065

  
wcs/qommon/ident/password.py
33 33
from qommon import tokens
34 34
from qommon import errors
35 35

  
36
from qommon.admin.menu import html_top as admin_html_top
37 36
from qommon.admin.menu import command_icon
38 37

  
39
from qommon.backoffice.menu import html_top as backoffice_html_top
38
from qommon.backoffice.menu import html_top
40 39

  
41 40
from qommon.admin.emails import EmailsDirectory
42 41
from qommon.admin.texts import TextsDirectory
......
684 683
    _q_exports = ['', 'passwords', 'identities', ('import', 'p_import')]
685 684

  
686 685
    def _q_index(self):
687
        admin_html_top('settings', title = _(ADMIN_TITLE))
686
        html_top('settings', title = _(ADMIN_TITLE))
688 687
        get_response().breadcrumb.append( ('password/', _(self.title)))
689 688
        r = TemplateIO(html=True)
690 689

  
......
751 750
            self.passwords_submit(form)
752 751
            return redirect('.')
753 752

  
754
        admin_html_top('settings', title = _('Passwords'))
753
        html_top('settings', title = _('Passwords'))
755 754
        r = TemplateIO(html=True)
756 755
        r += htmltext('<h2>%s</h2>') % _('Passwords')
757 756
        r += form.render()
......
801 800
            self.identities_submit(form)
802 801
            return redirect('.')
803 802

  
804
        admin_html_top('settings', title = _('Identities Interface'))
803
        html_top('settings', title = _('Identities Interface'))
805 804
        r = TemplateIO(html=True)
806 805
        r += htmltext('<h2>%s</h2>') % _('Identities Interface')
807 806
        r += form.render()
......
850 849
                    return t
851 850
                return redirect('.')
852 851

  
853
        admin_html_top('settings', title = _('Bulk Import'))
852
        html_top('settings', title = _('Bulk Import'))
854 853
        r = TemplateIO(html=True)
855 854
        identities_cfg = get_cfg('identities', {})
856 855
        users_cfg = get_cfg('users', {})
......
1010 1009
            job = AfterJob.get(get_request().form.get('job'))
1011 1010
        except KeyError:
1012 1011
            return redirect('..')
1013
        admin_html_top('settings', title=_('Notifications'))
1012
        html_top('settings', title=_('Notifications'))
1014 1013
        r = TemplateIO(html=True)
1015 1014
        r += get_session().display_message()
1016 1015
        get_response().add_javascript(['jquery.js', 'afterjob.js'])
......
1083 1082
        return actions
1084 1083

  
1085 1084
    def email(self):
1086
        admin_html_top('users', title=_(ADMIN_TITLE))
1085
        html_top('users', title=_(ADMIN_TITLE))
1087 1086
        r = TemplateIO(html=True)
1088 1087
        get_response().breadcrumb.append(('email', 'Email Password'))
1089 1088
        r += htmltext('<h2>%s</h2>') % _('Email Password')
......
1215 1214

  
1216 1215
    def _q_traverse(self, path):
1217 1216
        get_response().breadcrumb.append(('%s/' % self.account.id, self.account.id))
1218
        if get_publisher().get_backoffice_root():
1219
            self.html_top = backoffice_html_top
1220
        else:
1221
            self.html_top = admin_html_top
1222 1217
        return Directory._q_traverse(self, path)
1223 1218

  
1224 1219
    def _q_index(self):
1225 1220
        identities_cfg = get_cfg('identities', {})
1226 1221
        users_cfg = get_cfg('users', {})
1227 1222

  
1228
        self.html_top('accounts', _('Account - %s') % self.account.id)
1223
        html_top('accounts', _('Account - %s') % self.account.id)
1229 1224
        r = TemplateIO(html=True)
1230 1225
        r += htmltext('<h2>%s</h2>') % _('Moderation of account')
1231 1226

  
......
1309 1304

  
1310 1305
        if not form.is_submitted():
1311 1306
            get_response().breadcrumb.append(('reject', _('Rejection')))
1312
            self.html_top('accounts', _('Rejection'))
1307
            html_top('accounts', _('Rejection'))
1313 1308
            return form.render()
1314 1309
        else:
1315 1310
            self.account.user.remove_self()
......
1335 1330

  
1336 1331
        if not form.is_submitted():
1337 1332
            get_response().breadcrumb.append(('email', _('Reply by email')))
1338
            self.html_top('accounts', _('Reply by email'))
1333
            html_top('accounts', _('Reply by email'))
1339 1334
            r = TemplateIO(html=True)
1340 1335
            r += htmltext('<h2>%s</h2>') % _('Reply by email')
1341 1336
            r += form.render()
......
1363 1358

  
1364 1359
        get_response().breadcrumb.append(('accounts/', _('Accounts Management')))
1365 1360

  
1366
        if get_publisher().get_backoffice_root():
1367
            self.html_top = backoffice_html_top
1368
        else:
1369
            self.html_top = admin_html_top
1370

  
1371 1361
    def _q_index(self):
1372
        self.html_top('accounts', _('Accounts Management'))
1362
        html_top('accounts', _('Accounts Management'))
1373 1363
        r = TemplateIO(html=True)
1374 1364
        r += htmltext('<h2>%s</h2>') % _('New accounts waiting for moderation')
1375 1365

  
1376
-