This patch adds some missing newlines and trims multiple final newlines
into a single newline.
According to POSIX, a line is a sequence of zero or more non-' <newline>'
characters plus a terminating '<newline>' character. [1] Files should
normally have at least one final newline character.
C89 [2] and later standards [3] mention a final newline:
"A source file that is not empty shall end in a new-line character,
which shall not be immediately preceded by a backslash character."
Although it is not mandatory for all files to have a final newline
fixed, a more consistent and homogeneous approach brings less of commit
differences issues and a better development experience in certain text
editors and IDEs.
[1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206
[2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2
[3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
* upgrade extJs to 3.2.1
* Remove "Pending commit" module in favore to "work in progress" module
* Remove "Pending patch" module in favore to "patches for review" module
* Add a field to ask for an email when we logging in. It allow users to contact others.
* Add a progress bar to allow user indicate the progression of his work
* Anonymous user are no longer "anonymous", as a cookie is set on connexion to "authenticate" him.
* Anonymous user can save a file as an authenticated user. No longer only use the "patch" button.
* New rules when a file is edited. When the file is edited by :
- an anonymous user : authenticated user can always edit it. When he does, the owner change and anonymous user can't edit it again.
- an authenticated user : anonymous and others authenticated users can't edit it. The first user must release it (eithers commit his change, or remove the change he does). Administrator can edit it. This can allow to override change made by an authenticated user. Administrators are defined per project in configuration file.
* We no longer allow a user to commit files changed by others users. An authenticated user can only commit his files.
Bugs :
- fix bug #51767
- fix bug that display internal file (.new) in some modules
- change file() class beaviours
* adopted mod_rewrite, reflect changes to URLs
* util.js - XHR will now always fire requset to server with mod_rewrite defined rule
* login.js - reformat codes, cvs2svn adoption changes
This patch restructure the doc-editor php's architecture.
But, cvs2svn is not yet covered and thus some functions related to repository log, update, commit are not functioning.
class.php is no longer in use but kept for reference
modification/fix:
* Update ToolsError to use DBConnection singleton
* Update ToolsCheckDoc to use DBConnection singleton
* Bug fix in Repository Tree for detecting Language of File
* ErrorFileGrid is now updated right after a file was check for error
* added lang in front of file path under MarkDeleteTask.js
* fixed CommitLogPrompt failed to delete commit log
php re-factoring:
* JsonResponseBuilder (utility class) created for constructing json responses
- success (ExtJsController.getSuccess)
- failure (ExtJsController.getFailure)
- response (ExtJsController.getResponse)
* DBConnection created for manipulating database connection
- singleton
- query (mysqli::query)
- insert_id (mysqli::insert_id)
- real_escape_string (mysqli::real_escape_string)
* AccountManager created for manipulating user account
- singleton
- updateLastConnect
- isLogged
- login
- register
- updateConf
- eraseData
- email
* CvsClient created for cvs i/o
- singleton
- passwdEncode
- authenticate
- checkout
- update
- log
- diff
- commit
* RepositoryFetcher created for fetching phpdoc-all repository
- singleton
- getLastUpdate
- getModifies (get all modified files in pending commit)
- getModifiesById (get modified files in pending commit queue by id)
- getPendingUpdate
- getPendingReview
- getNotInEn
- getPendingPatch
- getPendingCommit
- getFilesByExtension
- getFileByXmlID
- getFileByKeyword (perform searching on file-path)
- getFilesByDirectory
* RepositoryManager created for managing phpdoc-all repository
- singleton
- checkoutRepository (exec cvs checkout, called in install/firstRun.php)
- cleanUp
- updateRepository (exec cvs update)
- checkbuild (exec php configure.php)
- addPendingCommit
- delPendingCommit
- addPendingPatch
- addPendingDelete
- commitChanges
- clearLocalChange
- setLastUpdate
- postPatchAccept
- postPatchReject
- updateFileInfo
- updateTranslatorInfo
- updateNotInEN
- applyRevCheck
* File created for modeling php-doc files
- isModified
- read (read original/modified file content, depends on passed param & file state)
- save
- parseAttribute (class.php - revParseAttrString)
- getEncoding
- getInfo
- rawDiff (exec 'diff -uN file file.ext' with stdout output)
- htmlDiff (exec php-file-diff with html output)
- cvsDiff (exec cvs diff with html output)
* TranslatorStatistic created for computing statistic about translator
- singleton
- getTranslators (get info about all translators for lang)
- getUptodateFileCount (count up-to-date file contributed by every translator)
- getOldFileCount (count out-dated file contributed by every translator)
- getCriticalFileCount (count critical file contributed by every translator)
- getSummary (summary of the statistic about translators)
* TranslationStatistic created for computing statistic about translation
- singleton
- getFileCount (count all file)
- getTransFileCount (count translated files for lang)
- getOldFileCount (count out-dated files for lang)
- getCriticalFileCount (count critical files for lang)
- getNoTransFileCount (count not translated files for lang)
- getMissedFileCount (count not translated files for lang TODO... merge with getNoTransFileCount)
- getNoTagFileCount (count files with no revcheck tag for lang)
- getSummary (summary of the statistic about translation)
* LogManager created for handling all logging activities
- singleton
- getCommitLog
- addCommitLog
- saveOutputLog
- readOutputLog
- saveBuildLogStatus
- getBuildLogStatus
* Utility (a namespace) created for different utility task
- debug (*NOTE: under global namespace)
* apply singleton pattern to all unique component, singleton component can be obtained by ui.component.XXX.getInstance()
* file panel exclude 'home' & 'end' key as modifying keys
* file panel string concat using string.join() instead of operator +
main.js cleanup:
* migrated phpDoc.saveLangFile into ui/component/FilePanel.js
* migrated repositoryContextMenu into ui/component/RepositoryTree.js
* sendEmail is now wrapped in ui/component/EmailPrompt.js
* WinCheckBuild is now wrapped in ui/component/CheckBuildPrompt and ui/task/CheckBuildTask.js
* WinUpdate is now wrapped in ui/component/SystemUpdatePrompt and ui/task/SystemUpdateTask
* WinCommit is now wrapped in ui/component/CommitPrompt and ui/task/CVSCommitTask.js;
CommitLog management is now in ui/component/CommitLogPrompt
* fix CodeMirror cannot display the end of vertical scroll [bug in last commit]
* FilePendingOpen queue is now storing { fpath, fname } object instead of plain array
* created static reference for singleton components, dependency on phpDoc.xxx are removed and use ui.component.xxx.instance instead
* created static reference for PingTask, dependency on phpDoc.TaskPing is removed
* remove .run() in task/*.js
* fix openning multiple files will stop when some files already opened
main.js cleanup:
* load configuration task is wrapped in ui/task/LoadConfigTask.js
* menuMarkupEN & menuMarkupLANG is now wrapped in ui/component/FilePanel.js
* newTabCheckDoc, newTabBuildStatus, winConf, winAbout is now wrapped in ui/component/MainMenu.js
* getFile is now wrapped in ui/task/GetFileTask.js
* confUpdate is now wrapped in ui/task/UpdateConfTask.js
* winDiff moved into CVSLogGrid.js
* newTabMailing moved into LocalMailGrid.js
* newTabBugs moved into BugsGrid.js
* addToPendingPatch is now wrapped in ui/task/SavePatchTask.js
* addToPeningCommit moved into PendingCommitGrid.js
* TODO update
- [Bug report] ClearLocalChange in class.php would attempt to remove a unexisting file thus gives invalid json response
- added 3 items for follow-up actions of this commit
* reloacate PingTask from js/ui to js/ui/task
* yui-compression script included js/ui/task/*.js
* util.log is allowed to accept arbitrary length of argments
* fix invalid argment passing in Ext.ux.CodeMirror initialize event
* js/ui/component/CheckDoc renames config-args
* fix "Refresh All Data" and "Check Build" failure due to http-timeout (bug of XHR abstraction.. pending decision of keeping XHR)
main.js cleanup:
* FilesNeedUpdateGrid is now wrapped in ui/component/StaleFileGrid.js
- staleFileGrid handle introduced to phpDoc-namespace
* TreeAllFile is now wrapped in ui/component/RepositoryTree.js
* vc-diff panel is now wrapped in ui/component/ViewVCDiff.js
* exec-diff panel is now wrapped in ui/component/ExecDiff.js
* main-menu is now wrapped in ui/component/MainMenu.js
* save-patch prompt is now wrapped in ui/component/PatchPrompt.js
* Introduced _saveEnFile, _saveLangFile, _savePatch for refactored FilesNeedUpdateGrid/TreeAllFiles
- for backward compatibility, saveEnFile, saveLangFile, savePatch remain in main.js
- check file when save is now wrapped in ui/task/CheckFileTask.js
- save en file is now wrapped in ui/task/SaveENFileTask.js
- save lang file is now wrapped in ui/task/SaveLangFile.js
- will merge save en/lang file sooner or later
* Introduced repositoryContextMenu to phpDoc-namespace
- will be relocated into ui/component/RepositoryTree.js sooner or later
* Introduced reuseable CVSLogGrid component in ui/component/CVSLogGrid.js
* Introduced reuseable FilePanel component in ui/component/FilePanel.js
* Corresponding changes due to adoption of FilePanel
- AF-tab remains AF-FileID, AF-panel and sub-components are now named AF-ALL-###-FileID
- FNU-tab remains FNU-FileID, FNU-panel and sub-components are now either FNU-EN-###-FileID or FNU-LANG-###-FileID
- relocate attributes (isModifiedEn & isModifiedLang) of FNU-tab to FNU-ENG-File-###.isModified and FNU-LANG-File-###.isModified
- FilePanel alone is able to sync-scroll with anothor FilePanel via certain configuration