Merge "master" into "accesscontrol" and activate.
ACL module: fix login widget geometry.
Extend Access Control service (#262).

New service method:
    Permissions getTopicPermissions(long topicId, ClientState clientState)
REST API:
    GET /accesscontrol/topic/{topic_id}

See ticket 262.
Webservice: trigger PRE_SEND for getTopics (#268).

See ticket 268.
Topicmaps: anonymous canvas moves (#269).

Anonymous canvas moves are not persistent.

See ticket 269.
Access Control: fix type creation.
Access Control fix: adjust "Edit" btn on login/out
Access Ctrl fix: adjust Create wigdet on login/out

If the user has no permission to create anything the Create wigdet is not shown at all.
Access Control also for associations Pt.1

Not yet functional
More on interactive read-only maps (#269).

Not yet complete.

See ticket 269.
Access Control: merge "master" branch.
Access Control: adapt to recent core changes #262.

Functionality is restored.

See ticket 262
Topicmaps: update and extend API (#269).

Overall the refId is stripped from the Topicmaps API.
In preparation to "Interactive read-only maps" (#269).

New methods:
    - void moveTopic(long topicmapId, long topicId, int x, int y)
    - void setTopicVisibility(long topicmapId, long topicId, boolean visibility)
Changed methods:
    - addTopicToTopicmap() returns void and is invoked via POST
    - addAssociationToTopicmap() returns void and is invoked via POST
    - removeAssociationFromTopicmap() has no refId parameter

The 2 provider classes are dropped:
    - TopicmapProvider
    - RefIdProvider

Furthermore a core fix: DMObject's setCompositeValue() opens a transaction.

CAUTION: the "accesscontrol" branch is currently not fully functional.

See ticket 269
New core service method getAssociation... (#269).

New method:
    - getAssociationBetweenTopicAndAssociation()

Furthermore a core fix: Topic's and Association's delete() method opens a transaction.

"Interactive read-only maps" (#269) are functional.

Note: the "accesscontrol" branch is functional.

See ticket 269
Topicmaps: read-only maps are complete (#269).

Once logged in the Webclient reloads the topicmaps.

2 client-side events are renamed:
    "user_logged_in" -> "logged_in"
    "user_logged_out" -> "logged_out"

IMPORTANT: if your plugin makes use of these events it must be adapted.

Close ticket 269
Access Control module: merge branch "master"
Merge branch "file-repo" into "accesscontrol"
Access Control: fix login dialog (#262).

Adapted to recent changes in GUIToolkit's Dialog class.

Furthermore in GUIToolkit: the Dialog's close() method takes 2 optional parameters to run a fade out animation:
{{{
    dialog.close(duration, callback)
}}}

Furthermore in Webclient: there is a new GUI helper method to attach a Return key handler to an jQuery object:
{{{
    dm4c.on_return_key(element, callback)
}}}

See ticket 262.
Access Control: new call require_login() (#262).

3rd-party plugins can require the user to login before she can do anything.
This allows DM installations to be accessible only by authentified users.
To do so call require_login() from your plugin's init handler:
{{{
    dm4c.add_listener("init", function() {
        dm4c.get_plugin("de.deepamehta.accesscontrol").require_login()
        ...
    }
}}}
This brings up the Login dialog while Webclient start.
This Login dialog can't be closed by the user.

However, the Login dialog does *not* appear if the user is still logged in (there is a cookie) while Webclient start.
In this case she can continue work immediately.

Furthermore in GUIToolkit: the Dialog's open() method takes one optional boolean parameter:
{{{
    dialog.open(no_close_button)
}}}
If no_close_button is true the dialog box will neither have a close button nor react on the ESC key.

See ticket 262.
Access Control: polish CSS (#262).

Generic CSS moved from Access Control to Webclient module.

See ticket 262.