blob: 602befa5eb43f01785f7312a46f26ac0567a8c72 [file] [log] [blame]
= Features
* <b>Portal</b>
* <b>Installation and Configuration</b>
* <b>Browser Based WYSIWYG HTML Editing</b>
* <b>Templates</b>
* <b>Linking Pages</b>
* <b>Wikis</b>
* <b>Revision Control</b>
* <b>Harvesting</b>
* <b>Access Control</b>
* <b>File attachments</b>
* <b>Search</b>
* <b>Managing users:</b>
* <b>RSS</b>
* <b>Email</b>
== Portal
The portal is the easy entry point for new and returning users, which allows anonymous access. The Home page
shows most recent discussions and changes. There is a list of Wikis and Users, an About Page, a Toolbox, Hall of Fame
and the archives can be accessed.
* Implementation: PortalController.home, PortalController.archives, PortalController.wikis, PortalController.users
* Testing: PortalControllerTest
== Installation and Configuration
The first time the application is accessed the user is redirected to create the central admin
* Implementation: PortalController.home
* Testing: PortalControllerTest.test_home, LoginControllerTest.test_signup_central_admin
Several texts can be customized by the central admin: Welcome, About, Login, Help, Privacy Policy, Terms of Use
* Implementation: AdminMessage, UsersController.adminmessage, UsersController.account
* Testing:
== Browser Based WYSIWYG HTML Editing
WYSIWYG or HTML Editing provided by third party tool TinyMCE. Currently only TinyMCE is supported.
* Implementation: PagesController.checkout, PagesController.edit
* Testing: PagesControllerTest
== Templates
New pages can be created using templates. The templates are provided by a special Wiki with the title 'Templates'.
This Wiki is automatically created when the first user account (the administrator) is created.
The 'Templates' Wiki is an ordinary Wiki except for the fact that the title ('Templates') gives
special status to the pages that the pages of this Wiki appear in the new page dialog.
* Implementation: LoginController.new_cadmin, PagesController.new, WikiPage.new_using_template
* Testing: UserTest.test_new_cadmin, PortalControllerTest.test_home, PagesControllerTest.test_checkout_edithtml_save_checkin_new, PageTest.test_new_page_using_template
== Linking Pages
Users can link pages by copy past URL in a dialog box
* Implementation: feature of HTML editor (TinyMCE or PinEdit)
* Testing: tbd
== Wikis
Administrators can upload a zip file containing a published website created with EPF (or RMC)
* Implementation: Site.unzip_upload, SitesController.new
* Testing: SiteTest.test_upload
Administrators can define a baseline process with a EPF published site
* Implementation: Site, BaselineProcess, SitesController.new
* Testing: SiteTest.test_new_baseline_process, SitesControllerTest.test_new
Administrators can create a Wiki based on a baseline process (published site from EPF)
* Implementation: Site, Wiki, Wiki.wikify, SitesController.new_wiki,
* Testing: SiteTest.test_new_wiki, SitesControllerTest.test_new_wiki, SitesControllerTest.test_new_wiki_job_daily, SitesControllerTest.test_new_wiki_post
Administrators can update a Wiki with a baseline process (published site from EPF)
* Implementation: Wiki.update_wiki, SitesController.update
* Testing: SiteTest.test_update_wiki, SitesControllerTest.test_update_wiki
For performance reasons there is an option of using scheduled jobs to perform actual wikifying.
* Implementation: SitesController.update_now, SitesController.update_cancel
* Testing: SitesControllerTest.test_wikify_now, SitesControllerTest.test_new_wiki_job_daily,
Administrator can make a Wiki obsolete
* Implementation: SitesController.obsolete
* Testing: SitesControllerTest.test_obsolete
== Revision Control
Checkout a page
* Implementation: Checkout
* Testing: CheckoutTest.test_new, CheckoutTest.test_checkin, PagesControllerTest.test_checkout_edithtml_save_checkin_new
Create a new page using a (predefined) template or any other page
* Implementation: PagesController.new, WikiPage.new_using_template
* Testing: PagesControllerTest.test_checkout_edithtml_save_checkin_new, PageTest.test_new_page_using_template
Save a checked out page
* Implementation: PagesController.save
* Testing: PagesControllerTest.test_checkout_edithtml_save_checkin_new
Check in a checked out page
* Implementation: PagesController.checkin
* Testing: PagesControllerTest.test_checkout_edithtml_save_checkin_new
Preview a checked out page
* Implementation: PagesController.preview
* Testing: TBD
Undo a checkout
* Implementation: PagesController.undocheckout
* Testing: PagesControllerTest.test_undocheckout
Rollback a change
* Implementation: PagesController.rollback
* Testing: PagesControllerTest.test_rollback
The central admin can delete a page with its associated records
* Implementation: PagesController.destroy
* Testing: TBD
Users can access version information of a version and add/update a version note
* Implementation: VersionsController.show, VersionsController.note
* Testing: VersionsControllerTest.test_show_and_diff
Admins (process engineers) can assign reviewer, mark versions reviewed ('done')
* Implementation: ReviewController
* Testing: TBD
Users can compare versions of a page
* Implementation: VersionsController.diff, Version.xhtmldiffpage
* Testing: VersionsControllerTest.test_show_and_diff
== Harvesting
Contributions can be reviewed and marked 'done'
* Implementation: DaText(Comment, Feedback), Version, Upload, ReviewController.toggle_done, ReviewController.assign, ReviewController.note
* Testing: TBD
Contributors receive email notification when changes, comments, uploads are harvested (are marked 'done') and when a Wiki gets updated with a new baseline
* Implementation: ReviewController.assign, ReviewController.note, ReviewController.toggle_done, ApplicationHelper.link_to_done_toggle
* Testing: UpdateTest.test_reviewed_notification_email
== Access Control
After installation the first unauthenticated (!) user can create the central admin account
* Implementation: User, LoginController.login, LoginController.new_cadmin
* Testing: LoginControllerSetupTest.test01_signup_central_admin, LoginControllerTest.test01_signup_central_admin
The central admin account can grant and revoke admin privileges
* Implementation: UsersController.admin
* Testing:
The central admin can assign someone else as central admin
* Implementation: UsersController.cadmin, User.cadmin
* Testing:
Admins can grant admin privileges
* Implementation: UsersController.admin
* Testing:
== File attachments
Users can upload documents and images
* Implementation: UploadsController, Upload
* Testing: UploadsControllerTest
== Managing users
Users can sign up with a valid email account and by providing and confirming a password (accounts need to be confirmed via a link sent via email)
* Implementation: LoginController
* Testing: LoginControllerTest.test_sign_up_with_pw, LoginControllerTest.test_sign_up_without_pw, LoginControllerTest.test_lost_password, SetupAndSignInTest.test_sign_up
User can sign up with a valid email account, a password is generated and sent via email
* Implementation: User.validate_on_create, LoginController, UsersController
* Testing: UserTest, SetupAndSignInTest.test_sign_up
Valid email accounts can be restriced to certain domains
* Implementation: User.validate, LoginController.sign_up, ENV['EPFWIKI_DOMAINS']
* Testing: SetupAndSignInTest.test02_sign_up
== Email
User are auto subscribed for receiving email
* Testing: CheckoutTest.test_notification_subscription, PageTest.test_new_page_using_template
* Implementation: Comment.after_create, Checkout.checkin, WikiPage.new_using_template
Users are send email about changes
* Implementation: PagesController.checkin, PagesController.discussion, Update.do_update
* Testing: UserTest.test_reviewed_notification_email, UpdateTest.test_notification, PagesControllerTest.test_discussion
User can subscribe and unsubscribe for receiving email
* Implementation: UsersController.toggle_change_report_notification, UsersController.notification
* Testing: TBD