OK, hello this is the new version of the ejournal module for Drupal 4.7 - I have fixed few minor bugs (and introduced a few new ones ;-) but most important is the fact that the module now works under the new form api, is truly multi-journal and allows you to write your own plugins (so, I hope that you, guys out there, will write something useful for others to improve functionality of the e-journal. So far ejournal works mainly for non-commercial journals, and I am very happy about this, but now you should have a chance to introduce also the features crucial for the commercial sphere - with the help of plugins - i.e. subscription. Let me know how far you get and share if you have something to share)

anaway, here are the most important changes. I would like to kindly ask you to test them, not everything was tested (I simply don't have time, and of course, the new ejournal module was not yet applied to production environment)


FORM API
 - forms were rewritten, I do not expect any problems here.

ROLES
 - in the old module (for Drupal 4.6) we could have only general roles, even though there were roles specific to one particular journal, they never worked fully. To say it simply, you must have used "chief editor" role, you could not use "ejournal-1 chied editor" role. Doing this, your chief editor could command all the e-journals that you have. Now it should be different. You can use the general "chief editor" and the specific "ejournal-{jid} chief editor" role, the same applies for editors, proofreaders, authors. I know, this feature is something that not everybody wants, so you probably lacked nothing, but what if?

So, if you have only one e-journal on your site and you use the global permissions, you "cannot" encounter any problems. But if you have users with journal-specific roles, you should definitely do some testing. Please let me know.

PLUGINS
 - I would say this is the most important improvement. It follows the idea of flexinode, there you can make your own "fields" and flexinode will accomodate them into flexi-documents (it is extensible, so people contributed features that were not offered by the core flexinode).

Plugins must be placed into the same folder as ejournal.module
Plugins must be named as "ejournal_" + "plugin_name" + ".inc" for example "ejournal_shortly.inc"

Ejournal will load the plugins during startup, so do not leave unnecessary plugins in the folder, it will influence the performance.

Ejournal will take care for the ejournal articles, but let you change them after, or even more, ejournal module will let your plugins to behave as normal modules (this is the case of the provided ejournal_shortly.inc, which registers one of the nodetypes as a shortly messages and then collect these messaeges and display them along side with the published issues - so, the plugins can do almost everything)

Plugins are called through hooks
 - most of the time it is "ejournal_invoke_all" hook: first, e-journal does its job, and then calls other plugins to add something to already processed article, i.e. to add fields into the administrative forms or to the body of the article, to insert/update/delete permissions and so on
 - in one case only, ejournal calls "ejournal_invoke" hook (this happens inside nodeapi function of the ejournal)

It goes like this:
 if we are going to work with e-journal nodetype (i.e. the e-journal article), then everything proceeds as usual and the plugins are called from "ejournal_invoke_all" hook
 but if we are not working with e-journal nodetype, ejournal module will call other plugins to ask them if they want to do something with this node. If they answer yes, then ejournal will call only those plugins with "ejournal_invoke" hook (then ejournal exits). 
This way, even the nodes which do not belong to ejournal can be "viewed" as part of the e-journal


Ok, that is it, please do test and provide feedback, the ejournal.module is very complex and we have a few new features there.




Here you have some ideas of what can be accomplished by plugins:
 - shortly messages, news which should be displayed in the issue but changes very often [see ejournal_shortly.inc]
 - persistent identifier URN [finished, I must converted it to the plugin]
 - subscribtion management
 - OAI PMH (Open Archive metadata generation/harvesting)
 - RSS feeds
 - remote authentication/management of issues
