blob: 913860cf97a3bcdc91b79327e7c4443a5d378a3d [file] [log] [blame]
= Features
* <b>Browser Based HTML Editing</b>: edit existing pages or create new pages using a browser
* <b>Edit/Info link</b>: to edit a page, simply click on the 'Edit/Info' link at the top of each page
* <b>Linking pages</b>: links to pages can be created or edited using dialog boxes
* <b>WYSIWYG or HTML editing</b>: choice of two HTML editors: 1) TinyMCE (open-source) or 2) PinEdit (commercial) and TinyMCE
* <b>Wikis</b>: support for multiple Wikis with the possibility of sharing content between Wikis
* <b>Revision Control</b>: all changes to pages are tracked, revisions can be retrieved, differences analyzed, who change what and when
* <b>Access Control</b>: simple authorization mechanism based on two groups: administrators and users
* <b>File attachments</b>: upload files (for instance templates, examples)
* <b>Search</b>: full text search
* <b>Managing users:</b> web based user registration and change of password
* <b>Difference Analysis</b>: compare successive baseline processes (created with EPF): what is new, removed, changed, equal.
== Browser Based HTML Editing
Users can edit pages by checking out a page. This creates a working copy (version) of the page. Changes can be saved and are only visible to other users after checkin.
* Implementation: Checkout
* Testing: CheckoutTest, VersionTest, PagesControllerTest.test01_checkout
Users can checkout to another Wiki.
* Implementation: PagesController.checkout, Version.new_basedonversion
* Testing: VersionTest.test03_checkout_to_other_wiki, PagesControllerTest.test10_checkout_to_another_site
Users can create new pages based using predefined templates or any other page
* Implementation: PagesController.new, Page, Checkout, Version.new_basedonversion
* Testing: PagesControllerTest.test03_new_page_using_template, PagesControllerTest.test04_new_page_using_page
From the editor users have the option of can save, checkin, preview or undo checkout
* Implementation: PagesController.saveorcheckin, PagesController.undocheckout
* Testing: PagesControllerTest.test05_save, PagesControllerTest.test06_checkin, PagesControllerTest.test07_checkin_new_pages, PagesControllerTest.test08_undocheckout
User can rollback changes with a checkout and checkin of a previous version
* Implementation: PagesController.checkout, PagesControlller.saveorcheckin
* Testing: PagesControllerTest.test09_rollback
The central admin can delete a page with its associated records
* Implementation: PagesController.destroy
== Edit/Info link
Wikis (enhanced EPF sites) display an Edit/Info link. The Edit/Info link can be expanded. The collapsed link uses icons links to draw attention to important information.
* Implementation: ToolbarController.expand_toggle
* Testing: ToolbarControllerTest
== Linking pages
Users can link pages by copy past URL in a dialog box
* Implementation: feature of HTML editor (TinyMCE or PinEdit)
* Testing: tbd
Users can link pages by selecting pages from a list
* Implementation: PagesController.filelist (TODO)
* Testing:
== WYSIWYG or HTML editing
Choice of two 1) TinyMCE or 2 PinEdit (commercial) and TinyMCE is controlled by environment variable ENV['EPFWIKI_EDITOR']
* Implementation: PagesController.edithtml, Version.html
* Testing: PagesControllerTest.test02_edithtml
== Wikis
Administrators can upload a zip file containing a published website created with EPF (or RMC)
* Implementation: Site.unzip_upload, SitesController.upload
* Testing: SiteTest.test01_unzip_upload,
Administrators can define a baseline process with a EPF published site
* Implementation: Site.new_site, Site.scan4content, SitesController.new, SitesController.scan4content,
* Testing: SiteTest.test02_new_baseline_process, SitesControllerTest.test03_new
Administrators can create a Wiki based on a baseline process (published site from EPF)
* Implementation: Site.new_wiki, Site.wikify, SitesController.new_wiki,
* Testing: SiteTest.test04_new_wiki, SiteTest.test04_wikify, SitesControllerTest.test04_new_wiki, SitesControllerTest.test05_new_wiki_post,
Administrators can update a Wiki with a baseline process (published site from EPF)
* Implementation: Site.validate_on_create, Site.update_wiki
* Testing: SiteTest.test05_update_wiki, SitesControllerTest.test08_update_wiki
For performance reasons there is an option of using scheduled jobs to perform actual wikifying.
* Implementation: SitesController.update_wiki_now, SitesController.wikify_now
* Testing: SitesControllerTest.test06_wikify_now, SitesControllerTest.test07_new_wiki_job_daily,
It is possible to share content between difference Wikis
* Implementation: PagesController.checkout
* Testing: PagesControllerTest.test10_checkout_to_another_site
== Revision Control
Users can access version information of a version and add/update a version note
* Implementation: VersionsController.show, VersionsController.edit
* Testing: VersionsControllerTest.test01_show, VersionsControllerTest.test02_edit
Admins (process engineers) can assign reviewer, mark versions reviewed ('done')
* Implementation: VersionsController.review, VersionsController.toggle_done, ApplicationHelper.link_to_reviewer, ApplicationHelper.link_to_done_toggle
* Testing: VersionsControllerTest.test03_review, VersionsControllerTest.test05_toggle_done
Users can compare versions of a page
* Implementation: VersionsController.compare, Version.markdown
* Testing: VersionsControllerTest.test07_compare
== Access Control
After installation the first unauthenticated (!) user can create the central admin account
* Implementation: User, Application.authenticate, 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 to a user document or user images directory
* Implementation: PagesController.upload
* Testing: tbd
== Search (TODO)
Users can do a full text search for pages and comments
Implementation: SearchController
Admins can index content
* Implementation: OtherController.run_indexer
* Testing:
Content can be indexed using a scheduled job
* Implementation: feature of search_generator plugin
== 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:
* Testing: LoginControllerTest.test02_sign_up_with_pw, LoginControllerTest.test03_sign_up_without_pw, LoginControllerTest.test04_lost_password, SetupAndSignInTest.test02_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.test02_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
== Difference Analysis
The administrator can generate difference analysis data of changes in successive baseline processes
* Implementation: DifferenceAnalysis, DifferenceAnalysisItem, DifferenceAnalysesController
* Testing: DifferenceAnalysisTest
Page information shows changes of the page between successive baseline processes (DifferenceAnalyisItem)
* Implementation:
* Testing:
== Other
'Central admin' can download log files
* Implementation: OtherController.download_logfile
* Testing:
'Central admin' can migrate database if scripts are newer than the installed database
* Implementation: OtherController.migrate
* Testing:
'Central admin' can do an online update of the application (update or rollback)
* Implementation: OtherController.online_update
* Testing:
'Central admin' can upload a new application version
* Implementation: OtherController.upload_release
* Testing: