Table Of Content
  • What is MODx
  • What was changed
  • New API functions
     

 

What is MODx
MODx is a open source Content Management System and Application Framework. Initially inspired by Etomite 0.6., MODx is an ongoing project written by Raymond Irving and a core team of contributors at the MODx Project. MODx is distributed under the GPL license and is now run by a professional team of developers from all over the world. Visit http://www.modxcms.com/forums for more information.

MODx provides a powerful framework on which to deploy and secure your website and web applications. For example, it gives you a true system for registered web users and groups that is separate from the administration users. You can grant some web users access to one page and others access to another page. For content management, you can easily duplicate documents, folders (and all their children!), chunks and snippets. Most significantly, though is MODx's ability to empower you to quickly and easily create and maintain a rich and dynamic website like never before. Please see the Getting Started with MODx tutorial.




What was changed
--------------------------------

MODx TP3.3
* update snippet and plugin to use word wraping on textarea * update chunks, template to use FCK's RTE * BUG #84 - Fixed login captcha bypass (Mark) * NewsFeed now defaults to &makerss=1 * update NewsListing with news features (Ryan & Greg) * #msg6246 - update NewsFeed to support valid RSS2.0 tags (Mark) * add &linktext support to NewsListing snippet * add &tpl (chunk name) template support to NewsListing snippet. Fields - [+title+],[+summary+],[+author+],[+date+],[+linkurl+] * load gd2 dynamically when using captcha * fix cache path bug in cache_sync.class.processor.php * add &aliastitle to NewsPublisher * fix:#64 - makeURL is acting up when aliases are on and off. * prevent duplicate alias when importing html * fix bug when saving web user * remove .cgi files from manager\media\browser\mcpuk\connectors\php\Commands\helpers * fix TV checkbox delimiter bug * add &groups parameter to WebSignup Snippet * add Manager Interface Access to to manager user settings * add Manager Login Startup to manager user settings * update quickedit module * update fckeditor
MODx TP3.2
* add new snippets FileCabinet, NewsFeed, NewsPublisher and UserComments * fix module access bug * added QuickEdit front-end editor (thanks to adam) * update FCK RTE t 2.0 final (thanks to Jeff) * fix Port number displayed twice bug * fix Duplicate Document bug * fix bug in Resource browser and changed resource type from docs to files * fix bug - Date/Time MySQL data type doesn't work with Date Formatter widget (thanks to Adam) * move event log files to action/dynamic folder * added DB API String Escape Method called escape() * fix bug - Where clause in getDocumentChildren does not work (thanks to Olaf) * fix bug: Layout 3 option is not available * add support for Multiple installations by using session_name (thanks to Lohengrin) * fix duplicating module bug * add support for array values when saving settings (thsnks to Jeff) * fix bug. placeholders are now available to [!snippets!] * add OnParseDocument and OnLoadWebDocument * add IIS friendly urls to core * fix bug with installer reseting private pages * add array saving options to system settings * fix bug in datasetpager.inc.php * fix bug in IIS friendly paths
MODx TP3
* add notInMenuNode class to style.css and MODx/style.css
* update MenuBuilder to support hidden items. Also supports &normclass and &selclass
* add "show in menu" option to documents
* add view state support to ManagerAPI. e.g $modx->manager->initPageViewState(); $_PAGE['vs']['name'] = 'MODx';
* remove content manager parser. Use $modx->loadExtension("ManagerAPI");
* add gui enhancements to user listing.
* fix bug in template switch
* add module support to installer
* add zi's layout and add modify home page to use icons
* add custom content types to system setting. This will allow the use to add or remove content types from the system settings screen
* remove manager/dynamic/mutate_personal_prefs.dynamic.action.php
* add recursive parsing using $minParserPasses and $maxParserPasses options. Defaults to 10 passes
* enable cached documents to support web user security.
* modify parser to recreate the documentObject for cached documents.
* change variable $snippetParsePasses to $minParserPasses, $maxParserPasses and remove $nonCachedSnippetParsePasses from documentparser class.
* rename mergeHTMLSnippetsContent to mergeChunkContent
* retain modified values during postbacks for documents, users and web users
* remove 11.php and 4.php
* rename frame 5.php to scripter.php ans 12.php to topbar.php
* rename frames 8.php, 2.php and f3nav.php to l0mnu.php, l1mnu.php and l2mnu.php respectively - this is to make it easier to locate menus frames
* move user_management.dynamic.action.php and web_user_management.dynamic.action.php to static folder
* prevent users from changing user id when editing a manager or web user
* add OnManagerPageInit,OnWebPageInit event
* add content disposition to documents
* add custom content-types
* add blank template feature to document
* add site unavailable (offline) page
* remove manager/media/fckeditor (TP2 only)
* remove manager/media/tinymce
* fix friendly aliases and url with prefixs
* strip aliases of special characters (e.g. % ' $ * & !, etc)
* automatically check for duplicate document aliases
* have menu indexes at the same level increment automatically.
* add support "override" file feature. This will allow developers to override the support.inc.php by adding an override.support.inc.php file inside the manager/includes folder
* fix call-time pass-by-reference in datagrid.class.php
* move warnings to top section of welcome screen
* add option to installer to remove install folder using remove_installer.processor.php
* add Test connection to installer
* add menu title to document. this is a short title that can be used when building menus.
* add built-in META tag feature to insert meta tags if available
* add built-in keyword feature to document to insert keywords if available. Not longer need the GetKeywords snippet
* add built-in Track visits feature to document. This can be used to turn on or off page hits. Not longer need the DontLogPageHit snippet
* add new roles

new_plugin
edit_plugin
save_plugin
delete_plugin
new_module
edit_module
save_module
delete_module
exec_module
view_eventlog
delete_eventlog
manage_metatags
edit_doc_metatags
new_web_user
edit_web_user
save_web_user
delete_web_user
* fix security bug when one a document is assigned to two doc groups but only one of those doc groups is flagged as private
* added menutitle,privateweb,privatemgr and donthit fields to site_content. The private fields will be used to mark the document as private
* add grid and search features to user screens
* fix template warning bug
* change siteCache.idx to siteCache.idx.php
* add Manager session variables to separate web sessions variables from manager
mgrConfigCheck
mgrShortname
mgrFullname
mgrEmail
mgrValidated
mgrInternalKey
mgrFailedlogins
mgrLastlogin
mgrLogincount
mgrRole
* enable custom toolbar set for FCKEditor
* convert TinyMCE and FCKEditor plugins. FCKEditor be the default editor
* add new events OnSiteSettingsRender, OnFriendlyURLSettingsRender, OnUserSettingsRender, OnInterfaceSettingsRender, OnMiscSettingsRender, OnRichtextEditorRegister, OnRichtextEditorInit
* change TV Display type to widget
* allow installer to create a separate site id for new installations
* add OnPageUnauthorized and OnPageNotFound events
* add ini_set("track_errors","1") inside DocumentParser to tracks errors - e.g evalPlugin
* fix call-time pass-by-reference in bkmanager.static.action.php on line 295 and import_site.static.action.php on line 172
* add feature to snippets to allow the echo command to return data from the snippet
* remove my_phase.gif and logo.gif from media/images/icons
* remove site_addressbook table and associated roles - such features can now be implemented as a plugin
* add event viewer
* add OnBeforWebLogin, OnWebAuthentication, OnBeforeManagerLogin, OnManagerAuthentication
* allow datagrid column parameters (such as column names, column types, etc) to use the "||" separator when separating values. The "," separator is still supported.
* move tvscripts to script/bin
* add shared property feature to modules. this will allow a module to share or make public it's configuration settings to plugins and snippets. Plugins or Snippets can only connect to a module's shared property if it's assigned to the module.
* update weblogin to return to the url found in the &refurl agrument if it was called from an unauthorized page
* add &refurl agrument to url when calling the error and unauthorized pages. The &refurl agrument will contain the url of the page that was last access.
* add resource selector
* add module support with denpendency screens
* move actions/dynamic/resources.dynamic.action.php to actions/static/resources.static.action.php
* add OnBeforeModFormSave, OnModFormSave events
* add OnBeforeModFormDelete,OnModFormDelete events
* add OnModFormPrerender,OnModFormRender,
* add {DBASE} tag to @SELECT bindings
* fix security bug in Image Manager
* add check for $_SESSION["ImgMngrPathMode"] variable to image manager. This will allow the image manager to override the default IM setting to use the meadia/resicons/ folder when working with resource icons
* fix bug in header.inc.php and system alerts
* added new session variables. these will separate manager from web login
webValidated
webInternalKey
webShortname
webFullname
webEmail
webValid
webUser
webFailedlogins
webLastlogin
webnrlogins
webDocgroups
* fix bug in tree when using non html characters such as (")
* suppress set_time_limit errors when using safemode
* fix installer owverwrite bug.
* remove ieemu.js and mozillainnerhtml.js
* added support for Safari,Opera 7+, and fix bug in FireFox 1.0.3

* fix makeurl so that it will convert an id to an alias when friendly url is turned on
* redesign the installer
* remove module_management and exec_plugin files
* rename file.static.action.php to file.dynamic.action.php and moved to dynamic
* add system event listeners to plugins
* add System Events to MODx2: invokeEvent(evtName,params), addEventListener(evtName,snippetId)
* add isMemberOfWebGroup and getUserDocGroups

* add stay options to data entry forms
* modify htmlarea editor.js line 61 to use document.writeln()
* add allowed ip and allowed days user settings
* add field to user attributes dob, photo, gender, country, state, zip, phone, fax
* add isBackend function
* add isFrontend function
* rename changePassword to changeWebUserPassword to aviod confusion
* add getFullTableName function to parser
* add regClientScript function to parser - these scripts are loaded at the end of the page
* add regClientStartupScript function to parser - Registers Startup Client-side JavaScript - these scripts are loaded at inside the <head> tag
* rename etomiteCache.idx to siteCache.idx
* rename publishing files from etomitePublishing.idx to sitePublishing.idx
* rename cache files from .etoCache to .pageCache
* change IN_ETOMITE_SYSTEM to IN_MANAGER_MODE
* change IN_ETOMITE_PARSER to IN_PARSER_MODE
* add supportby.php file for developers to show and display their support website on the login page
* modify addNotice Modified to add the Powered By MODx link to pages that include the <div id=\"poweredbymodx\"></div> tag

* fix bug inside cache_sync_class.processor.php. line 66 change to $tmpPHP .= '$this->config[\''.$key.'\']'." = '".mysql_escape_string($value)."';\n";
* add new #declare syntax to weblogin template - this will allow you to declare your own section separators instead of <!--tpl_separator-->
* important change: please update youy signup email to use the new placeholders. This version will still honor the %s codes but future versions might not.
* add getWebUserInfo function
* add getManagerUserInfo function
* new weblogin template will standardize on the new placeholder variable format [+name+]
* modified weblogin to support password reminder

* MODx forced out of the Etomite Forums - March 19

* fix bug when editing document with HTMLArea TableOperations and ContextMenu

* fix import site from html bug
* fix cache bug with alias that uses '
* fix treeview to support safari
* fixed: after entering your password, pressing the enter key will submit the form (IE,MOZ)
* change: Turn off continue after editing by default. Check the checkbox to enable continue after editing (or sticky) mode
* fix bug when moving documents
* change: Import Site from HTML now requires the "new document" permission to be set. Changed from "edit document"
* fix: all manager pages are now accessible UNLESS restricted to a admin group, just like web-user pages.
* -- add rthrash's IE6 header fixes -- this fix causes problems with dynamic pages
* fix runsnippet bug
* fix snippet cache bug in etomite.class.inc.php in evalSnippets.
* full support for MySQL 3.23

MODx2 RC2

* update PageTrail snippet to support MODx2. Also added style and class property. See the properties tab
* add new Transition property to Marquee Control
* add new Transition property to Ticker Control
* add getTemplateVars($idname=array(),$fields="*") and getTemplateVarOutput($idnames) api functions
* Reduce Marquee Speed (1-20). Set Speed datatype to float. e.g. 1.5
* fix bug with htmlarea TV not saving when content is changed during document edits
* fix @ bindings for listbox and DropDown
* updated tutorials
* snippets tab in document edit only shows available snippet (in this release)

* fix getTemplateVar() bug. This function will accept either a TV id or name as returns a record
* fix url aliasing so that it now shows sub-folders with prefix and suffix added only to the document's alias. used Daath aliasing solution. (This feature is optional. See settings)
* add support for nested bindings
* set ViewPort's Width and Height property to string
* increase TV name length to 50 chars. I don't think you should use TV names greater than 50 chars. ALTER TABLE `{PREFIX}site_tmplvars` MODIFY COLUMN `name` VARCHAR(50) NOT NULL;
* check for numeric aliases before IDs

* fix web user acess to admin bug
* added navigator menu scrollbars

* add All Documents (Public) checkbox to access permissions
* add new words to language library
* add duplicate feature to snippets, chunks, templates and template variables
* fix htmlsnippet action index 77 and 78 in resources.dynamic.action.php,8.php, save_htmlsnippets.php. actionlist.php listed action 78 as edit but 77 was actually used in coding
* strip unsed [*variables*] from document
* add property feature to snippets : &name=desc;data_type;default_value
* fix parent-child assignment. Parent cannot become it's own child
* add theme support to the manager - See Configuration -> Miscellaneous settings -> Manager Theme
* fix PHP5 open_basedir bug in imagemanger/classes by using dirname(__FILE__)
* add rad14701 db functions and new getDocuments limit param
* Fix bug found in both web and manager user document access. A document is flagged as private whenever the document group that i belongs to is assigned or links to a user group. In other words if the document is assigned to a document group that is not yet linked to a user group then that document will be made public. Documents that are private to the manager users will not be private to web users if the document group is not assigned to a web user group and visa versa.
* fix treeview contextmenu in mozilla
* add "Import site from HTML" feature - see import_site.static.action.php
* improve treeview parsing time by 30-40% - noticeable on large sites > 100 documents
* add duplicate document feature - see "Duplicate" button in document_data.static.php
* fix bug when deleting web user with same id as logged in manager user
* modify tabpane.js to trigger external js functions when a tab is clicked
* add tabs to document editor. Page Settings and Preview Tabs with save and refresh button
* fix Page Title Ampersands bug - &amp; &trade; now works inside pagetitle
* update set_error_handler to support PHP 5
* modify WebLogin Template designs due to some problems with javascript's [] and the template engine. New template fields will be formatted as [.name.]
* add Placeholder Variables to etomite API. usage: [+name+]
* add getTemplateVar() function to etomite.class.inc.php
* add Template Variables (TV) - formerly called DocVars
* fix bug with webuser reset failed element in FireFox
* repair broken permissions issue with file manager at line 157 to chmod 0777 - ryan
* add a @ to line 3 of logout.processor.php to suppress "Session object destruction failed" error on the first session_destroy(). To reproduce this error login to the manager and click on the Site-> Launch Site menu. From the new window go to the manager. Go back to the previous window and then click logout. This would then generate a "Session object destruction failed"
* add getSnippetId() function to etomite.class.inc.php
* add Backup Manager - currently back ups selected db tables
* fix bug in ImageEditor.php at line 422 when detecting Gif editing functions
* enhance image selection inside HTMLArea's ImageManger (images.php file @ line 55)
* modify Inbox welcome message to become more visible.
* add db_admin, view_address, new_address, save_address, delet_address to user roles.
* fix security access bug found inside etomite file browser
* modify etomite getDocument() function to look for published and deleted documents. New function getDocument($id=0,$fields="*",$published=1, $deleted=0)
* add Delete folder option to File Browser
* add row-highting to file browser color
* add addslashes to cache_sync.class.processor.php line 52 to fix a minor path bug found in the etomitecache.idx file
* add unzip option to file manager to allow users to quickly unzip files and folders. The php_zip.dll file is required
* add max upload size to system settings
* add phpmailer.inc.php to includes/controls folder
* add datasetpager.php to includes/controls folder
* add New Folder link to Filemanager - supports recursive folder creation
* add download file option to filemanager and fixed preview bug
* Add user settings for backend users
* modify mutate_settings.dynamic.php to use realpath when getting path information
* use mapPath($this-getCachePath()) instead of dirname(__FILE__) in etomite class
* add mapPath function to etomite api
* add getManagerPath() to etomite api - this is useful if you need access to the manager folder from either the front-end or the backend.
* add getCachePath() to etomite api - this is useful if you need access to the cache foldder from either the front-end or the backend. The etomite class also uses this file.
* modify weblogin snippet
* add login home page to web user settings
* full support for Interactive Snippets - only admininstrator (RoleID 1) can interact with snippets at the moment
* added fix for Manage Files - "To Top Level" Incorrect path
* modified line 209:mutate_web_user.dynamic.action.php and line 233:mutate_user.dynamic.action.php to show select block checkbox if blockuntil date is set.
* fix javascript bug in logging.static.action.php. Something to do with '<i>(not set)</i>' being rendered as >i>(not set)</i>'
* added more sort options, Date created, Date Modified
* added Jeroen's Treeview State saver
* add paging to web users in user_management
* added support for <div id="etomitecredits"> and <div id="poweredbyetomite"> div tags to format output from the addNotice() API function
* fix bug with duplicate page listings due to two or more access groups
* purge document_groups table when purging documents
* adjust layout 2 left col to 250px in 1.php
* add Unauthorized Page option to Site settings:Enter the ID of the document you want to send users to if they request a secured or unauthorized document. NOTE: make sure the ID you have enter belongs to an existing document, and that it has been published and is publicly accessible!
* add reset template options in site settings
* add Turn Preview Window On/Off in Config. - from SniperX

MODx1

27-nov-2004
---------------------
+ added changePassword, stripTags and getDocGroups funcions to eto API
+ Check access permission error


26-nov-2004
---------------------
+ modify welcome.static.action.php and sysinfo.static.action.php to support active web users listing
+ fixed getParent to return correct parent of child document rather than the document itself
+ modify login.processor.php to store user document groups (as an array) inside $_SESSION['docgroups']
+ modify actionlist.inc.php
+ modify style.css to work with interact_snippet.php
+ modify save_snippet_processor.php to allow snippet to install other content
Here we can use if($etomite->insideManager()=='install') to check if the snippet is being added or updated
+ add getLoginUserID, getLoginUserName,insideManager and sendAlert to Etmoite API
+ add menu to create folder
+ add "create folder" menu to files 8.php, 2.php and 3.php


New Etomite API functions
----------------------------------------------------
 For newer APIs please see the "API Quick Reference Guide"

* mapPath
* getSnippetId
* getTemplateVar
* getTemplateVars
* getTemplateVarOutput
* getPlaceholder
* setPlaceholder
* getManagerPath
* getCachePath
* getLoginUserType - return web or manager
 
rad14701 DB APIs
* getIntTableRows
* putIntTableRow
* updIntTableRow
* getExtTableRows
* putExtTableRow
* updExtTableRow
* dbExtConnect
* getFormVars
 
* changePassword
* stripTags
* getDocGroups
* getLoginUserID
* getLoginUserName
* sendAlert
* insideManager - return true,'install' or 'interact' when inside manager

Here we can use if($etomite->insideManager()=='install') to check if the snippet is being added or updated

Or if($etomite->insideManager()=='interact') to check if the snippet is being executed in interactive mode.