@@ -2,15 +2,15 @@
|
|||||||
Smart links
|
Smart links
|
||||||
===========
|
===========
|
||||||
|
|
||||||
|
|
||||||
To configure: |Setup tab| |Right arrow| |Smart links button|
|
To configure: |Setup tab| |Right arrow| |Smart links button|
|
||||||
|
|
||||||
To use: |Document icon| |Right arrow| |Smart links link|
|
To use: |Document icon| |Right arrow| |Smart links link|
|
||||||
|
|
||||||
Smart links are usefull for navigation between documents. They are rule
|
Smart links are usefull for navigation between documents. They are rule
|
||||||
based but don't created any organizational structure just show the documents
|
based but don't create any organizational structure, just show the documents
|
||||||
that match the rules as evaluated against the metadata of the currently
|
that match the rules as evaluated against the metadata of the currently
|
||||||
displayed document. They are global, the smart links are dependant
|
displayed document.
|
||||||
on the current document the user is viewing.
|
|
||||||
|
|
||||||
.. figure:: /_static/screenshots/smart_links_screenshot.png
|
.. figure:: /_static/screenshots/smart_links_screenshot.png
|
||||||
:alt: Smart links screenshot
|
:alt: Smart links screenshot
|
||||||
@@ -19,6 +19,164 @@ on the current document the user is viewing.
|
|||||||
Screenshot of smart links in action. The documents being shown are from the same
|
Screenshot of smart links in action. The documents being shown are from the same
|
||||||
permit file number as the current document being viewed by the user.
|
permit file number as the current document being viewed by the user.
|
||||||
Notice how the current document is also highlighted with a black border.
|
Notice how the current document is also highlighted with a black border.
|
||||||
|
|
||||||
|
**Details**
|
||||||
|
|
||||||
|
To create a Smart Link, a user with adequate permissions first clicks on the
|
||||||
|
"Settings" tab in the top menu, then click on the "Smart Links" button. The screen
|
||||||
|
for creating a new (or editing an existing) Smart Link requires you to name the
|
||||||
|
Link and to ensure it is enabled if you wish to user it. Optionally, "Dynamic title"
|
||||||
|
may be created. The Dynamic title is entended to contain references to attributes
|
||||||
|
of a document or it's metadata. Let's cover some simpler cases and come back to
|
||||||
|
dynamic references below.
|
||||||
|
|
||||||
|
*Static Links*
|
||||||
|
|
||||||
|
Smart links don't actually have to be overly smart. As a gentle introduction, lets
|
||||||
|
create a simple "static" link which will show all the documents added in the year
|
||||||
|
2014. We'll use the title "Added in 2014", leave the dynamic title empty, and ensure
|
||||||
|
that "Enabled" is checked.
|
||||||
|
|
||||||
|
To have the link actually do something, we have to add one or more "condition".
|
||||||
|
Conditions are translated by the system into clauses in a query (search) of the
|
||||||
|
document database. There is a "Create condition" link in the right-bar of the Smart
|
||||||
|
Link screen. For our simple case, the value of the "Inclusion" drop down does not
|
||||||
|
matter; we can leave it at the default "AND". For "Foreign document data" we will
|
||||||
|
enter:
|
||||||
|
|
||||||
|
document.date_added
|
||||||
|
|
||||||
|
For "Operator" we will select "contains".
|
||||||
|
|
||||||
|
For "Expression" we will enter:
|
||||||
|
|
||||||
|
2014
|
||||||
|
|
||||||
|
Underneath this field, "negated" should be unchecked and "enabled" should be checked.
|
||||||
|
Save the condition then go to the documents tab. Click on the filename of any file
|
||||||
|
listed there. Click on the "Smart link" tab under the submenu. A list of all
|
||||||
|
documents entered in 2014 (if any) should be shown.
|
||||||
|
|
||||||
|
There are a number of other document attributes which can be used in searches, with
|
||||||
|
some important caveats:
|
||||||
|
|
||||||
|
* date_added: (discussed above)
|
||||||
|
|
||||||
|
* comments: this is next to useless at present, since instead of searching through
|
||||||
|
text of all comments you can instead search for the "id" of comments.
|
||||||
|
|
||||||
|
* description: enclose the text you want to search for in 'single' or "double" quotes.
|
||||||
|
|
||||||
|
* document_type: can be used if Document Types have been defined and assigned to docs
|
||||||
|
as they have been uploaded. The search is performed against the "id" of the document_type
|
||||||
|
and not against the textual description of the Document Type. This limitation,
|
||||||
|
however, is hidden if used in a dynamic link as demonstrated below.
|
||||||
|
|
||||||
|
* documentcheckout: a meaningful query clause can be consructed by choosing this
|
||||||
|
documnet attribute and testing if it "is equal to" 1 (for "true" or "is checked out")
|
||||||
|
or 0 (for "false" or "is not checked out")
|
||||||
|
|
||||||
|
* documentrenamecount: this attribute is reported by the system as available for
|
||||||
|
searching but it's utility is not clear
|
||||||
|
|
||||||
|
* folderdocument: This attribute searches agains the "id" of the folder to which
|
||||||
|
a document may have been added, not against the textual name of a folder and thus
|
||||||
|
is useful primarily in dynamicly defined links (see below).
|
||||||
|
|
||||||
|
* id: each document has a unique numeric id which can be used in searches
|
||||||
|
|
||||||
|
* indexinstancenode: ??
|
||||||
|
|
||||||
|
* metadata: ?? (see below)
|
||||||
|
|
||||||
|
* queuedocument: ??
|
||||||
|
|
||||||
|
* recentdocument: this attibute appears to hold an integer (simple number like 1,2,3)
|
||||||
|
indicating the relative order in which documents were added to the system. This
|
||||||
|
may be of some use for finding documents which were added before or after a given
|
||||||
|
document.
|
||||||
|
|
||||||
|
* tagged_items: using this attribute by entering in an integer value appears to
|
||||||
|
perform a search equivalent to "if document has at least one tag and this id number"
|
||||||
|
|
||||||
|
* tags: the "id" value of the corresponding tags are used. A tag will be matched if it
|
||||||
|
is alone or among several tags assigned to a document.
|
||||||
|
|
||||||
|
* uuid: of little value, since these are by definition unique.
|
||||||
|
|
||||||
|
* versions: ??
|
||||||
|
|
||||||
|
|
||||||
|
You can also define Smart Links based on Metadata types and values which you have
|
||||||
|
defined. For this to work, it appears to be necessary to give the metadata type "Name"
|
||||||
|
(also known as "Internal name") which is all lowercase. The "Title" can be uppercase.
|
||||||
|
|
||||||
|
For instance, if a metadata type is defined with these values:
|
||||||
|
Name: priority
|
||||||
|
Title: Priority
|
||||||
|
Default: 5
|
||||||
|
Lookup: (1,2,3,4,5,6,7,8,9,10)
|
||||||
|
Then I can assign various documents different priorities and create a "Smart Link"
|
||||||
|
to find the high priority links by defining the condition as
|
||||||
|
Inclusion: and
|
||||||
|
Foreign document data: is greater or equal to
|
||||||
|
Expression: 5
|
||||||
|
|
||||||
|
*Dynamic Smart Links*
|
||||||
|
|
||||||
|
Links which are truly Smart are created by referencing the current value of the
|
||||||
|
document you are viewing and not a static value in at least one of the conditions.
|
||||||
|
|
||||||
|
For instance, the last example above can be modified so that the Smart Link is:
|
||||||
|
Inclusion: and
|
||||||
|
Foreign document data: is greater or equal to
|
||||||
|
Expression: metadata.priority
|
||||||
|
|
||||||
|
By including "metadata.priority" as the Expression instead of a static value, we
|
||||||
|
now have a Smart Link which will find all other documents with a Priority metadata
|
||||||
|
value greater than or equal to the one we are viewing.
|
||||||
|
|
||||||
|
Here's an example by Mathias from the forums
|
||||||
|
(<https://groups.google.com/forum/#!topic/mayan-edms/nO5DFB1udhc>) which
|
||||||
|
demonstrates how to find other documents in the same project, if "project" has
|
||||||
|
been defined as a Metadata type. This example shows how to use the Dynamic Title
|
||||||
|
feature also.
|
||||||
|
|
||||||
|
Title: Same project
|
||||||
|
Dynamic title: u'All documents of: %s' % getattr(metadata, 'project', 'None')
|
||||||
|
|
||||||
|
Condition:
|
||||||
|
Inclusion: and
|
||||||
|
Foreign document data: metadata.project
|
||||||
|
Operator: equal
|
||||||
|
Expression: metadata.project
|
||||||
|
|
||||||
|
The document attributes listed above which use the "id" value to do matching are
|
||||||
|
more useful for dynamic than static conditions. For instance we can set both the
|
||||||
|
foreign and current document Expressiong to "document.document_type" to get a
|
||||||
|
Smart Link to all other documents of the same Document Type as the current one.
|
||||||
|
|
||||||
|
*Combining Conditions*
|
||||||
|
|
||||||
|
In theory we should be able to add multiple conditions and choose "and" or "or"
|
||||||
|
to define how they interact with the previous condition. There does not appear
|
||||||
|
to be a mechanism for defining parenthises to group conditions, but such subtleties
|
||||||
|
are far beyond the current state of this funcitonality as even the simplest cases
|
||||||
|
appear not to work. Defining to conditions, each of which yeild a set with
|
||||||
|
documents in common, and then combining them with "and" yeilds no documents at all.
|
||||||
|
Switching to "or" returns the same documents multiple times.
|
||||||
|
|
||||||
|
*Tricky Smart Links*
|
||||||
|
|
||||||
|
Advanced users can explore ways to use regular expressions in Smart Links. For
|
||||||
|
example, one might want easy access to documentation for software features not
|
||||||
|
yet in production by using:
|
||||||
|
|
||||||
|
Foreign document data: document.description
|
||||||
|
Operator: is in regular expression (case insensitive)
|
||||||
|
Expression: r'test|experimental|development'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. |Setup tab| image:: /_static/setup_tab.png
|
.. |Setup tab| image:: /_static/setup_tab.png
|
||||||
:alt: Setup tab
|
:alt: Setup tab
|
||||||
|
|||||||
Reference in New Issue
Block a user