This document contains a list of changes for each release of Krang.
Removed the need for bin/krang_addon_dist to have a valid krang.conf since it doesn't actually use anything in that. This allows for automating the building of a package from a Krang svn checkout that is built. [Michael Peters]
Fixed FTP download of templates with UTF8 characters in binary mode. [Brad Oaks]
Editing and saving an existing category will now convert a story with a duplicate url into a category index. This check already happens when creating a new category. [Brad Oaks]
Fixed display issue of time selector in Krang::ElementClass::DateTime (thanks to Mike Lampson for this patch). [Bodo Schulze]
Fixed bug where you couldn't uncheck the ``Show Story Type and Version'' checkbox on the ``Find Stories'' screen. [Michael Peters]
Fixed bug where you couldn't uncheck the ``Search full text?'' checkbox on the ``Find Templates'' screen. [Michael Peters]
hidden parameters of elements can now be a subroutine reference which
will be executed at runtime and that value used. [Michael Peters]
Fixed problems with un-localized $@ which could make some error
messages not appear in the logs. [Michael Peters]
Fixed wacky partial error screen when unexpected erorrs happened during publish from the web UI. [Michael Peters]
Added --NoStart option to bin/krang_install when you want to install
but then later tweek things (like conf/krang.conf) before starting the
servers. [Michael Peters]
Added --NoDB option to bin/krang_install for use when you already
have an existing Krang DB and want a new install to use that. [Michael Peters]
Added ``hostname dictionary'' feature to krang.conf so that you can specify different values for configuration directives per-hostname. This allows multiple machines in a Krang cluster to share the same krang.conf file. [Michael Peters]
Fix bug in krang_ctl that incorrectly used sudo when
starting/stopping the scheduler. [Michael Peters]
Prevent media files from getting spaces (or other forbidden characters) in their filenames when bulk-uploaded or added via FTP (already forbidden in the web UI). [Michael Peters]
Updated accidental limit where publisher couldn't handle story_ids over 4194304. [Mike Lampson & Michael Peters]
Don't delete temporary expanded XML files when a KDS import fails so it can be inspected. [Michael Peters]
Fix problem of starting Apache still being attached to the IO of the starting terminal making it hang SSH sessions. [Michael Peters]
Fix bug of krang_ftpd where the new FTP daemon wasn't always detaching itself from the terminal process that started it, thus hanging SSH sessions when trying to disconnect.
Fixed bug in IE where people randomly lose their session if they are doing a lot of publishing and previewing. [Michael Peters]
Hitting ``Save & Stay'' on the ``Edit Template'' screen now doesn't reset the template editor, so you don't lose your place. [Michael Peters]
Bulk Upload of Media can now handle resizing images with .jpg and .jpeg extensions in addition to .png, .gif, and .tiff files. [Brad Oaks]
Added DBIgnoreVersion configuration directive to allow for times when
you're upgrading multiple Krang machines at the same time while others
are running. [Michael Peters]
Pager page numbers and count are now formatted numbers [Michael Peters]
Status page now uses the Charset directive like the rest of Krang. [Michael Peters]
Improved performance of ISE notification by running the code under mod_perl and not CGI. [Michael Peters]
Added --profile-mode option to turn on profiling with Devel::NYTProf
from bin/krang_apachectl. [Michael Peters]
Allow CGI mode to be activated with --cgi-mode option to
bin/krang_apachectl. [Michael Peters]
Improved navigation rendering performance. [Michael Peters]
Searching for a story now normalizes the url so it can be compared without problems. [Michael Peters]
Added storage of krang_pager_curr_page_num and
krang_pager_show_big_view to session cache in In
Krang::HTMLPager. The page number is forced to 1 when switching
between Retired or Live templates, media, and stories. [Brad Oaks]
Searching for media on the advanced tab will now return media of all types when no media_type_id is selected. [Brad Oaks]
Added --skip-media and --skip-stories options to
bin/krang_publish. [Michael Peters]
Fixed bug that prevented new categories from being created with the same URL as an existing story in some circumstances. [Michael Peters]
Some autocomplete values were coming back as all lower-case. Case is now preserved. [Michael Peters]
Krang scheduler can now be disabled per-instance with the DisableScheduler directive set to 1. [Brad Oaks]
Krang will now correctly guess the media type when media files are uploaded via the FTP interface. [Michael Peters]
When bulk editing a Story, the Done With Bulk Edit button is now working. [Brad Oaks]
Alerts are now able to be sent for actions on any Story or any Media instead of only on specific ones. [Brad Oaks]
ElementClass::PopupMenu will now execute subroutine references which are passed to new() for the value key. [Brad Oaks]
Importing stories has been greatly improved in the following ways. [Michael Peters]
Adding ReservedURLs configuration directive. This prevents Krang
users from creating stories or categories with certain URLs. This is
useful when you have another application serving the Krang published
content and it needs certain URLs reserved for it's functionality.
This can be set per-instance or globally. [Michael Peters]
Fixed ISE that occurred when certain bad date formats were used for Cover Dates on stories. [Michael Peters]
Upgraded Apache::Session and changed our usage to not require an exclusive lock for every request. [Michael Peters]
Added the bin/krang_generate_csv script. [Michael Peters]
We now generate higher quality thumbnails and there were a couple of places (like ``Select Media'') where thumbnails weren't showing up when they should have. [Michael Peters]
Added new command_column_extra_args option to Krang::HTMLPager
so that more arguments can be passed into the command_column_commands
besides just the id. [Michael Peters]
Added read_only flag to Media and Template objects. This flag
can only be set by the bin/krang_read_only admin script so that these
items can't be set/unset by users. [Michael Peters]
Added --category-links option to bin/krang_create_story
script. [Michael Peters]
Media Bulk Upload can set a max height and/or max width to scale down large images. [Brad Oaks]
Added Krang.Form.get_form() method to make it easier to get the
form in custom Javascript code. [Michael Peters]
Added update (which defaults to true) option to Krang.Form.submit()
to make it easier for addons to create forms which submit and return JSON data. [Michael Peters]
Added ability to search Media by Type (which is media_type_id). [Brad Oaks]
Fixed ISE that occurs on the Back button when viewing an older version of a template that you have checked out. It only happened when starting from Workspace and editing a template. The form action was set to workspace.pl instead of template.pl in that case. [Brad Oaks]
Media items now call the element's retire_hook. [Michael Peters]
Added may_view_trash permission. [Michael Peters]
Fixed ISEs that occurs if you try to check out media or templates that were checked out by someone else while you were looking at (normally prevented by the UI). Now you get a helpful alert message instead. [Michael Peters]
Fixed ISE on ``New Media'' screen when submitting the form via ``enter'' instead of clicking the ``Create'' button. [Michael Peters]
Going from Trash -> View Detail -> View Log -> Back for Media objects no longer results in an ISE. [Michael Peters]
Catch more kinds of template errors when previewing a story so they don't result in an ISE, but a better error message. [Michael Peters]
Added Fedora 12 as a build target. [Michael Peters]
Fixed various failing tests. [Michael Peters]
Fixed problem with URL wrapping that prevented copy-pasting of those URLs from the UI. [Michael Peters]
Adding MinSpareServers, MaxSpareServers, MaxClients krang.conf
directives that can be used to control how many running Apache processes there
are. [Michael Peters]
Fixed JS error on Transform Image screen when cancelling and going to another page. [Michael Peters]
Fixed IE8 where the Category Chooser on Edit Media screen was hidden behind every table but the initial one (the meta-data table). [Michael Peters]
Adding a --no-upgrade option to bin/krang_addon_installer to
make it easier to manage in a cluster. [Michael Peters]
Unknown publish errors from the Web UI now result in a normal ISE
(die) like other errors and are displayed with the same modal dialog
in the UI. This also triggers the ErrorNotificationEmail to be sent
if configured. [Michael Peters]
Fixed error when publishing a MediaLink element that didn't actually have a media object selected. Now we just silently return and continue with the publish. [Michael Peters]
Normalize Unicode characters coming in so that we always have single grapheme characters. Unicode can have ``composed'' characters where the same character is actually represented by combining multiple characters. Use NFC normalization so that we just store a single character. This will make it easier to do things like full text search on Unicode characters that might have been submitted as multiple graphemes. [Michael Peters]
Fixed IE7 where the Category Chooser on Edit Media screen was hidden behind every table but the initial one (the meta-data table). [Michael Peters]
Per user requests, changed default sort order for Find Story and Find Media interfaces (toplevel screens and StoryLink/MediaLink screens) to descending ID (instead of ascending ID) so newest items are visible on the first page. [Noam Weinstein]
Fixed issue (discovered by Dave Kaufman) where Media and Category Edit screens contained duplicate ``Done With'' & ``Delete'' buttons when editing containers, and -- in the case of Category -- the inner ``Done With'' was failing. (The above issues appear to have been caused by ElementEditor.tmpl being changed without all of the templates that include ElementEditor.tmpl being updated.) Also renamed the top-level (big green) ``Delete'' buttons on Edit screens ``Delete Story'', ``Delete Media'', ``Delete Category'', and ``Delete Template'' since top-level objects are being accidentally deleted from within containers by users who are intending to delete only the container. Finally, added upward arrow to the right of innermost ``Delete'' on Edit screens in order to differentiate THIS delete (which operates on the sub-elements above it) from the other two! [Noam Weinstein]
Made ElementEditor's ``Find Story'' GUI remember (within a session) previous selections for search string (simple search), and category, class, contrib, cover_date, publish_date, story_id, title and url (advanced search). [Noam Weinstein]
Added Fedora 11 as a build platform. [Michael Peters]
Fixed bug in Widget module where improperly formatted date strings in Date Chooser threw an ISE instead of failing gracefully like DateTime Chooser. [Noam Weinstein]
Media bulk uploads now try to guess the media_type based on the file extension. [Michael Peters]
Now save and display text media object (HTML, CSS, etc) with the same encoding that we use for other text in the system. [Michael Peters]
Fixed an ISE if BadLoginCount is set but no username was provided
on the login attempt. [Michael Peters]
Fixed the deprecated (but retained for backward compatibility) Krang::URL
module's real_url() method which duplicated the code in, rather than
simply dispatching to, its recommended successor, the
Krang::Publisher->url_for() method. Now url_for() can be overridden or
extended in an addon subclass and any exisitng code still using the old
pkg('URL')->real_url() calls will be enhanced too. [David Kaufman]
Prevent double clicks (which cause duplicate requests to the server, hidden ISEs and session locking) by making sure that the same Ajax request doesn't happen within 2 seconds of the last time it was requested. [Michael Peters]
Fixed bug in Krang::ElementClass's flattened-template code (introduced in v3.04) that was failing to distinguish the empty-string from an undefined value when recursively populating a template's inner loops. [Noam Weinstein]
Upgraded source modules that were throwing ISEs when trying to use the Changeable Elements feature introduced in Krang v3.05. [Michael Peters]
Fixed bug in Story::find() that caused very slow double-join on story-category table. NOTE: Fix entails slight permissioning change: in the past, a user with may_see permissions in Category A but without them in Category B would only be shown stories whose PRIMARY category was A, not those whose primary category was B and whose SECONDARY category was A. This will no longer be the case (which is hopefully an improvement). [Noam Weinstein]
Upgraded DBI from 1.58 to 1.609 and DBD::mysql from 4.005 to 4.012, (both had gotten about 2 years old) [David Kaufman]
Updated Debian Platform README file to document how to install the O/S prerequisites needed to build krang on Debian 5 (Lenny). [David Kaufman]
Upgraded Pod::Simple from 2.0.5 to 3.08, and added podlators 2.2.2 which provides an update for Pod::Man to resolve build problems in Module::Build on perl 5.10; Krang now builds on Debian 5 (Lenny) [David Kaufman]
Upgraded Storable from 2.1.3 to 2.2.0 to resolve build problems on perl 5.10 on Debian 5 (Lenny) [David Kaufman]
Upgraded Image::Size from 3.1.1 to 3.2 and its prerequisite Compress::Zlib from 1.31 to 2.20 (Compress::* packages are now split into IO-Compress-2.020, Compress-Raw-Zlib and Compress-Raw-Bzip2) [David Kaufman]
Fixed Bug #42 ``Scheduler errors from _expire_sessions()'' in which the logs were polluted with exceptions every five minutes while there are no sessons to expire [David Kaufman]
Made UTF-8 the default character set and updated POD accordingly. [Noam Weinstein]
Fixed three warnings thrown by krang_install when installing from a binary tarball distribution: two errors reported to the user when the regex used to find & fix the path to perl in shebang lines of perl scripts failed to match the two perl xinha plugin scripts (because they include seldem-used but valid whitespace between the #! and the interpreter command line), and 2) a ``can't stat krang/bench: No such file or directory'' warning caused by the krang/bench directory not being present in plaform-specific binary distributions. [David Kaufman]
Added to PoorText JavaScript workaround for Gecko bugs https://bugzilla.mozilla.org/show_bug.cgi?id=438840 and https://bugzilla.mozilla.org/show_bug.cgi?id=436703. [Bodo Schulze]
Fixed bug in ElementEditor CGI where any container that included both a hidden element and reorderable elements threw an ISE. [Noam Weinstein]
Fixed bug in ElementEditor/edit.base.tmpl which caused Done button to be missing from any container element not set to allow_delete => 1. [Noam Weinstein]
Fixed bug in BrowserSpeedBoost that did not clear out old compressed HTML files or regenerate new minified/compressed assets if the underlying file changed. [Michael Peters]
Various fixes to PoorText to make it play nicely with IE8. [Bodo Schulze]
Upgraded Prototype.js to version 1.6.1_rc2 to fix issues with IE8. [Bodo Schulze]
Fixed utf8 bug in Krang template generation and filtering. [Bodo Schulze]
Added ``Preview Editor'' instrumenting previewed stories with links pointing back into the CMS. Also integrates the previously added ``Template Finder''. [Bodo Schulze]
Fixed ISE that occurs if you try to check out a story that was checked out by someone else while you were looking at (normally prevented by the UI). Now you get a helpful alert message instead. [Michael Peters]
Fixed bug in Krang::BulkEdit::Xinha where empty tags were not handled correctly (thanks to Mike Lampson for catching this). Added method returning a list of supported empty HTML tags. This list currently contains only HR. [Bodo Schulze]
Add bin/krang_tmp_cleaner to clean out the tmp/ directory while developing. [Michael Peters]
Added bin/krang_create_story for making test data while developing. [Michael Peters]
Added Fedora 10 as a target build platform. [Michael Peters]
Fixed a bug preventing to add a photo to a new contributor when coming from associate contrib. [Bodo Schulze]
Added thumbnail preview to Krang::ElementClass::MediaLink and contrib edit screen. [Bodo Schulze]
Replaced JavaScript links in story and media preview links with DOM2 event handlers everywhere. [Bodo Schulze]
Added ``Preview Finder'' feature. After clicking the ``Preview Finder'' button on story preview screens, clicking anywhere on the page provides information on the template (and its parents) or the media text file (for SSI) responsible for generating the piece of content that was clicked. [Bodo Schulze]
Added JavaScript library ProtoPopup in htdocs/proto_popup/ providing draggable info boxes as well as alert-like and confirm-like dialogs. [Bodo Schulze]
Krang::AddOn: When installing an addon, install the upgrade/ subdir, too - to self-document the upgrade. [Bodo Schulze]
Reorganized Admin menu into subsections. [Michael Peters]
Added IE6 behavior rules section in krang.js and put the hover handler for the great green buttons in there. [Bodo Schulze]
Added version option to Krang::Media's file_path() method. [Bodo
Schulze]
Added a --url option to krang_upload_templates to limit the upload to templates having the specified URL below path (may be given multiple times). [Bodo Schulze]
Added --no-cache option to krang_publish to bypass using
Krang::Cache. [Michael Peters]
Added the ability to use the ``Find Media'' interface for selecting the image for a contributor instead of having to upload a new image each time. [Michael Peters]
When publishing from the command line using krang_publish and
--to-preview a single error in publishing 1 story won't cause the
whole process to stop. It will continue on and then list failures at the
end just like publishing without --to-preview does. [Michael Peters]
Added optional level, dir_only and depth_only arguments to
method signature of Krang::Story::category(). [Bodo Schulze]
Added new element class Krang::ElementClass::PoorTextList which joins the WYSIWYG capabilities of Krang::ElementClass::PoorText with the list management controls of Krang::ElementClass::TextInputList. [Bodo Schulze]
Added 'binary' argument to $publisher->additional_content_block(), hence to Krang::IO->io_file(), to make it possible to write images (and other binary data). [Bodo Schulze]
Fixed minor but disconcerting bug where reverting a template to an earlier version also reverted its ``Deployed Version''. [Noam Weinstein]
At the request of Jesse Erlbaum, added a Size selector to Default::image. [Bodo Schulze]
Fixed bug in krang.js Krang.Form.submit() where if the new_window
option was true we'd pass the existing window_id to it, in essence having
2 windows with the same window_id which could cause some strange things
to happen (multiple windows with the same session). [Michael Peters]
Allowed Krang::Story::delete() to be called with the named parameters 'story_id' (a number) or 'class' (a string or an arrayref of class names). [Bodo Schulze]
Added directive PreInstallScript to krang_addon.conf to run a script before the installation process starts. [Bodo Schulze]
Added new element class Krang::ElementClass::TextInputList. Added it to Krang::ElementLibrary's autoload list, added three examples to TestSet1::page and its template, and added some CSS to krang.css.tmpl. [Bodo Schulze]
Like Stories, find Media and Templates in Live, Retired and Trash when finding by ID or UUID. [Bodo Schulze]
Enhanced Krang::Publisher's additional_content_block() to accept an
optional hashref of category_tmpl_args to pass to Krang::Category's
fill_template method. [Noam Weinstein]
Made Krang::Element's children() method accept one argument to
return a list of children having the given name only, and added
convenience method children_data(). [Bodo Schulze]
Fixed bug to let the a template's Log be viewed from its ``View Detail'' screen. [Bodo Schulze]
Fixed a bug in Krang::Handler reported by Alice Lincoln: Make sure a manually created window gets its own id when the user types/copies a Krang URL into it or accesses another windows URL via the History. Thanx to Jesse Erlbaum for the referer-based solution to this problem. Also implemented a workaround in krang.js to force IE6/7 to send the referer when a link is passed through JavaScript. [Bodo Schulze]
Added a server-side paste filter to Krang::ElementClass::PoorText, triggered by the onPaste event. [Bodo Schulze]
Added linked_stories() to Krang::ElementClass to make this interface
available to all element classes, especially WYSIWYG editors and the
like. [Bodo Schulze]
Made sure a media is reported as unpublished after changing its category. [Bodo Schulze]
Added convenience method root_category() to
Krang::Category. [Bodo Schulze]
Integrated PoorText with StoryLink interface. [Bodo Schulze]
Added the ErrorNotificationEmail configuration directive that can contain an optional
comma-separated list of email address that will be sent an email with details about
any Internal Server Errors that occur. [Michael Peters]
Added retire_hook and unretire_hook hooks for element classes when things are moved
in and out of the retired objects section. [Michael Peters]
Added untrash_hook hook for element classes when things are taken
out of the trash. [Michael Peters]
Added the ability to change an element's class in the Element Editor
UI if the element library is configured to allow it (using the
ChangeableElementClasses directive in set.conf). [Michael Peters]
Added a new WYSIWYG element class Krang::ElementClass::PoorText and all it takes. [Bodo Schulze]
Fixed bug where user could Edit a story, then View an old version of it, then click Edit from the View screen, in effect wiping out anything that had been left unsaved in their session. [Noam Weinstein]
Fixed bug where it was possible from the View Schedule screen to 'View' the version of a Story or Media currently open for edit, causing confusion and the possible loss of changes if the user clicked 'Edit' again. [Noam Weinstein]
Bug fix for templates that had wide UTF-8 characters. [Michael Peters]
Added rollover-preview to the find_media_link screen. [Michael Peters]
Collapsed many similar buttons into ``dropdown'' style buttons to make the UI cleaner. [Michael Peters]
Fixed bug where spaces in filenames could be hidden in the ``Find Media'' screen. [Michael Peters]
Change Krang::Cache subs to be object methods instead so they can be overridden by addon's via subclasses. [Michael Peters]
Fixed bug in Krang::Story that caused errors if an element library tried to use the cover_date and it was before Unix epoch time. [Brad Oaks]
Fixed Bug in RadioGroup labels (was calling localize() on the
labels-hashref key instead of its value to populate the label)
[David Kaufman]
Fixed broken JS for ListGroup management in Edit Story UI. [Noam Weinstein]
Fixed Safari errors in Xinha-based bulk-editing
Fixed bug in FTP code where timezone used by FTP server (for file creation dates, logging, etc.) was always UTC regardless of the local machine's timezone (causing inconsistency in Krang dates and log entries). [Noam Weinstein]
Fix to unpreview a media object when it is deleted (instead of just unpublishing it). [David Kaufman]
Refactored bulk edit in its own classes. The legacy textarea-based bulk editing is in Krang::BulkEdit::Textarea. Xinha-based bulk editing is provided by Krang::BulkEdit::Xinha. This module largely uses parsing instead of regexes to sanitize/scrub the HTML coming from Xinha. Xinha's toolbar and the set of allowed block-level tags are configurable via subclassing Krang::BulkEdit::Xinha::Config. This module also permits configuration of whether paragraphs should be split on BR tags. [Bodo Schulze]
Pass the browser engine name to the environment via KRANG_BROWSER_ENGINE. This enables clients to dispatch to Krang::Markup::SomeBrowserEngine methods. [Bodo Schulze]
Added modules to filter incoming/outgoing HTML markup according to what different browser engines' markup commands can handle in WYSIWYG areas. The base class Krang::Markup is subclassed by Krang::Markup::Gecko, Krang::Markup::IE and Krang::Markup::WebKit. [Bodo Schulze]
Upgraded HTML::Parser to version 3.56. [Bodo Schulze]
Removed Image-Info-1.15.tar.gz from src/ and replaced it with
Image-Size-3.1.1.tar.gz to fix bugs in Krang::Media's width() and
height() methods in which, for certain valid JPEG images, these
methods returned undef (and for others, returned an arrayref!)
According to its own POD docs, Image::Info is ``deprecated, and
should not be used'', ``has numerous bugs'', is only minimally
maintained, and recommends the use of Image::Size to replace these
functions. Krang now appears to return correct width and height
values for all JPEG's tested. [David Kaufman]
Separated the two perl classes in lib/Krang/FTP/FileHandle.pm into their own files so that either can be more easily subclassed in an addon, without having to override all the code in both unnecessarily [David Kaufman]
Corresponding to the behavior of Krang::Story's delete(), made Made
Krang::Media's delete() and Krang::Template's delete() throw a
Krang::*::NoDeleteAccess exception if the user has no admin_delete
permission. [Bodo Schulze]
Fixed bug in krang_upload_templates and krang_rename_categories that sets NO_ELEMENTLIBS to 1 even though it's necessary to instantiate the Category element when creating new categories. [Noam Weinstein]
Added DateTime and Time elements similar to those used for cover_date input. [David Kaufman]
Replaced package constants, global and lexical variables in Krang::User with methods that can be subclassed. [David Kaufman]
Gave the scheduler the ability to email users after succeeding with or giving up on a job. [Noam Weinstein]
Made schedule failure more configurable on the API level, adding the ability to specify how many times a particular job is attempted and how long the daemon waits between attempts. [Noam Weinstein]
Added ability to create object-specific alerts that are triggered only for particular story or media objects. Enhanced MyAlerts UI to allow users to control these. [Noam Weinstein]
In various templates, replaced CSS class 'c-mini' by 'c-label-tiny' according to Michael Peters' renaming in r5180. [Bodo Schulze]
Added initial support for Xinha-based bulk edit, based on code by Noam Weinstein. [Bodo Schulze]
Fix to transfer media to trashbin when deleting it from within the Edit screen (thanx Noam). [Bodo Schulze]
Added elements to Media objects, enhanced Media Edit UI to take advantage of the ability to create, edit, and publish element data along with media objects. Wrote upgrade code to instantiate skeletal media element class. [Noam Weinstein]
Refactored element_bulk_edit() and element_bulk_save() to ease the
implementation of WYSIWYG-based bulk edit areas. [Bodo Schulze]
Standardized locations of bottom-panel buttons on Edit screens. [Noam Weinstein]
Made it possible to associate contributors with a story or media object even if the user doesn't have the manage_contribs permission, which should presumably be required only for the ability to add or delete contributors from the system. [Noam Weinstein]
Fixed bug where cloning a read-only story doesn't reset may_edit flag. [Noam Weinstein]
Added ability to rename media files (through code, not GUI) without re-uploading object. [Noam Weinstein]
On all Find screens, enable/disable the (green) list buttons according to the checked status of the list's row checkboxes. Also enable/disable the element editor's Delete button according to the elements' delete checkbox status. [Bodo Schulze]
Made 'Revert' button for the edit screens of Stories, Media, and Templates write to disk (after error-checking), added text clarifying what the new version number means, updated related tests and docs. [Noam Weinstein]
Added krang_deploy_templates script to deploy some or all templates from the command-line. [Noam Weinstein]
Added option to krang_backup to backup a single instance. [Noam Weinstein]
Caring for singular/plural in string ``Result(s)'' on find screens. [Bodo Schulze]
Make and remove symlinks (for now only calendar and help files) when (un-)installing language distributions. Remove localized templates when uninstalling a language dist. Also passed Krang::Localization through perltidy. [Bodo Schulze]
Added 'force-checkin' option to krang_upload_templates and krang_upload_media. (In the past objects checked out to other users were skipped). [Noam Weinstein]
Added 'View Log' to Media View (r4815) and Template View (r4820) screens. [Bodo Schulze]
For Media Edit screen, ripped out 'Publish to Preview' button including its JavaScript function and Perl runmode, since each Save and Save & Stay now does publish to preview anyway (behavior introduced by Noam in r4513). [Bodo Schulze]
Replaced src/Digest-MD5-2.23.tar.gz with
src/Digest-MD5-2.36_patched_for_UTF8.tar.gz which handles UTF-8
data transparently. [Bodo Schulze]
Made sure each Krang template points to its own help files. Also streamlined help file names to ease the making of more sophisticated help systems. [Bodo Schulze]
Added t/dict/words.ascii (to generate filenames and the like) and
t/dict/words.latin1, a mixture of English, French, German, Italian,
Portuguese and Spanish words for content generation. Also made all
tests use Krang::Test::Content's get_word() method to generate UTF-8
content if the Charset directive says so.
Added localization admin scripts lang/bin/krang_lang_installer,
lang/bin/krang_lang_uninstaller and
lang/bin/krang_missing_localizations. Also updated install and
upgrade documentation and added a note to Krang developers about how
to use the localization API (localization_api.html). [Bodo Schulze]
Added bin/krang_smoke_test to make it as easy as possible to create a smoke server to send the results to http://smolder.plusthree.com. [Michael Peters]
Added new option --with_language to bin/krang_makedist. Per
default Krang distributions will be made without the lexicons
under lang/, but with the localization admin scripts in
lang/bin/. [Bodo Schulze]
Added DefaultLanguage check to bin/krang_test (must be set to 'en' to pass all tests). [Bodo Schulze]
Added localization API and German lexicon. [Bodo Schulze]
Added support for Ubuntu [Peter Leonard and Michael Peters]
Added support for Story Type-based category behavior, including auto-selection of category based on type, cover-date, slug, and/or title, and validation of manually selected categories. [Noam Weinstein]
Added 'Cancel' button to Story, Template, and Media Edit screens - clicking it returns the given object to its previous location (i.e. owner, desk, etc.) and sends user to the page from where he/she opened it. [Noam Weinstein]
Removed requirement to upload a file when creating new media; can now use inline editor without specifying a file. [Noam Weinstein]
Added ability to search full text of stories and templates from CMS. [Noam Weinstein]
Implemented beta version of flat-template support, allowing a single template per top-level story type. [Noam Weinstein]
Added forget_all_dbhs() method to Krang::DB to help in the situation
where you fork a process and don't want the child to use the parent's handles.
[Michael Peters]
Added no_cache argument to Krang::DB::dbh() to by-pass the cache.
[Michael Peters]
Fixing bug in Krang::Schedule and Krang::Schedule::Daemon which resulted in MySQL Lost Connection errors on really busy systems. [Michael Peters]
Fixed bug in Bulk Upload of media objects where Unix shell meta-characters in file names caused problems when unpacking. [Michael Peters]
Added --story-class argument to bin/krang_publish. [Michael Peters]
Enable the use of optgroups in the 'Add Element' dropdown. [Eric Folley]
Adding new user preference for turning CodePress on/off. [Michael Peters]
Adding Fedora 9 as a build target. [Michael Peters]
Fixing bug in the scheduler daemon that resulted in lost MySQL connection errors. [Michael Peters]
Fixed some minor bugs with the new Image Transformation. [Michael Peters]
Upgraded our JSON modules to use the latest JSON::XS. This gives us speed and better handling of UTF8. [Michael Peters]
Added new Image Transformation UI to allow basic image editing (scaling, rotating and flipping). [Michael Peters]
Added API to Krang::HTMLPager to make it possible to control the display of columns and/or list controls from within row handlers. [Bodo Schulze]
Made user search check for matches with login instead of just first and last name. [Noam Weinstein]
Fixed broken templates.kds in Default element library. [Noam Weinstein]
Stealing a story now logs a discrete action for the theft. [Noam Weinstein]
Element classes can now override sort order of available children. [Noam Weinstein]
Open application in a new window/tab if clicking on a navigation link with the CTRL key pressed or when middle-clicking. [Bodo Schulze]
Fixed known issues with multiple windows/tabs. Login/Logout is now browser-global not window/tab-specific. Use one authentication cookie to store window_id/session_id mapping for all windows and use QUERY/tmpl_var communication channel to pass the window_id around. Also removed config directive MaxConcurrentKrangSessions. [Bodo Schulze]
Add Fedora 8 as a platform for building. [Michael Peters]
Added Krang::Schedule::Action::archive to allow scheduled archiving of stories and media. [Bodo Schulze]
Script bin/krang_upload_templates uploads templates as UTF-8 if Charset is UTF-8. [Bodo Schulze]
History mechanism is not tied to specific types of objects and can be extended by addons to include any other objects. [Michael Peters]
Added display of IDs to Site & Category's Find screens, and to Site's Edit & View screens. [Noam Weinstein]
Fixed bug #32 along with a related bug in Krang::Publisher->unpublish_story()> where after deleting a story its preview path would not be deleted even if it is empty. [Bodo Schulze]
Fixed long standing bug where Edit button is present when viewing an old Story version. [Bodo Schulze]
Added copy functionality to Category admin screen. [Bodo Schulze]
Added Trash and Retired functionality to Story, Media and Template. [Bodo Schulze]
Added --maintain-versions mode (and associated tests) to publisher to rewrite existing versions of live stories to site. [Noam Weinstein]
Fixed a bug in both JavaScript and PERL where some cookies were being written to root path and others to active path. [Noam Weinstein]
Added an optimization for Krang admin scripts that know they won't use any elements. This dramatically speeds up those admin scripts on systems with multiple element libraries. [Michael Peters]
Added interactive krang_to_utf8 script to ease conversions. [Noam Weinstein]
Added PreloadHandler available to addons to run code during Apache's
preload stage. [Michael Peters]
Added EnableTemplateCache configuration parameter to be able to turn Krang
UI template caching on. [Michael Peters]
Added the ability to limit the number of versions saved in the database for each Story, Media, and/or Template object, automatically pruning the oldest ones. [Noam Weinstein]
In Krang::ElementClass::XinhaEditor fixed caching of htmlarea.js. [Bodo Schulze]
When a user has read-only access to stories, media, and/or templates, made buttons like Publish, Add, Checkin, etc. hidden from view. [Noam Weinstein]
When editing media, made Save and Save_and_Stay buttons automatically publish to preview. [Noam Weinstein]
Added a new script bin/krang_exec to make it really simple to run commands against multiple Krang instances using Krang libraries, addons, etc. [Michael Peters]
In Schedule's list_all runmode show the Delete button if there
are any table rows. [Bodo Schulze]
Fixed JS function name in Krang::ElementClass::MediaLink. [Bodo Schulze]
Fixed a bug when trying to import/export UTF-8 data. [Michael Peters]
Added inheritable/overridable methods to Krang::Handler, login_uri()
and unprotected_uri(). [Jesse Erlbaum]
Made previewing from story-edit screen validate and then display the user's latest changes (i.e. changes they haven't yet saved). [Noam Weinstein]
Made missing-template errors show the actual name of a missing file even if it was included by another template. [Noam Weinstein]
Added alerts notifying user if the template or media file being edited was modified by another user or window. (This used to crash.) [Noam Weinstein]
Implemented admin perm 'admin_users_limited'. Redirect to login screen if user tampers with GID params. [Bodo Schulze]
Added new option --no_default to bin/krang_useradd to prevent the user being associated with group 'default'. [Bodo Schulze]
Added real-time client-side syntax-highlighting (the CodePress library) to the textareas used for viewing and editing Templates. Thanks to Jesse for suggesting this feature, and finding the most excellent CodePress.org project! [David Kaufman]
Completed v1 of multiple-window, multiple-session support, allowing a user to open multiple stories, templates, publishing windows, etc. at the same time, and log off each window individually or all together. [Noam Weinstein]
Implemented requested ``Replace Story'' feature where instead of a simple duplicate-URL error, creating a story that conflicts with existing URLs now yields a dialogue box giving users the option of overwriting the duplicate URLs. [Noam Weinstein]
Removed deprecated Story ``Priority''. [Noam Weinstein]
Added platform file for RedHat Enterprise Server 5 (ES5) [Jesse Erlbaum]
Added bin/krang_dump_session CLI util to help track down session problems. [Michael Peters]
Fixed small bugs in TimeChooser where hour/mins of 0 were taken to be null, and midnight hour was misunderstood during conversion. [Noam Weinstein]
Made Krang::ElementClass::XinhaEditor work again. [Bodo Schulze]
Fixed bug in Sites: Sites can now rename their URL without losing deployed templates. [Jesse Erlbaum]
Fixed small bugs in TimeChooser where hour/mins of 0 were taken to be null, and midnight hour was misunderstood during conversion. [Noam Weinstein]
Added alerts notifying user if the story being edited was checked-in, stolen, or deleted by another user while they were editing it. [Noam Weinstein]
Implemented requested ``Steal Story'' feature, allowing a user with force-checkin permission to grab/edit stories checked out to others in one step. [Noam Weinstein]
Enhanced all duplicate-URL checking methods to prevent new stories with slugs from conflicting with existing category URLs, and new categories from conflicting with existing stories. [Noam Weinstein]
Implemented 'Replace Category' button in Edit Story CGI to simplify process of moving stories. [Noam Weinstein]
Made slugs optional (but not required) for all story types,
added slug_use() method to TopLevel allowing class-based
defaults/requirements, and enhanced New Story and Edit
Story CGI to show slug fields as appropriate. [Noam Weinstein]
Added title/slug mapping for high CP1252 and latin-1 chars to Krang.Slug.title_to_slug(). [Bodo Schulze]
Fixed bug in ListGroup.pm where re-editing from GUI lost all but first value selected when multiple => 1. [Noam Weinstein]
Implemented automatic slug-generation based on title and story type. [Noam Weinstein]
Made 'New Story' & 'Add Category' dialogues remember the last category chosen during current session. [Noam Weinstein]
Made 'Save' buttons in element editor truly save to disk even when editing a container, and replaced old non-disk save with a 'Done' button. [Noam Weinstein]
Fixed addon v2 compat bugs in some test files. [Bodo Schulze]
Get bin/krang_install ready for use with MySQL 5.* [Bodo Schulze]
Added --all-instances flag to bin/krang_publish to work with
--everything. [Michael Peters]
Fix ordering of media types on media UI to be in alphabetical order. [Eric Folley]
Completely new skin. [Don Brodale, Michael Peters and Eric Folley]
New AJAX interface and Javascript re-write. [Michael Peters]
Added a new forgot-password functionality to the login screen. [Michael Peters]
Added the EnableFTP config directive which is true after an
upgrade. [Michael Peters]
Added the Secret config directive to be used for encryption and
encoding. [Michael Peters, Bodo Schulze]
Added the ContactEmail and ContactURL config directives to be used in
links in the footer. [Michael Peters]
Added the CustomCSS config directive which allows each instance to change
the CSS for the CMS. Most commonly this can be used to add specific logo
images per-instance. [Michael Peters]
Fixed bug #10. Extended Skins configuration by allowing an arbitrary list of CSS colors that will be put into an arbitrary number of .css.tmpl files. [Michael Peters]
Fixed bug #3. $publisher->publish_context now does not die if called without data.
[Michael Peters]
Fixed bug in bin/krang_upgrade when trying to chown files
that had a single quote in them. [Mark Pearson, Michael Peters]
Make sure a copied story won't receive a duplicate URL. [Bodo Schulze]
Implemented desk security as specified in docs/permissions.pod and discussed with Jesse Erlbaum. Also added tests to verify the API part of this patch. [Bodo Schulze]
In Krang::Story-checkout()> and Krang::Story-move_to_desk()>,
fixed bugs related to story's desk_id and last_desk_id. Added tests
for it in t/story.t. [Bodo Schulze]
In Krang::CGI::Desk and Krang::CGI::Workspace, include desk name
in message when moving a story to another desk. [Bodo Schulze]
Show the 'text' cursor all over Xinha's edit area. [Bodo Schulze]
In Krang::HTMLPager, make krang_pager_sort_field persistent on
initial call to a Krang::CGI::* module's find() method.
[Bodo Schulze]
Added --below_category_id option and implemented
--limited_to_category option for bin/krang_publish. [Bodo
Schulze]
Add Fedora 7 as a platform for building. [Michael Peters, Jesse Erlbaum]
Upgraded DBI and DBD::mysql to be able to build Krang against newer versions of MySQL. [Michael Peters]
In Krang::CGI::Story::copy(), preserve charset when copying a
story. [Bodo Schulze]
In Krang::Publisher::publish_context(), return an empty list to avoid
warnings when trying to get an empty publish context. [Bodo Schulze]
Added test_categorylink() to t/publish.t (implicitly tests
Krang::URL::real_url()). [Bodo Schulze]
Make use of Krang::URL::real_url() in the template_data() method of
Krang::ElementClass::CategoryLink, Krang::ElementClass::MediaLink and
Krang::ElementClass::StoryLink. [Bodo Schulze]
Added new module Krang::URL. It provides one method -- real_url() --
which adjusts the URL of story, media and category objects according
to their publishing context. [Bodo Schulze]
Added krang_src_dependency_check script to check Perl source module dependencies. [Michael Peters]
In Krang::ElementClass::CategoryLink, Krang::ElementClass::MediaLink and Krang::ElementClass::StoryLink fixed addon v2 compat bugs. [Bodo Schulze]
After you've already built Krang --with--ssl, if you do a
krang_build --rebuild it will do the rebuild --with-ssl too.
In Krang::CGI::Media::list_active_row_handler(), fixed building of
thumbnail preview link. [Bodo Schulze]
In Krang::CGI::Story's create() method, fixed building of message
string after a Krang::Story::DuplicateURL error has been thrown.
[Bodo Schulze]
In bin/krang_build, got rid of hard coded versions of Apache tarballs. [Bodo Schulze]
Fixed bug when previewing a story that was copied from another story but hadn't been saved yet. [Michael Peters]
Added platform files to support Redhat Adaptive Server AS3 and AS4. [Jesse Erlbaum]
Applied Jose Quijada's patch to permit krang_export to handle large sites without running out of ram. [Jesse Erlbaum]
Fix various buglets regarding paging and using overridden modules in an addon. [Michael Peters]
Fixed problem with desk deletion where desks were reported to have stories while those stories have been checked out to the user's workspace. Also make sure the desk selector preselects as the default checkin desk the next desk given by the desk's sorting order. [Bodo Schulze]
In docs/permissions.pod, describe admin bits 'admin_scheduler' and 'admin_lists'. [Bodo Schulze]
In templates/Desk/desk.tmpl, removed 'Check out' Button and JavaScript
goto_edit() function, since they double the 'Edit' link. [Bodo Schulze]
Since first and middle name are concatenated with , we can't
html-escape the tmpl_var first_middle. So we'll do it one by one in
Krang::CGI::Contrib. [Bodo Schulze]
In check_categories() of Krang::CGI::Media::BulkUpload, fixed bug
where creation of non existing categories would fail if no parent
category is chosen. [Bodo Schulze]
In templates/story/view.tmpl, changed static template string 'Version' to 'Current Version'. [Bodo Schulze]
Backport to trunk of Michael Peters' Ajax branch revision 3699,
removing warning in view() of Krang::CGI::Story occurring when story
version is undef. [Bodo Schulze]
Backport to trunk of Michael Peters' Ajax branch revision 3705, implementing password match check in Krang::CGI::MyPref. [Bodo Schulze]
In list_active() in Krang::CGI::Media, Krang::CGI::Story and
Krang::CGI::Template, made admin permission may_checkin_all
consistently control whether checkin checkboxes and button should be
displayed in ``Active Media'', ``Active Stories'' and ``Active Templates''.
[Bodo Schulze]
In krang.conf, allow multiple word InstanceDisplayName.
[Bodo Schulze]
Fixed addon v2 bugs in deserialize_xml() of Krang::Alert,
Krang::Category, Krang::Contrib, Krang::Group, Krang::List,
Krang::ListItem, Krang::Media, Krang::Story and Krang::Template.
[Bodo Schulze]
Added ApacheMaxSize directive to krang.conf so that you can
adjust the memory used depending on the machine capabilities and
the number of addons installed. [Michael Peters]
Fixed handling of hidden elements in the Story editor so they
wouldn't appear in the UI as advertised. [Michael Peters]
Fixed problem with importing data when an addon overrode the 'Group' package. [Michael Peters]
Fixed problem with BadLoginCount violations being checked too late. [Bodo Schulze and Michael Peters]
Fix bug that occurs when changing a user's info the user would then
be forced to change their password the next time they logged in if
PasswordChangeTime were set. [Michael Peters]
Fix ISE that happens when creating a new user via the UI when
PasswordChangeCount is set to a non-zero value. [Michael Peters]
Fixed a bug where Krang::Story->revert() would set the
checked_out field to the checked_out_by column, thus breaking
the ``Active Stories'' screen. [Michael Peters]
Story Type selector on Find Story Advanced Search is now ordered
by the element's display_name. [Michael Peters]
Added use_data, use_data_size and cache_key options to
Krang::HTMLPager's new(). Also added calculate_limit(),
calculate_order_by(), calculate_order_desc()
and calculate_current_page_num() to expose the inner calculations
when needed. [Michael Peters]
Fixed element editor to not display a delete button when no elements allow deletion. Also suppressed the Order checkbox when nothing is reorderable. [Sam]
Send no-cache HTTP headers for all Krang::CGI requests. This will fix some problems when logging in as a different user with the same browser session in IE. [Michael Peters]
Upgraded to HTML::Template v2.9 fixing several bugs. [Sam]
Added a new configuration variable, PreviewSSL, which controls whether links to preview use SSL. This behavior was previously the default when EnableSSL was set, but now it is available independently and can be turned off even when Krang itself is using SSL. [Sam]
During DB creation, addon sql/ files should come after core Krang. This allows addons to change existing Krang data/tables. [Michael Peters]
Fixed bug where deleting a category which was used in an advanced searched caused an ISE when returning to the advanced search. [Sam]
Fixed bug where use of URL search on Find Template would result in incorrect substitution of % for non-alphanumeric characters. [Sam]
Fixed bug where hitting enter on the new or edit template screens would produce an ISE. [Sam]
Fixed bug in media find - searches which included _ or % wouldn't find anything. [Sam]
Fixed media bulk upload to ignore MacOSX fluff in upload archives (__MACOSX directory, .DS_Store, .localized). [Sam]
Fixed bug in New Template where it was impossible to clear the category selector after making a selection and clicking Save. [Sam]
Fixed a bug in media bulk upload - unless the media object was originally created with its filename for title (i.e. uploaded via bulk-upload or FTP) then trying to replace it with bulk upload wouldn't work. [Sam]
In Krang::CGI::Status, import only ':html' functions from CGI, since
CGI's param() may mess up CAP's param(). [Bodo Schulze]
Added two new methods to Krang::ElementClass::TopLevel,
publish_frontend_app_template() and publish_frontend_app_stub().
These new methods permit a Krang site to publish interactive
applications and templates for those applications easily and
consistently. [Jesse Erlbaum]
Modified Site Server configuration to support CGI applications (ending in ``.cgi'') and Apache::Registry apps (ending ``.pl''). This will permit the site server to host interactive applications. [Jesse Erlbaum]
Added new parameter ``mode'' to additional_content_block() method
in Publisher. This new parameter permits the permission of the
file to be set, which is particularly useful for publishing
executable files. [Jesse Erlbaum]
Changed SiteServer to forbid any request which doesn't match a
publish or preview URL. SiteServer trans handler now sets up
$ENV{DOCUMENT_ROOT} correctly which is needed in a CGI environment.
[Jesse Erlbaum]
Krang::lib set to also ignore ``.svn'' directories. [Jesse Erlbaum]
Stricter enforcement of asset permissions. [Michael Peters]
During Apache and FTP startup, krang now properly calls AddOn init-handlers. [Michael Peters]
Fixed a long standing publishing bug. Shuffling stories around could cause the wrong files to be deleted when publishing. [Sam]
Added several new configuration options which allow Krang instances to run on separate IPs and have different SSL configurations. [Sam]
Added a new option for addons, DataSetClasses. This allows addons to extend Krang::DataSet and include new objects in KDS files. [Sam]
Implemented a system of universally-unique identifiers (UUIDs) for Krang objects with keys that may change (ex. stories may change their URL). This allows updates between machines to propagate these changes correctly when objects are moved with krang_export and krang_import. [Sam]
Added PasswordChangeTime and PasswordChangeCount directives
to allow the forcing of users to change their password every PasswordChangeTime
days and not permit users to use old passwords with PasswordChangeCount
changes. [Michael Peters]
More uniform password validation. Now also easier to implement a custom password policy as an addon. [Michael Peters]
Added security feature of locking out users after several failed login
attempts. Configurable by the BadLoginCount, BadLoginWait and
BadLoginNotify conf directives. [Michael Peters]
Fixed bug in Krang::AddOn which would cause multiple version upgrades which include changes to class.conf to fail. Specifically, the updated class.conf (and other libraries) were not being reloaded until after the upgrade ran. [Jesse Erlbaum]
Fixed bug in import where templates that were not deployed on the original site, where deployed on the target site upon import. [Michael Peters]
Fixed bug in install/upgrade when using a binary built for SSL in the way SSL symlinked conf files were handled. [Michael Peters]
Changed ElementClass::ListGroup input_form so that it will not redundantly label single-dimensional lists. Also modified ListGroup to be more easily sub-classed. [Jesse Erlbaum]
Fixed bug in which HTTP redirects in KRANG_DEBUG mode would cause session to not be unloaded and saved to disk. [Jesse Erlbaum]
MSIE Mac is not un-supported (it never was really, it's now official). Allow Konqueror to come in as well. [Michael Peters]
Fixed several places lacking in HTML escaping, particularly in places that used Krang::HTMLPager. [Michael Peters]
Krang now automatically deletes any alerts tied to a desk when that desk is deleted. [Michael Peters]
Fixed krang_install --FromBackup issues when the backups contain addons. [Michael Peters]
Fixed bug where KDS import would trigger delete_hook calls when updating elements for stories and categories. [Sam]
Allow users whose page-size preference is 100, to be able to toggle between 100 and 20, instead of 100 and 100. [Michael Peters]
Fixed redirect problem when going to the installation root already logged in on a single installation machine (resulted in a 404). [Michael Peters]
Entering publisher.pl without any query params or a story in the session will now redirect to the workspace instead of croak'ing. [Michael Peters]
Fix issue in Krang::CGI::Story::db_save() changes to the slug or title could get lost if the submission was invalid for other reasons. [Michael Peters]
In Krang::CGI::Story::view(), use tmpl_var 'is_root' to inform templates/Story/view.tmpl whether to show the 'Edit' button or not. In templates/Story/view.tmpl, get rid of tmpl_var 'old_version' which fails to show this button when returning from viewing a non-root sub-element. [Bodo Schulze]
In templates/Contrib/associate_list_view.tmpl, alert user if no contributor has been checked to (un-)associate. [Bodo Schulze]
SiteServer configuration now does server-side includes by default. SSI is very common for sites managed by Krang. This will make development use of the SiteServer more useful and easier. [Jesse Erlbaum]
Binary distributions now include src/ allowing for rebuilding installed copies of Krang. [Sam]
Fixed several bin/ scripts to always load Krang::Conf via Krang::ClassLoader before using it. This fixes problems overriding Krang::Conf in an addon. [Sam]
Fixed bug in Krang::ElementClass::TopLevel error message. [Jesse Erlbaum]
Fixed long-standing bug in Krang::ElementClass::ListGroup in which multi-dimensional sub lists would not update if you used the keyboard (not the mouse) to update the selected item. [Jesse Erlbaum]
Added --delete_missing and --input_file options to krang_create_lists. The latter will permit you to specify a lists.conf file for import. The former will delete list/group/items which are not found in the specified lists.conf (as opposed to adding the new records to the existing ones). [Jesse Erlbaum]
Fixed bulk-edit to allow white-space on the blank line separating paragraphs. [Sam]
Modified krang_schedulectl to skip scheduler start-up if SchedulerMaxChildren parameter is set to 0 in krang.conf. This is useful in development when you do not want the scheduler to run. [Jesse Erlbaum]
Added new --grep option to krang_upload_media. This option permits you to use a regex to filter what you want media to upload. [Jesse Erlbaum]
Changed krang_upload_templates script to now handle ``global'' templates (those without categories). Fixed undefined value warning in Krang::Template when searching for templates without categories. [Jesse Erlbaum]
Upgraded Archive::Tar to latest version (v1.29) to correct several annoying bugs, including the nefarious ``unable to read chunk'' bug related to high-ASCII characters contained in archived files. [Jesse Erlbaum]
Added --clean option to bin/krang_addon_installer. [Michael Peters]
Added new index to element table. This index will greatly speed complex publishing logic. Thanks to James Reidy for identifying the bottleneck. [Jesse Erlbaum]
Fixed a bug in benchmarking system. [Jesse Erlbaum]
Fixed a bug which could cause an upgrade to fail if the target Krang has media files with single-quotes in their filenames. [Sam]
Made changes to Krang's Javascript to allow easier future integration of Prototype Javascript library. [Michael Peters]
Fixed bug in Default::fancy_keywords; updates to fields would be lost if a new element was added to the story. [Michael Peters]
Upgraded to HTML::Template::Expr v0.07, providing a better expression syntax and some bug-fixes. [Michael Peters]
Fixed a bug which occurred when a story was reverted after a change in category assignment. [Michael Peters]
Fixed KDS deserialization to work when categories point to stories and media below in the category tree. [Michael Peters]
Fixed bug in Krang::CGI::Site::add_save_stay() where clicking ``Delete'' right after ``Save & Stay'' wouldn't delete the newly created site. [Bodo Schulze]
Added missing button GIF for Xinha's SuperClean plugin. [Bodo Schulze]
Fixed krang_upgrade and krang_build to prevent overwriting existing SSL certificates [Michael Peters]
Upgraded HTML::PopupTreeSelect to v1.5, fixing a bug affecting Firefox and Camino on Mac OSX. [Sam]
Adapted t/publish.t to Michael Peters' SSL simplification patch. [Bodo Schulze]
Fixed addon v2 compat bug in t/find.t. [Bodo Schulze]
Fixed Xinha link-munging so that you can now use the WYSIWYG editor to create links and images. Full-screen mode now works properly. [Jesse Erlbaum]
In Krang::Publish I decoupled processing of assets from publish_story()
and preview_story() allowing for future subclassing into Krang::Publisher::Parallel
simply redefine _process_assets() and _process_preview_assets().
[Aaron Dancygier]
In Krang::Test::Content, modified _init_words() to skip words
containing an apostrophe. [Bodo Schulze]
Added a new configuration parameter, Charset. This may be used to control the character set for the Krang user-interface. [Sam]
Fixed ``Forbidden'' bug in Xinha implementation by permitting static Xinha files. [Jesse Erlbaum]
Made Krang::CGI::Category::find() and find_row_handler() addon v2
compliant. [Bodo Schulze]
Added enforcement of permissions at the application and run-mode level rather than just at the UI level. [Michael Peters]
Make admin list manager work intuitively and statefully. Pressing RETURN does no longer submit the form, but adds a new to the list. [Bodo Schulze]
In element_lib/TestParent1/* and element_lib/TestSet1/*, added addon v2 compatibility. [Bodo Schulze]
In t/cgi.t, fixed addon v2 compat bug. [Bodo Schulze]
Upgraded to HTML::Template::Expr v0.06 - now with chained binary operators! [Sam]
In Krang::Story, fixed addon v2 compatibility bug in find(). [Bodo Schulze]
In Krang::History, replaced constants FIELDS, OBJECT_TYPES AND ACTIONS
with methods fields(), object_types() and actions()
respectively. [Bodo Schulze]
Allow multiple word action names in admin scheduler. [Bodo Schulze]
In admin contrib list view, made type column sortable. [Bodo Schulze]
For Krang::History, allow Krang::Story, Krang::Media and Krang::Template to be overlayed with addon modules. [Bodo Schulze]
Added documentation for Krang::Widget::template_chooser() and cleaned up template_chooser code. [Bodo Schulze]
Added tests for scalar methods admin_categories_ftp and admin_lists to t/group.t [Bodo Schulze]
Added new primitive, Krang::ElementClass::CheckBoxGroup, which integrates with Krang's lists system, in addition to permitting simple values. [Jesse Erlbaum]
Added new option ``--makecats'' to krang_upload_media and krang_upload_templates. When specified, missing categories will be created in the CMS, instead of skipped. [Jesse Erlbaum]
Fixed bug in Krang::ElementClass::ListGroup and Krang::ElementClass::RadioGroup such that associated ListItems will now be automatically added to the DataSet. [Jesse Erlbaum]
Fixed bug in Krang::ElementClass::Date where date would change if KDS was exported from a machine in one time zone and imported on a machine in an earlier time zone. [Jesse Erlbaum]
Fixed sql/mypref.sql so that user's don't clobber each others preferences. [Bodo Schulze]
Added missing setting of template param 'parent_path' to Krang::CGI::ElementEditor::find_story_link() [Bodo Schulze]
Replaced template selector in 'New Template' and 'Find Template' (advanced search) with category_chooser style template_chooser. [Bodo Schulze]
Simplified use of --module option with bin/krang_build [Bodo Schulze]
Added checkbox to groups manager to allow ``admin_lists'' to be set. [Jesse Erlbaum]
Fixed Krang::Navigation bug where Desks were not being displayed in proper order. [Aaron Dancygier]
Fixed ISE when attempting to publish templates and media/stories at the same time from the UI. [Michael Peters]
Fixed ISE when viewing media files from the Scheduler UI. [Michael Peters]
Added new script krang_upload_media. This works similarly to krang_upload_templates. Using this script you can maintain a media/ directory in your add-on which contains all site-specific media. This is particularly useful for development, when developing templates and site design. The script krang_createdb now automatically loads any media found in your add-on directory. [Jesse Erlbaum]
Fixed Krang::Group test to not key explicitly on name to simplify overriding. [Peter Leonard]
Added addon admin scheduler 'admin_scheduler' permissioning bit so only admin users will see this feature. [Aaron Dancygier]
bin/krang_upgrade now checks that ENV{KRANG_ROOT} is unset [Aaron Dancygier]
Fixed bug in bin/krang_upgrade and bin/krang_createdb where without quotes mysql was converting db_version to float, instead of as just a string. [Aaron Dancygier]
Removed previous patch (v1.22) to bin/krang_upgrade. Patch checked an upgrade directory in each addon directory for upgrade scripts to run. This is already supported in bin/krang_addon_installer. In effect every time you upgraded krang it would re-apply addon upgrade scripts. [Aaron Dancygier]
Installer now chowns krang.conf to KrangUser:KrangGroup instead of to root. [David Kaufman]
Krang::XML::Validator now looks in the schema/ directories of
installed Krang addons to find .xsd files describing objects to be
imported or exported. This furthers the support for non-standard
objects within Krang. [Peter Leonard]
Upgraded to HTML::Template v2.8 and HTML::Template::Expr v0.05. [Sam]
Fixed Krang::CGI::Help to lookup help files in an addon's htdocs/help/ directory, allowing addons to provide their own help content. [Sam]
Fixed a flaw in Krang::Handler that allowed access to any file via the root handler. Now only image files and the two Krang CSS files are accessible without logging-in. [Sam]
Added new script, krang_upload_templates, to upload a directory of templates into a Krang instance. Modified krang_createdb to call this script. [Jesse Erlbaum]
Sweetened up Krang::ElementClass::RadioGroup to use HTML <labels>, and to allow you to specify a number of columns for the input form. Added ``list_group'' parameter to allow RadioGroup to be populated from a Krang list. [Jesse Erlbaum]
Added ``find'' parameter to Krang::ElementClass::StoryLink and ::MediaLink, to allow element authors to pre-set a filter in their element library. Cleaned up some tests, silenced some spurious warnings. [Jesse Erlbaum]
Fixed bug in Krang::Alert which would not allow sub-classes of Krang objects to be used. Fixed Krang::ListItem tests in t/find.t, and improved order_desc test to check entire result set. Fixed bug in t/library.t which caused some tests to appear without names. [Jesse Erlbaum]
Fixed a bug in krang_create_lists which caused script to fail for new addon system. Added new feature to krang_create_lists and lists.conf to permit list items to be specified. [Jesse Erlbaum]
Fixed a bug in which some tests would fail if the configured element set did not have an ``article'' type. Tests will now run even if you're using a custom element library. [Jesse Erlbaum]
Fixed a bug in Krang::lib which caused ``legacy'' /krang/element_lib path to not be included in Perl's @INC path. [Jesse Erlbaum]
Extended bin/krang_upgrade to check an upgrade directory in each addon directory for upgrade scripts to run. This is in addition to $KRANG_ROOT/upgrade. [Mike Friedman]
Fixed bug in Krang::ListItem that did not allow sub-classes of Krang::List and Krang::ListItem to be used. [Bodo Schulze]
Made URL in message 'story_publish' a link opening the published story in a new window. [Bodo Schulze]
Fixed bug in Krang::Story which would not allow subclasses of Krang::Contrib, Krang::ElementClass::StoryLink and Krang::ElementClass::MediaLink to be used. [Bodo Schulze]
Addon-v2 compliance for bin scripts krang_scheduled krang_schedulectl krang_load_skin krang_info krang_ftpd krang_ftpctl krang_floodfill krang_delete krang_create_lists krang_category_rename krang_bench krang_backup krang_apachectl krang_siteserverctl krang_makedist krang_publish [Aaron Dancygier]
Added SSL support. [Bodo Schulze]
Fixed a bug in bin/krang_backup where foreign key constraints in the wrong order were conflicting with addons containing innodb tables. Patch sets foreign_key_checks=0 at the top of the dump file. [Michael Peters]
Fixed a bug in Krang::Publisher::ZeroSizeOutPut(). Wrong hash keys specified. [Jesse Erlbaum]
Added delete action to track in Krang::History::add_history().
Added add_history() calls in Krang::Story::delete(), Krang::Template::delete(),
and Krang::Media::delete() [Aaron Dancygier]
Converted default element set to use Krang::ClassLoader and Krang::ClassFactory in compliance with new addon system. [Aaron Dancygier]
Fixed a bug where deleting an element and then reverting to an older version where that element existed didn't properly restore the element. The old element would load properly but save wouldn't restore it in the database. [Sam]
Added support for Fedora Core 4. [Aaron Dancygier]
Fixed compile bug in krang_backup introduced during the addon v2 work. [Sam]
Fixed link to static files (images, CSS, Javascript) to work through the root server. [Sam]
Added support for a new optional DBSock directive in krang.conf that allows Krang to connect to a local MySQL server using a user-configurable socket file location to resolve socket-related DBI connection errors. [David Kaufman]
Refactored Krang::Scheduler class into
Krang::Schedule
Krang::Schedule::Action and
Krang::Schedule::Action::[expire|publish|...|YourClass]
Where YourClass must implement an execute method.
This Paves the way for custom scheduler addons.
Simply write a class that inherits from Krang::Schedule::Action and
implements an execute() method. [Aaron Dancygier]
Added conditional Scheduler link in left nav bar under admin section This is for non story or media related administrative scheduler addons. Link points to new admin scheduler screen. Allows you to use scheduler addons in place of external scripts run by cron. [Aaron Dancygier]
Added support for Scheduler addon classes that are tied to story or media content. This will show up in current scheduler screen. [Aaron Dancygier]
Fixed shebang line bug in /htdocs .pl registry/cgi scripts and Addon *.pl scripts. [Aaron Dancygier]
Fixed hardcoded perl bug in Addon.pm install() and uninstall()
[Aaron Dancygier]
Added tests for admin scheduler addons in t/addon_installer.t [Aaron Dancygier]
Added support for centos release 4 [Ado Nishimura]
Fixed bin/krang_ctl and bin/krang_scheduled, to use Krang::ClassLoader [Ado Nishimura]
Fixed Krang::NavigationNode documentation and xinha German localization file [Bodo Schulze]
Fixed compile time ordering issues with bin/krang_addon_installer, bin/krang_addon_uninstaller, and bin/krang_load_skin [Bodo Schulze]
Fixed a bug where the logs would sometimes end up owned as root when Krang was started as root. [Sam]
Fixed bug in Krang::ElementClass::ListGroup::validate() which prevented lists from setting required=>1. [Jesse Erlbaum]
Fix bug that prevents users with ``may check in all'' permission from checking in templates checked out by other users. [Perrin]
The add-on v2 project is complete, bringing many improvements to the way Krang add-ons work. Here's a list of the biggest changes:
addons/. They may be developed in-place, potentially under
separate version control.
src/ directory. The Krang build system will build these modules at
install time.
krang_addon_uninstaller script. (This does not apply to addons
installed with the old system.)
conf/class.conf configuration file.
krang_createdb.
Added a new element class, Krang::ElementClass::XinhaEditor, which offers a WYSIWYG HTML editor based on the Xinha Javascript editor. [Sam]
The Krang build system no longer builds man-pages for all the modules it builds. This reduces the overall build time by about 10%. [Sam]
This brings Krang up-to-date with all released Apache security fixes. [Sam]
Fixed a bug where setting use_category_templates to 0 in your top-level class meant no additional_content_blocks will get category content, regardless of their individual use_category setting. [Sam]
Fixed a bug where if you set publish_category_per_page to 1 in your top-level class then any additional_content_blocks with use_category set to 1 would get the last page's category content. [Sam]
Added a new method to Krang::ElementClass::TopLevel, file_mode(). This method may be overridden to control the mode of published files. [Sam]
Fixed a bug where a category linking to a sub-category via an element would break krang_import. [Sam]
Fixed the Krang FTP server to return template sorted by filename. [Sam]
Added support for Module::Build to the Krang build system. [Sam]
Documentation formatting cleanup. [Don Brodale]
Fixed a bug where the publish_category_per_page setting wasn't being respected for additional content blocks. [Sam]
Added ability for categories to be created or removed via the FTP interface. Added new group permission, ``Manage categories via FTP'' which defaults to OFF. Turn this on to permit your users to use this new feature. Fixed ASCII-mode bug in FTP interface. [Daniel Packer]
Added new platform files for RedHat Enterprise Server ES3 and ES4. [Jesse Erlbaum]
Added a new Krang::ElementClass method, mark_form_invalid(). This method may be overridden to alter how Krang marks element form fields invalid. The default behavior, wrapping the field in a span set to the ``invalid'' class remains. [Sam]
Upgraded to the latest release of HTML::PopupTreeSelect, v1.5. [Sam]
Improved support for Mac OSX, both in compilation and documentation. [Aaron Ross]
Fixed amusing bug in Krang::Test::Content that was causing the same random word sequences to be generated multiple times when called in a tight loop. [Perrin]
Fixes to the import process as it affects Krang::ListItem objects - list orders are now preserved properly. [Peter]
Can now bundle Krang::List data with your element library, and have
it imported when the database is created (in the same fashion as
templates.kds). The file is lists.kds. [Peter]
Added slug as a variable available to all templates at
publish-time. This was intended to be there all along, but somehow
fell through the cracks. [Peter]
Krang::ElementClass::ListGroup now handles multidimensional lists of arbitrary depth. Further testing is needed, but so far things look good. [Peter Leonard, Andrea Bonotto]
Fixed a bug in Krang::DataSet with loading compressed .kds.gz files
and added a test for it. Also fixed bug in dataset.t where it was not
skipping all the tests that need TestSet1 when TestSet1 is not available
[Perrin]
Fixed a bug in Krang::List - default sort order for find was by
name, it is now by parent_list_id. [Peter]
Added tutorial documentation on how to use Lists in an element library. [Peter]
Changed HTML in templates to use text rather than textfield in form
inputs. [Perrin]
Updated several modules: DBI to 1.47, WWW-Mechanize to 1.10, URI to 1.35, and libwww-perl to 5.803. [Perrin]
Added bin/krang_addon_framework - a new script to create a
supporting framework to simplify development of Krang addons. [Peter]
Added --rebuild option to bin/krang_build allowing it to build modules
even if there is an existing Krang build already. [Perrin]
Added --not_on_desk option to bin/krang_publish - limiting
publishing to checked-in items that are not on any desk. [Michael Peters]
Fixed a bug in Krang::Schedule - cleanup of the tmp/ directory
was not being done properly. This is now fixed. [Peter]
Cleaned up how KRANG_PERSIST variables are stored in the session
cache for remembering search preferences. The cleanup also fixed a
number of bugs - the Clear buttons on the advanced-search pages now
work again, category searches are now done on a per-type basis
(e.g. separate Story/Media/Template category-search prefs), and search
terms are remembered properly. [Peter]
Fixed a bug in Krang::CGI::ElementEditor - the new ``save always reorders'' functionality that is part of 1.100 was breaking bulk-edit, where reordering never happens. This now works properly. [Peter]
Added error-handling for Stories that return a zero-length string when previewed/published. [Peter]
Upgraded Imager to 0.44 from 0.43, which fixes a bug involving thumbnailing of extreme-aspect-ratio images. [Peter]
Fixed error message trapping in bin/krang_install to get Krang to
play nicer with MySQL 4.1.x [Peter]
bin/krang_install and bin/krang_createdb now handle the @localhost
in the MySQL user creation consistently. [Perrin]
bin/krang_ctl no longer uses sudo for starting things on unprivileged
ports. [Perrin]
Upgraded Scalar-List-Utils to 1.14 from 1.09 - this should fix some
compilation issues with MacOSX. [Peter]
About Krang now reports server IP address, AddOns are now
alphabetized properly. [Peter]
Added server IP address, along with instance-by-instance breakdowns to
bin/krang_info [Peter].
Fixed a bug in Krang::Story->_load_version() - the restored version
of the story still held outdated checkout and publish settings. The
restored version now returns default values for those parameters
(e.g. not checked out, not published). Note that this does not affect
revert(). The result is that scheduled publication of specific
story versions now works. [Peter]
Added build_preview_url to Krang::ElementClass::TopLevel. [Peter]
Added alt_tag and alt_tag_like searching to Krang::Media, also added as an option in Media advanced find screen. [Matt]
Clicking Story save/save and stay now reorders elements as well. [Matt]
Krang::Story->find() can now search over a list of site_ids.
[Peter]
Bugfix to Krang::Category->deserialize_xml(). Circular dependencies were not being handled properly, causing imports of some .kds files to fail. [Peter]
Upgraded DBD-mysql to 2.9004. [Peter]
Bugfix to Krang::Dataset - now xml files are validated based on their appearance in the index.xml file, as opposed to using File::Find in the xml dir. [Matt]
Added session caching of search/advanced search options for Story/Media/Template. [Matt]
Added Krang::Publisher->publish_context() - a means of storing
arguments during the publish of a given story. [Peter]
Added storage of sort order and sort by to session cache in Krang::HTMLPager. [Matt]
Bugfix in Krang::Schedule - alerts were not being run because of some incomplete code meant to check for valid alert id. [Matt]
Made changes in media UI to:
add 'publish to preview' button and underlying functionality
cause 'publish' button in edit screen to also preview the media
remove the 'reset' button.
have the 'Publish' button appear on the new media screen, no need to have to click save first.
[Matt]
Small bugfix to the Solaris Platform.pm [Joseph Sacco]
bin/krang_upgrade now supports remote MySQL databases. [Aaron
Ross]
Bugfix for bin/krang_publish, now correctly counts media total
and time with --to-preview option. [Matt]
Added bin/krang_expunge - designed to work in conjunction with
bin/krang_extract_subset, it deletes a site from a multi-site Krang
instance, and ensures that no dependencies are left hanging. [Peter]
Minor bugfix in bin/krang_extract_subset - proper handling of
StoryLink/MediaLink elements that do not point to anything.
Re-generated templates.kds for the Default and Tutorial element libraries, making them architecture-independent (see nfreeze note below). [Peter]
Krang now uses Storable::nfreeze rather than Storable::freeze
when saving binary and object data. The move to nfreeze should
make .kds files architecture-independent, allowing migrations between
different platforms (e.g. x86 / SPARC / PPC). [Peter]
Updated Storable to the current release, version 2.13. [Peter]
Added bin/krang_extract_subset. This script is designed to extract
a single site and its' content from a multi-site Krang Instance.
[Peter]
Krang::Story now handles calls to find() with an arrayref of
site_ids. [Peter]
Krang::Media now handles calls to find() with an arrayref of
site_ids. [Peter]
Krang::Template now handles calls to find() with an arrayref of
category_ids. [Peter]
Fixed a bug in Krang::CGI::Site that would cause ISE on attempted delete if a site had content in its root directory but no had no other categories [Matt]
Added population of 'width', 'height', and 'image_dimensions' for Krang::ElementClass::MediaLink fill_template. [Matt]
Bugfixes to Krang::CGI::Template that prevented files from being uploaded to the edit template screen, and caused ISE when no filename present. [Matt]
Bugfixes to Krang::Schedule - checked out or missing objects will no longer drop large perl-heavy error messages in the logs. Thanks for Michael Peters for the initial work to fix it. [Peter]
Fixed a bug in Krang::Publisher - zero-length story output is now output properly, with a logfile entry to make a note of it. [Peter]
Deployed version is now displayed in the template edit UI. [Michael Peters]
Fixed a bug in Krang::Schedule - scheduling specific versions of a story or media object for publish now works again. [Peter]
Additional documentation! The long-awaited Creating an Element Library in Krang! [Peter]
New documentation added - Running Krang on the Desktop: A guide on how to install and run Krang on your local machine. [Peter]
Solaris support added! Tested against Solaris 9, this should also work against previous versions as well. Thanks to Joseph Sacco (jsacco@earthlink.net) [Peter]
Support for Mac OSX has been added! Currently tested against 10.3.5, let us know if it works on other versions! Thanks to Matthew Wood (matt@nomorefluffybunny.com) [Peter]
bin/krang_info now gives story/media stats for each
instance. [Peter]
Fixed a bug in Krang::ElementClass::StoryLink where elements that were never linked to stories no longer throw an error, but return cleanly. [Michael Peters]
Mandrake support has been added! [Matt]
Fixed browser detection to deal with 1.0 prerelease of Firefox, which gives a version number of 0.10. [Aaron Ross]
Cleaned up error handling in Krang::Publisher and the
bin/krang_publish script - errors are now trapped properly and
reported in a cleaner fashion. [Peter]
Fixed a bug in the upgrade process of 1.024. Users who upgraded to 1.024 should immediately upgrade to 1.025. [Peter]
bin/krang_publish and bin/krang_delete now properly interact
with hidden stories. [Peter]
Send HTTP header with root menu. [Aaron Ross]
Escape values on login page to foil cross-site scripting attacks. [Perrin]
Add option to show 100 results per page. [Perrin]
Restructured the index page in docs/ - added a 'User' section, moved a few things around to make things easier for new users. [Peter]
Added bin/krang_info - a simple command-line script to list the
currently configured status of Krang. [Peter]
Reordered subroutine exports in Krang::Element to fix a library loading loop that cropped up under some circumstances. Thanks to Michael Peters (mpeters@plusthree.com) for finding it. [Peter]
Added support for hidden stories, based on class definitions. A
hidden story is one that, by default, does not show up in calls to
find(). This is useful for auto-generated story lists where some
types of stories shouldn't be listed. For example, this will be used
immediately by Krang Sitemap and
Krang RSS, neither of which should show in most lists. See
Krang::ElementClass::TopLevel and Krang::Story for more
information. [Peter]
Upgraded IPC::Run to 0.78, which is now pseudohash-free (later versions of Perl complain). [Peter]
Moved htdocs/help/history.html to htdocs/help/log.html to correct links. [Perrin]
Updated Imager to 0.43. [Peter]
Updated HTTP::BrowserDetect to the latest version, 0.98. [Peter]
Limited the directories being searched by bin/krang_install when
looking to change execute permissions on a newly-installed backup
file. There was no need to search a number of potentially large
directory trees, this should improve installation times. [Peter]
Added published => 1 argument to Krang::Media find()
method. Limits returning objects to those that have been published
before.
Fixed filenaming in krang_backup to use the correct 2-digit month
(old month values were 00-11, not 01-12). [Peter]
Fixed a bug in Krang::Media where thumbnails of certain images were causing segfaults. [Peter]
Fixed Krang::Story->preview_urls() to return the correct preview
URL for all sites when a story is associated with multiple sites.
[Peter]
Made Krang::Publisher->additional_content_block() a lot easier
to use from the developer perspective. Rather than handling the
result of the call, everything is now handled internally. Overriding
publish() to use additional_content_block is no longer required.
Additionally, it's backwards-compatible with the old way of doing
things, so no need to make changes to your element libraries. [Peter]
Fixed symlink bug that caused thumbnails to disappear from the UI after a Krang instance was moved to a different location on the filesystem. [Peter]
Fixed a bug where deleting a newly-copied story threw an error in the UI. [Peter]
Added platform support for Gentoo release 1.5.2, thanks to a patch from Fred Moyer (fmoyer@plusthree.com) [Perrin]
Added support for passing a list of classes to Krang::Story->find(). [Sam]
Added support for publish_category_per_page() in the publish
process. This functionality allows element library developers to
generate category template output customized for each page in a
story. [Peter]
Fixed a bug where Krang::ElementClass would complain about a missing template for a sub-element that wasn't actually needed. [Sam]
Fixed a bug related to the internal tracking of assets in
Krang::Publisher. This finishes up a minor restructuring that
ensures krang_publish publishes each story/media object only once
during a publish run. [Peter]
Fixed a bug in krang_publish. When publishing with the
--site_id argument, all media objects under that site are now
published, not just those media objects linked to stories. [Peter]
Cleaned up the code handling the management of internal asset lists in Krang::Publisher. This code is used to ensure the same asset is not published more than once during a publish run. [Peter]
Added support for searching on site_id in Krang::Media->find().
[Peter]
Added publish_category_per_page() to
Krang::ElementClass::TopLevel. This method will soon be used by
Krang::Publisher to determine whether or not to publish category
elements once for each page in a story, or once for all pages in a
story. [Peter]
Added automatic height and width data to the Default::image element. [Perrin]
Upped Apache timeout from 30 to 600. 30 seconds was too short to preview some extremely large stories. [Peter]
Errors writing to the filesystem while executing a preview/publish
through the Krang UI are now logged properly in logs/krang.log.
Previously, they were only reported in user-friendly (as opposed to
admin-friendly) fashion to the UI. [Peter]
Added indexes on the class and published_version columns in the
story table. This greatly speeds up searches against these fields.
[Sam]
Added new method use_category_templates() to
Krang::ElementClass::TopLevel. This boolean method defaults to
true, and can be used to determine whether or not to wrap story output
in category templates. [Peter]
Fixed a bug which caused scheduler problems in upgraded Krang installs. Krang::Schedule::Daemon was missing code to reset REMOTE_USER for each instance. [Sam]
Added directory hashing to Krang::Media's XML serialization system. This allows a single KDS file to contain any number of media files. The previous limit was 32,000. [Sam]
Added no_parent option to Krang::ListItem::find(). [Sam]
Fixed a bug in Krang::ListItem::find() which prevented ids_only
from working. [Sam]
Added missing indexes to the list tables, providing an impressive speedup in working on large lists. [Sam]
Fixed a bug that prevented Krang from installing on very recent MySQL
releases which do not tolerate trailing commas in CREATE TABLE
statements. [Aaron Ross]
Added the ability to run Krang against a MySQL database on a different
machine. There is a new configuration parameter, DBHost, and a new
option to krang_install, --DBHost. [Aaron Ross]
Fixed Krang::CGI::Publisher to not produce a nav-bar when preview results in an error. [Sam]
Fixed Krang::User to not load Krang::Group unless it needs to interact with groups. This is needed because Krang::Script now uses Krang::User to run as the 'system' user. Loading Krang::Group will cause Krang to load its element libraries, which isn't always a good thing to do. [Sam]
Fixed bug in Krang::ElementClass::Date which prevented the default method from returning the current date. [Sam]
Upgraded HTML::Template to the latest release, 2.7, to fix a bug where a stale template could be returned from the cache under unusual circumstances. [Sam]
Fixed a bug in the installer which prevented installing using an element set contained within an add-on. [Sam]
Added the ability to pass a filename to Krang::ElementClass's
find_template() method. [Matt]
Fixed a bug preventing deletions in the List Admin from working correctly. [Matt]
Fixed a bug in the FedoraCore1 platform library that would fail to find chkconfig unless it was in the user's PATH. [Sam]
Fixed a bug where elements using the default Krang::ElementClass
input_form() implementation would eventually cause browsers to slow to
a crawl and eventually crash. The whole sordid tale is here:
http://perlmonks.org/index.pl?node_id=363214 [Sam]
Fixed a bug where clicking Publish on the Edit Media screen didn't save changes. [Sam]
Fixed a bug where a story that failed to publish would still get a 'published' log entry. [Sam]
Added support for Fedora Core 2. [Sam]
Fixed problem determining KRANG_ROOT on Fedora Core 2 in all
Krang scripts. [Sam]
Fixed bug where krang_export could only write output in directories
where KrangUser had write permissions. The output file is now
opened before su'ing to KrangUser. [Sam]
Removed support for --append from krang_export. This option was
never, to my knowledge, used and it didn't work after the permissions
fix above. [Sam]
Changed the schema for the Krang::User XML format to make the new 'hidden' field optional. This allows data files from pre-v1.017 Krang to load in later Krangs. [Sam]
Fixed the v1.018 upgrade module to successfully upgrade instances from v1.016 and older. Also made changes to allow repeated runs of the upgrade module to succeed even if the upgrade stops part way through. [Sam]
Changed krang_upgrade to wait till the upgrade is complete before
updating Krang's version number. This means that failed upgrades can
be re-run and the same upgrade modules will be run again. [Sam]
Fixed Gentoo Platform tests so that any version of Gentoo 1.4.x now works. [Peter]
Fixed a bug in the error-handling section of Krang::Publisher that was hiding the real cause of errors during publish. [Peter]
Fixed broken --republish_only flag in bin/krang_publish. [Peter]
Changed the default of Krang::ElementClass::Date so that dates are updated
when the default() method is called and not when new() is called.
Made Krang::Story::find(published=>1) work with stories that had a published version of 1/0 instead of NOT NULL / NULL.
Fixed Krang::XML::Writer to allow raw tabs in XML without Base64 encoding. [Sam]
Added a workaround for a very strange seg-fault bug. [Sam]
Fixed bug where after upgrading to v1.018 old users don't show up in the User Admin list screen. [Sam]
Changed Krang::Site so that only the site's URL is required to be unique. Requiring all four fields to be unique, while seemingly sensible, causes numerous problems during data imports. If necessary we could add these checks back in at the UI level in Krang::CGI::Site. [Sam]
Fixed a bug in Krang::Contrib's full_name() that would add ``, '' to the
end of the name when the contributor had an empty suffix. [Sam]
Fixed a bug in Krang::Publisher where no file would be written if the story's output contained only whitespace or was empty. [Sam]
Bugfix related to the publish changes made in 1.017 - assets linked to a story being previewed from an edit interface are now marked properly. Media objects are now marked properly when previewed. [Peter]
Replaced Archive::Tar in Krang::DataSet->new with the system 'tar' for a 50x speedup in untaring. [Rudy]
Removed code from Krang::Contrib that disallowed stories with existing historical contrib-contrib_type pairs to preview/publish. [Matt]
Fixed permissions error during upgrade backup creation. [Sam]
Fixed bug where permissions were not being applied to the Find Link and Active list screens. [Sam]
Fixed a bug in Krang::Group which caused root-category permissions to be randomized during rebuild_category_cache(). [Sam]
Added --no-backup option to krang_upgrade. [Sam]
Fixed bug in bin/krang_publish where unknown errors during story
publish would trigger an exit without any kind of useful message. The
error is now printed to STDERR. [Peter]
Changed Krang to log and drop elements which exceed the maximum allowed by their parent element. This mirrors the behavior for elements with illegal class names. This allows for an easier element set development process at the risk of possible data loss, which is somewhat mitigated by the built in revision system. [Sam]
Fixed Krang::ElementLibrary to return a sorted list from top_levels(). This results in a sorted list or article types in the UI. [Sam]
Added a new hidden user called 'system' which is now used by Krang::Script. This means you can now delete the 'admin' user with impunity. [Sam]
Fixed bug where Krang::ElementClass::TopLevel::publish_check() was not being checked by Krang::Schedule. Stories that are marked to not be published by the scheduler will now have their wishes respected. [Peter]
Fixed bug where contributors created by krang_import weren't
searchable in the UI unless they had first, middle and last
names. [Sam]
Added code to generate HTML documentation for the scripts in bin/. [Sam]
Fixed a bug where previewing/publishing zero-length stories caused an error. [Peter]
Fixed a bug where tmpl_include calls in templates weren't correctly
searching the category tree in all cases. [Matt]
Modified Krang::Widget::category_chooser() to take into account category permissions when building the category chooser. Also took advantage of the multiple-root support in HTML::PopupTreeSelect 1.4 to remove to empty root node from the widget. [Sam]
Upgraded HTML::PopupTreeSelect to the latest released version, 1.4. [Sam]
Fixed a bug in Krang::Group where the category permissions cache wasn't being correctly rebuilt after group changes were saved. [Sam]
Added filesystem sanity checks to the Publish checks - If the story/media object being tested does not exist on the filesystem in all locations that it should, it's flagged for output, regardless of versioning. Also cleaned up some unneeded API cruft. [Peter]
Large changes to the publishing engine. When publishing/previewing a story, Krang::Publisher will now check all related stories/media to see if the most recent version of each object has been published/previewed before. If so, the object will not be published/previewed again. The chosen story/media object will always be published/previewed. This is only default behavior in the UI, scheduled publish jobs and bin/krang_publisher still publish all content. Additional parameters have been added to the Krang::Publisher API to support this functionality, see Krang::Publisher for more information. [Peter]
Fixed bug in Krang::Contrib where importing a contributor with no first name or no last name would duplicate the contributor if it already existed instead of updating. [Sam]
Added the --skip option to krang_import which exposes the
existing Krang::DataSet::import_all() skip_classes option from the
command-line. [Sam]
Removed ``Delete Checked'' button from List Admin screen. Lists cannot be deleted. [Sam]
Added Krang::Story->preview_version(), Krang::Media->preview_version
and Krang::ElementClass::TopLevel->force_republish() in anticipation
of forthcoming improvements to the publishing system. [Peter]
Upgraded XML::Validator::Schema to the latest release, 1.06. [Sam]
Fixed Krang::Story->preview_path() to use the submitted category
argument. This was keeping preview from writing out content to
multiple sites. [Peter]
Added password-length check to My Preferences, enforcing the 6-character minimum length on passwords that exists everywhere else in the UI. [Peter]
Fixed error reporting in the publish process - error messages are displayed in a more user-friendly fashion.[Peter]
Fixed Krang::ElementClass->publish() to trap errors thrown by
HTML::Template::Expr->output(), and fixed Krang::CGI::Publisher to
properly report errors and not try to redirect users when failures
occur in preview. [Peter]
Fixed krang_ftpd to setup higher file and memory limits. These limits were preventing the FTP server from operating on some systems. [Sam]
Fixed Krang::DB to always turn on mysql_auto_reconnect (it was already on by default under mod_perl). This should prevent the schedule daemon from periodically dying when a database connections times out. [Sam]
Fixed bug in Krang::ElementClass which would fail to setup ``is_$element'' template vars if ``$element'' wasn't used as a template var itself. [Matt]
Changed site editor to allow colons so that port numbers can be specified for preview URLs. [Perrin]
Synchronized Devel-StackTrace with latest from CPAN, so that we are now using the standard release. [Perrin]
t/group.t now uses Krang::Test::Content to generate random content, rather than bin/krang_floodfill. [Peter]
More comprehensive FreeBSD support. Krang now works on FreeBSD 4.9 and 5.2.1, and should work on versions between and previous to that (as long as the appropriate dependencies are in place). [Peter]
ftpserver.t now uses Krang::Test::Content. Simplifies cleanup, and fixes a bug where ftpserver tests would fail if krang_install used the --AdminPassword argument (a user is now created for the purposes of testing). [Peter]
Added Krang::User creation/destruction to Krang::Test::Content - furthering the goal that Krang::Test::Content should be able to create all parts of a site randomly, and clean up everything properly at the end. [Peter]
Modified Krang::Contrib::deserialize_xml() to create contributor types as needed. [Sam]
Changed Krang::ElementClass::Date to store and load data in XML using
an ISO-8601 date-time format. Also added missing template_data()
method. [Sam]
Added support for Debian. [Jason Purdy]
Fixed bug where clicking on a media link in the element editor would open a new window every time. [Sam]
Moved code to run tests from Makefile into bin/krang_test. This allows krang_install to affect which Perl binary runs the tests. It also helps with BSD portability since the test target didn't work with BSD make. [Sam]
Added a message to remind users that they must create a site before adding stories, media or templates. [Sam]
Added initial support for FreeBSD! Currently it only supports FreeBSD 5.2.1 with GNU make (gmake) installed, as that was the only available testable environment. Would be nice if someone with more experience in BSD Makefiles could get Krang's Makefiles to work with BSD make. There should be nothing keeping Krang from working with earlier versions of FreeBSD, but that will require someone to pick up the BSD ball and run with it. [Peter]
Fixed site editor to check that URLs don't have paths attached to them and that paths are absolute. [Sam]
Fixed krang_upgrade to use Krang::Platform. Added a new method to Krang::Platform, post_upgrade_message(). [Sam]
Upgraded XML-Writer, HTML-Parser, and Tar-Archive to get rid of warnings. [Perrin]
Upgraded mod_perl and apache to latest releases. [Perrin]
Fixed the behavior of Krang::Publisher->preview_story(). Following the original spec, it now writes the story out to all categories in the preview path. Fixed Krang::Story->preview_path as well. [Peter]
Upgraded Test::Harness to 2.40 to enable warnings during tests. Fixed a number of warnings in the test files. [Perrin] [Sam]
Fixed bug where schedule tests would fail frequently due to krang_schedulectl leaving bad PID files around. Also made the schedule tests quiet unless an error occurs. [Sam]
Fixed a bug where using a category_trail_loop in a category element template produced an ISE. [Sam]
Added support for Fedora Core 1. [Perrin Harkins]
Moved Krang user/group creation from krang_install to Krang::Platform. This can now be overridden on a platform-by-platform basis. [Peter]
Created Krang::Platform->find_bin(). Use of this sub now needs to be propagated throughout krang_install along with Krang::Platform and its derivatives - it searches $PATH for the full path for the executable you're trying to run. [Peter]
Moved the final installation message out of bin/krang_install, created
Krang::Platform->post_install_message() that generates the same output.
This can now be overridden & extended on a platform-specific basis. [Peter]
Split the various checks out of Krang::Platform->verify_dependencies(). This will simplify ports to other platforms, as individual checks can now be overridden, rather than the entire sub. [Peter]
Added new default scheduled job to analyze DB tables nightly. This greatly improves performance for large databases. [Sam]
Fixed bug where default scheduled jobs (tmp cleaner and session expiration) weren't being run for new installations. [Sam]
Fixed krang_createdb to stop after the first failed system call. [Scott Lanning]
Added enhanced cache debugging code and a last-resort check in an Apache log_handler to make sure the cache is off at the end of the request. [Sam]
Moved setup of /etc/init.d link from krang_install into the Redhat
platform modules' finish_installation() methods. This should allow
the Gentoo and Debian ports to proceed. [Sam]
Fixed build and installation system to work with a Perl that isn't called 'perl' and in your path. So, for example, if you've got a binary called 'perl5.8.0' you can build Krang with it and install with it. [Sam]
Added initial support for Gentoo 1.4.3. [Peter]
Updated porting.pod with steps that might really work. [Sam]
Fixed a bug where an error occurring during preview triggered a Krang::Cache error which corrupted the display. [Sam]
Improved error message generated when InstanceElementSet is set to an element set that isn't installed. [Peter]
Fixed a ton of whitespace in module source files which was breaking the POD output. [Peter]
First public release of Krang!