Changelog

Kajona V 3.3.1 "suricate" FINAL

3378 - 3397

module_navigation

  • NEW: external-link of a navigation point replaces indexpath or webpath with the matching constant in order to remain flexible


module_system

  • NEW: class_session::login_user() in order to set a specific user as the current active one. may get useful if you register a user in the portal and want the new user to be logged in instantly.
  • NEW: class_element_portal::onLoadFromCache(). A hook method being called if an elements output is loaded from cache instead of being regenerated. Overwrite this method if you want to perform special actions when loading an element from cache, e.g. increasing a hits-counter. make sure to return a matching boolean value since the entry may get invalid otherwise.
  • NEW: getLinkAdmin creates a tooltip even if there's no image passed. requires the text and the title of the link to be different.
  • NEW: class_date::getTimeInOldStyle() converts the current date-object to an old-fashioned int-timestamp (seconds since 1970)
  • BUG: mysql and mysqli drivers add indexes by sequence instead of using a single line. avoids problems on some mysql configurations
  • BUG: update-installers removes old systemtasks being replaced by the new cache

Kajona V 3.3.0.1 "suricate" (3.3.1 BETA)

Revisions 3280 - 3377

element_form

  • NEW: element-form creates samplecontent during installation
  • NEW: added dropdown-template to element-form. the old value in the constructor is used as a fallback for already existing forms. (#548)

element_imagelightbox

  • NEW: element-imagelightbox is discontinued and dropped from the official release. Instead the element-image and the gallery are now shipped with the corresponding imagelightbox-templates. In addition, the lightbox-scripts are now shipped with the module system.
    Since the current stable version of the element will work with next version of Kajona, too, there's no need to change a running installation. (#537)


element_portallogin

  • NEW: the portallogin element now knows to modes: edit minimal, edit complete in order to provide two edit-data-modes. the complete one allows to change all fields of the current user in the portal.


element_rssfeed

  • NEW: rssfeed-element creates samplecontent during the installation, too


module_dashboard

  • BUG: note-widget missed to encode newlines two breaks


module_downloads

  • NEW: downloads & gallery-images listed in search-results trim their descriptions to 150 chars
  • NEW: when deleting or adding a file (or adding a folder) directly in a gallery or a downloads-archive, only the current folder-level gets synced, not all galleries / archives anymore. this results in much faster responses. please note the following side-effect: if there are two galleries / archives using the same folders, only the current gallery / archive will be in sync, the other(s) won't be. those have to be synced manually via the usual sync-actions. (#533)
  • NEW: harmonized the order of list buttons, always delete before status


module_gallery

  • NEW: lightbox-template is now the samplecontent default template for the gallery
  • NEW: downloads & gallery-images listed in search-results trim their descriptions to 150 chars
  • NEW: when deleting or adding a file (or adding a folder) directly in a gallery or a downloads-archive, only the current folder-level gets synced, not all galleries / archives anymore. this results in much faster responses. please note the following side-effect: if there are two galleries / archives using the same folders, only the current gallery / archive will be in sync, the other(s) won't be. those have to be synced manually via the usual sync-actions. (#533)
  • NEW: harmonized the order of list buttons, always delete before status


module_navigation

  • NEW: removed navigations-cache since now handled by global page-element caching
  • BUG: in some cases, the navigation did not use the deepest point in a tree as the current one (if the current page is linked multiple times in the same navigation tree) (#550)


module_news

  • NEW: harmonized the order of list buttons, always delete before status
  • NEW: news-entries can be created by the portaleditor (#535)


module_pages

  • NEW: added option "all templates" to action updatePlaceholder, module pages (#539)
  • NEW: when editing the properties of a page, the template of the master-page is hidden in the dropdown. The master-page-template is a special tempalte and not suitable to be used in other cases. (#532)
  • NEW: pages make use of the new page-cache. reorganized a few classes, resulting in remove of class_modul_pages_pagecache, class_modul_pages_portal::disablePageCacheForGeneration()
  • NEW: direct rendering of master-page is disallowed, the defined error-page is rendered instead (#531)
  • APICHANGE: class_element_admin and class_element_portal are now declared as abstract
  • BUG: captcha reload didn't work with old templates
     - added fallback for old function call
  • BUG: links generated by wysiwyg (pointing to internal pages) used the current portal-language instead of the current admin-working-language. this lead to erroneous links causing a language-switch in the portal (#554)
  • BUG: page-cache didn't share entries for users when browsing as guests. now the cacheid is only taken into account, when the user is logged in.
  • BUG: class_element_portal::setStrCacheAddon() appends cache-addons instead of replacing them. otherwise cache-blockers could have overwritten previous ones leading to a corrupt cache
  • BUG: module pages' flat list used wrong identifier when calling the rights-moduleBUG: page-element search checks if the table to search exists before querying the table


module_search

  • BUG: highlight-param is htmlentity-decoded before being placed in urls (#555)


module_stats

  • NEW: hint shown at systemtasks which need a preparation of the data collected (#541)
  • NEW: stats-report top-queries: keywords are combined case-insentitive, trimmed and urldecoded. the sums up the keywords listet multiple times before. (#529)
  • NEW: searches' stats report rewritten: instead of only showing the last queries, a top-list is created including a rendered chart. in addition, the page-view is introduced in order to view all records (#530)
  • BUG: stats didn't use the correct dates for setting up the intervals. the days started at the current time, not at 0:00. this lead to shiftings of hits to the wrong days / periods.
  • BUG: fixed bug with ending 0-values in stats-reports (#542)


module_system

  • NEW: introduced support of sqlite3 databases (requires PHP >= 5.3.0), based on the work of phw
  • NEW: action "systemCache" to show the current entries saved by the cache
  • NEW: system-setting _system_cache_stats_ to enable the counting of cache-hits
  • NEW: class_toolkit::formInputTextArea supports readonly via an optional param
  • NEW: admin-validation-type "character" to check for at least a single char
  • NEW: getImageAdmin has optional param $strStyle to set the style-attrib directly
  • NEW: config-option "admintoolkit". Use this entry to set the admin-toolkit to use. If you created your own toolkit class, e.g. by extending the class delivered with Kajona, you can specify the name of the class right here.
  • NEW: systemtask dbdump provides a yes/no switch in order to exlucde large tables like the cache or the stats (#536)
  • NEW: debug-option "cache", printing informations about the current cache-status
  • NEW: page-elements use a cachetime of 3600 seconds by default
  • NEW: added systemtask to flush the new global cache
  • NEW: class_cache. this is the new and central class to handle all cachable entries. the class provides various ways in order to allow the caching of content.
  • NEW: class_cache supports an internal caching, this reduces the queries to generate a single page linear to the number of page-elements cachable on the page; all cached page-elements are preloaded with a single query instead of being loaded sequentially
  • NEW: migrated the remoteloader to the new caching. removed old systemtask "flushremoteloadercache" since no longer needed.
  • NEW: class_csv::writeArrayToFile() as an optional param $bitWriteToBrowser in order to stream the file to the browser directly (instead of saving the content to file)
  • NEW: pchart x-axis lables can be rendered in a given angle. use setIntXAxisAngle() to define the value
  • NEW: connections via curl follow http-redirects (thx to BlackAngel)
  • BUG: emtpy remote-content loaded via sockets (e.g. a redirect) was used afterwards instead of trying the next loader-option (e.g. via curl) (thx to BlackAngel)
  • BUG: CKEditors filebrowser popups didn't show scrollbars
     - edited CKEditor js with hope that this will be fixed in the next release of CKEditor (see http://dev.fckeditor.net/ticket/5308)
  • BUG: explicit (int) cast could lead to problems on 32bit systems using the new date-class in sql-queries
  • BUG: fixes method signatures to fullfill php6s' strict requirements
  • BUG: right-margin of charts is set up including the knowledge of rendering the legend or not. if no legend is rendered, the right margin is increased to have more readable values on the x-axis
  • BUG: class_admin::getModuleTitle() checked against a wrong text-not-found-string
  • BUG: fixed margin of form-elements in default-skin, was erroneous on firefox under linux
  • BUG: class_db::getTables() missed to increase the query-counter, resulting in wrong debug-values
  • BUG: class_installer_base::updateModuleVersion() and class_installer_base::updateElementVersion() flush the query cache before initializing the matching objects in order to avoid problems during updates
  • BUG: class_date allows to set 0 as a value for the hour, minute and second
  • BUG: when checking permissions, the existance of the constant "_pages_folder_id_" is checked before being used. in some cases, there are installations without the pages-module.
  • BUG: Workaround for warnings / notices generated by php if no default-timezone is set within the php / system configuration. Kajona tries to set the default again and suppresses warnings generated during this procedure.


module_user

  • NEW / APICHANGE: class_modul_user_user::getAllMembers() introduced, going to replace the static function class_modul_user_group::getGroupMembers(). the second one is marked as deprecated.
  • NEW: harmonized the order of list buttons, always delete before status

Kajona V 3.3.0 "edelweiss" FINAL

Revisions 3224 - 3279

element_image

  • NEW: element_image now uses image sizes defined in the template (#472)
     - moved image_width/height of element_image to optional form fields
     - both fields can still be used, but requires little changes in the template
     - renamed template sections to regular schema
  • BUG: element_image used wrong table column name (only for fresh installs)
  • BUG: check for array-key existence was missing, raising a notice on new elements

element_imagelightbox

  • NEW: element_imagelightbox uses language-independent labels for next/prev buttons

element_paragraph

  • NEW / TEMPLATECHANGE: (addition to rev 3168) element_paragraph gets more template sections depending on if an paragraph_image and/or link is set. This also allows to set the image sizes right in the template (#472).

module_filemanager

  • NEW: ckeditors' browse-dialog opens the folderview in a "choose-browser" mode to select between adding pages or files (pages browser or filemanager browser).
  • NEW: folderview page browser generates links via getLinkPortalHref()
  • NEW: further usage of the constant _filemanager_default_filesrepoid_ (introduced in rev 3148)
  • BUG: Kajonas multiple file upload didn't show fallback upload method if no or wrong Flash Player version was found (#495)
  • BUG: JS was broken in folderview mode
  • BUG: pages/folder-browser missed to create link to take over root-folder when navigating down- and upwards

module_navigations

  • NEW: removed placeholder image_raw from modul_navigations since it was never available in a release version

module_news

  • BUG: erroneous update-SQL query
  • BUG: comments posted to news took the pagename into account, should be only the news-id. this allows to show comments of a single news on different pages.

module_pages

  • NEW: added meta tag "content-language" in portal output, removed old meta tag
  • BUG: moving a page to the root-folder failed (#534)
  • BUG: portaleditor didn't show copy-button for non-repeatable elements
  • BUG: update-script of module-pages moved all pages to the module-root instead of only those being on the root-level before

modul_postacomment

  • BUG: typing error in postacomment template caused JS crash

module_stats

  • BUG: stats messed up date-handling, now using the new class_date, too
  • BUG: stats-report keyword used wrong x-axis labelinf for the chart (#543)
  • BUG: stats-report top-pages used wrong x-axis labeling for the chart

module_system

  • NEW: installer scrolls systemlog-div to bottom
  • NEW: CKEditor generates p-tags again on enter-key (on shift+enter) (reverts rev. 2720)
    - removed wrapping p-tag in templates
    - little adjustments for news template demo_bloglike.tpl
  • NEW: removed CKEditors button "PasteFromWord" since the cleanup of content pasted from MS Word is done automatically in CKEditor
  • NEW: Portaleditors newElement button is now displayed as a block-element
  • NEW: js-function KAJONA.util.fold() can handle a callback when hiding the content too
  • NEW: objToolkit::formOptionalElementsWrapper() to create a foldable wrapper around optional form elements,  needed for #343
  • NEW: added YUI SWF Utility to /portal/scripts/yui so checking for Flash Player and embedding Flash content is done the same way in admin and portal, removed external JS library SWFObject from element mediaplayer and element flash
  • NEW: installer checks write-permissions for /portal/downloads
  • BUG: removed 4 param of call to htmlspecialchars() to remain compatible with php < 5.2.3
  • BUG: erroneous session-update-SQL query
  • BUG: calendar overlay had wrong position in portaleditor mode, cleanup of the calendar js code,  calendar files now being lazy loaded
  • BUG: on some databases loading a dashboard-widget from the database failed due to escaped strings. a call to stripslashes() before unserialize() should avoid this. (#507, #485)
  • BUG: htmlentities are now decoded intially when passed to dbsafestring(). otherwise htmlspecialchars did a double-encoding in some cases.
  • BUG: list of installed modules crashed when having modules set inactive
  • BUG: linking to page elements (anchor link) via CKEditor wasn't possible
     - bug in CKEditor, will probably be fixed (http://dev.fckeditor.net/ticket/5527)
  • BUG: CKEditors filebrowser param "CKEditorFuncNum" wasn't passed trough in folderview, so the folderview callback to select a page/file/image did only work in Firefox
  • BUG: the renamed page elements paragraph/image/row (rev 3168) didn't update classes for custom elements which used the same classes
  • BUG: some AJAX calls in admin crashed due to wrong context
  • BUG: photoviewer/build/photoviewer_base.js didn't run through YUI Compressor because it uses the preserved variable name "public"
  • BUG: JS calendar did start with sunday, corrected to monday
  • BUG: Fixed deletion of systemrecords related with languagesets

Kajona V 3.2.96 "edelweiss" (3.3.0 BETA)

Revisions 2873 - 3223

element_form

  • NEW: texts of contact form are loaded from lang-files (#452)

element_image

  • NEW: tranformed element_bild to element_image, element_zeile to element_row. both now have their own template image.tpl / row.tpl.

element_imagelightbox

  • NEW: enabled PhotoViewers SlideShow feature (can be disabled in the gallery template)
     - fixed PhotoViewer script so the slideshow works in IE
  • NEW: own Kajona PhotoViewer skin
  • NEW: added keyboard controls to PhotoViewer
  • NEW: imagelightbox generates its portal-content based on a template. To change the look and feel editing the php-code is no longer required.
  • BUG: PhotoViewer used hardcoded padding when positioning the viewer on the viewport

element_languageswitch

  • NEW: The languageswitch-element is capable of interacting with a languageset. If the langageswitch finds a matching languageset for the current systemid AND finds a systemid for the other languages, the links are generated with the matching systemids. This means that switching the language for news is possible, too. (#455) 

element_paragraph

  • NEW / SCHEMACHANGE / TEMPLATECHANGE: renamed the element "absatz" to "paragraph". This includes renaming the element-table and its columns!
    The new element introduces a template for the paragraph. This template can be used to modify the look of a paragraph without having to touch php-code. Please note that the old files "class_element_absatz.php" won't be deleted automatically since they can contain changes. Due to the schemachange, those files won't be working anymore after the update, please migrate to the new, way more flexible element.
  • BUG: paragraph is capable of handling %% in texts again

element_portallogin

  • NEW: page to reset the portallogin password is configurable
  • BUG: reset pwd mail missed to replace placeholders

element_postacomment

  • NEW: the postacomment-element is capable of filtering due to the current action-command. If the field is being left empty, no special action is taken. As soon as a value is provided, the current action-param has to match the filter-value in order to have the postacomment-element shown.

element_row

  • NEW: tranformed element_bild to element_image, element_zeile to element_row. both now have their own template image.tpl / row.tpl.

element_tagto

  • NEW: tagto element uses buttons provided by addthis.com. This is much more flexible and up to date (#478)

element_tellafriend

  • BUG: Element tellafriend didn't extract systemid
  • BUG/SECURITY: element_tellafriend was vulnerable for XSS attacks and HTML injection in sent mails

module_downloads

  • NEW: downloads portal lists are pageable
  • NEW: when url rewriting is enabled, the link to a downloads' details-view containes the filename as a seo-addon, the details-page adds the filename to the page-title
  • NEW: list and details provide the placeholders "file_owner" and "file_lmtime"
  • NEW: file-preview-image is being rendered within its' own template section (moving hardcoded html from the class to the template)
  • BUG: gallerys' & downloads' pathnavigation missed to check the view-permissions on root-level. (#497)

module_filemanager

  • NEW: when opening an image for edit via the gallery, the filemanager offers a button to jump back to the gallery. When deleting a file, the gallery gets resynced internally. (#486)
  • NEW: system-settings _filemanager_default_imagesrepoid_ and _filemanager_default_filesrepoid_ referencing a default images- and files-filemanager repository. Those can be used as a parameter for the folderview in order to present the matching repostitory without having the user to choose. (#520)
  • NEW: changed default filemanager repositories. "uploaded files" now point to /files/downloads/public/.
    The default downloads-archive (+ repository) now point to /files/downloads/samples/.
    This avoids misinterpretations when uploading files to /portal/downloads, resulting in files not being accessible due to the .htaccess file. /files/downloads/public/ grants access to public users.
  • NEW: renaming of files now works via dialog (#446)
  • BUG: filemanager showed rights-icon even if the user had manage-permissons, too. Now limited to rights-permissions. (#468)
  • BUG: deleting / uploading / renaming a file / folder using the filemanager missed to reload the page. This could lead to side-effects when deleting a file and upload a file with the same name as the next action. (#448)

module_gallery

  • NEW: right3 is used to edit the permissions of a gallery-record. So the rights to edit the contents and the rights to manage the gallery itself are now separated. (#487)
  • NEW: Number of images per row is calculated automatically, based on the template. The option "images per row" is removed from the element since no longer needed. if you want to have a behaviour like images per row = 0 (unlimited) before, set the template-section to s.th. like . This should result in the same output. (#457)
  • NEW: module gallery and news include pic-name/news-title in the URL used in search results
  • NEW: gallery placeholders pic_description, pic_size and pic_hits are accessible in pic list too
    NEW: gallery adds pic name to page title in detail view
  • BUG: gallerys' & downloads' pathnavigation missed to check the view-permissions on root-level. (#497)

module_guestbook

  • BUG: guestbook and postacomment used the wrong pagename for the pageview in some cases

module_navigations

  • NEW: external navigation point form-field provides a link to the file-browser in order to link files (thx to BlackAngel)
  • NEW: editing of navigations available in portaleditor again, but linking to the whole tree instead of the single navigation-point. (#518)
  • NEW: navigation admin-view provides a treeView, too (like the pages). Can be used to have a fast navigation through the structure.
  • NEW: placeholder image_src, contains only the url of the image as saved in the database
  • BUG: when changing order of navigations points, the navigation cache gets flushed, too (#498)
  • BUG: navigation-cache didn't get flushed when deleting a navigation-point (#466)

module_news

  • NEW: introduced locking for news, so only one user can open a news for editing at the same time
  • NEW: The languageswitch-element is capable of interacting with a languageset. If the langageswitch finds a matching languageset for the current systemid AND finds a systemid for the other languages, the links are generated with the matching systemids. This means that switching the language for news is possible, too. (#455)
  • NEW: number of entries per rss-newsfeed is configurable (#451)
  • NEW: module news checks if a postacomment-placeholder is available on the current template, otherwise the postacomment-module won't be even loaded.
  • NEW: module gallery and news include pic-name/news-title in the URL used in search results
  • APICHANGE: news and page-elements updated to new date-handling.
  • TEMPLATECHANGE: modul_news has new template sections and which are used if an image is set. This adds more flexibility when designing news templates and also allows that the image-sizes can bet set right in the templates
  • BUG: when inserting news, a wrong comment-string was used
  • BUG: feed-item formatted date in the wrong way, minutes now work as expected  

module_pages

  • NEW: last modified pages admin-widget. lists the pages orderd by the last modified date, linked to the edit-mode (#477)
  • NEW: elements can provide a readable name, lang-entry named like element_ELEMENTNAME_name. If present, the entry will be used in the element-list and the page-content list. Added the entry to a few elements as a sample
  • NEW: a pages only gets written to the database of the cachetime is more than a second. Reduces number of queries when having a non-cacheable portal
  • NEW: a single pageelement can be copied. Either to the same page or to another page / language / placeholder. Integrated into the portaleditor, too. (#509)
  • NEW / SKINCHANGE: tree-view widget in module pages. Shows the pages and folders of the pages-module as a tree-structure, allowing a fast navigation. Loading subnodes via AJAX. The current path is expanded by default.
  • NEW: drag n drop is available at page placeholders, too
  • NEW: pages are the first entry of the module-navigation by default (#459)
  • NEW: class_element_admin::addOptionalFormElement() can be used by subclasses to add content to the (by default) hidden system-elements form.
  • NEW: elements move the template-entry to the hidden elements if theres only one template available. As soon as there's more than one template, the dropdown is rendered visible in the form as usual
  • APICHANGE: news and page-elements updated to new date-handling.
  • CONSTANTCHANGE: renamed _pages_ordner_id_ to _pages_folder_id_, renamed _pages_folderview_modul_id to _pages_folderview_modul_id_
  • CONSTANTCHANGE: renamed _pages_inhalte_modul_id_ to _pages_content_modul_id_
  • BUG: editing the rights of a folder showed the systems' permission header instead of the folders'/pages' permission header (#473)
  • BUG: copying a page messed up the encoded page-properties (#464)
  • BUG: languageswitch in admin didn't work in Safari (#490)

module_postacomment

  • NEW: postacomment supports paging for list of posts (#501)
  • BUG: postacomment-post displayed wrong timestamp
  • BUG: JS error when postacomment form is used without the subject field
  • BUG: guestbook and postacomment used the wrong pagename for the pageview in some cases
  • BUG: captcha reload didn't work for module_postacomment (#513)
  • BUG: postacomment-ajax-form wasn't displayed again when having validation-errors, remained emtpy instead

module_ratings

  • NEW: number of rating_hits in portal will be increased by 1 after the user rated an element
  • NEW: rating-bar includes the number of ratings
  • BUG: absolute sorting algo handled float-values the wrong way. Now casted to strings, ranking now as expected
  • BUG: Ratings crashed in case there where more than one rateable modules on the same page (#503)
  • BUG: span#kajona_rating_rating_ should only contain the rating-value - the spans content will be replaced after the user rated an element!

module_search

  • NEW: Templates of module search now uses %%lang_ schema
  • BUG: If modules are not installed, the search module generates warnings (and errors with debugging on). To prevent this warnings and errors a check condition was added to get the installation state of the specific modules.

module_stats

  • NEW: chart "number of hits/visits per time" is separated into two single charts, one showing the visits, one showing the hits. Plotting both lines into the same chart resulted in a visits-plot nearly unreadable since near the x-axis (when having many hits)
  • NEW: update of browscap.ini
  • BUG: parsing of browscap.ini with parse_ini_file changed in php 5.3, included version check
  • BUG: ip2c worker missed to calc the number of lookups correctly

module_system

  • NEW / APICHANGE: the common way to insert / update an object extending class_model will change: Up from now on, it's no longer needed to separate between an update or an insert. This means, the concrete only knows the update mode. In case of new objects, the framework creates the necessary records and prepares them in order for an update.
    This requires the implementation of a new method-structure in model-classes.
    The update is triggered by calling updateObjectToDb() from external. If the object is not known by the database, the method getObjectTables() should return an array of tables to be filled with a dummy record.
    As the second step, the framework calls updateStateToDb() on the concrete object.
    In addition, the method getObjectDescription() was introduced. It should return a short text-based description of the current object, e.g. for the system-tables' comment field.
    Please note: Since the method to update objects is called updateObjectToDb(), old implementations still work. Nevertheless, update your implementations of class_model, since the methods may get abstract / final within the near future and before the 3.3.0 release! (#428)
  • NEW: class_model::updateStateToDb(). This method is being called right AFTER creating the systemrecords and entries in the foreign tables. Use this method to run your special code used on inserts, e.g. to create further records / objects
    updated galleries to new update behaviour
  • NEW: systemstask can use mutlipart encoded forms, too
  • NEW: SQLite database driver
  • NEW: getLinkPortalHref() returns "#" if neither an internal nor an external page is set
  • NEW: requiring or including of classes is made via an autoloader. This means, there's no longer the need to include class-definitions before using them. In addition, this speeds up page-generation about 5%. (#491)
  • NEW: dbconsistency check includes a task to count the nodes on first level. In the future, only module-nodes are allowed on the first level.
  • NEW: admin systeminfo shows webserver software and if available the loaded apache modules
  • NEW: debug-script to automatically compress all *.js and *.css files using YUICompressor from Yahoo (http://developer.yahoo.com/yui/compressor/)
     - please note that you need to have Java >= 1.4 installed and accessible through PHP
  • NEW: class_remoteloader::getRemoteContent() has param $bitForceReload to skip the cache lookup
  • NEW: dateToString(), pendant of timeToString() but processes instances of class_date
  • NEW: chart library pChart as a replacement for jpgraph. Removed jpgraph. Updated all stats-reports to use pChart.
  • NEW: enhanced colorpalettes. Thx to stb.
  • NEW. hex2rgb(), calculates the rgb values of the passed hex-value
  • NEW: drag'n'drop is only enabled for header of adminwidgets
     - by removing the css class "ddHandle" in elements.tpl the whole widget will be draggable (old behavior) (#381)
  • NEW: internal session is initialized on request only and not on object-initalization --> lazy loading. this reduces the number of queries on cheap requests, e.g. by the image.php (#483)
  • NEW: class_db::getTables() caches table-lookups internally. This reduces the number of portal- and admin-queries. (#483)
  • NEW: database-connection is established when needed, only (lazy loading) (#483)
  • NEW: constant _block_config_db_loading_ can be used to block the loading of db-based config. E.g. used by image.php to have a image-generation without any database connection. Speeds up generation dramatically. (#483)
  • NEW: rights-inheritance-structures are calculated on saving instead of on loading. This means, the const-intensive recusive db-calls needed to find out the inherited rights of a record are done during saving the right, not on loading the rights. Querying the rights of a record is now done within a single query. (#386)
  • NEW: class_modul_languages_languageset in order to create sets of records to be used by the languageswitch.
  • NEW: portaleditor is now opened in modal dialog instead of popups (#299)
  • NEW: pe-new buttons are rendered after a possible existing element at the same placeholder. In addition, a wrapper can be added to the buttons via class_element_portal::getPortaleditorNewWrapperCode()
  • NEW: Portaleditor now shows a nice menu to choose the wanted element when clicking on the "new element" button
     - added YUI Menu to /admin/scripts
     - new icon for creating new elements
     - pe dialog can be closed via ESC key
     - some little layout optimizations for portaleditor (#299)
  • NEW: Portaleditor shows action toolbar above the current element instead of on top of it
  • NEW: Portaleditor loads additional CSS file if browser is IE 7 or lower
    - Portaleditor uses outline instead of border style (all browsers incl. IE >= 8). This removes the unlovely content bouncing when using the portaleditor and supports elements with e.g. negative margin styles.
  • NEW: JS constant KAJONA_WEBPATH (in global_includes.php) is defined before loading /portal/scripts/kajona.js, so it can already be used in kajona.js
  • NEW: images added in CKEditor are passed through image.php. If you resize the images via CKEditor the image.php params get synced with the new width/height (done by processWysiwygHtmlContent()). In case you don't want to use image.php for a specific image, just adjust the image URL right in CKEditor image dialog
  • NEW: added no-cache http headers for captcha in image.php. Also prepared some optional expires headers for optimal performance of on-the-fly images (disabled by default)
  • NEW: global processWysiwygHtmlContent() function to cleanup/optimize HTML content created via the WYSIWYG editor
     - e.g. it replaces absolute URLs with dynamic webpath
     - it also synchronizes the width/height style-values set by WYSIWYG editor for on-the-fly images (starting with image.php?image=...)
     - edited all modules/elements to use this new function
  • NEW: a few CSS fixes in admin skin and samplecontent layout because new browsers changed the behavior of styles for input elements
  • NEW: switched from FCKEditor 2.6.3 to CKEditor 3.2
  • NEW: class_mail sets admin-email as defined in the system-settings as the from-mail-adress to outgoing emails as long as not stated otherwise (so as a fallback). (#514)
  • NEW: class-db::dbsafeString() makes use of htmlspecialchars() instead of htmlentities(). This means that uncritical chars like german umlauts are no longer transformed to html-entities, whereas chars like <, >, &, " and ' are still replaced by its' entities. (#492)
  • NEW: Updated YUI to 2.8.0r4 in portal & admin
     - fixed known bug in uploader-min.js, will also be fixed in next YUI bugfix release (#505)
  • NEW: moved CSV test to own test file
  • NEW: switched captcha-reload-button to regular link
  • NEW: disabled browsers autocomplete function for captcha input fields
  • NEW: class_toolkit_admin::formClose() inserts a hidden form-element if the form was created via the portaleditor. This means you no longer have to take care whether you need to insert this hidden field in order to remain in the pe-layout or not. If the form is created outside the pe, the field won't be inserted.
    Closing the pe is still done by passing the peClose command via get- or post-params.
  • NEW: added robots.txt so no 404 errors are logged
  • NEW: class_toolkit_admin::getSimplePageview(), works directly on an instance of class_array_section_iterator and speeds up page-generation up to 50% (depending on the number of entries in the list).
    Migrated all modules to new pager, marked old one as deprecated.
  • NEW: class_toolkit_portal::simplePager(); works directly on an instance of class_array_section iterator. therefore the wrapping array to pass is not needed, speeds up generation speed.
  • NEW: modul system admin session-list uses a pageview (#504)
  • NEW: admin-folderview uses url-rewriting (if enabled), e.g. used by the (F)CKEditor. please note: dis-/enabling rewriting doesn't work for links generated by the editor. (#499)
  • NEW: date-picker can be run as a dateTime-picker, too, e.g. to enter the time when editing a news-entry.
    dateTime is disabled by default and has to enabled in the sourcecode directly. class_modul_news_admin contains a sample line of code. (#420)
  • NEW: captcha image generates grid (horizontal and vertical lines) with 5px space to outer borders. The floating lines remain, so may start / end at the outer bounds. (#500)
  • NEW: draggable table-elements can be disallowed to be moved outside the current table
  • NEW: debugscript systemtablevisualizer, creates a tree-view of the current system-table
  • NEW: class_root::getChildsAsIdArray() returns the list orderd by the system sorting
  • NEW: class_mail is able to handle inline-attachments
  • NEW: class_filesystem::fileCopy() to copy a file
  • NEW: class_filesystem::folderCreate() allows recursive folder creating with $bitRecursive
  • NEW: class_filesystem::folderSize() to calculate the size of a folder recursively (moved from class_modul_filemanager_admin)
  • NEW: global JS object for storing lang strings: KAJONA.portal.lang / KAJONA.admin.lang
  • NEW / APICHANGE: class_lockmanager as a single API for locking and unlocking records. All old locking-methods are removed!
    Obtain a lock-manager by class_model::getLockmanager() or instantiate the lockmanager with a systemid directly.
    Locking updated in module pages_content and introduced to module news. (#465)
  • NEW / APICHANGE: removed first param of class_image::__construct(), the cachepath is set internally
  • NEW / APICHANGE: the method class_image::createEmptyImage() is private since used only internally
  • NEW / DB-CHANGE: from now on, the tree-structure is strict & consistent. This means, on the root there's the root node, on level one only (and only) the modules. On the third level, the modules' nodes are located
  • SCHEMA-CHANGE / APICHANGE: system-dates are no longer handled as ints, up from now on handled via class_dates' long-values
  • APICHANGE: removed deprecated JS function addLoadEvent() in admin/scripts/kajona.js and admin/scripts/kajona_portaleditor.js
  • APICHANGE: removed deprecated JS function addCSS() in admin/scripts/kajona.js
  • APICHANGE: removed class_toolkit_admin::generateDateTimestamps() and class_toolkit_admin::formDate(). use the new class_date-methods (formDateSingle(), ...) instead
  • APICHANGE: removed deprecated function IEOther()
  • APICHANGE: switched the parameter order of getLinkAdminPopup() / getLinkPortalPopup() to intWidth/intHeight
  • APICHANGE: class_element_portal::addPortalEditorCode() doesn't need the param "bitSpace" anymore, it's now handled via CSS. This fixes some more content bouncing caused by the portal editor.
  • APICHANGE: complete cleanup of all portal JS code (#272)
     - JS functions now using KAJONA.util, KAJONA.portal or KAJONA.admin namespace
     - added temporary aliases, so all old templates should still work (except module_postacomment)
  • APICHANGE: complete cleanup of all admin JS code
     - JS functions now using KAJONA.util, KAJONA.portal or KAJONA.admin namespace (#272)
  • CONFIGCHANGE: removed setting "portallanguage" from config.php, no longer used
  • CONFIGCHANGE: system-setting _images_cachepath_ moved from system-settings to config.php, removed entry from doc
  • BUG / APICHANGE: complete rewrite of kajonaAjaxHelper.Loader. The old implementation loaded js/css files multiple times. It now keeps track of requested and successfully loaded files. It's possible to call kajonaAjaxHelper.Loader.load() at any time (e.g. after onDOMReady when the user clicks a button). The API has changed, but should still be compatible with all old templates using the predefined helpers like kajonaAjaxHelper.loadAjaxBase(); Have a look in admin/scripts/kajona.js for usage examples. (#506)
  • BUG: the portaleditor missed to include the master-page when validating the permissions in order to load / unload its' toolbar. (#471)
  • BUG: urlSafeString used wrong regexp
  • BUG: PE-Enable button wasn't always visible
  • BUG: JS-files were not compressed via mod_deflate on some server configurations
  • BUG: class_image: fixed handling of alpha transparent PNGs again. Also the rendering of fonts should work correctly
  • BUG: class_image::imageText()  missed to decode htmlentities (#481)
  • BUG: class_csv didn't set delimiter when set via constructor
  • BUG: folderview page- & folder-lists missed to close tables correctly
  • BUG: installer: Only include installer module files with the .php extension. Prevents accidental inclusion of e.g. *.php~
  • BUG: cachename of manipulated images in class_image wasn't updated correctly every time. thx to js (#511)
  • BUG: xml-operations are not logged within the admin- or portal-history since those operations aren't visible on the gui. Otherwise some redirects may fail (if based on the history, e.g. modifying the permissions of a record)
  • BUG: class_toolkit_portal::simplePager() failed when having only one page
  • BUG: simplePager() creates navigation only if more than one page is available
  • BUG: Fixed bug in class_db::dbsafeString() that caused extra slashes to be added to the string. (#507)
  • BUG: removed unused js-call to submitExecution() when starting a form-based systemtask.
  • BUG: Portaleditor used systemids twice e.g. when a navigation tree is used multiple times on one page
  • BUG: Portaleditor action links sometimes used inherited styles
  • BUG: portaleditor: if an element was set to non-repeatable, it not only removed its' own new-button but all other new-buttons from the same placeholder, too
  • BUG: Portaleditor crashed when modul languages was disabled  (#467)
  • BUG: dialog height of systemtasks exceeds the viewport
     - content now scrolls
     - dialog is centered again to the viewport after inserting dialog content
     - removed ugly dotted border around the dialog (Firefox) (#496)
  • BUG: some newer versions of the gdlib returned a minifed array of gd_info(), adopted the array-checks for index-existence when shown the system-information
  • BUG: admin/portalReload missed to fill webpath.
  • BUG: ereg() and ereg_replace() are marked as deprecated and will be removed from php. removed function calls and forwared them to uniEreg(). uniEreg uses preg_match instead of ereg() when in non-mb-string mode.
    Removed functions uniEreg(), uniEregReplace() and uniEregiReplace() since no longer used (#461)
  • BUG: decompressing gzip-files loaded the complete file into the servers' ram. Now being saved directly to the filesystem via the handles. (#463)
  • BUG: portal rewrite-rules didn't pass the query string, so e.g. the pageview didn't work when URL-rewriting was enabled
  • BUG: class_remoteloader::saveResponseToCache() doesn't use MySQL-specific syntax anymore
  • BUG: class_filesystem::getCompleteList() didn't close dir handle (crashed under Windows)
  • BUG: plain-text mails missed so add a boundary in case of a single attachement

Fork me on GitHub