This section of the wiki aims to document what we have learnt about the Open Journal System (OJS), which is used as the technological platform to publish the journal "Proceedings of the MEi:CogSci Conference".

Why? OJS is free and open source software (FOSS) platform reliably updated by its developing team. Sometimes it's not straightforwardly intuitive, but this is why we are gathering the knowledge here, so we can quickly find what you need if one of us knows winking face 

This is a living document and work-in-progress documentation potted plant .

Backend - OJS Database

Automatizable tasks and schedule

Of what is needed and when, and the data fields we were using last year tracking and web scrapping the interface.

P (Priority) 1=very important, an amazing time saver and error tracker, 2= it would be great, 3= it would be nice but we can do it manually.

 

Phase

P

Tasks

Data fields in our checking tables

Query URL

01.05

Author's Registration

3

For a given set of email addresses (or names): Check who is not registered, who is registered with a misspelled or non-university email address, who has started a submission and if the submission type (poster vs. talk) is correct. Send reminders and correct issues.

Other tasks before the 01.05:

Author, email address, submission ID (& link), submission title, if the submission abstract text field is filled, and if they actually pressed the button to submit).

Reminder: We would only be interested in the new submissions (i.e. between 01.05.2024-01.07.2024).

List of the Submissions (similar to the tab "Submission" in the Excel)

Whiteboard#Checkwhois(not)registered

10.05

Submission of Abstracts

2

+who sent the submission.

15.05

Assignation of reviewers

1

Co-create a table of who reviews who given a set of rules (e.g. 1st year students from Vienna get as a teacher reviewer Elisabeth Zimmermann + 2nd year students Elisabet Delgado Mas + although group submissions are submitted by every member, a student can't review itself or someone from its own group etc.).

Check all submissions have been assigned at least 3 or more reviewers (2 random students and 1 university designated teacher), with the exception of the group submissions.

Check each author has been assigned to review two other authors.

submission ID (& link), submission title, author, number_assigned_reviewers, reviewer1_name, reviewer2_name, reviewer3_name (instead of name it can be an email address or user ID that allows to trace them), reviewer4_name (4th reviewer is not always applicable, for exceptions)


Note: We can count on a separate table author, times_assigned_as_reviewer, by counting how many times do they appear as reviewers in the table above.


21.05

Revision of reviews

1

Check which reviewers have sent their reviews, to (1) send reminders to those reviewers who have not submitted them and (2) assign 4th reviewers if needed be. Revise several times.


Extra: Check if teachers have submitted all their reviews.



+ r1_status, r2_status, r3_status, r4_status (submitted or not), r1_details, r2_details, r3_details, r4_details (“Recommendation: Revisions Required”, ”Recommendation: Accept Submission”) 


R=reviewer


List similar to the tab "Data_review" in the Excel)


24.05

Approved & forwarded reviews

1

Count how many reviews have been submitted overall and how many are left.


31.05

Submission of Final Abstracts

2

Check all abstracts are submitted and uniformize their content, assign them to an issue.



The earlier the better

Conference Preparation (Schedule, badges)

3

To update the schedule: Extract list of submissions by type (poster vs. talk) and authors.

To make the badges: Extract list of submission

Submission link, submission title, author surname

Author name & surname, affiliation

how to find titles after publication.sql

Deadlines and author guidelines for the Proceedings of the MEi:CogSci Conference.

How To Connect 

Configure access to the database for the first time (requires EDV / IT expertise and permissions).

Software

VPN (if working from home office, BigIP & FreeOTP), tunnel (PuTTY) and database administration tool (DBeaver).

The software between parentheses has been tested for compatibility with our university laptops, but alternatives are possible.

Steps

  1. Connect to VPN if you are not in the university: BigIP + FreeOTP to verify your identity.
  2. Open tunnel connection: PuTTY (bottom right button "Open" if you already established a session on your first time).
    1. It will open a black terminal window. That's alright, don't close it until you finish and save your work.
  3. Open database management and SQL editor: DBeaver ("SQL" button on the upper left side).
    1. You are ready to type or upload (F3) your queries partying face 

MySQL

We use MySQL to communicate or retrieve data from our database. Check our sub-page MySQL Basics.

Tables

Useful notes to navigate the chaos smiling face with smiling eyes For all those tables used in scripts and related queries.

Columns are formatted in italics. Crucial columns are highlighted in bold italics.

author_settings

Nested structure: columns setting_name and setting_value, linked by author_id.

  • setting_name = "familyName", "givenName", "affiliation", "country", "orcid", "url" or "biography"

  • setting_value = correspondent values (e.g. "Delgado Mas", "Elisabet", "University of Vienna", "AT")

authors

Links author_id with:

email

publication_id

user_group_id = Related to permissions. 2 (evelyn.gasiorek), 3 (elisabeth.zimmermann, a11934638 / lena mueller), 14 (most users), 36 (edv.philosophie, einradritter / udo schimanofsky), 48 (evelyn.gasiorek, lena.mueller-naendrup, elisabet.delgado.mas, tutors).

seq = order the author appears on the paper

A single user / author / standard student has two rows in this table, and two different author_id values! One row is for their first year publication and the other for their second. 

  • Example: Elisabet Delgado Mas (a12013592 add unet.univie.ac.at) has one row in the authors table with author_id = 270 and publication_id = 147 ("EMG reproducibility using neuronavigated TMS"), and another row with author_id = 525 and publication_id = 328 ("Human-AI Interaction").

Queries:

-- Check main table related to authors.

SELECT * FROM ojs.author_settings

-- Note that the table author_settings ≠ table authors, where you can find the email. 

SELECT * FROM ojs.authors

-- Note table authors ≠ table Authors.

SELECT * FROM ojs.Authors

-- Given one of the user's author_id, get email.

SELECT email FROM ojs.authors x WHERE author_id = 256


publication_settings 

Nested structure: columns setting_name and setting_value, linked by publication_id (≠submission_id) .

  • setting_name = "abstract", "title", "prefix", "subtitle", "categoryIds"

  • setting_value = correspondent values (e.g. "Delgado Mas", "Elisabet", "University of Vienna", "AT")

publications

Links publication_id with everything else, including:

submission_id = XXX (e.g.368)

last_modified = YYYY-MM-DD HH:MM:SS.000

date_published = YYYY-MM-DD

seq

doi_id

last_modified can be used in the query as a filter for the submissions of the current year (e.g. AND p.last_modified >= '2024-03-03 00:00:00';).

submission_id can be used to create the links to the backend and the frontend of each submission:

Can we see if the doi are being automatically assigned in the doi_id? Does it link to the tables doi_settings and dois?


issue_settings

Nested structure: columns setting_name and setting_value, linked by issue_id.

  • setting_name = "description", "title"

  • setting_value = "", " Proceedings of the MEi:CogSci Conference"

issues 

Links issue_id with everything else related to an issue, including:

year = 2022 for issue_id = 8. 2023 for issue_id = 13.

date_published, last_modified =  YYYY-MM-DD HH:MM:SS.000

journal_id = The number of our OJS journal within the university, 3.

volume  = 16 for issue_id = 8. 17 for issue_id = 13.

published, access-status, show-volume, show_number, show_year, show_title = 1.

url_path, doi_id = NULL


users 

Links user_id with everything else related to a user, including:

username = elisabet

password = (encripted) $2y$16$m2Wp95TAKo9Fg8V7hCoCEuC/3Z8zCDC/q8f2Py6C3Yl1LxC2kGnIG   

email = a000000000@unet.univie.ac.at

date_registered = YYYY-MM-DD HH:MM:SS.000    

date_last_login = YYYY-MM-DD HH:MM:SS.000

user_settings

Similar to author_settings. Nested structure: columns setting_name and setting_value, linked by user_id.

  • setting_name = "familyName", "givenName", "affiliation" + "preferredPublicName", "signature", "orcid"

  • setting_value = correspondent values (e.g. "Delgado Mas", "Elisabet", "University of Vienna", "", "", "")

sections

(journal_id = 3, ours)
3
4
7
8
(journal_id = 4, who knows)
5
6

(SECTION_id inside of submissions > publication_id)

seq

It means order.
Values: 1,2,3,4
Section_ids: 7, 8, 3, 4
Corresponding to: Workshops, plenary talks, talks, posters.

Scripts 

Linked List

Repository of scripts (ready to upload to a database manager, and tested)

Scripts Documentation

Single line comments start with --

File-paths-given-issue.sql

File-paths-given-issue.sql

f.path from (select publication_id from publication_settings 

where setting_name = 'issueID' and setting_value = 13)

--We have published . 
Issue 2023
where setting_name = 'issueID' and setting_value = 13
Issue 2022
where setting_name = 'issueID' and setting_value = 8

get-authors-and-submissions.sql

Given a list of emails, returns a table with all the submissions by those authors, the user_id, givenName, familyName, email, university, publication_id, submission_id, title (of the abstract), abstract, last_modified (date), and a quick access URL to the public view and the dashboard view of that submission.

get-authors-email-family_name-given_name.sql

Smaller script: Returns the email, family name and given name of an author, which are values found at different tables of the database (email in users and names in user_settings).

get-author-id-by-email.sql

Smaller script: Returns the author_id, given name, family name, email, university, publication_id, submission_id and country, given an email address.

get-urls_submission-id.sql

Smaller script: Generates the URLs for quick access of a given submission both in the public face of the website (or its preview) and the admin dashboard.

get-submissions-date-range.sql

Gets submissions within a date range and their data. 

This is important as a constrain because until the submissions have been reviewed and approved, we cannot filter them by issue (merely because they have not yet been assigned to an issue, which is a manual process done one by one).


On the making

Scripts we have not yet managed to finish, if any.

  • 05-01_authors_registration.sql
    • We would like it to track: Author, email address, submission ID (& link), submission title, if the submission abstract text field is filled, and if they actually pressed the button to submit).

Quick useful queries

-- Given submission_id, provide the backend and frontend links of its submission. Change 368 for your n.

SELECT p.submission_id,

p.publication_id,

CONCAT('https://journals.phl.univie.ac.at/meicogsci/workflow/access/', p.submission_id) as 'url_backend',

CONCAT('https://journals.phl.univie.ac.at/meicogsci/article/view/', p.submission_id) as 'url_frontend'

FROM publications p

WHERE p.submission_id = 368

-- WHERE p.publication_id = 328

-- Given one of the user's author_id, show their email and both publications. Change 270 for your n.

SELECT a.email, a.author_id, a.publication_id

FROM authors a

WHERE email = (SELECT email FROM authors WHERE author_id = "270")


-- Given one of the user's author_id, show their data (familyName, givenName, affiliation, country) for both publications. Change 270 for your n.

SELECT DISTINCT a.email, a.author_id, a.publication_id, ase.setting_value

FROM authors a, author_settings ase

JOIN (SELECT author_id, setting_value FROM author_settings WHERE author_id = "270") as aaf

ON ase.author_id = aaf.author_id

WHERE email = (SELECT email FROM authors WHERE author_id = "270")


-- Check which users have the permission most tutors had.

SELECT * FROM authors WHERE user_group_id = 36;


Annexes

Tables used

These are the tables in our database.

  1. Most of these might be empty or merely not used. 
  2. We highlight in bold the ones we have been using in successful queries.
  3. We highlight in italics the ones in which we have found data that we have not yet managed to explain, but which may become relevant.
  • Authors
  • access_keys
  • announcement_settings
  • announcement_type_settings
  • announcement_types
  • announcements
  • auth_sources
  • author_settings
  • authors
  • books_for_review
  • books_for_review_authors
  • books_for_review_settings
  • captchas
  • categories
  • category_settings
  • citation_settings
  • citations
  • comments
  • completed_payments
  • controlled_vocab_entries
  • controlled_vocab_entry_settings
  • controlled_vocabs
  • custom_issue_orders
  • custom_section_orders
  • data_object_tombstone_oai_set_objects
  • data_object_tombstone_settings
  • data_object_tombstones
  •  dataverse_files
  •  dataverse_studies
  •  edit_assignments
  •  edit_decisions
  •  email_log
  •  email_log_users  
  •  email_templates
  •  email_templates_default
  •  email_templates_default_data
  •  external_feeds 
  •  external_feed_settings 
  •  email_templates_settings 
  •  event_log 
  •  event_log_settings 
  •  failed_jobs
  •  files 
  •  filter_groups 
  •  filter_settings 
  •  filters 
  •  genre_settings 
  •  genres 
  •  group_memberships 
  •  group_settings 
  •  groups 
  •  institutional_subscription_ip 
  •  institutional_subscriptions 
  •  issue_files 
  •  issue_galley_settings 
  •  issue_galleys 
  •  issue_settings 
  •  issues 
  •  item_views 
  •  jobs 
  •  journal_settings 
  •  journals 
  •  library_file_settings 
  •  library_files 
  •  metadata_description_settings 
  •  metadata_descriptions 
  •  metrics 
  •  mutex 
  •  navigation_menu_item_assignment_settings 
  • navigation_menu_item_assignments
  •  navigation_menu_item_settings 
  •  navigation_menu_items 
  •  navigation_menus 
  •  notes 
  •  notification_mail_list 
  •  notification_settings 
  •  notification_subscription_settings 
  •  notifications 
  •  oai_resumption_tokens 
  •  object_for_review_assignments 
  •  object_for_review_persons 
  •  object_for_review_settings 
  •  objects_for_review 
  •  paypal_transactions 
  •  pln_deposit_objects 
  •  pln_deposits 
  •  plugin_settings 
  •  processes 
  •  publication_categories 
  •  publication_galley_settings 
  •  publication_galleys 
  •  publication_settings 
  •  publications 
  •  queries 
  •  query_participants 
  •  queued_payments 
  •  referral_settings 
  •  referrals 
  •  review_assignments 
  •  review_files 
  •  review_form_element_settings
  •  referral_settings 
  •  referrals 
  •  review_assignments 
  • review_files
  • review_form_element_settings
  •  review_form_elements           
  •  review_form_responses                    
  •  review_form_settings 
  •  review_forms 
  •  review_object_metadata 
  •  review_object_metadata_settings 
  •  review_object_type_settings 
  •  review_object_types 
  •  review_round_files 
  •  review_rounds 
  •  roles 
  •  rt_contexts 
  •  rt_searches 
  •  rt_versions 
  •  scheduled_tasks 
  •  section_settings 
  •  sections 
  •  sessions 
  •  site 
  •  site_settings 
  •  stage_assignments 
  •  static_page_settings 
  •  static_pages 
  •  subeditor_submission_group 
  •  submission_artwork_files 
  •  submission_comments 
  •  submission_file_revisions 
  •  submission_file_settings 
  •  submission_files 
  •  submission_search_keyword_list 
  •  submission_search_object_keywords
  •  submission_search_objects 
  •  submission_settings 
  •  submission_supplementary_files 
  •  submission_tombstones 
  •  submission_xml_galleys 
  •  submissions 
  •  subscription_type_settings 
  •  subscription_types 
  •  subscriptions 
  •  temporary_files 
  •  theses 
  •  usage_stats_temporary_records 
  •  user_group_settings 
  •  user_group_stage 
  •  user_groups 
  •  user_interests 
  •  user_settings 
  •  user_user_groups 
  •  users 


Backend - OJS Exports

We have prepared a sample of exports here, protected by password. 

The folders in which they are contained include descriptions of the items selected for export and the encountered problems.

At this point, the main issue with OJS exports is that this mainly focus on published articles already assigned to an issue, a step undertaken only after the review phase.

They have been obtained through:

TOOLS

Exporting XML tools, basically.
https://journals.phl.univie.ac.at/meicogsci/management/tools

    Crossref XML Export Plugin: Export article metadata in Crossref XML format.
    DataCite Export/Registration Plugin: Export or register issue, article, galley and supplementary file metadata in DataCite format.
    PubMed XML Export Plugin: Export article metadata in PubMed XML format for indexing in MEDLINE.
    DOAJ Export Plugin: Export Journal for DOAJ.
    Native XML Plugin: Import and export articles and issues in OJS's native XML format.
    Users XML Plugin: Import and export users

STATISTICS: REPORTS

Exporting CSV tools, basically, of mostly quantitative data.
https://journals.phl.univie.ac.at/meicogsci/stats/reports

    Subscriptions Report
    Articles Report
    COUNTER Reports
    Review Report


Backend - Web scrapping 

Link to the code, documentation and example of result.

Software

We used Python to code a script to web scrap the frontend interface of an admin user with Selenium and Chromedriver.

Therefore, to use this you need to install Python, Selenium and Chromedriver.

Execute

To execute the script, open two terminal windows.

  • In one, execute Chromedriver.
    • Command (example):
      /Users/edm/Documents/python/drivers/chromedriver

  • In the other, execute python and your code.
    • Two commands (example):
      cd "/Users/edm/SYNC/CogSci/Assignatures/2023/Work UniWien/Code"

      python PyOJS.py


You have to adapt this to the folder paths in your computer. 

FOLDERPATH_WHERE_YOU_INSTALLED_PYTHON/python/drivers/chromedriver

cd FOLDERPATH_WHERE_YOU_HAVE_SAVED_PyOJS.py

Result

The result of the script is the document check_table.CSV.

The following steps to make it readable [in a Mac] and to avoid problems with the inherently varied characters of our international students' names (Slovak, Slovene and worldwide characters beyond the English alphabet) are:

  • Open Microsoft Excel.
  • Create a new empty document. 
    File > New.
  • Import CSV. 
    File (upper bar) > Import > (Select document). 
  • Configure import in the pop-up window:
    • Select "Delimited" + Select for File Origin: "Unicode (UTF-8)". Next.
    • Select "Semicolon". Next.
    • Paste the content in the first cell of the document.
      THE DOC IS READY.

To copy paste in Google Spreadsheets or other cloud spreadsheet:


Voilà, congratulations (Zwinkern)


Frontend - OJS Website & Dashboard

View of the homepage of the website (left) and the dashboard (right) of an advanced user. The changes in the website have to be done and saved from the dashboard. Find below a written tutorial on where to find what.

Homepage of the websiteDashboard of the user


Inside of the dashboard, you can navigate the options through the left side menu, whose items will be in UPPERCASE titles in the following sections.

If you have admin permissions, this is what you should see:

SETTINGS: JOURNAL

> TAB: MASTHEAD

Change:
-the name or title of the Journal
-the tag [ProcMEiCogSci], which appears in the beginning of the emails sent through OJS.
-the journal URL.
-the journal ISSN.
-the text "Journal Summary", which appears in the homepage.
-the text "Editorial Team", which appears in the page About > Editorial Team 
-the text "About the Journal", which appears in the page About > About the Journal

> TAB: CONTACT

Change the journal contact data (currently set to meicogsci@).

> TAB: SECTIONS

Currently established sections: Plenary Talks, Workshops, Poster Abstracts, Talk Abstracts, Editorial (prologue).

For each section, you can: 

-Change its names.
-Set word limit.
-Pre-define a default review forms (MUST DO*).
If you unfold the options of each section (clic little triangle on its left and "Edit").

*Eli's note for the 2025 team:
Before May, create a new review form for 2025 and assign it as the default to the Talk and Poster sections. You will save yourselves the task of assigning it manually for every reviewer for every submission, about 360 times ;) This new review form has to include the minimal textual changes required and agreed in the Coordination-Consortium meeting June 2024 (you may ask @Lisl or check the notes stored in the MEi:CogSci Consortium Google Drive). 

> TAB: CATEGORIES

Eli's note for the 2025 team:
We don't know what they do. But have a look at their possibilities on "how to order articles in this category: Title (A-Z)" to see if we could avoid the task or reordering all the articles manually just before publishing the issue.
For more info: https://docs.pkp.sfu.ca/learning-ojs/en/journal-setup#categories

SETTINGS: WEBSITE

In this section there are many many tabs, sometimes inside of other tabs. This is why we will structure this section on the wiki not by tabs but by where you can find each feature, so it's most helpful slightly smiling face 

Design

Change some of the design of the homepage, how the whole website looks and how to customize its design:

WhatWhere
-Font. 
SETTINGS: WEBSITE > APPEARANCE > THEME: "Typography".
-Logo.SETTINGS: WEBSITE > APPEARANCE > SETUP: "Logo".
-Background color for the header (MEi:CogSci color). SETTINGS: WEBSITE > APPEARANCE > THEME: "Colour".
-Content of the header. (It's just the Logo)
-Content of the footer. 
SETTINGS: WEBSITE > APPEARANCE > SETUP: "Page Footer".

-Favicon (customized to MEi:CogSci, tiny image in the Internet browser tab)

...

...

-Journal Style Sheet (which we have not tried, but may allow CSS?)

> APPEARANCE >> ADVANCES
















Menus & URLs

Change the structure/architecture/navigation (what page is inside of which and its URL) of the website:

-Main menu ("Primary Navigation Menu").

SETTINGS: WEBSITE (on the left bar) > SETUP (upper tab) > NAVIGATION (left-central tab)

-Secondary menu ("User Navigation Menu").













-Right Sidebar elements in the homepage (Language Toggle Block: "Deutsch, English", Information Block "For Readers, For Authors, For Librarians", Developed By Block "Open Journal Systems" and a Subscription Block that actually doesn't appear, right?)SETTINGS: WEBSITE (on the left bar) > APPEARANCE (upper tab) > SETUP (left-central tab inside) > Scroll to the bottom.


Eli's note:

Beware there are two sections called "Setup". In the picture we are in SETTINGS: WEBSITE (left bar) > APPEARANCE (tab in the upper part) > SETUP (tab inside appearance, on the lef-central part) > "Logo".

> SETUP

> PLUGINS

SETTINGS: WORKFLOW

It's where you find most of the stuff related to author guidelines and the review phase, but also about submission settings (e.g. confirmation statement component).

*Eli's note for the 2025 team, most interesting:

Review forms are in SETTINGS: WORKFLOW > REVIEW (upper tab) > REVIEW FORMS (left tab). Once a review form has been used to review by any user, it cannot be edited anymore! 


There may be a way to set automatic reminders in SETTINGS: WORKFLOW > REVIEW (upper tab) > SETUP (left tab)

  • Send an email reminder if a reviewer has not responded to a review request this many days after the response due date.
  • Send an email reminder if a reviewer has not submitted a recommendation within this many days after the review's due date.


We can set and change friendlier and more customized templates for emails and reminders that can be sent automatically within the system: https://journals.phl.univie.ac.at/meicogsci/management/settings/manageEmails


SETTINGS: USERS & ROLES

You can browse specific users in the first upper tab, and see the role possibilities in the second.


Permissions are divided in four categories or stages: 

Submission

Review

Copyediting

Production

All roles are a combination of these categories or stages (which for our purposes, is not most helpful).

There are currently 17 roles, and any given user can have multiple roles assigned. Each role has an associated permission level.

Permission levels are:

Journal Manager
Section Editor

Assistant

Author
Reviewer
Reader
Subscription Manager

SUBMISSIONS

It's where you can see and do everything related to the particular submissions of the author abstracts and reviews.


ISSUES

Mostly relevant just before the last step for publishing the issue (June), to rearrange what you see here:

WhatWhere (in the dashboard)

Edit the configuration of an issue (name, date of publication, volume - formal number).

Add a cover image and some text about this issue.

ISSUES > Back Issues or Future Issues tab, click on your issue > "Issue Data" tab

Order the abstracts within each section in the right order.

In 2024, by author surname, manually once an issue is created and after all submissions have been assigned.

ISSUES > Back Issues or Future Issues tab, click on your issue > "Table of Contents" tab > upper right button "Order"

Order the sections.

In 2024, the order set is:

  • Editorial 
  • Plenary Talks
  • Workshops
  • Poster Abstracts
  • Talk Abstracts
ISSUES > Back Issues or Future Issues tab, click on your issue > "Table of Contents" tab > upper right button "Order"


Eli's note for team 2025:

It's worth noticing the actual issue ID in the URL is not the same as the formal number "Identification Volume". E.g. 

And the ID in the URL changes every time the issue is unpublished and published again (be wary of this).


ANNOUNCEMENTS

Add or modify the announcements / posts that appear in the website.


STATISTICS

About the number of users, editorial activity etc. Mostly exportable in CSV format (and from there to Excel).

Interestingly:
-Most visited articles
https://journals.phl.univie.ac.at/meicogsci/stats/publications/publications 





Activity Log

16.07.2024

Elisabet, @Elisabeth, @Evelyn, @Odin

  • Meeting and sharing content with the Bratislava team (@Martin & @Kika).

15.07.2024

Elisabet Delgado Mas Evelyn Fischer

  • Backend documentation on OJS web scrapping, and link to scripts.
  • Create queries that:
    • Given submission_id, provides the backend and frontend links of its submission.
    • Given one of the user's author_id, show their email and both publications.
    • Given one of the user's author_id, show their data (familyName, givenName, affiliation, country) for both publications.



  • Keine Stichwörter