eZ Publish: Admin Interface, Requirements, 4.3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

$Author$
$Revision$
$Date$
:Status: Draft

.. contents::

=======
Preface
=======

Current admin design, both in its styling and in its UI has been increasingly
subject to criticism for being outdated, slow, impossible to extend cleanly,
unintuitive and a lack of a central place to get a overview of all the task a user
(both editor and admin) needs to look after.

Overall there is a need to update the admin interface to adhere more closely to how web
applications have evolved with the improved usability, simplified interfaces, ajaxified
features and clean designs that users are becoming used to in the web 2.0 era.

For the out dated part, this comes down to over styled design compared to other admin interfaces.
Both in overwhelming the user with options to click, to much screen real-estate wasted on
styling and a out dated styling.

For slowness, this is first and foremost number of clicks and page refreshes you have
to go true to accomplish some key tasks. Identified key tasks are:
* Class attribute moving + adding + removing
* Adding policies to roles
* Finding relations on object relation and object relation list object attributes
* Browsing for nodes during actions like: move to, copy to, relations, assign role
   and add node / sub tree function limitations to policies

Extendability is defined as possibility for extensions to extend the admin interface
without having to override template files, as it then would be impossible for several
extensions to extend the same parts.

Making the interface more intuitive involves improving usability and removing / moving
/ hiding features that users does not need during the operation they are performing.
Identified tasks:
* Hide right menu by default
* Customize media tab to for better media asset managment 
* Reduce page space used by node boxes (preview, details,...) to easier browse
  sub items and actions on sub items pane. 

A overview of user task need a dashboard, where she can follow here own
content, approval and other tasks she might do on a regular basis.


Community preface
-----------------
Some members in our community has written some articles on what they would like to 
see changed in the Admin interface, here are some of them:
http://www.stuffandcontent.com/2009/10/ez-publish-admin-interface-overhaul.html
http://pwet.fr/blog/some_thougths_about_the_admin_interface_refresh_of_ez_publish


A note on browser compatibility
-------------------------------
We follow the YUI A-Grade Browser Support Chart, meaning we fully support all major
browsers. However, we all (developers and their managers) know how painfully it can
be to support Internet Explorer 6(IE6). Therefore we will only choose to support
IE6 on a functional level. Meaning all functions should work as expected in it, but
we will not strive to remain pixel perfect at the esthetic level. In addition we
might decide to degrade gracefully and not enable key JavaScript / Ajax 
enhancements if it requires additional coding or workaround to support IE6.
For CSS this will mean we'll take advantage of CSS 2 features that has been
around for 11 years and have been implemented in all other A-Grade browsers.


========
Features
========

In prioritized order for 4.3:

#1 New admin interface style
----------------------------
Should: Look more modern and up to date
Should: Reclaim screen real estate for content area
Should: Not require any new kernel features or changes
Should: Continue being flexible width design
Should: Not make any changes to the layout / wire frame except
        for other features of this document
Should: Be less over designed and have better text contrast (black on white)
Should: Add for attribute on all form labels so they work as intended (WAI)
Could: Make admin style more accessible for modern mobile devices
Could: Color code / style buttons depending on what they do: delete / get / store
Could: Use CSS sprites for small image buttons, icons and logos to reduce download
       amount and size for admin graphic 

#1.1 New possibility to hide the right menu, and hide it by default
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Should: Not involve any page refresh to (show /) hide it.
Should: Move logout link to header so it is always accessible.
Could: Make the code for layout change general so it can be reused by
       size selector on left menu, as well as the hide / show buttons on
       right menu and left menu items.

#1.2 Change how Media library is displayed
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Should: Improve media library so it is more media specific and make it easier
        and faster to browse for media files

#1.3 Reduce scrolling on large pages
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Could: Have store/discard buttons on top of content & class edit forms as well as bottom
       or using a fixed position bar that always stays on screen.
Could: Move "create here" input to top box instead of bottom
Could: Move upper buttons (Preview, details,..) + related blocks to a tabbed,
       minimize able block beneath top block. (similar for class/view boxes)

#1.4 Optimize speed of admin interface
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Should: Sync pagelayout structure with ezwebin and enable cache-block's
        This should also make it easier to override sections of pagelayout like webin 1.4+

#1.5 Only show options that user has access to
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Should: Allow Tabs to specify policy to check for access in menu.ini
Should: Allow Links in Leftmenu_* to specify policy to check for access
        in menu.ini

#1.6 Only options that are relevant for the current context
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Should: Show create here classes only defined placed in class group that relates to structure part
        (Content class in Content tab, Media classes in Media tab ....)

#2 New dashboard as login page
------------------------------
Should: Be the default login page in admin interface
Should: Provide box for last published content
Should: Provide box for last modified content by current user
Should: Provide a box for own object drafts (stored drafts)
Should: Provide short links to user specific task like changing password
Should: Provide a box for your pending content for approval
Should: Be extend able so extensions can add /override blocks
Should: Hide right menu to use full screen area
Could: Provide a box for highest/lowest rated content (ezstarrating)
Could: Provide a box for comment approval (ezjscomment)

#3 New Ajax features for relation object and list content attributes
--------------------------------------------------------------------
Should: Add a inline Ajax search interface to find possible relations
Could: Be able to remove relations without page refresh
Could: Be able to reorder relations without page refresh (list)
Could: Provide drag and drop features to relations for reordering(list)

#4 New Ajax features for adding policies to roles
-------------------------------------------------
Should: Be able to select module and function without any page refresh

#5 New Ajax functionality for class edit interface
--------------------------------------------------
Should: Be able to move attributes without page refresh
Should: Set focus on added attribute after page refresh
OR
Should: Be able to add attribute without page refresh
Could: Be able to remove attribute without page refresh
Could: Allow using drag and drop to move attributes

#6 Add Ajax feature to re order sub items using drag and drop
-------------------------------------------------------------
Could: Merge drag and drop feature from ezwt extension

#7 Enhance the eZ Publish Content Class Model for richer edit ui
----------------------------------------------------------------
Should: Add translatable description text per class for use as help
        text for editors (ie serialized_description_list)
Should: Add translatable description text per class attribute for
        use as help text for editors
Should: Add translatable (long)text attribute on class attributes
        for use as translatable default string on string/text and
        as options on selection datatype (ie serialized_data_text)
Should: Add class attribute category / type to be able to group
        specific attributes together (types should be extendable)
Could:  Allow category / type setting to specify if they should be
        displayed in node view or not
Wishful:Add class inheritance to be able to extend other classes
        that have a set of common attributes and overload the
        ones that differ (and/or add additional ones).

#8 [Not planned] Provide context sensitive help system
------------------------------------------------------
Should: Have a visible help link in header at all times opening a new tab.
Should: Send module + view as parameters to help view so specific help information 
        on for instance content/edit can be shown when clicked during editing.
Should: Support extensions so they can provide context sensitive help as well.
Could: Be organized so that you'll have general information on the module and
       specific help pr view.
Could: Host the help content online, so it is always up to date, and centralized.
       Thus modules (incl. extensions) only need to provide a url to help pags.
       If so, there should be guidelines on requirements for these help pages
       and project.ez.no could provide such a interface for projects.
       Also there should be possible to disable external help by setting if 
       it is hosted externally, maybe provide a white list of domains you allow
       to link to for help.

#9 [Not planned] New Ajax interface for browsing node(s)
--------------------------------------------------------
Could: Use when selection node / sub tree limitations on role policies
Could: Use when selecting target for move to operation
Could: Use when selecting target for copy to operation
Could: Use when selecting relation while browsing for new relations
Could: Use when assigning role with and without sub tree limitation

