| = 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: |
| |
| |