Work involving Joomla-cms. It comes with a template (has 4 themes) and a custom-made recommender engine.
Check our website at: https://iwant2study.org/taskmeisterx/index.php/
Our Recommender Engine uses both Content-Based Filtering and Collaborative Filtering. With a plugin settings field, the scale/effectiveness of the filtering can also be adjusted to your joomla's liking.
e.g. recommendPersonalArticles() Line 548 - 805
https://github.com/FremontTeng/Task-Meister/blob/master/plugins/tm_recommender/tm_recommender.php
Content-based filtering methods are based on a description of the item and a profile of the user's preferences.
In our engine, we take into account of the user's preferences. This includes their liked/disliked/deployed pages and their preferences on individal tags. This helps to better filter out the type of similar/related articles that they may like to better to cater to individual user. Our search engine also further cater to particular keywords to narrow down the filtering.
e.g recommendTrendingArticles() Line 404 - 547
https://github.com/FremontTeng/Task-Meister/blob/master/plugins/tm_recommender/tm_recommender.php
Collaborative filtering is based on the assumption that people who agreed in the past will agree in the future, and that they will like similar kinds of items as they liked in the past.
Our recommender takes into account of the overall likes and dislikes of an article, the activites made on each article and how recent the activities are, to further weigh the recommendation of the article. It also takes into account for what your class's may prefer: for example a student can also see articles that their teacher recommends/likes as well
Components
- Components are the largest and most complex extensions of them all; they can be seen as mini-applications. Our Review Component is located here.
Modules
- Modules are more lightweight and flexible extensions used for page rendering. Most of the other display units such as the thumbs up buttons or the articles recommendations are located here.
Plugins
- Plugins are more advanced extensions and are in essence event handlers. This is where our Recommendation Engine runs its functions.
Templates
- A template is basically the design of the Joomla! powered website. Essentially the Look and Feel. Currently we are using our custom made Taskmeister template that comes with 4 themes.
SCSS file to edit the CSS of the taskmeister template:
- Simply upload the template folder here to the directory: /path_to_joomla/templates/ - where /path_to_joomla/ is the location of your Joomla! installation on the server. (Using any FTP software)
- Then go into extension manager and click on Discover in the sub menu.
- Click the checkbox to the left of your template and click on the button 'Install'.
- Zip the relevant module/plugin/template folder
- Drag the zipped folder into the upload package tab
- Ensure installation success message is shown
See the website: https://docs.joomla.org/J3.x:Installing_a_template
Custom Tables: (Required for most modules)
- https://joomlaboat.com/custom-tables
- Version used 1.9.4
For the Recommender Engine to work, please set up the four custom tables with the following fields as shown in the bottom screenshots. It is recommended to use the exact table and field names (so that you won't need to modify the ones in the modules).
Shown above are the four custom tables used for the whole recommendation engine.
Shown above are the following fields for the Article Stats Table.
- articleid (Refers to the id of the article)
- title (Refers to the title of the article)
- tags (Refers to the tags of the article)
- userchoice (Refers to the users' opinions of the article)
- deployed (Refers to the list of users that deployed the article)
- totallikes (Refers to the total likes of the article)
- totaldislikes (Refers to the total dislikes of the article)
- totaldeployed (Refers to the total number of users that deployed the article)
Shown above are the following fields for the User Stats Table.
- userid (Refers to the id of the user)
- name (Refers to the name of the user)
- email (Refers to the email of the user)
- userpreference (Refers to the list of tags that the user prefer, against or may try)
- pageliked (Refers to the list of pages that the user likes)
- pagedisliked (Refers to the list of pages that the user dislikes)
- pagedeployed (Refers to the list of pages that the user deployed)
Shown above are the following fields for the Teacher Stats Table.
- teacherid (Refers to the id of the teacher)
- code (Refers to the teacher's unique code/id)
- students (Refers to the list of students that the teacher has)
- weightagelikes (Refers to the teacher's modifier for their class's likes)
- weightagedeployment (Refers to the teacher's modifier for their class's deployed articles)
- weightagetouched (Refers to the teacher's modifier for their class's touched articles)
- weightagepreferred (Refers to the teacher's modifier for their class's preferred tags)
- weightagenotpreferred (Refers to the teacher's modifier for their class's against tags)
- weightagemaytry (Refers to the teacher's modifier for their class's may try tags)
- preferencelink (Unused)
- bonustags (Refers to the teacher's modifier for their class to include additional tag search)
Shown above are the following fields for the Recommendation Stats Table.
- date (Refers to the date of the action)
- aid (Refers to the article id)
- uid (Refers to the user id)
- action (Refers to the user's action on the particular article)
To see more information about the individual parts of the repository, please read the readmes in their respective folders.