kochm / wp-mendeley-plugin

WordPress plugin for showing data from Mendeley
7 stars 4 forks source link

=== Mendeley Plugin === Contributors: kochm Donate link: http://www.kooperationssysteme.de/produkte/wpmendeleyplugin/ Tags: bibliography, mendeley Requires at least: 4.0 Tested up to: 5.4 Stable tag: trunk

Mendeley Plugin for WordPress is a plugin for displaying information from the Mendeley "shared bibliography system" in WordPress blogs.

== Description ==

Mendeley Plugin for WordPress is a plugin for displaying information from the Mendeley "shared bibliography system" (www.mendeley.com) in WordPress blogs.

Using the public API from Mendeley, meta-information on documents in personal, public or shared collections is loaded and formatted as bibliographic entries.

The lists can be included in posts or pages using WordPress shortcodes:

[mendeley type="folders" id="xxx" groupby="xxx"]
[mendeley type="groups" id="xxx" groupby="xxx" style="cover,link"]
[mendeley type="groups" id="xxx" sortby="xxx" sortorder="xxx" style="short"]
[mendeley type="groups" id="xxx" groupby="xxx" filter="author=Michael Koch"]
[mendeley type="groups" id="xxx" groupby="xxx" filter="author=Michael Koch;type=journal"]
[mendeley type="groups" id="xxx" groupby="xxx" filter="type=book_section"]
[mendeley type="groups" id="xxx" groupby="xxx" csl="http://DOMAINNAME/csl/custom_style.csl" style="cover,link"]

- the attribute "id" is the Mendeley identifier of the group or folder - You can find this in Mendeley (Web or desktp app) - or use the function "Request Collection Ids" in the backend of the plugin - example value: 1f0508c0-8256-3ba7-b924-485e720245d5
- the attribute "type" can be set to "folders" or "groups" or "own"
- the attribute "groupby" is optional; possible values are all mendeley document attribute - see http://dev.mendeley.com/methods/#core-document-attributes - e.g. "authors", "year"
- the attribute "sortby" is optional; possible values are the same as for groupby
- the attributes "sortorder" and "grouporder" can have the values "asc" and "desc"
- sorting on the sort key is done before grouping on the group key if both are provided
- in "filter" one or more equal matches can be filtered for; if more than one filter rule is specified, than documents are displayed only when all filter rules match 
- possible attribute names to filter for are: type, title, year, author, editor, publisher, tag, keyword, abstract (when filtering for tag or keyword, a substring search is performed, so "blog" also matches "microblog")
- possible values for attribute type: ['journal' or 'book' or 'generic' or 'book_section' or 'conference_proceedings' or 'working_paper' or 'report' or 'web_page' or 'thesis' or 'magazine_article' or 'statute' or 'patent' or 'newspaper_article' or 'computer_program' or 'hearing' or 'television_broadcast' or 'encyclopedia_article' or 'case' or 'film' or 'bill']
- the attribute "style" controlls the output - you can specify several values separated by commas - possible values are: cover (add cover images), link (add links to full texts), short (use a short version - i.e. for widgets - not possible if csl formatting is used)
- the attribute "csl" is optional; the value must contain a valid URL with a .csl file
- the attribute "maxdocs" can be used to limit the number of documents displayed (e.g. maxdocs="10")

Changes in v1.0 (December 2014)

In v1.0 of the plugin there are some important changes due to support for the new Mendeley API.

The most important issue is that ids of groups and folders now have to be uuids - so, you have to look up the ids again - e.g. using the list feature in the settings page of the plugin in the Wordpress backend.

Additionally, some attribute names and possible values have been changed - so for example filters for type have to be changed.

We now also no longer support the outdated collection types "shared", "sharedcollections", "collections" - Only "groups" and "folders" are supported.

Known Problems

The current version of the plugin (v1.0) has one known problem with requesting and authorizing access tokens: When the activity is triggered in the backend using the Safari browser, the redirection to the Mendeley API site might not work (blank page) - If this is the case for you, please try with a different browser. For us Firefox has always worked.

Formatting

If you do not specify a CSL stylesheet, full entries are formatted the following way - so, the style can be tailored using CSS.

    <h2 class="wpmgrouptitle">grouptitle</h2>
    <p class="wpmref">
       <span class="wpmauthors">$authors</span>
       <span class="wpmyear">($year)</span>: 
       <span class="wpmtitle">$title</span>
       , <span class="wpmoutlet">$publication_outlet</span>
       <span class="wpmvolume">$volume</span><span class="wpmissue">($issue)</span>
       , <span class="wpmeditors">$editors</span>
       , <span class="wpmpages">$pages</span>
       , <span class="wpmpublisher">$city: $publisher</span>
       , <span class="wpmurl"><a target="_blank" href="https://github.com/kochm/wp-mendeley-plugin/blob/master/$url"><span class="wpmurl$urltxt">$urltxt<>/span</a></span>
    </p>

By adding some lines in your style sheets, you can format the output according to your needs. One example:

.wpmref {
}

.wpmauthors {
color: #666666;
}
.wpmyear:after{
content: ": ";
}
.wpmyear {
color: #666666;
}
.wpmtitle:before{
content: "\"";
}
.wpmtitle:after{
content: "\"";
}

.wpmurlpdf:before {
content: url("/image/pdf.gif");
}

.wpmoutlet,
.wpmvolume,
.wpmissue,
.wpmpages {
font-style: italic;
color: #336633;
}

Additionally, there are widgets to display the content of collections or shared collections in widget areas of a theme (list of titles with links only). The output in the widgets is formatted the following way:

    <ul class="wpmlist">
    <li class="wpmlistref">
    title (if url is defined, then this title is linked to url)
    </li>
    ...
    </ul>

The title will additionally be equipped with a div-tag including the full reference in the title attribute - which will in most browsers display the full reference when you are hoovering over the title with the mouse pointer.

You can use the plugin in non widgetized themes, just try

echo $mendeleyPlugin->formatWidget("groups", 763, 10, array ('author' => 'Michael Koch'));

For using the plugin you have to obtain an API key from Mendeley, enter this Customer Key in the configuration section of the plugin, and authorize the API. To do so the following steps have to be taken:

  1. install plugin
  2. activate plugin
  3. get Customer Key and Customer Secret from http://dev.mendeley.com/
  4. enter the information in the wp-mendeley tab in the backend
  5. press "Get Access Key" on the wp-mendeley configuration page
  6. then you are redirected to the Mendeley web site to authorize the request, and redirected back to the blog (see Known Problems when this step does not work)
  7. now you can use shortcodes in your pages and blogs

Details presentation

The document lists in the widgets only include the title of the document and a link. Per default the link is either the url attribute of the document - or if not set a link to the doi attribute in the document if set.

To present more details for those list entries without leaving the web site beginning in Version 0.8.1 you have two options:

1) if enabled in the configuration, the list items will include mouseover tooltips showing the full reference - this can be constructed in a simple default way or using CSL stylesheets.

2) if a details url is set in the configuration, all list items are linked to $DETAILSURL?docid=XXXX You can create a details page on your Wordpress installation in the following way:

In addition to all attributes returned from Mendeley (abstract, authors, doi, editors, translators, categories, identifiers, issue, keywords, mendeley_url, pages, producers, publication_outlet, published_in, tags, title, type, url, uuid, volume, year - also see the Mendeley API documentation at http://dev.mendeley.com/methods/#core-document-attributes) you can use the special attribute "full_reference" to insert a full reference. The attribute can be annotated with a CSL url to do the formatting according to a CSL stylesheet: {full_reference,http://site/url.csl}

When caching PDF files is enabled, you additionally can use "filelink" which will produce the word PDF with a link to the PDF file - and the special attribute "coverimage" which will produce an image tag with a link to an image of the first page of the PDF. To switch off generating file links for single documents (e.g. because of copyright issues), you can add the tag "nofilelink" to the tags of the document in Mendeley.

JSON data source

In version 0.7 we added the functionality to create a JSON data source

For example the page http://www.kooperationssysteme.de/pub/cscm/ uses such a data source in an interactive JavaScript application to search the references.

The following line is used in the Exhibit/Simile application:

In the directory "examples" you find a file bibexhibit.tpl.php that can be placed in your Wordpress theme directory. Then you can create a new page with the Template BibExhibit that will show the application with the data source. Do not forget to edit the file - specify the id of the Mendeley group you want to access in the link-line.

CSL integration

When you specify a CSL (citation style language) stylesheet via the csl parameter, the formatting specified in the stylesheet is used to generate details.

A .csl file must be a XML formatted file, containing the style tags defined by the citation Style language. For further information of CSL you should visit the citationstyles.org website. If you want to use an existing CSL style, you should browse the zotero style repository on zotero.org/styles. For creating your own CSL file, you can either write an XML-file or use a visual editor e.g. editor.citationstyles.org/visualEditor/.

We include some CSL files in the sub directory "style" - So, an easy way to try the functionality could be to link to one of those files - e.g. by an URL like the following: http://YOURDOMAIN/wp-content/plugins/mendeleyplugin/style/apa.csl

For formatting entries via CLS, we are relying on the CiteProc.php formatting engine by Ron Jerome, which usually is included in the plugins distribution. (See https://bitbucket.org/rjerome/citeproc-php for the original project.)

The library includes locale-files for adapting the output to different languages. We have only included the DE and EN locales here. Please load additional locales from https://bitbucket.org/rjerome/citeproc-php/src/ and add them in the locale folder in the plugin folder.

Source Code Documentation

The source code of the plugin is more or less documented. Here some information about the overall structure:

The main function of the plugin is "formatCollection". This function is called from different places in order to create a formatted list of references. In this function

The following Mendeley API calls are used

Thanks ...

Thanks for various contributions to Rhodri Cusack, Constantin Orasan and Matthias Budde.

Thanks for contributing to the CSL integration in V0.8 to Philipp Plagemann, Claudia Armbruster and Martin Wandtke. Thanks for contributing to the details display in V0.8.1 to Björn Trappe.

== Installation ==

  1. Upload archive contents to the `/wp-content/plugins/` directory
  2. Activate the plugin through the 'Plugins' menu in WordPress
  3. Obtain Client Id and Client Secret from Mendeley (see http://dev.mendeley.com/myapps.html) - When asked for a callback/redirection URI, specify the URL provided on the plugin settings page of the plugin (Go to "settings" - "WP Mendeley" and scroll down to the heading "API Keys" and enter the URI specified there.)
  4. Configure your settings (especially enter Client Id and Client Secret obtained from Mendeley), and press "Request Access Token"

The plugin assumes that curl support is available in your PHP engine (extensions/modules curl and php_curl installed). If you see error messages like "Call to undefined function curl_init()" most likely curl support is not enabled. You can check by creating a .php file with a phpinfo(); command in it. Browse to this and search/look for curl on the resulting page. If support is enabled, there will be a listing for it.

For the cover images functionality, you need to have imagick and php support for imagick support installed on your system. If you receive "Imagick not authorized" exceptions, please check the policy.xml in the Imagick installation.

There are some reported problems with other plugins that are using the OAuth PHP library like tweetblender: If the other plugin does not check if the library is already loaded (as ours does), initializing the other plugins after wp_mendeley will result in an error message. In this case deactivate the other plugin.

== Upgrade Notice ==

To upgrade the plugin, just deactivate the plugin, overwrite the plugin directory, and reactivate it - or use the automatic upgrade mechanism in WordPress.

== Frequently Asked Questions ==

What PHP extensions do I need on my Web server to make the plugin work?

Only need the CURL (and the php_curl) extension seems to be missing on some server systems. Everything else is standard. Use phpinfo(); to check what extensions are available on your server.

How can I contribute to the development of the plugin?

The plugin is hosted on GitHub: https://github.com/kochm/wp-mendeley-plugin - You may check out the newest code from there - and ask for being added as a developer to the repository to upload bug fixes and other additions.

== Screenshots ==

== Change log ==

= 1.3.2 (04.06.2021) =

= 1.3.1 (16.04.2020) =

= 1.3.0 (13.04.2020) =

= 1.2.1 (27.10.2018) =

= 1.2.0 (01.07.2018) =

= 1.1.20 (16.11.2017) =

= 1.1.19 (09.08.2017) =

= 1.1.18 (07.08.2017) =

= 1.1.17 (22.04.2017) =

= 1.1.16 (10.03.2017) =

= 1.1.15 (22.02.2017) =

= 1.1.14 (13.02.2017) =

= 1.1.13 (26.01.2017) =

= 1.1.12 (16.12.2016) =

= 1.1.11 (16.12.2016) =

= 1.1.10 (24.11.2016) =

= 1.1.9 (28.07.2016) =

= 1.1.8 (02.02.2016) =

= 1.1.7 (18.01.2016) =

= 1.1.6 (15.01.2016) =

= 1.1.5 (23.12.2015) =

= 1.1.4 (13.10.2015) =

= 1.1.3 (09.10.2015) =

= 1.1.2 (11.08.2015) =

= 1.1.1 (02.07.2015) =

= 1.1.0 (24.04.2015) =

= 1.0.9 (20.03.2015) =

= 1.0.8 (15.02.2015) =

= 1.0.7 (09.02.2015) =

= 1.0.6 (29.01.2015) =

= 1.0.5 (21.01.2015) =

= 1.0.4 (21.01.2015) =

= 1.0.3 (16.01.2015) =

= 1.0.2 (08.01.2015) =

= 1.0.1 (03.01.2015) =

= 1.0.0 (10.12.2014) =

= 0.9.6 (25.6.2014) =

= 0.9.5 (16.6.2014) =

= 0.9.4 (21.2.2014) =

= 0.9.3 (18.2.2014) =

= 0.9.2 (18.2.2014) =

= 0.9.1 (15.2.2014) =

= 0.9 (12.2.2014) =

= 0.8.8 (30.01.2014) =

= 0.8.7 (29.01.2014) =

= 0.8.6 (29.01.2014) =

= 0.8.5 (29.01.2014) =

= 0.8.4 =

= 0.8.3 =

= 0.8.2 =

= 0.8.1 =

= 0.8 =

= 0.7.8 =

= 0.7.7 =

= 0.7.6 =

= 0.7.5 =

= 0.7.4 =

= 0.7.3 =

= 0.7.2 =

= 0.7.1 =

= 0.7 =

= 0.6.7 =

= 0.6.6 =

= 0.6.5 =

= 0.6.4 =

= 0.6.3 =

= 0.6.2 =

= 0.6.1 =

= 0.6 =

= 0.5.4 =

= 0.5.3 =

= 0.5.2 =

= 0.5.1 =

= 0.5 =

= 0.4.1 =

= 0.4 =

= 0.3.1 (11.08.2010) =

= 0.3.0 (11.08.2010) =

= 0.2.0 =

= 0.1.0 =