`.TITLE" entity to enable localized page titles. Limited add_action behaviour to SiteTree (was implemented on DataObject before)
* ![rev:69872] Fixed status checking in SiteTree->getIsDeletedFromStage()/getIsModifiedOnStage()/getIsAddedToStage() for new pages with non-numeric IDs
* ![rev:69870] Fixed use of undefined constant error, and undefined variable error in TableField stopping CMS user from adding records to a TableField
* ![rev:69832] #3235: Fixed linking of images and other HTML tags
* ![rev:69830] #3219: dev/buildcache showing up in static links
* ![rev:69828] Fixed styling for caption checkbox field on the right hand image panel in CMSMain
* ![rev:69803] If TreeDropdownField source object is "Folder", don't show "File" tree items unless the marking filter function is explicitly set. This fixes the bug where files were appearing for selecting a folder in the thumbnailstrip field in CMS
* ![rev:69752] somtimes +/- icons hidden. ticket #893
* ![rev:69728] #3254 - Fixed fatal errors when creating subclass of member
* ![rev:69720] #3199: No longer warned about saving changes if you have actually pressed save.
* ![rev:69718] #2550 - Fixed bug with draggability of newly created nodes.
* ![rev:69715] #2342: Database names with hyphens and other special characters can now be used.
* ![rev:69700] #3224 ajshort: Get HTTP::setGetVar() working with variables that contain array indexes
* ![rev:69697] #3165 nicolaas: Fixed Director::history() in some cases.
* ![rev:69696] #3248: Fixed TreeDropdownField when using non-ID key field
* ![rev:69695] #3188: Fixed default HeaderField name to be non-conflicting with other fields, for backward compat
* ![rev:69694] #3097: Removed buggy template feature
* ![rev:69693] #3249: Allow altering of encryption algorithm
* ![rev:69690] #3081 simon_w: Fixed pagination on spam comments
* ![rev:69689] Don't include Validator.js if Validator->javascriptValidationHandler is set to 'none' (in Validator::__construct()).
* ![rev:69681] Fixed HTML insertion through TinyMCE in Safari - TextArea fallback for lacking Codepress-support wasn't working. Known bug in Codepress JS Highlighter, see http://sourceforge.net/tracker/index.php?func=detail&aid=1913725&group_id=186981&atid=919470
* ![rev:69657] Fixed js error due to inlined inclusion of CMSMain_upload.js which was conflicting with inline initialization. Disabled initializiation as the flash uploader was pulled out a while ago anyway (see #3251)
* ![rev:69504] Fixed SiteTreeHandlers.loadTree_url url concatenation
* ![rev:69442] Fixed permissions in CMSMain->revert() - only needs edit permissions, not publish permissions
* ![rev:69378] CountryDropdownField now allows for title to be optional, which uses the name of the field if not set. This makes it consistent with DropdownField
* ![rev:69377] Added check before foreach() to fix potential HMCTF bugs
* ![rev:69360] Get DrodpownField::$emptyString working when used with a SQLMap source
* ![rev:69321] Added `` to AssetTableField.ss to comply with template semantics of parent classes (necessary to detect javascript actions)
* ![rev:69222] Strip potential whitespace from the beginning and end of string before limiting word count in Text->LimitWordCount(), fixing potential interference with truncation process
* ![rev:69220] Fixed Text->LimitWordCount() not returning the correct number of words in the truncated text.
* ![rev:69204] Making Password formfield in Member->getCMSFields() translatable
* ![rev:69203] Making "Main" tab in FormScaffolder translatable
* ![rev:69065] Fixed notice-level error in no-get-var URL processing when there is no querystring.
* ![rev:68999] Make sure the website URL that the commenter posts has a correct "http://" or "http://" bit at the start of the string
* ![rev:68940] Fixed bug in SQLQuery::unlimitedRowCount() when used with grouped queries, that should fix a lot of pagination situations.
* ![rev:68935] Fixed PHP notice potential error in MemberTableField->addtogroup()
* ![rev:68921] Turned english text into translatable entity for PageCommentInterface link for RSS feed of all comments for all pages
* ![rev:68890] "console not defined" error in IE in en_US.js, check typeof(console) is not undefined before calling console.error()
* ![rev:68881] remove Debug::message
* ![rev:68875] Fix uglyness when title is longer than the tree dropdown field
* ![rev:68858] Added closing tags to relation XML in XMLDataFormatter. Was relying on ContentNegotiator fixing self-closing tags automatically, but this form of content parsing is disabled for xml content by default now (see r68484)
* ![rev:68834] Make sure date is a string before trying to use strtotime
* ![rev:68817] Fixed sprintf detection bug in SiteTree->getClassDropdown()
* ![rev:68810] Making only formfields readonly (not formactions) when comparing versions and showing historical versions within CMSMain
* ![rev:68809] Check hasChanged method exists before calling it
* ![rev:68764] Fixed translation of CommentAdmin_SiteTree.ss
* ![rev:68762] Fixed label spacing in Date->TimeDiff()
* ![rev:68757] Fixed additional tabs for image popus in AssetTableField. They we're not being generated in non-english interfaces due to the translated title being used as the tab identifier
* ![rev:68754] Limiting readonly transformation of form in CMSMain->EditForm() to fields only (excluding actions). FormAction readonly transformations were fixed a while ago, which meant that they were actually enforced now, causing unavailable cms actions in certain scenarios (e.g. with a page deleted from live, which should make the fields readonly, but leave buttons functional)
* ![rev:68752] Fixed TranslatableTest to instanciate Page instead of SiteTree fixtures - pages in the database should never have ClassName=SiteTree. This was causing failing tests due to the changes in SiteTree->getClassDropdown()
* ![rev:68751] Including all translated language tables by default in i18n::_t() instead of selectively including modules based on filename. This caused bugs where entities were located in language tables in a different module than their filepath would suggest. Example: Page.SINGULARNAME is stored in sapphire/lang/en_US.php, while Page.php is stored in mysite/Page.php
* ![rev:68746] Don't overwrite existing module arrays in i18nTextcollector - fixing bug with entities for "foreign modules" being reset during parsing
* ![rev:68702] Updated CMS to support HtmlEditorField changes in r68701
* ![rev:68662] #3166 jam13: Fixed caching in RestfulService
* ![rev:68628] Fixed HasManyComplexTableField/ManyManyComplexTableField issue with source items which broke from changes in r66080. Thanks hamish!
* ![rev:68627] Fixed javascript error in the CMS
* ![rev:68626] Fixed javascript error in the CMS
* ![rev:68603] Fixed new searchform changes for Live/Stage
* ![rev:68515] Making sure phpinstaller works on subdomains (see #3167)
* ![rev:68463] Fixed PHP notice in RebuildStaticCacheTask
* ![rev:68331] Fixed ModelAdmin import success message (too few arguments for sprintf())
* ![rev:68194] Allowing FormAction instances to be readonly by setting disabled="disabled". Adding CSS class "disabled".
* ![rev:68177] Moved creation of "help" menu entry from cms/_config.php to LeftAndMain::init() to get localized titles (locale isn't set at _config.php level)
* ![rev:68176] Fixed i18n display of menu titles rendered by CMSMenu in LeftAndMain->MainMenu()
* ![rev:68170] Escape table name in versioned to allow creation of page type classes with the same names as SQL reserved words
* ![rev:68159] Changing i18n entity format in CMSMenu->provideI18nEntities() to have actual class as namespace (related: r66264)
* ![rev:68155] Added stub PDODatabase->renameField() implementation to avoid errors when batch-instanciating singletons
* ![rev:68130] Supporting URLs with folder-structure in "sake -start `` ``"
* ![rev:68039] Improved DataObjectSet->PaginationSummary() to show full context (instead of halved) when on first or last page
* ![rev:68027] Don't show template comments in RSSFeed, or it'll break the XML document
* ![rev:68026] Fixed undefined variable $matches in SSViewer::parseTemplateContent()
* ![rev:68024] SSViewer::set_source_file_comments(false) wasn't working because of lack of checking if enabled.
* ![rev:67777] Added check ot i18n::include_by_class() to prevent repeated calls.
* ![rev:67681] Add a unique identifier to the "direction" method for Email::obfuscate() to avoid duplicate custom CSS being included in the page header
* ![rev:67678] Method not found error. Requirements::customCSS() should be calling self::backend()->customCSS() not custom()
* ![rev:67609] #3182 - Fix URL fixing on machines where url is case insensitive (hamish)
* ![rev:67605] #3204 - Broken link tracking is broken (ajshort)
* ![rev:67587] #3174 - Unable to drop widgets into widget areas in CMS (marcink)
* ![rev:67584] #3218 - Spelling mistake in RestfulService (hamish)
* ![rev:67582] Fixed a check for CSV field formatting.
* ![rev:67580] Fixed an aliasing problem when saving popup items, and a bug with when associating a new record with the parent ID associated with the field.
* ![rev:67530] SSDatetime can handle being given a NZ date in dd/mm/yyyy format
* ![rev:67529] Only setting LockedOutUntil to NULL in Member->logIn() if the column is actually present in the database. Otherwise this setting will case an UPDATE Member SQL query to fail on the first /dev/build call on a 2.2->2.3 upgrade if not in dev-mode (=requiring login) (see #3171)
* ![rev:67526] Added $CurrentLink to templates of AssetTableField and MemberTableField in order to support auto-refreshing after popup-close (see #2925)
* ![rev:67520] Fixed i18n::get_owner_module() to detect template paths in themes (array notation) correctly (see #3022)
* ![rev:67519] Added GoogleSitemap.ss from sapphire
* ![rev:67506] Avoid ugly border in CMS forms by adding "border: none" in CSS to cms/css/layout.css
* ![rev:67503] disabling template comments for xml output like sitemap.xml
* ![rev:67455] Fixed incorrect parameter variable name in Mailer->sendPlain()
* ![rev:67417] Added `` element immediately after ` ` for SearchForm and Form templates. This is required to validate these templates as W3C compliant
* ![rev:67401] Moving Requirements::combine_files() calls from cms/_config.php to LeftAndMain->init() to avoid side-effects in non-CMS contexts. Examples:
* ![rev:67363] $allowHTML argument was not passed to DatalessField::__construct
* ![rev:67304] Since ModelAsController->handleRequest() expects a URLSegment, we make the ErrorPage Link() return a relative URLSegment in ErrorPage->publish()
* ![rev:67299] Changed Director::test($this->URLSegment) to Director::test($this->Link()) in ErrorPage->publish() to be more robust
* ![rev:67290] Added parent::setUp() and parent::tearDown() calls to various tests, in preparation for push/pop a mock controller the controller-stack
* ![rev:67271] dev/build should function even when new classes are referenced in _config.php
* ![rev:67268] Filter on the baseclassid in Hierarchy, not the class id, in case the class doesnt have a table (aoneil)
* ![rev:67221] Save default locale for new members, so the profile form doesn't show first available locale in dropdown because its defaults are overwritten by Member->Locale = NULL (see #3159)
* ![rev:67201] Declared behaviour.js variables as local for better recursive functionality
* ![rev:67199] Fixed incorrect permission checking when the current member isn't being used
* ![rev:67162] Scrollbars didn't appear properly in CMS without resizing the window manually, so used jQuery to properly detect when document is ready before attempting resize. Ticket #3089
* ![rev:67150] Checking for "$this instanceof VirtualPage" instead of "$this->class == 'VirtualPage' to support subclassing in VirtualPage->onBeforeWrite()
* ![rev:67147] Fix requirements not being restored after an email is sent
* ![rev:67140] Checking for existence of $this->record in VirtualPage_Controller->init()
* ![rev:67137] Fix publishing of error pages
* ![rev:67083] Fixed StaticExporter output format
* ![rev:67078] Put the order of save and publish buttons back to normal (so save and publish are next to eachother)
* ![rev:67045] Fixed Enum::scaffoldSearchForm() to always include an (All) option
* ![rev:67035] Fixed error in javascript (because of commented out code) that broke IE6/7 in the CMS
* ![rev:66946] Fixing tests
* ![rev:66940] Fixed warning on AssetAdmin (merged from trunk)
* ![rev:66922] #3100: Graceful degradation for codepress in safari
* ![rev:66918] #3115 ajshort: Fixed backslashes in temp folder location in manifest builder
* ![rev:66894] Friendlier error when you have a site running on a PHP4 server, or a server without PHP.
* ![rev:66891] Don't make blank dates show 1/1/1970
* ![rev:66888] Better generation of PastMember cookie when you have stale login info
* ![rev:66828] Fixed sortWidgets() function in WidgetAreaEditor not working because it was picking up comment nodes
* ![rev:66820] Added extension to email address when accessing Security/passwordsent since the . (dots) are split into extensions when the URL is parsed
* ![rev:66799] Fixed importer not working because of i18n_singular_name(), just use the class name of the model instead
* ![rev:66793] Made use of Convert::raw2att() before returning the ModelName for Import spec fields
* ![rev:66791] Fixed "Show specification..." link not working because ModelName had spaces in it
* ![rev:66784] Only including ModelAdmin->ImportForm() if an actual importer was specified
* ![rev:66740] Passing through $member param from SiteTree->canPublish() to SiteTree->canEdit()
* ![rev:66723] fixed typo in filesystem
* ![rev:66707] Fixed notice-level errors in PhoneNumberField
* ![rev:66701] Add LeftAndMain:$url_rule to minimise bugs in modules
* ![rev:66698] Fixed sake bug when checking for an argument in bash script. Ticket #3112. Thanks simon_w.
* ![rev:66638] Fixed flaw logic checking for $member variable, since it's always set the alternative for choosing Member::currentUser() would never work.
* ![rev:66635] Fixed SiteTree->getCMSActions() so it returns a FieldSet, instead of a DataObjectSet. This makes it consistent with DataObject->getCMSActions() as well as SiteTree->getCMSFields()
* ![rev:66632] Fixed SiteTree->getCMSActions() not extending properly because it was passing an array to the extend() 2nd argument, which expected a FieldSet object
* ![rev:66629] Fixed incorrect class name in user_error message for deprecated function HTTP::sendFileToBrowser()
* ![rev:66608] ModelAdmin clear search now preserves the result column selection
* ![rev:66505] Consistenly returning cloned instances for all FormField classes when calling performReadonlyTransformation() or performDisabledTransformation(). Making sure that these instances are actually flagged as readyonly/disabled. Addd unit tests to dynamically instanciate most FormField classes to check for this behaviour. Originally, this bugfix was necessary to avoid changed FormField state when recursively calling replaceField() on FieldSet->dataFields() in Translatable->updateCMSFields()
* ![rev:66431] Removed SearchForm->FormMethod() and used $this->setFormMethod() in SearchForm constructor instead which is a nicer solution instead of overloading a Form method
* ![rev:66334] Hiding "change password" fields by default in admin/myprofile, they shouldn't validate the input by default. Replaced with a link to toggle those fields (#3106)
* ![rev:66332] Include jquery_improvements.js whenever jquery.js is required, so jQuery.noConflict() is set. This is required to ensure $() behaves in the prototypey way (alias for document.getElementByID()) rather than jQuery style (document.getElementsBySelector())
* ![rev:66331] Removed overloaded $() function which added support for multiple string arguments in behaviour.js - was conflicting with argument usage in jQuery when not in noConflict() mode. As far as i can tell, multiple string arguments in $() were never used anyway.
* ![rev:66319] Removed dependency on ComplexTableField JS in LeftAndMain for "My Profile" popup
* ![rev:66318] Check if $member variable isn't empty before looking for first name in MemberLoginForm
* ![rev:66317] Fixed call to incorrect case of function name, Member::currentUser() should be used
* ![rev:66313] Fixed ForeignKey->scaffoldFormField() usage of model class instead of relation class to generate dropdown list
* ![rev:66309] Fixed far too small height and width of "Profile" popup in CMS, popupHeight and popupWidth should be defaultPopupHeight and defaultPopupWidth instead according to the ComplexTableField prototype
* ![rev:66306] Fixed HasManyComplexTableField, and subclass fields HasOneComplexTableField and ManyManyComplexTableField saving bug because javascript wasn't being included properly
* ![rev:66305] Fixed recursion bug with FieldSet::fieldPosition
* ![rev:66274] Improved reliability of LeftAndMain->CMSVersion() - not failing on empty $URL$ placeholder with subversion path to determine version numbers
* ![rev:66269] Merged from trunk; fix DataObject::hasDatabaseFields()
* ![rev:66266] Fix test/cookie conflict in ErrorPage rendering
* ![rev:66252] Immediately apply behaviours that are added after the Behaviour.apply() call, in Behaviour.register() calls as well as Class.applyTo() calls
* ![rev:66251] Removed unnecessary and bug-causing Behaviour.apply() call.
* ![rev:66250] Made Behaviour.apply calls more specific
* ![rev:66229] Added flash button to tinymce_ssbuttons
* ![rev:66196] #2714 - Cookie::set doesn't operate correctly with expiryDays 0 (wakeless)
* ![rev:66195] #2694 - Mathspam question clear
* ![rev:66194] Fixed draggable bug in AssetTableField - thanks for ajshort for the patch - ticket #3051
* ![rev:66162] #118 - Fixed count of marked pages (hamish)
* ![rev:66137] Fixed editable formfields not showing up in translation mode (#3083). Updated Translatable->updateCMSFields() by partially merging wakeless' patch from (r64523)
* ![rev:66136] Disabled js code in CMSMain->switchlanguage() which was assuming wrong DOM structure (TODO: Replace with more robust selectors)
* ![rev:66135] Fixed field labels for original readonly fields in translation mode
* ![rev:66107] Fixed PHP variable initialization in SiteTree->getClassDropdown() which broke class dropdown in behaviour tab (regression from r66092)
* ![rev:66091] $cache flag wasn't passend through from ViewableData_Customised->XML_val() to ViewableData->XML_val()
* ![rev:66079] #3051 ajshort: Improved layout of assettablefield drag icon
* ![rev:66070] Fixed HTTP->findByTagAndAttribute missing variable error causing HtmlEditorField to break since it used HTTP::getLinksIn()
* ![rev:66067] #3065: Fixed restore page
* ![rev:66066] #3012 jam13: Fixed tabstrip default tab selection when working with querystrings
* ![rev:66065] Fixed security tabs for JSoD code
* ![rev:66062] #3063: Allow old-school method of adding menu items to LeftAndMiain:
* ![rev:66052] #3087 simon_w: Added ResfulService::connect() back, for backward compatability
* ![rev:66049] Fixed unescaped html display in DevelopmentAdmin (#3080)
* ![rev:66044] Fixed `<% require %>` call in ModelAdmin_left.ss
* ![rev:66043] Fix PHP notice where variable with array didn't exist in HTTP->findByTagAndAttribute()
* ![rev:66029] use a undefined variable $member.
* ![rev:66027] Fixed incorrect call to Permission::checkMember() - missing second argument, first argument should've been a Member object or Member ID
* ![rev:66026] Fixed PHP notice level error in some circumstances in DataObject->buildDataObjectSet()
* ![rev:65944] #3073: Fixed LeftAndMain::deleteitems()
* ![rev:65923] #3066: Fix ?isDev=1 option
* ![rev:65900] #2868: Fix after-popup-close behaviour on security member table
* ![rev:65899] #2820: Fixed use of buggy reflection in Object::uninherited()
* ![rev:65896] #2706: Fixed JS error in multi-nested pages deletion
* ![rev:65895] #2232: Prevent requirements from breaking ErrorPage publication
* ![rev:65894] #1721: Fixed del/ins styling in page comparison
* ![rev:65881] Don't let permission errors on assets/ folder completely prevent javascript from loading
* ![rev:65865] Fixed tabstrip JS error in ReportAdmin
* ![rev:65863] Ensure that menu items of the same priority show the first added item closes to the left
* ![rev:65860] Fixed JS error in ReportAdmin
* ![rev:65851] #3062: Fixed ondemand support for jQuery responses as well as prototype
* ![rev:65850] Alow decoration of Member with has_many relationships
* ![rev:65843] #3062: Fixed ondemand support for jQuery responses as well as prototype
* ![rev:65842] #3061: Text.FirstSentence returns '.' instead of empty string on an empty field
* ![rev:65827] Fixed flash uploader not searching for the correct files, due to changes in r65820
* ![rev:65825] Tidied up messages in flash uploader right hand panel in CMS
* ![rev:65769] Fixed deletion of RedirectorPage
* ![rev:65763] Missing variable in some circumstances caused Requirements::include_in_response() to break
* ![rev:65761] Missing variable in some circumstances caused Requirements::include_in_response() to break
* ![rev:65711] Added support for CSS media types to CSS on demand
* ![rev:65680] there is no horizontal scroll bar for Model Admin right panel if the results table is long.
* ![rev:65671] temp fix for flash inserter.
* ![rev:65616] Fixed searching on sapphire/trunk due to Form changes - FormAction was useless on SearchForm anyway
* ![rev:65612] Removed offending $this->canEdit() which returned a boolean, not appropriate to be passed into Member::mapInCMSGroups()
* ![rev:65583] Adjusted Translatable to api changes from r65581
* ![rev:65554] a lot of methods in this class now passed $params as HTTPRequest object, rather than as a array if the function is called from Ajax or top-level of front-end, some method is called in both manner, ie. called from Ajax and called internally as well, so we need to check $params type and do further process. This is a partial fix of open source ticket #3035
* ![rev:65539] Setting correct user locale in ImageField and FileIframeField - the controller is separate from the CMS context, so wasn't initialized with i18n (see #1727)
* ![rev:65538] Using 'SiteTree' classname instead of 'Page' in UpgradeSiteTreePermissionSchemaTask to avoid clashes in schema when Page.php has its own tables
* ![rev:65536] Making Metadata fields writeable in translation mode (see #2993)
* ![rev:65518] Removed project-specific hack in DataObject->getManyManyComponentsQuery() as it was breaking Translatable saving
* ![rev:65517] Fixed breadcrumb exploding in DebugView when base-URL is "/" - was confusing the str_replace() logic
* ![rev:65515] Fixed Translatable::default_lang() call in CMSMain
* ![rev:65512] Fixed SiteTreeMaintenanceTask from extending unkown class Task to extending Controller
* ![rev:65510] #3015: Fixed close buttons on tinymce side panels
* ![rev:65502] Fixed bug with // placement in CMSMenu Director rule generation
* ![rev:65469] Better initial-site-setup boundary condition checking needed after the manifest builder update
* ![rev:65462] Setting Director::set_site_mode('site') in RootURLController in newly added init() method, which fixes Translatable::choose_site_lang(). The original bug was a wrong selected language in the ` ` tags through SiteTree->MetaTags()
* ![rev:65456] Using uncached DataObject::get_one() calls in ModelAsController to avoid stale data with subsequent Director::test() calls which alter the page relations inbetween
* ![rev:65424] #2987 - IE8 support via IE7 compatability mode
* ![rev:65394] Fixed broken dev/build compilation of manifest
* ![rev:65361] Added SSViwer support for i18n namespaces in templates with `<% _t('MyNamespace.MyEntity', ... %>`, to work around magically added namespaces from the parsed template file. Those auto-namespaces were logically not working in includes, as the parsing context is always the including template. Legacy support for auto-namespaces is still present due to its high usage.
* ![rev:65336] Making ModelAdmin labels in left panel translatable again (regression from moving them into one common panel)
* ![rev:65335] Respecting $dontEscape in FormAction
* ![rev:65293] Using empty title in TreeDropdownField->Field() if the related DataObject cannot be found
* ![rev:65291] Reverted text replacement performance improvement in SQLQuery - it was replacing more ocurrences via str_replace() than the previous implementation based on arrays, which broke queries augmented by Translatable (originally committed in r60468 and r54044)
* ![rev:65282] Fixed page comment javascript to suit new Form name
* ![rev:65275] #2243: Fixed ViewableData::Odd
* ![rev:65271] #2630 - Removed notice-level error
* ![rev:65269] #2954 - Fixed support for negative numbers in decimal fields
* ![rev:65250] #2992: Fixed T_PAAMAYIM_NEKUDOTAYIM error in RequestHandler
* ![rev:65242] fixed canPublish() so it actually got the member if none was passed and fixed notice with $results not existing
* ![rev:65232] #2056: Removed all references to deprecated Member::isAdmin()
* ![rev:65229] Allow DBField::__construct() without a name
* ![rev:65214] Remove LeftAndMain entry from CMSMenu (#3014). Thanks to hamish for the patch!
* ![rev:65213] Only enforcing record-level permissions in LeftAndMain if passed ID is numeric to avoid breaking AssetAdmin with string-based IDs (regression from r65152). See #3017
* ![rev:65212] Calling parent constructor in ComplexTableField_ItemRequest, was confusing RequestHandler
* ![rev:65180] Add magic methods on ModelAdmin to $allowed_actions (regression from r64988)
* ![rev:65174] MemberTableField use of sourceFilter should be treated as a string, not an array as per the API of TableListField
* ![rev:65152] Enforce permission checks in LeftAndMain and CMSMain through SiteTree->canView()/canEdit()/canAddChildren()/canPublish()/canDelete() (see #2701)
* ![rev:65151] Fixed SiteTreeAccess.js DOM IDs to field changes made in r65150
* ![rev:65150] Disallow SiteTree->canEdit() if SiteTree->canView() is not granted
* ![rev:65148] Fixed js error in LeftAndMain_right.js when displaying readonly pages
* ![rev:65141] TableField delete row inconsistency with TableListField which caused table fields to not fade the row out
* ![rev:65135] Fixed call to Member function that didn't exist
* ![rev:65127] Fix potential PHP notice opening a ComplexTableField popup
* ![rev:65123] Fixed bug with ID-less generation of YamlFixture entries that trigger $this->write() in setters
* ![rev:65106] Setting menu titles for CMSMenu items in LeftAndMain::init() to get translated values for the current user locale (see #2873)
* ![rev:65104] Fixed menu titles entity references in CMSMain and AssetAdmin
* ![rev:65094] Fixed SearchContextTest to comply to new scaffolded searchfield in Text DBFIeld
* ![rev:65071] Reverted auto-detection of i18n statics like $db in DataObject through provideI18nEntities() - was getting too complicated with decorated properties. Overload DataObject->fieldLabels() or DataObjectDecorator->updateFieldLabels() instead
* ![rev:65063] Checking for array existence before iterating through DataObjectDecorator->provideI18nEntities()
* ![rev:65062] Dont instanciate abstract classes in i18nTextCollector
* ![rev:65061] Using SiteTree::get_by_url() (see r65060)
* ![rev:65057] Collecting i18n entities for decorators separately from the decorated classes, as decorated properties like $db have to be stored in the module of the decorated, not in the module of the decorated class.
* ![rev:65030] Different class_implements() usage without instanciating the class in i18nTextCollector - not all classes are instanciatable without arguments. This raises the minimum requirement for text collection to PHP 5.1+
* ![rev:65028] Fixed SecurityAdminTest to work with i18n enabled
* ![rev:65026] Fixed CsvBulkLoaderTest to comply to hasHeaderRow API change (r64806)
* ![rev:65024] Fixed CMSMainTest to check for translated entities to avoid failing tests with i18n enabled
* ![rev:65023] Changed i18nTextCollectorTest to only trigger _t() calls in instance methods (they don't fully work in __construct()). Manually adding ClassInfo state for the fakewebroot needed to test textcollection - ManifestBuilder/ClassInfo currently don't support setting of other webroots, or flexible inclusion/exclusion of certain subfolders which would be necessary to do this without hacks.
* ![rev:64981] Don't allow calling of magically added methods via URL unless explicitly listed in allowed_actions
* ![rev:64976] Fixed wrong case of class names for ImageIFrameField causing errors
* ![rev:64879] Fixed title-handling in FormAction, regression from r64410
* ![rev:64878] Fixed missing $H() reference in i18n.js (#2989)
* ![rev:64850] Avoid ajax evaluator errors by checking if $resizedImage actually exists before calling relativePath() on it
* ![rev:64812] Content wasn't saving on subsequent page loads, after TinyMCE3 upgrade
* ![rev:64798] Fix DataObject::write() with a specified ID and forceInsert to be true
* ![rev:64788] in IE, overflow left pane is hidden and cannot enable scrollbar
* ![rev:64771] Made ContentController work properly if it doesn't have a dataRecord
* ![rev:64770] merged patch from ajshort to fix checkbox fields in the cms
* ![rev:64754] Fixed old references to GenericDataAdmin in ModelAdmin.php and ModelAdmin_Results.ss
* ![rev:64739] Security->passwordsent() didn't get the "Email" variable from the URL properly, because of updates to HTTPRequest
* ![rev:64736] Fixed non-object or not null error in TreeSelectorField
* ![rev:64732] New folders weren't getting their name set correctly, instead they would just be called "NewFolder". This occurred in the Site Content section of the CMS, creating a folder using the right hand panel in that section.
* ![rev:64604] Fixed incorrectly reverted methods related to sizing of the popup.
* ![rev:64601] Fixed extra class addition on various FormField->Field() methods
* ![rev:64562] Using include_once() instead of include() for _ss_environment.php in install.php and Core.php to avoid PHP notice errors about double constant defines (see r64561)
* ![rev:64506] Renamed "Save & Publish" to "Save and Publish" since this value is used in the value attribute of input elements, properly parsed, this would produce & instead of &
* ![rev:64494] Fixed distribution of textcollector files to modules (was collecting all entities into all modules before) - added unit tests
* ![rev:64491] Fixed wrongly formatted _t() call in Security class
* ![rev:64490] Fixed $module parameter for i18nTextCollectorTask
* ![rev:64471] Fix issue with language files not being included
* ![rev:64467] Removed duplicate setValue() method on Time (was supposed to be deleted instead of renamed from setVal() to setValue())
* ![rev:64466] posix_isatty sometimes returns a benign error
* ![rev:64462] Don't run migration code for permissions if the old field doesn't exist.
* ![rev:64443] Fixed RestfulServerTest fixture path
* ![rev:64440] Unit tests for RestfulServer (see r64439)
* ![rev:64439] Returning 409 Conflict HTTP Header when trying to create a resource on an existing URL through RestfulServer
* ![rev:64438] Removed $headingLevel reference from LabelField (was supposed to go into HeaderField)
* ![rev:64437] Second constructor argument $title for HeaderField should be optional for legacy reasons
* ![rev:64427] Using PasswordField instead of deprecated EncryptField
* ![rev:64423] Adjusted HeaderField and LabelField implementation to new constructor arguments (see r64421)
* ![rev:64422] Adjusted HeaderField and LabelField implementation to new constructor arguments (see r64421)
* ![rev:64361] #2963 - Fix RSSFeed to work with new add_cache_headers
* ![rev:64334] Reverted Member->isAdmin() removal since it's being used in a lot of places, we shouldn't deprecated it... yet.
* ![rev:64329] correct wrong syntax of TableField class in its frontend javascript
* ![rev:64328] avoid a CSSClass is added to a veiwable data twice.
* ![rev:64325] $this->extraData is not alway set for an TableField_Item
* ![rev:64320] If DropdownField->Field() lack of source checking before looping through it
* ![rev:64318] Fixed DropdownField handling of Iterator objects rather than arrays in the newly created getSource()
* ![rev:64314] If ajaxActionsOnTop is called twice, the actions are removed.
* ![rev:64313] Don't use singleton() to create DataFormatter instances, as it will cause weird side-effects with multiple formatter instances with different parameters (broke subsequent test runs of RestfulServerTest and SoapModelAccessTest) - all aboard the failboat!
* ![rev:64310] Unsetting $_SERVER globals in RestfulServerTest to avoid side-effects across unit tests
* ![rev:64309] Added RestfulServerTest->testApiAccessBoolean()
* ![rev:64307] Fixed RestfulServerTest->testAuthenticatedGET()
* ![rev:64275] fixed default_country_value so that it will actually call the default country if IP lookup doesnt work
* ![rev:64263] Fix disappearing fields when a field without a name was being pushed onto a FieldSet (eg a CompositeField)
* ![rev:64251] Fixed ComplexTableField->saveComplexTableField() success message object link - was assuming same context as ComplexTableField_ItemRequest
* ![rev:64239] Adjusted ForeignKey->scaffoldFormField() to new scaffolding notation ("ajaxSafe" instead of "ajax")
* ![rev:64237] Fixed FormScaffolder string literal parsing FALE in getFieldSet()
* ![rev:64229] Storing HTTP "Referer" header from $_SERVER in Director::direct() and passing it along in Director::test()
* ![rev:64228] Checking for an empty array for $postVars in Director::test() to determine HTTP method - an existing array should cause POST rather than GET, even if its empty
* ![rev:64227] Fixed stupid ommission from r64223 which caused HTTPRequest to construct without a proper URL
* ![rev:64224] Using fieldLabel() for $has_one relationships in FormScaffolder
* ![rev:64173] Fixed wrong call to scaffoldCMSFields() in Member->getCMSFields(), removed addScaffoldRelationFields() call as this is done by the newly called parent::getCMSFields() already
* ![rev:64153] #2906 - Fixed manifest conflict in web-tests
* ![rev:64142] fixed ss.i18n.sprintf() call in Validator.js
* ![rev:64124] #2936: Define STDOUT if it's not already defined...
* ![rev:64109] Fixed order of arguments.
* ![rev:64099] Bad XHTML in en_US language file (#2624) - thanks tiwoc!
* ![rev:64098] Director::fileExists() fails on windows with absolute paths (#2935) - thanks to ajshort!
* ![rev:64097] Fixed CSSContentParser to only use tidy on CLI mode if its available, and first check for existence of PHP tidy extension. Fixes failing unit tests on standard WAMP windows installations.
* ![rev:64096] Fixed CSVParser assumptions about absolute unix-style filepaths - using Director::absFile() instead now
* ![rev:64081] Consistent usage of ss.i18n.sprintf() instead of ss.i18n.printf() - the method is returning a string rather than outputting directly, so should be sprintf()
* ![rev:64077] Fixing AssetAdmin translations which were previously moved to Folder.php - i18n::include_by_class() doesn't like filenames/namespaces which are in a different folder than the language file they're referenced in (see #2359) - started in r64076
* ![rev:64076] Fixing AssetAdmin translations which were previously moved to Folder.php - i18n::include_by_class() doesn't like filenames/namespaces which are in a different folder than the language file they're referenced in (see #2359)
* ![rev:64074] Fixed AssetTableField javascript errors caused by r64049
* ![rev:64072] Fixed DebugView Breadcrumbs to not include query string as separate link, and don't append an arrow after the last element
* ![rev:64049] fix the bug that add some rules for summary columns even when they are not there.
* ![rev:64042] Using _t() to check content strings in unit tests and avoid tests failing when i18n is enabled
* ![rev:64038] Removed $_ALL_CLASSES in ReportAdmin::has_reports() - this doesn't need to be here anymore, due to changes in ManifestBuilder
* ![rev:64013] Limited error message scope on invalid classname for TestRunner
* ![rev:64011] Ignore TestOnly classes when collecting permissions
* ![rev:64010] Removed dependency of ss.i18n.js on other libraries by replacing $$ with document.getElementsByTagName() and implementing a custom event attacher - see #2927
* ![rev:64007] Making less assumptions about object structure in FieldSet->addFieldToTab() error messages
* ![rev:64005] YamlFixture->saveIntoDatabase(): In order to support reflexive relations which need a valid object ID, the record is written twice: first after populating all non-relational fields, then again after populating all relations (has_one, has_many, many_many). Fixes a bug where FileTest was testing onBeforeWrite() behaviour
* ![rev:64004] Writing record from yml before parsing relations in YamlFixture->saveIntoDatabase() to avoid missing lookups for reflexive relations on the same object
* ![rev:64002] Moved RecordController and CollectionController to external module (see r63905)
* ![rev:64001] Adjusted FormTest->testLoadDataFromObject() to new assumptions about changed behaviour on loadDataFrom() from $loadBlanks to $clearMissingFields - which means that form fields are cleared regardless if they have blank values in the passed object or not
* ![rev:64000] Making sure that DataObject->has*Field() methods always return an array, in order not to fail any array_key_exists() checks
* ![rev:63999] Fixing DataObject->hasField() to detect dynamic getters by using hasMethod("get$fieldName")
* ![rev:63998] Fixed Form->loadDataFrom() to properly populate FormField->setValue() when an object is passed as the first parameter (needed e.g. for CheckboxSetField->setValue()) - see mailinglist discussion at http://groups.google.com/group/silverstripe-dev/browse_thread/thread/717bada8ccafdd70
* ![rev:63983] Fixes so ?flush=1 doesn't stop showing the Reports tab in CMS
* ![rev:63981] Allow use of ClassInfo methods in _config.php when manifest is being rebuilt
* ![rev:63945] Added missing slash in TableListField_Item->Link()
* ![rev:63939] Improved RedirectorPage's handling of invalid configuration options to prevent infinite loops and segfaults
* ![rev:63927] Improved detection of CLI colour support
* ![rev:63920] Fix broken breadcrumbs
## Bugfixes
* ![rev:63915] #2588 Fix issue with IIS not stripping GET variables from the URL (mackeyn)
* ![rev:63909] Prevent misconfigured redirector pages from breaking static publishing
* ![rev:63890] Validation result was ignoring the $valid flag passed as the first argument.
* ![rev:63858] Fixed js i18n entity names for TableField (see #2916)
* ![rev:63857] Properly merging different dictionaries for javascript i18n implementation (see #2916)
* ![rev:63839] Added missing default english text to i18n call in TableField and TableListField javascript
* ![rev:63828] MemberTableField_Popup had an odd way of overloading saveComplexTableField() - this should be on MemberTableField instead, since that's the direct subclass of ComplexTableField for where saveComplexTableField() is defined. This broke the "Add Member" button in CMS Security, probably due to the way the form URLs have been changed. See ticket #2907 for the reported problem.
* ![rev:63825] Don't let Director::test() clobber current stage
* ![rev:63824] Fix FieldSet::replaceField() so that it doesn't clobber tabs
* ![rev:63823] SiteTree::onAfterPublish() will still pass an object to the handlers on the first publish
* ![rev:63819] Fixed pagination in TableListField after hsmith's changes
* ![rev:63813] Fixed array_key_exists check in DataObject->setField that was failing when DataObject->record was not yet initialised by DataObject->setField.
* ![rev:63809] PHP Notice in InlineFormAction_Readonly
* ![rev:63804] Side reports weren't working on initial opening of the side tab
* ![rev:63799] Fixed blatant error where $SNG_member wasn't defined
* ![rev:63797] Member->getCMSFields() should use scaffoldCMSFields() instead of scaffoldFormFields() - currently it is operating in the wrong context.
* ![rev:63793] MemberTableField->AddLink() was calling &methodName=add - this should be just "add", as per changes to the forum URLs in sapphire
* ![rev:63786] Removed query that was causing issues displaying members in the security groups. Open ticket #2591
* ![rev:63785] URLs to security groups in CMS were not linked correctly. Removed Director::link() references and replaced with strings. Director::link() is deprecated and shouldn't be used.
* ![rev:63769] Fixed paths to CSV fixtures for case-sensitive file systems.
* ![rev:63768] Fixed $fixture_file for Ext2fs and other case-sensitive file systems.
* ![rev:63748] Use of getOwnerID() in ReportAdmin which doesn't make sense, since ID() is sufficient.
* ![rev:63739] Fixed bug in getCMSFields scaffolding of relations
* ![rev:63716] Fixed createTag for proper generation of DropdownField blank items
* ![rev:63698] Only include i18n.js if javascript files are included - and to be safe, include the required prototype.js along with the library
* ![rev:63691] Removed old reference to ?executeForm=EditForm
* ![rev:63681] Requiring a parentController for RecordController
* ![rev:63649] Fixed unclear SQL escaping responsibilities in SearchFilter subclasses - it now expects unescaped data, and escapes automatically when adding to the query)
* ![rev:63647] Making "add %s" translatable for ComplexTableField
* ![rev:63640] Automatically including sapphire/javascript/i18n.js in Requirements::process_i18n_javascript() to avoid errors when Requirements are manually overwritten
* ![rev:63635] #2901 - RootURLController didn't properly manipulate the Controller stack
* ![rev:63634] Reverted earlier change to ModelAdmin.js statusMessage() display
* ![rev:63629] Translated Member formfields through fieldLabels()
* ![rev:63627] php notice in CountryDropdownField
* ![rev:63622] Disabled user_error in ComplexTableField->sourceID() when no formfield 'ID' is found in ComplexTableField->$detailFormFields - not strictly required as we can deduce it from the URL. It was causing conflicts with DataObject->scaffoldFormFields() not returning an 'ID' field
* ![rev:63621] Making sure that Dataobject->getManyManyJoin() inserts a valid database table for the relation - not all component classes returned by ComponentSet->ownerClass are valid tables (see r54797 and r60909 for previous commits on this issue)
* ![rev:63618] Escaping added database columns in queries for TableListField
* ![rev:63611] typo mentioned in #2775
* ![rev:63602] Fixed bounce-address generation so that it doesn't have a human component to the email address
* ![rev:63593] #1816: Added a little padding to page version table
* ![rev:63581] Fixed ComplexTableField export
* ![rev:63571] typo in js file
* ![rev:63570] typo in js file
* ![rev:63549] Updated TreeSelectorField to work properly within CTF popups
* ![rev:63527] Removed notice-level errors in ListboxField
* ![rev:63525] #2883 - Remove use of short tag
* ![rev:63509] Fixed DataObject::dbObject() operation with CompositeDbFields
* ![rev:63467] Fixed Upload->isValidExtension() - was checking array keys instead of array values ....
* ![rev:63464] Fixed hardcoded HTTP protocol information in BasicAuth
* ![rev:63457] AssetAdmin->Link() returned a trailing slash that was not necessary. See ticket #2884
* ![rev:63452] Fixed ReportAdmin breakages - changes to HTTPRequest required that show($params) be changes to show($request) and then check $request->allParams() for the URL parameters - this caused major breakages as this code was not updated to reflect the new URL handling changes.
* ![rev:63432] #2753: Couldn't have fields named the same as methods
* ![rev:63304] #2529: Fixed HTTP/1.0 support
* ![rev:63297] Fixed loading indicator in for add form in ModelAdmin.js
* ![rev:63296] wrong jsparty PATH references
* ![rev:63295] wrong jsparty PATH references
* ![rev:63294] Fixed ModelAdmin Requirements path references
* ![rev:63291] Don't try to use HTTP_HOST environment variable if its not set in Director::protocolAndHost(). Throw a warning, then return false - before if script execution was not set to stop on WARNING, you'll get a NOTICE as well.
* ![rev:63290] Moved *_PATH and PR_*constants from main.php/cli-script.php back to Core.php - was causing problems with installer (directly includes Core.php, but doesn't run through main.php) - see ticket #2867 for improvement suggestions in bootstrapping code to avoid these bugs
* ![rev:63204] Moved TEMP_FOLDER define back from main.php/cli-script.php to Core.php, as it was causing problems with the installer
* ![rev:63157] Reverted Director class using BASE_PATH instead of dirname(dirname(['SCRIPT_FILENAME'])), originally committed in r63154
* ![rev:63079] decrease width of elements in image/flash/link panel on right-hand side to avoid close-button being shoved off to the void (#1669)
* ![rev:62910] #2390: Not indexed pages are removed from sitemap.xml
* ![rev:62909] Fixed bug introduced into AssetTableField by previous CTF change
* ![rev:62892] #2721 - Show decent preview on FileIFrameField
* ![rev:62885] Fixed a number of really basic problems with a number of date fields - got basic loading and saving working across them all
* ![rev:62875] More robust setting of defaults; necessary due to altered ViewableData::__isset()
* ![rev:62868] #2697 - Removed junk slash from login message
* ![rev:62701] Changed URL format for password sent confirmation display, to avoid issues with new request handling trying to detect the email-TLD as a pseudo-file-extension (which resulted in truncated email-addresses in display). Old: /Security/passwordsent/myemailaddress. New: Security/passwordsent/?email=myemailaddress
* ![rev:62490] createTag() on FormField subclasses should use getTabIndex() instead of getTabIndexHTML() as createTag() is responsible for generating the HTML, and all we need is the tabindex value
* ![rev:62471] Allowing HTTPRequest::match() to match rules with extensions (e.g. /sitemap.xml used for GoogleSitemap)
* ![rev:62463] Pushing current controller into stack in RootURLController->handleRequest to Session-usage in Translatable if enabled. Session::get() is dependent on controllers, and is needed to determine the current language for any Translatable queries (like RootURLController::get_homepage_urlsegment())
* ![rev:62381] Type checking problem in LookupField->Field(), merged in from r62387
* ![rev:62325] Removed DataReport.js calls in LeftAndMain until we figure out a better way of doing
* ![rev:62324] Removed DataReport.js calls in LeftAndMain until we figure out a better way of doing
* ![rev:62320] Allow creation of a tab and a field of the same name; bug cause by the duplicate field merging code introduced recently.
* ![rev:61975] not all decorators has a summary_fields defined, so the code need to deal with this.
* ![rev:61699] Fixed bulk loader constructor
* ![rev:61686] Fixed styling, searching, and pagination of CommentTableField
* ![rev:61505] Fix direct access of (class)/(id)/edit on the ModelAdmiN
* ![rev:61395] SetHeight() was calling SetWidth using getFormattedImage()
* ![rev:61292] fixed ManyMany relation for same object
* ![rev:61202] Reverted change r61158 which stopped scrollbars working
* ![rev:61195] Asset area in CMS refused to load because of error in code from r60920 - #2751
* ![rev:61162] sourceFilter should be a string, not an array
* ![rev:61155] HtmlEditorField_Toolbar->LinkForm() for editing a link inside an HtmlEditorField instance was showing page titles using the "Title"
* ![rev:61151] ComplexTableField_popup.css "overflow: auto" should only be applied to the container HTML element instead of HTML and BODY which can
* ![rev:60920] #1458 - GEOIP now does not return any error if it cannot look up the ip address (as it uses a shell command this is not enabled on many WAMP systems)
* ![rev:60897] fixed Member name not being saved in database with ReadonlyField()
* ![rev:60757] Fixed TableListField->Link() to allow for instanciation without a form/controller (e.g. for unit tests)
* ![rev:60756] Fixed ScaffoldINGComplexTableField file name
* ![rev:60726] Fixed DataObject::fieldLabels() to detect labels on inherited database fields
* ![rev:60723] Fixed partial merge from nzct (originally from r47039, partially merged in r60440)
* ![rev:60712] Fixed ModelAdmin typo in $searchCriteria method parameter
* ![rev:60710] Fixed $this reference in static Member call
* ![rev:60643] Reinstated error_handling(E_ALL) for dev environments in main.php after clarifying with sam - we want to force developers to recard notice-level errors unless they expicitly opt-out in their _config.php
* ![rev:60636] Disabled mandatory override of default PHP error handler to E_ALL when in dev mode (which means you have no way of overriding error_reporting() in your _config.php, and by that no way of disabling e.g. E_NOTICE level errors)
* ![rev:60635] Fixed CMSMainTest to use /admin/crm as a standard URL rather than /admin (which could be overloaded by other admins for application-like interfaces without CMS components)
* ![rev:60573] Fixed bug with unpaginated TableListFields. Added tests for TableListField pagination
* ![rev:60415] Added Requirements::path_for_file() to support external URLs in required paths (incl. unit test)
* ![rev:60413] Fixed RequirementsTest combine_files() testing to accept new javascript inclusion format with added modified flags
* ![rev:60412] Fixed JSON.php include path in Convert.php
* ![rev:60410] Fixed test runner's handling of errors
* ![rev:60404] Further fixes to Director::test()
* ![rev:60397] Changes to DataObject::get_one() caching to try and fix segfaults
* ![rev:60393] Fixed superglobal masquerading in Director::test()
* ![rev:60388] Fixed Yaml fixtures for SapphireTest
* ![rev:60382] Re-added additional GroupTest tests (merge error from branches/roa)
* ![rev:60378] Removed duplicate GroupTest.php files
* ![rev:60224] Fixed merge error in ModelAsController
* ![rev:60219] Fixed reverted access checks in Controller->handleAction() due to merge error
* ![rev:60213] Javascript error in ComplexTableField_popup.js - missing a comma in an object literal which broke ajax updates in the CMS
* ![rev:60092] Using $extraClass in AutocompleteTextField
* ![rev:59340] Fixed TableListField->setClick_PopupLoad() to parse ID-value out of new `` identifiers
* ![rev:59285] Changed span.middleColumn to .middleColumn in cms_right.css in preparation for building proper HTML/XHTML nesting in formfields
* ![rev:59284] Changed span.middleColumn to .middleColumn in cms_right.css in preparation for building proper HTML/XHTML nesting in formfields
* ![rev:59283] Fixed i18n namespacing issue in TableListField_Item.ss - was using _t('Form.DELETE'), but templates don't allow to re-use variables outside their own namespace
* ![rev:59282] Removed duplicate SecurityID fields on each row of a TableField (calls $myForm->Fields() which by default will include more than the actual form fields passed to the constructor)
* ![rev:59281] Fixed colspan on ` ` in MemberTableField.ss
## Enhancement
* ![rev:71650] Applying the asynch request patch to our tag field. We use a simple queue management idea to keep only the latest ajax request is valid, ie, we abort all requests before the current request is submitted, so that there is only at most one request spanning in the client side, so no early request's response cover late request's response, also greatly enhance the performance of both sides, especially in case of complicated operations in server side and complicated post-events in client side.
* ![rev:71597] delete button keep spinning when cancel a deletion operation from the confirm window.
* ![rev:70956] Ticket 2756: Newsletter performance problem, run out of memory.
* ![rev:70861] Allow selection of the unique identifier field on Member by setting Member::set_unique_identifier_field(AnotherField). Default is "Email".
* ![rev:70846] When MemberLoginForm controller page has loaded, focus on the Email input field so the user doesn't have to focus the field themselves. Ticket #3418
* ![rev:70809] Removed blacklist newsletter specific code out of core and into newsletter module
* ![rev:70783] Export to CSV data of MemberTableField gets all fields on the member from the db array, instead of just FirstName, Surname and Email
* ![rev:70775] Removed BrowserDetect javascript library which was randomly placed in Security_login.js and just included in AssetAdmin. Reverted to regex-matching for simple browser detection for now
* ![rev:70465] Allow Member::getCMSFields() to be extended via DataObjectDecorator->updateCMSFields()
* ![rev:70190] Added nicer (and more useful) error message if ErrorPage cannot open the error HTML file for writing
* ![rev:70131] Creation of a new page type now uses a consistent source of classes that respect $hide_ancestor on SiteTree.
* ![rev:70064] Default to "Page" for new page type dropdown
* ![rev:70060] Added a table for showing linked pages in the Report -> BackLinks tab
* ![rev:69954] Calling augmentSQL() on decorators in DataObject::get(), which is necessary (among others) to limit ContentController->getMenu() with Translatable enabled to the currently active language. Was previously just implemented in DataObject::get_one()
* ![rev:69953] Passing through same arguments in SiteTree::get_by_url() than in the wrapped DataObject::get_one()
* ![rev:69952] Removing specialized routing for Translatable from Director->currentPage() and ModelAsController->getNestedController. Calls SiteTree::get_by_url() now, which abstracts out the Translatable handling.
* ![rev:69924] #3313 gigtech: Added ComplexTableField::setAddTitle()
* ![rev:69909] Allowing for passing of $context in Hierarchy->markChildren()
* ![rev:69896] Allowing more arguments in Object->extend() (merged from branches/translatable in r64523, thanks wakeless!)
* ![rev:69895] Added SQLQuery->filtersOnFK() (merged from branches/translatable in r64523, thanks wakeless!)
* ![rev:69891] Moved i18n::get_existing_content_languages() to correct namespace in Translatable::get_existing_content_languages().
* ![rev:69888] Added DataObjectSet->replace()
* ![rev:69864] Allow selection of parent page with adding page through URL - Ticket #3177. Thanks simon_w!
* ![rev:69833] Separated the class name for captioned images to normal images, so styling can be separately applied
* ![rev:69824] Caption support for the HtmlEditorField in the SS CMS. Ticket #2937
* ![rev:69823] Caption support for the TinyMCE editor in the SS CMS. Ticket #2937
* ![rev:69821] #3180: Added RsyncMultiHostPubilsher to 2.3 from trunk
* ![rev:69734] Allow specifying application URL for the top right logo instead of hardcoded silverstripe.com. Thanks hamish!
* ![rev:69661] Removed /cms URL alias for CMS interface to allow for pages named "cms" (see #3267)
* ![rev:69660] Removed /silverstripe URL alias for CMS interface to allow for pages named "silverstripe" (see #3267)
* ![rev:69449] Added .message styles to cms/css/layout.css
* ![rev:69370] Add a `` around all keywords (space delimited) and not just the entire search phrase
* ![rev:69360] Update ForeignKey and Primary key default fields to use SQLMap for their dropdown source for better performance.
* ![rev:69323] Added styling for "form .message.notice" in sapphire/css/Form.css
* ![rev:69322] More readable (and linked) output of "you are comparing..." message when viewing version of a page
* ![rev:69244] Added renameField() to FieldSet
* ![rev:69224] Allow choosing ellipsis for truncated text on Text->LimitWordCountXML()
* ![rev:69218] Added ability to define the ellipsis for LimitWordCount() setting "..." as the default
* ![rev:69207] Changed order of array merging in DataObject->db() - contains fields from subclasses at end of the array instead of the beginning. Important because db() is used by FormScaffolder, which shoved custom fields on the front of auto-generated forms. Shouldn't have any effect on the actual content of returned array
* ![rev:69204] Hiding Member->BlacklistedEmail field in getCMSFields() by default - only relevant in newsletter/bounce context at the moment
* ![rev:68860] Added RestfulServerTest->testGETRelationshipsXML()
* ![rev:68818] Appending classnames to translated pagetype titles in CMSMain->getPageTypes() when the cms is loaded in a non-english version - see inline comment
* ![rev:68817] Appending classnames to translated pagetype titles in SiteTree->getClassDropdown() when the cms is loaded in a non-english version - see inline comment
* ![rev:68771] Improved display of class permissions in /admin/security by using the menu title in addition to the classname (users won't necessarily know which classname an admin area corresponds to). Also using "Access to all CMS interfaces" as a permission description for CMS_ACCESS_LeftAndMain
* ![rev:68761] Making Date->Ago() translatable
* ![rev:68747] Using i18nEntityProvider on SiteTree to ensure entities in "Page" namespace get stored on sapphire instead of the "module folder" for Page.php - we can't make those properties translatable within core if they are in a custom folder
* ![rev:68745] Allowing textcollection of multiple modules selectively
* ![rev:68701] Allow HtmlEditorField on front-end forms
* ![rev:68508] Checking for $_FILE_TO_URL_MAPPING in DevelopmentAdmin if called in CLI mode to avoid nasty bugs e.g. during FunctionalTest sessions (Example: Controller stack was failing for some weird reason in LeftAndMainTest)
* ![rev:68460] Added CMSMenu::get_viewable_menu_items() and using it in LeftAndMain->MainMenu()
* ![rev:68193] Added Email->setTemplate() and Email->getTemplate() (as the Email_Template class is deprecated)
* ![rev:68160] Added support for specifying target module in i18nEntitityProvider->provideEntities()
* ![rev:68156] Added support for specifying target module in i18nEntitityProvider->provideEntities()
* ![rev:67984] Documented and improved DataObjectSet->PaginationSummary(). Removed DataObjectSet->paginationSummaryDots
* ![rev:67675] Fixed Email::obfuscate() to include custom CSS for reversing the email address using the "direction" method
* ![rev:67638] Added "reverse" method to Email::obfuscate() to reverse the email address in PHP, then CSS can be used to reverse it back to normal to avoid email harvesting
* ![rev:67502] Added SSViewer::get_source_file_comments()
* ![rev:67422] Allow setting of the legend value in the Form template by use of Form->setLegend('my legend')
* ![rev:67398] Added ability to include a blockquote in the CMS WYSIWYG editor
* ![rev:67345] Allowing custom methods in DataObjectSet->column()
* ![rev:67321] Only showing import form in ModelAdmin if an importer is set
* ![rev:67294] Added SITETREE_GRANT_ACCESS permission code to SiteTree to control editability of the "Access" tab (incl. unit tests)
* ![rev:67292] Supporting object parameter in FieldSet->makeFieldReadonly()
* ![rev:67291] Added mock controller instances to each FunctionalTest, which passes the existing mock session object into the controller stack. This means Sesssion::get()/set() in application code will use the test session. Helpful mainly for overriding login information used by Member::currentUser().
* ![rev:67242] Make it easier to create pageless subclasses of Page_Controller
* ![rev:67224] Adding "close popup" link after saving /admin/myprofile (see #3195)
* ![rev:67139] Added TreeDropdownField->refresh() js method
* ![rev:67138] Allowing usage of extraClass() in TreeDropdownField
* ![rev:67083] Using TEMP_FOLDER for StaticExporter
* ![rev:67072] Disallowing CMSMain->revert() if SiteTree->canPublish() is not granted (used to be SiteTree->canEdit()). If a user isn't allowed to publish, he shouldn't be allowed to revert the live state of a page either.
* ![rev:67061] Moving "save" and "delete" cms actions from CMSMain->EditForm() into SiteTree->getCMSActions() to make them decoratable (e.g. disallow delete action) and easier to cover with unit tests. Leaving fallback "save" and "delete" actions in CMSMain in case no actions are defined (necessary e.g. for Group class in SecurityAdmin)
* ![rev:66958] Added SearchForm->setPageLength() and SearchForm->getPageLength()
* ![rev:66946] Add `<%-- --%>` comments
* ![rev:66830] Disabled sending of warnings through Debug::send_errors_to() by default. If you need extended error reporting including warnings (e.g. for a site which is still in active development), use Debug::send_errors_to('example@example.com', true) or Debug::send_warnings_to('example@example.com')
* ![rev:66803] Just redirect back after "import" action called, and set the session message on the Form object instead of hardcoded ID
* ![rev:66654] Renamed tab "Meta-data" to "Metadata" for better readability (see #3142)
* ![rev:66646] Fixed default level in HeaderField - was duplicating defaults already present in two other places (see r66639)
* ![rev:66625] Allow CheckboxSetField to use extra classes as other FormField classes do. Also dded test for this behaviour in CheckboxSetFieldTest.
* ![rev:66622] Sort test class list by alphabetical order so it's easier to read
* ![rev:66596] Defaulting to show all columns in ModelAdmin CSV export, ignoring user selection of result table columns (users can always limit CSV columns by manually deleting them e.g. in Excel)
* ![rev:66583] Added experimental support using (relname)Query methods to pass complex relations (those defined by methods) into searchfilter
* ![rev:66343] Added comments in rendered templates to indicate the source .ss files, on dev sites only:
* ![rev:66333] Added ConfirmedPasswordField->setShowOnClickTitle()
* ![rev:66323] If there are no files in a folder in AssetAdmin, show a message
* ![rev:66322] Added SearchFormTest
* ![rev:66320] Added more known file extensions (tiff, js, html, css, ico) to File->getFileType()
* ![rev:66312] Added support for $relationCallbacks on the importer class (in addition to methods on the model class)
* ![rev:66173] Moving GoogleSitemap functionality (priority dropdown and database fields) from SiteTree to GoogleSitemapDecorator
* ![rev:66168] Removed GoogleSitemap references in SiteTree (moving to decorator implementation)
* ![rev:66137] Added TranslatableTest with minimal assertions about existing form fields in translation mode
* ![rev:66045] Added support for custom importer methods in CsvBulkLoader
* ![rev:65827] Added error messages to flash uploader panel, to be consistent with the image uploader one
* ![rev:65582] Using actual classname in DataObjectSet->debug()
* ![rev:65581] Added unit tests for FieldSet->insertBefore()/insertAfter()
* ![rev:65513] Using currently used content languages for options in the TinyMCE spellchecker (see http://open.silverstripe.com/ticket/2498#comment:2)
* ![rev:65508] Added language tables for tinymce_ssbuttons Plugin, incl. German translation
* ![rev:65495] Calling UpgradeSiteTreePermissionSchemaTask from SiteTree->requireDefaultRecords as a temporary workaround for missing migration infrastructure. This means that upgrading the schema for 2.3 can be done without manual task triggers, just the usual dev/build (see http://open.silverstripe.com/ticket/2847#comment:4)
* ![rev:65494] Added DatabaseTest
* ![rev:65464] Better CLI output for browsing dev/tests
* ![rev:65463] Allowing strings instead of arrays in ModelAdmin::$managed_models to make it less error-prone for beginners
* ![rev:65457] Allowing to pass strings instead of arrays into FunctionalTest->assert*() methods, and convert them internally to arrays
* ![rev:65455] Adjusted AssetAdmin to Folder->can*() changes
* ![rev:65454] Added LeftAndMainDecorator
* ![rev:65453] Added stub methods to DataObjectDecorator for documentation purposes
* ![rev:65452] Allowing decoration of can*() methods in File and Folder
* ![rev:65361] Added unit tests for i18n template parsing
* ![rev:65266] Folder name can now be used for uploading files. Ticket #3026 - Thanks simon_w!
* ![rev:65181] Updated LeftAndMain->getMenuTitle() to use classname as fallback if $menu_title is not defined - one less thing to specify in a minimalist ModelAdmin subclass
* ![rev:65173] Refactored CSS applied to filter boxes by using common selector
* ![rev:65153] Added UpgradeSiteTreePermissionSchemaTask as a manual migration of SiteTree schema upgrades in 2.3 (see #2847)
* ![rev:65150] Added unit tests for SiteTree permissions
* ![rev:65147] Only logging out users on Security::permissionFailure() is called in non-ajax context. For ajax requests, we now return a 403 HTTP Status in a HTTPResponse Object, with a ":NOTLOGGEDIN" body for backwards compatibility. If a logout+redirection is required after an ajax-request, this should be handled by the clientside.
* ![rev:65125] Added a "strict-mode" for Member->inGroup() and Member->inGroups() to determine true membership to a group (without inheritance)
* ![rev:65092] Scaffolding TextField instead of TextareaField in Text DBField due to size
* ![rev:65073] Added fieldLabels() overloading to various DataObject subclasses. Use this method instead of directly calling _t() in getCMSFields(), and use fieldLabel('MyField') to get the label for a specific FormField. This way, we can transparently support formfield scaffolding and re-use the labels for search fields automatically.
* ![rev:65072] Added fieldLabels() overloading to various DataObject subclasses. Use this method instead of directly calling _t() in getCMSFields(), and use fieldLabel('MyField') to get the label for a specific FormField. This way, we can transparently support formfield scaffolding and re-use the labels for search fields automatically.
* ![rev:65056] Removed DataObjectDecorator->updateSummaryFieldsExcludeExtra() - was a straight copy of updateSummaryFields()...
* ![rev:65055] More solid fulltext checks against master language tables in i18nTextCollectorTest
* ![rev:65054] Using eval() in textcollector to test for valid PHP syntax
* ![rev:65051] Added unit tests for i18nTextCollector handling of newlines in entity values
* ![rev:65029] Using namespaces for filenames in RequirementsTest
* ![rev:65027] Using safer get_by_id() call in SecurityAdmin->getMemberForm()
* ![rev:65022] Added i18nEntityProvider interface (see comments in #1625) incl. unit tests
* ![rev:65020] Allowing translation of some static properties on DataObject and subclasses through DataObject->fieldLabels(). Part of the provideI18nEntities() work which was started in r64881 (see #1625)
* ![rev:64881] Ignoring entity-names with $ signs (most likely dynamic properties) in i18nTextCollector->collectFromCode()
* ![rev:64878] Added unit tests for i18n.js
* ![rev:64682] Changed FormField->Field() to make use of FormField->createTag() over complicated dynamic string building
* ![rev:64596] Allow use of RestfulService->setQueryString() and test to support it. Patch from ticket #2973. Thanks to simon_w!
* ![rev:64558] Used _t() entity instead of hardcoded "not set" string in TextareaField->Field()
* ![rev:64556] Clearer indication of setting disabled attribute in DropdownField->Field() since the disabled attribute shouldn't be set if the field isn't to be disabled
* ![rev:64553] Clearer indication of setting disabled attribute in CheckboxField->Field() since the disabled attribute shouldn't be set if the field isn't to be disabled
* ![rev:64552] If TextField->disabled has been set to true, then add the "disabled" attribute to the input type text attribute list
* ![rev:64551] Made use of FormField->createTag() functionality for creating a textarea field in TextareaField->Field()
* ![rev:64494] Using ksort() in textcollector to get alphabetized language master files (=easier to compare and debug)
* ![rev:64493] Made _t() global function in Core.php an alias for the new i18n::_t() method
* ![rev:64492] Refactored i18nTextCollector and added unit tests
* ![rev:64489] Added ClassInfo::classes_for_file()
* ![rev:64447] Moving i18n->textcollector() and related methods to new class i18nTextCollector and i18nTextCollectorTask - enabling running textcollector through CLI, refactored to instance methods for better testability
* ![rev:64446] Improved TaskRunner and BuildTask metadata and styling
* ![rev:64421] Using createTag() to create HeaderField and LabelField, which adds support for HTML id attributes and extra css classes through addExtraClass()
* ![rev:64410] Made use of createTag() on FormAction->Field()
* ![rev:64408] Added ID to allow CSS styling of forgot password link on MemberLoginForm
* ![rev:64406] Added a message if no email address was specified, for user feedback purposes on MemberLoginForm->forgotPassword()
* ![rev:64405] Changed the "I've lost my password" action to a link instead, since the button is too prominent, and usability is poor having this as a form submit button.
* ![rev:64397] Versioned::get_one_by_stage() and Versioned::get_by_stage() were missing parameters from their get_one() and get() counterparts in DataObject. Those parameters have been added. See ticket #2965 for the origin of this patch.
* ![rev:64366] Pulled out Newsletter specific stuff from Member, the changes in the newsletter module were done on r64365
* ![rev:64356] Added additional known file types, for audio and video files
* ![rev:64311] Added unit tests for Silverstripe's custom static handling (with lots of commented out failing tests)
* ![rev:64306] is_array() checks in DataFormatter to respect empty arrays as a form of denying permissions on fields
* ![rev:64305] Added BankAccountField::is_valid_array_structure() to avoid PHP Notices when converting empty array values
* ![rev:64304] Added DropdownFieldTest
* ![rev:64252] Making confirmation message in ConfirmedFormAction translatable
* ![rev:64238] Showing image thumb before input field in a separate block `` in SimpleImageField
* ![rev:64236] Added unit tests for form session messages and session validation, FormTest->testSessionValidationMessage() and FormTest->testSessionSuccessMessage()
* ![rev:64229] Storing a "fake referer" in TestSession->lastURL to allow for redirectBack() calls, e.g. after failed form validation
* ![rev:64224] Disrecard $includeRelations setting when scaffolding $has_one relationships in FormScaffolder - use $restrictFields to limit instead
* ![rev:64223] Making URL accessible through HTTPRequest->getURL()
* ![rev:64157] Added $params parameter to all DBField->scaffoldFormField() subclasses
* ![rev:64144] Setting default level for ContentController->getMenu($level = 1) to allow for calls without arguments
* ![rev:64078] Using $locale in _t() instead of repeatedly calling i18n::get_locale()
* ![rev:64075] Replaced hardcoded "en_US" references in i18n class with $default_locale
* ![rev:64073] Supporting titles in FieldSet->findOrMakeTab()
* ![rev:64071] Added german translation for ModelAdmin
* ![rev:64067] Using i18n fieldlabels for column-headlines in TableListField
* ![rev:64041] Re-enabled RSSFeedTest - seems to work now due to Director::baseURL() fixes (#2861)
* ![rev:64012] Improved error message on invalid classname for TestRunner
* ![rev:64003] Added DataFormatter->setCustomRelations()
* ![rev:64001] Made FormTest fixtures more expressive
* ![rev:63999] Re-enabled two test cases in DataObjectSet as a result of the above fixes
* ![rev:63996] Added unit test CheckboxSetFieldTest?->testLoadDataFromObject()
* ![rev:63995] Using fixtures in CheckboxSetFieldTest?, restructured from hard-to-debug manymany-join on self to a Article`<->`Tag relation
* ![rev:63955] Pulled out Report::has_reports() which was hardcoded into LeftAndMain, and put into cms/_config.php which makes more sense
* ![rev:63763] Reformatted and documented Form->loadDataFrom() - no functionality changed
* ![rev:63762] Added unit tests for "_unchanged" handling in Form->loadDataFrom()
* ![rev:63761] Added unit tests for Form->loadDataFrom()
* ![rev:63748] Added missing "abstract" Report class to compliment ReportAdmin. Currently it is unclear what abstract base class you're supposed to implement from.
* ![rev:63681] Custom getViewer() methods to use Page main templates if CollectionController is nested in a ContentController
* ![rev:63680] Added SSViewer->getTemplateFileByType() and SSViewer->setTemplateFile()
* ![rev:63679] Added HTTPRequest::detect_method()
* ![rev:63653] Added Controller->getRequest()
* ![rev:63652] Added Controller->render($params) as a shortcut for Controller->customise($params)->renderWith(array('MyTemplate','MySubTemplate')) - templates are auto-detected by Controller->getViewer() and Controller->getAction()
* ![rev:63651] Consistently allowing for $restrictFields and $fieldClasses parameters passed to DataObject->scaffoldFormFields(), DataObject->scaffoldSearchFields(), DataObject->scaffoldCMSFields()
* ![rev:63650] Added RequestHandlingTest->testNestedBase()
* ![rev:63648] Added support for customise parameters to ViewableData->renderWith() to avoid unnecessary chaining ($this->customise($params)->renderWith($template))
* ![rev:63633] Better i18n for TableField and ComplexTableField
* ![rev:63632] Using DataObject->Title for has_one dropdowns generated in DataObject->scaffoldFormFields()
* ![rev:63630] Added DataObject->fieldLabel() and removed $fieldname parameter from DataObject->fieldLabels($fieldName) to simplify overloading of fieldLabels() for i18n
* ![rev:63628] Added FieldSet->hasTabSet() incl. unit test
* ![rev:63626] Removed overloaded MemberTableField->DetailForm() and reduced overloaded constructor logic - same behaviour found in parent classes
* ![rev:63624] Scaffolding Member->getCMSFields() to allow for easy extension
* ![rev:63623] Calling DataObjectDecorator->updateCMSFields() in DataObject->getCMSFields() - was previously only called in SiteTree instances
* ![rev:63620] Only list ID field in DataObject->summaryFields() if no summaryfields are defined (or can be autodetected). Listing all fields was not feasible, as some subclasses have more fields than fits the column layout
* ![rev:63619] Added ObjectTest->testSingletonCreation()
* ![rev:63615] Added FieldSetTest->testRemoveTab()
* ![rev:63614] Updated translations from translate.silverstripe.com
* ![rev:63613] Updated translations from translate.silverstripe.com
* ![rev:63572] Removed project-specific requirements from CMSMain
* ![rev:63569] Started using ss.i18n clientside javascript in LeftAndMain classes (only a fraction made translatable)
* ![rev:63567] Using ss.i18n in all sapphire form fields with clientside language strings
* ![rev:63566] Added javascript i18n support through Requirements::process_i18n_javascript() and ss.i18n javascript lib
* ![rev:63565] Added ViewableData->i18nLocale, used in LeftAndMain.ss to determine interface language through meta tags (see r63564)
* ![rev:63564] Added ViewableData->i18nLocale, used in LeftAndMain.ss to determine interface language through meta tags
* ![rev:63554] Checking for instanceof DataObject instead of has_one() in DataObject->update() to support virtual relations as well (fix to r63531)
* ![rev:63528] #1848 - Select the title field for new pages
* ![rev:63526] #2875: Make CLI execution more robust when FILE_TO_URL_MAPPING not set
* ![rev:63493] Added support for dot syntax to DataObject::update()
* ![rev:63470] Setting SimpleImageField->allowedExtensions to sensible defaults
* ![rev:63468] Added Form->resetField()
* ![rev:63465] Showing contact information in Debug::friendlyError() from Email::getAdminEmail()
* ![rev:63463] Added Director::get_environment_type()
* ![rev:63452] Better URL handling. Instead of "admin/showreport/something", we do "admin/report/show/something", which is more consistent with the rest of the CMS.
* ![rev:63388] Director::forceWWW() now does a 301 redirect for SEO (to be consistent with Director::forceSSL())
* ![rev:63337] Added DataObjectTest test cases for checking various field existence levels
* ![rev:63327] #2172: Added counts to comment admin submenu items
* ![rev:63321] Updated cli-script handling to be more in line with web calls, and improved Director::setBaseURL() calls.
* ![rev:63289] Tidied up DropdownField->Field() by making use of FormField->createTag() as other FormField subclasses such as TextField do
* ![rev:63249] Moved UserDefinedForm and related code, templates, CSS and javascript out of cms and sapphire classes into userforms/trunk
* ![rev:63198] Added user_error() if RebuildStaticCacheTask is called without a Page->allPagesToCache() method defined
* ![rev:63182] Added ManifestBuilder::$cache_expiry_mins
* ![rev:63181] Using HTTP Status 301 for RedirectorPage class, to be nice to search engines and improve SEO (with 200 page rank gets split between pages, with 301 its all transferred to the target page)
* ![rev:63175] Introduced constants for system paths like /sapphire in preparation for a more flexible directory reorganisation. Instead of hardcoding your path, please use the following constants: BASE_PATH, BASE_URL, SAPPHIRE_DIR, SAPPHIRE_PATH, CMS_DIR, CMS_PATH, THIRDPARTY_DIR, THIRDPARTY_PATH, ASSETS_DIR, ASSETS_PATH, THEMES_DIR, THEMES_PATH
* ![rev:63154] Introduced constants for system paths like /sapphire in preparation for a more flexible directory reorganisation. Instead of hardcoding your path, please use the following constants: BASE_PATH, BASE_URL, SAPPHIRE_DIR, SAPPHIRE_PATH, CMS_DIR, CMS_PATH, THIRDPARTY_DIR, THIRDPARTY_PATH, ASSETS_DIR, ASSETS_PATH, THEMES_DIR, THEMES_PATH
* ![rev:63153] Moved procedural bootstrapping code hiding away between function definitions in Core.php to main.php and cli-script.php (TEMP_FOLDER and PR_* constants)
* ![rev:63057] Updated argument handling for sake
* ![rev:63025] Better CLI output of 'sake dev'
* ![rev:63022] #2853 - Added dev/build as a the new name for db/build; prettied it up
* ![rev:62995] Prevent CMS session timing out and losing content - Added a ping to Security/ping every 5 mins, and altered the onSessionLost behaviour to open login form in a pop-up instead of closing the CMS (see #2242)
* ![rev:62994] Prevent CMS session timing out and losing content - Added Security/ping as a destination for session-preserving ajax pings
* ![rev:62894] #2700 - Added section title to CMS title tag
* ![rev:62883] ComplexTableFilters used to edit relations have their filter automatically set, as well as the foreign key on new records.
* ![rev:62867] #2417: Replaced http://www.yoursite.com with the actual base URL
* ![rev:62848] Allowing to specify dropdown title field in TypeDropdown->setTitleFieldName() - patch by nicolaas (#2689)
* ![rev:62847] Allowing usage of ID, Code-String or Object as $group parameter in Member::inGroup()
* ![rev:62844] Allowing usage of $member parameter for Member::check() as ID, Code or Object
* ![rev:62843] Added Debug::send_warnings_to()
* ![rev:62841] Using optional $member parameter for DataObject::can*() methods
* ![rev:62477] Improved ajax error display within the CMS: Using Firebug (or Firebug Lite) for plaintext output instead of cramming everything into the CMS-status field
* ![rev:62468] In Debug::showError(), if error is displayed through ajax with CliDebugView, use plaintext output
* ![rev:62467] Removed "ERROR:" prefix hack for ajax error responses - clientside evaluation should inspect HTTP status codes instead
* ![rev:62397] Adjusted ModelAdmin->import() to new BulkLoader_Result API (see r62403)
* ![rev:62267] Added DBFieldTest to test prepValueForDB()
* ![rev:61685] You can now use Controller::join_links() to add querystring arguments to a URL
* ![rev:61627] Added dev/tests/startsession and dev/tests/endsession to allow the use of fixtures with external test frameworks, such as Windmill
* ![rev:61618] wakeless - Added SQLQuery::filtersOnID()
* ![rev:61485] DropdownField now allows for `
` elements in the field source by passing in a two dimensional array - this was taken from GroupedDropdownField
* ![rev:61420] RequiredFields->php() uses quotes around title of field, falling back to the name of the field if title isn't available
* ![rev:61415] Added LowerCase() to DBField to return the raw2xml converted value as lower case for any type of field if applicable
* ![rev:61394] Added SetHeight() to the Image class, so we can call it from the templates
* ![rev:61392] Added SetSize() to the Image class so we can use it in the templates
* ![rev:61166] Consistent styling of TypeDropdown in the CMS
* ![rev:61165] Added h3, h4 and h5 CSS styles
* ![rev:61157] Added FieldSet->removeFieldsFromTab() which does exactly what removeFieldFromTab() does, but with an array of field names
* ![rev:61154] Director::forceSSL() redirects are now 301 instead of 302 redirects, which is better for SEO
* ![rev:61153] ErrorPage:: should also list ShowInSearch as 0, since it is not required to be searched
* ![rev:61149] Added getter method for CompositeField->children
* ![rev:61147] If title not passed into TextareaField constructor, it defaults to the name value
* ![rev:60724] Removed recently added DataObject::$result_permissions and replaced with more specific TableListField::permissions_for_object()
* ![rev:60645] Added Maori to i18n::$common_languages
* ![rev:60637] Showing error level in custom error handlers on DebugView and CliDebugView
* ![rev:60635] Added default /admin/cms route to cms/_config.php to clear default namespace for other controllers
* ![rev:60395] Using Requirements instead of hardcoded template logic to include some LeftAndMain js/css
* ![rev:59286] Added `` around TableListField templates and all subclasses
## Minor changes
* ![rev:71706] Make FirstName and Surname of Member table be indexed.
* ![rev:71621] Allow setting page size for MemberTableField
* ![rev:71569] some label, texture change for AHIP project SC #99
* ![rev:71345] added user friendly labels - should really be _t compatible I guess
* ![rev:71292] Fixed tab-spacing in cms/upload js files
* ![rev:71194] Fixed CSVParserTest with encoding issues
* ![rev:70960] Added basic tests for Date and DateField
* ![rev:70953] Code formatting fix in DateField
* ![rev:70895] Updated tests to check boolean values in CsvBulkLoaderTest
* ![rev:70843] Added phpDoc comments for documentation that needs to be written explaining the different source data that can be used with CheckboxSetField
* ![rev:70833] Ensure that $result is defined before calling array functions on it in SiteTree::getClassDropdown()
* ![rev:70807] Code formatting cleanup in Member
* ![rev:70799] Code formatting fix in SecurityAdmin_left.ss
* ![rev:70783] Code formatting fix
* ![rev:70769] Defensive handling of events in TreeSelectorField->hideTree
* ![rev:70761] Added important piece of information for where the callback method should be defined for duplicate checks in BulkLoader
* ![rev:70693] fixing flash insertion and removing console log messages
* ![rev:70678] Use FormResponse instead of echoing strings as JS
* ![rev:70677] Removed hard-to-debug error trap in SecurityAdmin_right.js
* ![rev:70666] merged r70665 from trunk
* ![rev:70664] removed dulicate css code
* ![rev:70663] merged r70323 from trunk
* ![rev:70662] tinymce toolbar improvements. Fixed gradient image and border issue
* ![rev:70657] #3416 MCE Editor Minor Beautification (thanks ajshort!)
* ![rev:70647] Changed $title parameter to HtmlEditorField constructor to null to be consistent with TextareaField and so title is derived based on the name of the field if no title is given.
* ![rev:70635] Patch from ajshort. changed site tree shortcut icon to transparent.
* ![rev:70608] Code formatting fix in FormField
* ![rev:70598] ticket 1846. Changed Action to title case
* ![rev:70596] ticket 1846. changed logout text to title case
* ![rev:70591] merged patch from simon_w. Fixed language in model admin
* ![rev:70587] fix for ticket 3384. Instead of messing round with added requirements back if you cannot merge them just return
* ![rev:70571] in-line documentation correction
* ![rev:70548] Added default english text for "Email" in Secrity->LostPasswordForm()
* ![rev:70540] Added default english text for "Email" and "Password" fields in MemberLoginForm
* ![rev:70530] merged patch from keeny. Put comment data into Cookie and load if user fails maths spam question. Clear comment cookie on successful posting
* ![rev:70498] Fixed incorrect parameters breaking PasswordField HTML validity because maxlength and size were being populated by non-numeric characters
* ![rev:70494] merged patch from simon_w. Removed unnesscary comments
* ![rev:70493] merged patch from simon_w. Changed can*() methods to check they are sent valid member objects rather then arrays
* ![rev:70484] merged patch from rjmackay. Fixed inclusion of BBCode filters and reported error supression
* ![rev:70483] merged patch from simon_w: added check to Children() to make sure user has canView() rights
* ![rev:70411] added empty statics for decoration
* ![rev:70409] added empty statics to allow decoration
* ![rev:70408] added empty statics to PageComment to allow for decoration
* ![rev:70400] SilverStripeNavigator toolbar is now i18n friendy
* ![rev:70360] removed Gallery Module code from AssetTableField
* ![rev:70355] CSS hover background fix. Merged from ticket #3264. Thanks gigtech
* ![rev:70269] Update ResetFormAction to make use of createTag() method instead of patching together strings to make the form input
* ![rev:70257] Fixed undefined variable error in TableListField->generateExportFileData()
* ![rev:70255] Whitespace removal at end of DataObjectDecorator class
* ![rev:70252] Update phpDoc for DataObject->getFrontEndFields()
* ![rev:70251] Renamed DataObjectDecorator->updateFormFields() to updateFrontEndFields() to be more accurate to the extended method
* ![rev:70238] Removed "Groups" field that wasn't used in Member::getCMSFields()
* ![rev:70236] Code tidy up and coding style fixes for MemberTableField
* ![rev:70188] If the error-404.html or error-500.html file can't be opened, supress the warning so an error isn't shown in the CMS
* ![rev:70154] phpDoc for Varchar->getName()
* ![rev:70153] Removed redundant code from Varchar
* ![rev:70133] Fix potential undefined variable errors in Query->column() and Query->keyedColumn() by always returning an array, even if it's empty. This now conforms to the phpDoc for these two functions, instead of returning null if there's no $column variable set
* ![rev:70132] Defined $column as an array so "undefined variable" error is supressed
* ![rev:70070] tidied up padding in headings complextablefields with long titles
* ![rev:70065] Removed redundant code in CMSMain->AddPageOptionsForm()
* ![rev:70061] Removed redundant code
* ![rev:70059] Code formatting fixes in HtmlEditorField
* ![rev:70053] Added test for HTTP::getLinksIn() which subsequently tests HTTP::findByTagAndAttribute()
* ![rev:70048] fix on-line documentation syntax so that phpDocumentor can creating automatically the API doc
* ![rev:70032] fix on-line documentation syntax so that phpDocumentor can creating automatically the API doc
* ![rev:69955] Passing context object through in LeftAndMain->getSiteTreeFor() (necessary for Translatable)
* ![rev:69939] Removed "edit image" button since the image editor has been removed
* ![rev:69890] Updated language tables
* ![rev:69889] Added Extension->getOwner()
* ![rev:69883] Fixed alignment of "Create translation" button in CMS - removed unnecessary horizontal floating and removed background
* ![rev:69871] merged r69857 from trunk
* ![rev:69865] Removed old references to check-php, which has since been removed
* ![rev:69843] Moved form session error set up from Form constructor to method so it can be used again if need be
* ![rev:69840] Added SiteTreeActionsTest
* ![rev:69839] Merged r69410 from trunk
* ![rev:69838] Merged r69409 and r69410 from trunk
* ![rev:69749] Fixed Sitetree expand and collapse icons alignment in FF3
* ![rev:69717] added support for :-) as well as :) in the Similes
* ![rev:69706] search interface design improvements
* ![rev:69686] Updated correct HTTPRequest class for @deprecated notice on HTTP::sendFileToBrowser()
* ![rev:69611] Updated cms master tables
* ![rev:69592] Added french translation (see #3290)
* ![rev:69591] Added french translation (see #3290)
* ![rev:69562] merge patch from ajshort: allow db build without running requireDefaultRecords
* ![rev:69514] fixed ModelAdmin right tab layout. Removed scrollbar off the tab strip. Ticket #2900
* ![rev:69419] Code syntax tidy up
* ![rev:69369] Removed @todo from Text->ContextSummary as it's already done
* ![rev:69368] Added phpDoc to Text->ContextSummary() $string argument
* ![rev:69348] Added todo and phpDoc to Text->ContextSummary()
* ![rev:69249] Disable caching in RestfulService test
* ![rev:69248] Removed debug message
* ![rev:69244] Added test for FieldSet->renameField() to test method behaviour
* ![rev:69226] Added tests for Text->LimitWordCountXML()
* ![rev:69225] Added phpDoc to Convert::raw2xml() and Convert::raw2js()
* ![rev:69221] Removed comment that isn't appropriate
* ![rev:69220] Added TextTest for testing Text class methods
* ![rev:69219] Updated phpDoc cautionary message on Text->LimitCharacters()
* ![rev:69218] Added documentation to various Text class methods for limiting field values
* ![rev:69206] logical bug in FormScaffolder
* ![rev:69205] translation
* ![rev:68973] reorganized layout of bbcode list elements to move longer ones to bottom row for BBCode popouts
* ![rev:68858] renamed $json to $xml in XMLDataFormatter
* ![rev:68853] added link to all Comments feed in Page Comments
* ![rev:68771] Updated language tables
* ![rev:68763] translation
* ![rev:68760] Making Folder->getCMSFields() translatable
* ![rev:68759] translation
* ![rev:68758] Making CTF save button translatable
* ![rev:68753] translation
* ![rev:68749] translation
* ![rev:68748] translation
* ![rev:68747] translation
* ![rev:68743] Translation
* ![rev:68742] Translation
* ![rev:68741] translation
* ![rev:68600] Removed debug message
* ![rev:68534] Hardcoded yoursite.com in assets treeview (see #3230)
* ![rev:68531] fixed javascript initialization bug in SecurityAdmin_left.js (see #3211)
* ![rev:68526] Hiding border around `
`s in ModelAdmin add form (see #3214)
* ![rev:68517] fixed php notices on AssetAdmin (see #3187)
* ![rev:68457] formatting in Security.php
* ![rev:68195] Styling for input.disabled
* ![rev:68178] updated translations
* ![rev:68162] Updated language master table
* ![rev:68161] Updated language master table
* ![rev:68147] Updated cms lang master table
* ![rev:68029] Added whitespace after