From 9d74bc461da8ffb1fe028af2b0213f525683b2dd Mon Sep 17 00:00:00 2001 From: Mateusz Uzdowski Date: Wed, 16 Apr 2014 14:40:48 +1200 Subject: [PATCH 01/23] BUG Load just one of each plugin. --- thirdparty/tinymce/tiny_mce_gzip.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/thirdparty/tinymce/tiny_mce_gzip.php b/thirdparty/tinymce/tiny_mce_gzip.php index 8c571689c..d07fe1b5f 100755 --- a/thirdparty/tinymce/tiny_mce_gzip.php +++ b/thirdparty/tinymce/tiny_mce_gzip.php @@ -94,17 +94,17 @@ class TinyMCE_Compressor { $plugins = self::getParam("plugins"); if ($plugins) $this->settings["plugins"] = $plugins; - $plugins = explode(',', $this->settings["plugins"]); + $plugins = array_unique(explode(',', $this->settings["plugins"])); $themes = self::getParam("themes"); if ($themes) $this->settings["themes"] = $themes; - $themes = explode(',', $this->settings["themes"]); + $themes = array_unique(explode(',', $this->settings["themes"])); $languages = self::getParam("languages"); if ($languages) $this->settings["languages"] = $languages; - $languages = explode(',', $this->settings["languages"]); + $languages = array_unique(explode(',', $this->settings["languages"])); $tagFiles = self::getParam("files"); if ($tagFiles) @@ -140,7 +140,7 @@ class TinyMCE_Compressor { } // Add any specified files. - $allFiles = array_merge($files, explode(',', $this->settings['files'])); + $allFiles = array_merge($files, array_unique(explode(',', $this->settings['files']))); // Process source files for ($i = 0; $i < count($allFiles); $i++) { From f2c4a629a731123b097790d361ebbac84989e46a Mon Sep 17 00:00:00 2001 From: Hamish Friedlander Date: Thu, 20 Jun 2013 14:08:46 +1200 Subject: [PATCH 02/23] FIX: ConfirmedPasswordField used to expose existing hash --- forms/ConfirmedPasswordField.php | 5 ++++- tests/forms/ConfirmedPasswordFieldTest.php | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/forms/ConfirmedPasswordField.php b/forms/ConfirmedPasswordField.php index 844e98367..c7d43097f 100644 --- a/forms/ConfirmedPasswordField.php +++ b/forms/ConfirmedPasswordField.php @@ -192,7 +192,10 @@ class ConfirmedPasswordField extends FormField { /** * Value is sometimes an array, and sometimes a single value, so we need to handle both cases */ - public function setValue($value) { + public function setValue($value, $data = null) { + // If $data is a DataObject, don't use the value, since it's a hashed value + if ($data && $data instanceof DataObject) $value = ''; + if(is_array($value)) { if($value['_Password'] || (!$value['_Password'] && !$this->canBeEmpty)) { $this->value = $value['_Password']; diff --git a/tests/forms/ConfirmedPasswordFieldTest.php b/tests/forms/ConfirmedPasswordFieldTest.php index 4f7bfc213..abe8a9794 100644 --- a/tests/forms/ConfirmedPasswordFieldTest.php +++ b/tests/forms/ConfirmedPasswordFieldTest.php @@ -15,6 +15,26 @@ class ConfirmedPasswordFieldTest extends SapphireTest { $this->assertEquals('valueB', $field->children->fieldByName($field->getName() . '[_ConfirmPassword]')->Value()); } + public function testHashHidden() { + $field = new ConfirmedPasswordField('Password', 'Password', 'valueA'); + $field->setCanBeEmpty(true); + + $this->assertEquals('valueA', $field->Value()); + $this->assertEquals('valueA', $field->children->fieldByName($field->getName() . '[_Password]')->Value()); + $this->assertEquals('valueA', $field->children->fieldByName($field->getName() . '[_ConfirmPassword]')->Value()); + + $member = new Member(); + $member->Password = "valueB"; + $member->write(); + + $form = new Form($this, 'Form', new FieldList($field), new FieldList()); + $form->loadDataFrom($member); + + $this->assertEquals('', $field->Value()); + $this->assertEquals('', $field->children->fieldByName($field->getName() . '[_Password]')->Value()); + $this->assertEquals('', $field->children->fieldByName($field->getName() . '[_ConfirmPassword]')->Value()); + } + public function testSetShowOnClick() { //hide by default and display show/hide toggle button $field = new ConfirmedPasswordField('Test', 'Testing', 'valueA', null, true); From 8acb28ffc5662739f8c8567233503986ba6310a7 Mon Sep 17 00:00:00 2001 From: Jim Tittsler Date: Wed, 23 Apr 2014 14:50:34 +0900 Subject: [PATCH 03/23] remove leading tab fix rendering --- docs/en/topics/page-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/topics/page-types.md b/docs/en/topics/page-types.md index 94d8af868..2997e0a0c 100644 --- a/docs/en/topics/page-types.md +++ b/docs/en/topics/page-types.md @@ -42,7 +42,7 @@ This is explained in a more in-depth topic at [Page Type Templates](/topics/page ## Adding Database Fields Adding database fields is a simple process. You define them in an array of the static variable `$db`, this array is - added on the object class. For example, Page or StaffPage. Every time you run dev/build to recompile the manifest, it +added on the object class. For example, Page or StaffPage. Every time you run dev/build to recompile the manifest, it checks if any new entries are added to the `$db` array and adds any fields to the database that are missing. For example, you may want an additional field on a `StaffPage` class which extends `Page`, called `Author`. `Author` is a From 044b68f973e753a5bfa211ef2438973ffe551525 Mon Sep 17 00:00:00 2001 From: sanjay Date: Wed, 23 Apr 2014 17:19:41 +0530 Subject: [PATCH 04/23] update 3-forms.md adds the missing "/" in the url --- docs/en/tutorials/3-forms.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/tutorials/3-forms.md b/docs/en/tutorials/3-forms.md index be23525cb..4f63f3f3d 100644 --- a/docs/en/tutorials/3-forms.md +++ b/docs/en/tutorials/3-forms.md @@ -158,7 +158,7 @@ Add the following code to the existing `form.css` file: } -All going according to plan, if you visit [http://localhost/your_site_name/home?flush=1](http://localhost/your_site_name/home?flush=1) it should look something like this: +All going according to plan, if you visit [http://localhost/your_site_name/home/?flush=1](http://localhost/your_site_name/home/?flush=1) it should look something like this: ![](_images/tutorial3_pollform.jpg) From 0e58e97eea67afa98cc20a0947cb12b083ab2525 Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Thu, 24 Apr 2014 09:10:24 +0100 Subject: [PATCH 05/23] Oembed warning if GD function is missing Silencing errors from a function is terrible so I've stopped that. I've also added detection for if `imagecreatefromstring` is a declared function and a useful error is thrown if not --- oembed/Oembed.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/oembed/Oembed.php b/oembed/Oembed.php index 3a2c067c4..035d23b84 100644 --- a/oembed/Oembed.php +++ b/oembed/Oembed.php @@ -267,7 +267,10 @@ class Oembed_Result extends ViewableData { if(!$data) { // if the response is no valid JSON we might have received a binary stream to an image $data = array(); - $image = @imagecreatefromstring($body); + if (!function_exists('imagecreatefromstring')) { + throw new LogicException('imagecreatefromstring function does not exist - Please make sure GD is installed'); + } + $image = imagecreatefromstring($body); if($image !== FALSE) { preg_match("/^(http:\/\/)?([^\/]+)/i", $this->url, $matches); $protocoll = $matches[1]; From ff5f60718a4f2dcc0be01be77e19c1a7e207ab66 Mon Sep 17 00:00:00 2001 From: Daniel Hensby Date: Fri, 25 Apr 2014 10:13:04 +0100 Subject: [PATCH 06/23] FIX Docs for DataList::filter() The docs incorrectly stated that DataList::filter() needed escaped input, but this isn't true as the ExactMatch filter (and others) escape the values for you. Anyone following that advice would have double escaped arguments --- model/DataList.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/DataList.php b/model/DataList.php index a397b3a16..638dd3b3a 100644 --- a/model/DataList.php +++ b/model/DataList.php @@ -310,7 +310,7 @@ class DataList extends ViewableData implements SS_List, SS_Filterable, SS_Sortab * * @todo extract the sql from $customQuery into a SQLGenerator class * - * @param string|array Escaped SQL statement. If passed as array, all keys and values are assumed to be escaped. + * @param string|array Key and Value pairs, the array values are automatically sanitised for the DB quesry * @return DataList */ public function filter() { From 5e9ae578c37b384ab52273cb900f63749dfe9b5b Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Thu, 24 Apr 2014 17:18:07 +1200 Subject: [PATCH 07/23] BUG Fix edge case IE8 / dev / ssl / download file crash Prevents issue at http://support.microsoft.com/kb/323308 appearing on dev --- control/HTTP.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/control/HTTP.php b/control/HTTP.php index f477570ed..40aeeaf58 100644 --- a/control/HTTP.php +++ b/control/HTTP.php @@ -307,6 +307,8 @@ class HTTP { * deprecated; in these cases, the headers are output directly. */ public static function add_cache_headers($body = null) { + $cacheAge = self::$cache_age; + // Validate argument if($body && !($body instanceof SS_HTTPResponse)) { user_error("HTTP::add_cache_headers() must be passed an SS_HTTPResponse object", E_USER_WARNING); @@ -315,7 +317,7 @@ class HTTP { // Development sites have frequently changing templates; this can get stuffed up by the code // below. - if(Director::isDev()) return; + if(Director::isDev()) $cacheAge = 0; // The headers have been sent and we don't have an SS_HTTPResponse object to attach things to; no point in // us trying. @@ -326,16 +328,16 @@ class HTTP { if(function_exists('apache_request_headers')) { $requestHeaders = apache_request_headers(); if(isset($requestHeaders['X-Requested-With']) && $requestHeaders['X-Requested-With']=='XMLHttpRequest') { - self::$cache_age = 0; + $cacheAge = 0; } // bdc: now we must check for DUMB IE6: if(isset($requestHeaders['x-requested-with']) && $requestHeaders['x-requested-with']=='XMLHttpRequest') { - self::$cache_age = 0; + $cacheAge = 0; } } - if(self::$cache_age > 0) { - $responseHeaders["Cache-Control"] = "max-age=" . self::$cache_age . ", must-revalidate, no-transform"; + if($cacheAge > 0) { + $responseHeaders["Cache-Control"] = "max-age={$cacheAge}, must-revalidate, no-transform"; $responseHeaders["Pragma"] = ""; // To do: User-Agent should only be added in situations where you *are* actually @@ -365,7 +367,7 @@ class HTTP { } } - if(self::$modification_date && self::$cache_age > 0) { + if(self::$modification_date && $cacheAge > 0) { $responseHeaders["Last-Modified"] = self::gmt_date(self::$modification_date); // Chrome ignores Varies when redirecting back (http://code.google.com/p/chromium/issues/detail?id=79758) @@ -401,7 +403,7 @@ class HTTP { } } - $expires = time() + self::$cache_age; + $expires = time() + $cacheAge; $responseHeaders["Expires"] = self::gmt_date($expires); } From 892b440115a388db354abf0b885eb03be0318cf1 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Fri, 11 Apr 2014 13:40:23 +1200 Subject: [PATCH 08/23] API Make default gridfield paging configurable Documentation improved --- docs/en/reference/grid-field.md | 20 ++++++++++++++++++++ forms/gridfield/GridFieldPaginator.php | 13 +++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/docs/en/reference/grid-field.md b/docs/en/reference/grid-field.md index fbc05e9c1..bfd5abb70 100644 --- a/docs/en/reference/grid-field.md +++ b/docs/en/reference/grid-field.md @@ -98,6 +98,24 @@ A config object can be either injected as the fourth argument of the GridField c $gridField = new GridField('pages', 'All pages', SiteTree::get()); $gridField->setConfig(GridFieldConfig_Base::create()); +By default the `[api:GridFieldConfig_Base]` constructor takes a single parameter to specify the number +of items displayed on each page. + + :::php + // I have lots of items, so increase the page size + $myConfig = GridFieldConfig_Base::create(40); + +The default page size can also be tweaked via the config. (put in your mysite/_config/config.yml) + + :::yaml + // For updating all gridfield defaults system wide + GridFieldPaginator: + default_items_per_page: 40 + +Note that for [/reference/modeladmin](ModelAdmin) sections the default 30 number of pages can be +controlled either by setting the base `ModelAdmin.page_length` config to the desired number, or +by overriding this value in a custom subclass. + The framework comes shipped with some base GridFieldConfigs: ### Table listing with GridFieldConfig_Base @@ -246,6 +264,8 @@ Here is a list of components for generic use: - `[api:GridFieldDeleteAction]` - `[api:GridFieldViewButton]` - `[api:GridFieldEditButton]` + - `[api:GridFieldExportButton]` + - `[api:GridFieldPrintButton]` - `[api:GridFieldPaginator]` - `[api:GridFieldDetailForm]` diff --git a/forms/gridfield/GridFieldPaginator.php b/forms/gridfield/GridFieldPaginator.php index 41d0d19bd..001def9f8 100755 --- a/forms/gridfield/GridFieldPaginator.php +++ b/forms/gridfield/GridFieldPaginator.php @@ -9,9 +9,17 @@ class GridFieldPaginator implements GridField_HTMLProvider, GridField_DataManipulator, GridField_ActionProvider { /** + * Specifies default items per page + * + * @config * @var int */ - protected $itemsPerPage = 15; + private static $default_items_per_page = 15; + + /** + * @var int + */ + protected $itemsPerPage; /** * Which template to use for rendering @@ -30,7 +38,8 @@ class GridFieldPaginator implements GridField_HTMLProvider, GridField_DataManipu * @param int $itemsPerPage - How many items should be displayed per page */ public function __construct($itemsPerPage=null) { - if($itemsPerPage) $this->itemsPerPage = $itemsPerPage; + $this->itemsPerPage = $itemsPerPage + ?: Config::inst()->get('GridFieldPaginator', 'default_items_per_page'); } /** From 61f6f2e8148de39607b4efacba32563243fff70b Mon Sep 17 00:00:00 2001 From: Loz Calver Date: Wed, 23 Apr 2014 15:31:22 +0100 Subject: [PATCH 09/23] DOCS: Minor fixes to RestfulService documentation --- docs/en/reference/restfulservice.md | 80 ++++++++++++++--------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/docs/en/reference/restfulservice.md b/docs/en/reference/restfulservice.md index c2e123dd3..3410dfdc0 100644 --- a/docs/en/reference/restfulservice.md +++ b/docs/en/reference/restfulservice.md @@ -15,12 +15,12 @@ RestfulService (see [flickrservice](http://silverstripe.org/flickr-module/) and ### Creating a new RestfulObject :::php - //example for using RestfulService to connect and retrive latest twitter status of an user. + //example for using RestfulService to connect and retrive latest twitter status of an user. $twitter = new RestfulService("http://twitter.com/statuses/user_timeline/user.xml", $cache_expiry ); - $params = array('count' => 1); - $twitter->setQueryString($params); - $conn = $twitter->connect(); - $msgs = $twitter->getValues($conn, "status"); + $params = array('count' => 1); + $twitter->setQueryString($params); + $conn = $twitter->request(); + $msgs = $twitter->getValues($conn, "status"); ### Extending to a new class @@ -45,12 +45,12 @@ RestfulService (see [flickrservice](http://silverstripe.org/flickr-module/) and $service->httpHeader('Accept: application/xml'); $service->httpHeader('Content-Type: application/xml'); - $peopleXML = $service->connect('/people'); + $peopleXML = $service->request('/people'); $people = $service->getValues($peopleXML, 'user'); // ... - $taskXML = $service->connect('/tasks'); + $taskXML = $service->request('/tasks'); $tasks = $service->getValues($taskXML, 'task'); @@ -71,12 +71,12 @@ You can traverse throught document tree to get the values or attribute of a part for example you can traverse :::xml - + Sally Ted Matt John - + to extract the id attributes of the entries use: @@ -96,14 +96,14 @@ If you don't know the exact position of dom tree where the node will appear you node.Recommended for retrieving values of namespaced nodes. :::xml - + video - + to get the value of entry node with the namespace media, use: :::php - $this->searchValue($response, "//media:guide/media:entry") + $this->searchValue($response, "//media:guide/media:entry") @@ -116,25 +116,25 @@ If the web service returned an error (for example, API key not available or inad could delgate the error handling to it's descendant class. To handle the errors define a function called errorCatch :::php - // This will raise Youtube API specific error messages (if any). - public function errorCatch($response){ - $err_msg = $response; - if(strpos($err_msg, '<') === false) { - user_error("YouTube Service Error : $err_msg", E_USER_ERROR); - } - - return $response; - } + // This will raise Youtube API specific error messages (if any). + public function errorCatch($response){ + $err_msg = $response; + if(strpos($err_msg, '<') === false) { + user_error("YouTube Service Error : $err_msg", E_USER_ERROR); + } + + return $response; + } If you want to bypass error handling on your sub-classes you could define that in the constructor. :::php - public function __construct($expiry=NULL){ - parent::__construct('http://www.flickr.com/services/rest/', $expiry); - $this->checkErrors = false; //Set checkErrors to false to bypass error checking - } + public function __construct($expiry=NULL){ + parent::__construct('http://www.flickr.com/services/rest/', $expiry); + $this->checkErrors = false; //Set checkErrors to false to bypass error checking + } ## Other Uses @@ -147,21 +147,21 @@ such as del.icio.us Put something like this code in mysite/code/Page.php inside class Page_Controller :::php - // Accepts an RSS feed URL and outputs a list of links from it - public function RestfulLinks($url){ - $service = new RestfulService($url); - $request = $service->request(); - $body = $request->getBody(); - $items = $service->getValues($body,"channel","item"); - - $output = ''; - foreach($items as $item) { - // Fix quote encoding - $description = str_replace('&quot;', '"', $item->description); - $output .= "
  • link}\">{$item->title}
    {$description}
  • "; - } - return $output; - } + // Accepts an RSS feed URL and outputs a list of links from it + public function RestfulLinks($url){ + $service = new RestfulService($url); + $request = $service->request(); + $body = $request->getBody(); + $items = $service->getValues($body,"channel","item"); + + $output = ''; + foreach($items as $item) { + // Fix quote encoding + $description = str_replace('&quot;', '"', $item->description); + $output .= "
  • link}\">{$item->title}
    {$description}
  • "; + } + return $output; + } Put something like this code in `themes//templates/Layout/HomePage.ss`: From 6b3a21653b907f7855a1a3ce8533167ffb50eb13 Mon Sep 17 00:00:00 2001 From: "Martin D." Date: Mon, 28 Apr 2014 10:31:54 -0400 Subject: [PATCH 10/23] Fixed config setting link --- docs/en/topics/i18n.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/topics/i18n.md b/docs/en/topics/i18n.md index 8dfaef3cb..43c4e2c9b 100644 --- a/docs/en/topics/i18n.md +++ b/docs/en/topics/i18n.md @@ -85,7 +85,7 @@ not PHP's built-in [date()](http://nz.php.net/manual/en/function.date.php). ### Language Names SilverStripe comes with a built-in list of common languages, listed by locale and region. -They can be accessed via the `i18n.common_languages` and `i18n.common_locales` [config setting](/topics/configuratio). +They can be accessed via the `i18n.common_languages` and `i18n.common_locales` [config setting](/topics/configuration). In order to add a value, add the following to your `config.yml`: From 8673b11cd9f250c97263db4cafcb15afb21e4116 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Tue, 29 Apr 2014 08:57:23 +1200 Subject: [PATCH 11/23] BUG Fix ImageTest Image test would erroneously reset the Image::$backend to null if the test was skipped, breaking subsequent test cases --- tests/model/ImageTest.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tests/model/ImageTest.php b/tests/model/ImageTest.php index 8ec1e28ee..fcdb933cd 100644 --- a/tests/model/ImageTest.php +++ b/tests/model/ImageTest.php @@ -11,15 +11,14 @@ class ImageTest extends SapphireTest { protected $origBackend; public function setUp() { - if(get_class($this) == "ImageTest") - $this->skipTest = true; + if(get_class($this) == "ImageTest") $this->skipTest = true; parent::setUp(); + $this->origBackend = Image::get_backend(); + if($this->skipTest) return; - - $this->origBackend = Image::get_backend(); if(!file_exists(ASSETS_PATH)) mkdir(ASSETS_PATH); @@ -34,7 +33,7 @@ class ImageTest extends SapphireTest { } public function tearDown() { - Image::set_backend($this->origBackend); + if($this->origBackend) Image::set_backend($this->origBackend); /* Remove the test files that we've created */ $fileIDs = $this->allFixtureIDs('Image'); From 91034d1341ee5e57159f897ededf80d240b320c7 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Wed, 9 Apr 2014 14:48:02 +1200 Subject: [PATCH 12/23] BUG HTMLText whitelist considers text nodes Minor improvement to #2853. If a list of whitelisted elements are specified, text nodes no longer evade the whitelist --- model/fieldtypes/HTMLText.php | 29 +++++++++++++++++++++++------ tests/model/HTMLTextTest.php | 14 ++++++++++---- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/model/fieldtypes/HTMLText.php b/model/fieldtypes/HTMLText.php index 46d462aa8..b47049744 100644 --- a/model/fieldtypes/HTMLText.php +++ b/model/fieldtypes/HTMLText.php @@ -55,8 +55,9 @@ class HTMLText extends Text { * - whitelist: If provided, a comma-separated list of elements that will be allowed to be stored * (be careful on relying on this for XSS protection - some seemingly-safe elements allow * attributes that can be exploited, for instance ) - * - * @return void + * Text nodes outside of HTML tags are filtered out by default, but may be included by adding + * the text() directive. E.g. 'link,meta,text()' will allow only and text at + * the root level. */ public function setOptions(array $options = array()) { parent::setOptions($options); @@ -184,20 +185,36 @@ class HTMLText extends Text { } public function prepValueForDB($value) { + return parent::prepValueForDB($this->whitelistContent($value)); + } + + /** + * Filter the given $value string through the whitelist filter + * + * @param string $value Input html content + * @return string Value with all non-whitelisted content stripped (if applicable) + */ + public function whitelistContent($value) { if($this->whitelist) { $dom = Injector::inst()->create('HTMLValue', $value); $query = array(); - foreach ($this->whitelist as $tag) $query[] = 'not(self::'.$tag.')'; + $textFilter = ' | //body/text()'; + foreach ($this->whitelist as $tag) { + if($tag === 'text()') { + $textFilter = ''; // Disable text filter if allowed + } else { + $query[] = 'not(self::'.$tag.')'; + } + } - foreach($dom->query('//body//*['.implode(' and ', $query).']') as $el) { + foreach($dom->query('//body//*['.implode(' and ', $query).']'.$textFilter) as $el) { if ($el->parentNode) $el->parentNode->removeChild($el); } $value = $dom->getContent(); } - - return parent::prepValueForDB($value); + return $value; } /** diff --git a/tests/model/HTMLTextTest.php b/tests/model/HTMLTextTest.php index ac46cd647..4e91688ab 100644 --- a/tests/model/HTMLTextTest.php +++ b/tests/model/HTMLTextTest.php @@ -179,11 +179,17 @@ class HTMLTextTest extends SapphireTest { function testWhitelist() { $textObj = new HTMLText('Test', 'meta,link'); - $this->assertEquals( - $textObj->prepValueForDB(''), - $textObj->prepValueForDB('

    Remove

    '), - 'Removes any elements not in whitelist' + '', + $textObj->whitelistContent('

    Remove

    Remove Text'), + 'Removes any elements not in whitelist excluding text elements' + ); + + $textObj = new HTMLText('Test', 'meta,link,text()'); + $this->assertEquals( + 'Keep Text', + $textObj->whitelistContent('

    Remove

    Keep Text'), + 'Removes any elements not in whitelist including text elements' ); } } From cff42700ff03dcf40dffdf93d90ac03e73b922e2 Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Tue, 29 Apr 2014 12:51:47 +1200 Subject: [PATCH 13/23] Removed demo folder --- .../demo/ajaxSubmit-intergration-demo.html | 85 -- .../jquery-validate/demo/captcha/captcha.js | 27 - .../demo/captcha/fonts/Anorexia.ttf | Bin 14300 -> 0 bytes .../demo/captcha/image_req.php | 6 - .../demo/captcha/images/.htaccess | 1 - .../demo/captcha/images/button.png | Bin 1546 -> 0 bytes .../demo/captcha/images/button.psd | Bin 23968 -> 0 bytes .../demo/captcha/images/image.php | 35 - .../jquery-validate/demo/captcha/index.php | 66 - .../demo/captcha/newsession.php | 12 - .../jquery-validate/demo/captcha/process.php | 14 - .../jquery-validate/demo/captcha/rand.php | 11 - .../jquery-validate/demo/captcha/style.css | 140 -- thirdparty/jquery-validate/demo/css/chili.css | 15 - .../jquery-validate/demo/css/cmxform.css | 46 - .../demo/css/cmxformTemplate.css | 55 - thirdparty/jquery-validate/demo/css/core.css | 21 - thirdparty/jquery-validate/demo/css/reset.css | 61 - .../jquery-validate/demo/css/screen.css | 11 - .../demo/custom-messages-metadata-demo.html | 92 -- .../demo/custom-methods-demo.html | 122 -- .../jquery-validate/demo/dynamic-totals.html | 151 --- .../demo/errorcontainer-demo.html | 161 --- thirdparty/jquery-validate/demo/example.html | 53 - thirdparty/jquery-validate/demo/form.php | 10 - thirdparty/jquery-validate/demo/form.phps | 10 - thirdparty/jquery-validate/demo/images/bg.gif | Bin 1175 -> 0 bytes .../jquery-validate/demo/images/checked.gif | Bin 220 -> 0 bytes .../demo/images/cmxform-divider.gif | Bin 43 -> 0 bytes .../demo/images/cmxform-fieldset.gif | Bin 314 -> 0 bytes .../jquery-validate/demo/images/loading.gif | Bin 418 -> 0 bytes .../jquery-validate/demo/images/unchecked.gif | Bin 223 -> 0 bytes thirdparty/jquery-validate/demo/index.html | 230 ---- .../jquery-validate/demo/js/chili-1.7.pack.js | 1 - .../jquery-validate/demo/login/images/bg.gif | Bin 89 -> 0 bytes .../demo/login/images/header1.jpg | Bin 442 -> 0 bytes .../demo/login/images/page.gif | Bin 664 -> 0 bytes .../demo/login/images/required_star.gif | Bin 121 -> 0 bytes .../jquery-validate/demo/login/index.html | 76 -- .../jquery-validate/demo/login/screen.css | 457 ------- .../jquery-validate/demo/marketo/emails.php | 10 - .../jquery-validate/demo/marketo/emails.phps | 10 - .../jquery-validate/demo/marketo/ie6.css | 35 - .../demo/marketo/images/backRequiredGray.gif | Bin 137 -> 0 bytes .../demo/marketo/images/back_green-fade.gif | Bin 2421 -> 0 bytes .../demo/marketo/images/back_nav_blue.gif | Bin 1668 -> 0 bytes .../demo/marketo/images/blank.gif | Bin 799 -> 0 bytes .../demo/marketo/images/button-submit.gif | Bin 4527 -> 0 bytes .../demo/marketo/images/favicon.ico | Bin 1150 -> 0 bytes .../demo/marketo/images/help.png | Bin 1615 -> 0 bytes .../marketo/images/left-nav-callout-long.png | Bin 1381 -> 0 bytes .../demo/marketo/images/login-sprite.gif | Bin 2017 -> 0 bytes .../demo/marketo/images/logo_marketo.gif | Bin 8363 -> 0 bytes .../demo/marketo/images/sf.png | Bin 3745 -> 0 bytes .../demo/marketo/images/step1-24.gif | Bin 1357 -> 0 bytes .../demo/marketo/images/step2-24.gif | Bin 1355 -> 0 bytes .../demo/marketo/images/step3-24.gif | Bin 1362 -> 0 bytes .../demo/marketo/images/tab-sprite.gif | Bin 4710 -> 0 bytes .../demo/marketo/images/tab_green.gif | Bin 1652 -> 0 bytes .../demo/marketo/images/time.png | Bin 793 -> 0 bytes .../demo/marketo/images/toggle.gif | Bin 845 -> 0 bytes .../demo/marketo/images/warning.gif | Bin 234 -> 0 bytes .../jquery-validate/demo/marketo/index.html | 247 ---- .../demo/marketo/jquery.maskedinput.js | 267 ---- .../jquery-validate/demo/marketo/mktSignup.js | 125 -- .../jquery-validate/demo/marketo/step2.htm | 291 ---- .../demo/marketo/stylesheet.css | 1179 ----------------- thirdparty/jquery-validate/demo/milk/bg.gif | Bin 73 -> 0 bytes .../jquery-validate/demo/milk/emails.php | 10 - .../jquery-validate/demo/milk/emails.phps | 10 - .../jquery-validate/demo/milk/index.html | 235 ---- .../jquery-validate/demo/milk/left_white.png | Bin 538 -> 0 bytes thirdparty/jquery-validate/demo/milk/milk.css | 236 ---- thirdparty/jquery-validate/demo/milk/milk.png | Bin 5121 -> 0 bytes .../jquery-validate/demo/milk/right_white.png | Bin 1579 -> 0 bytes .../jquery-validate/demo/milk/users.php | 12 - .../jquery-validate/demo/milk/users.phps | 10 - .../jquery-validate/demo/multipart/index.html | 412 ------ .../multipart/js/jquery.maskedinput-1.0.js | 246 ---- .../demo/multipart/js/ui.accordion.js | 477 ------- .../demo/multipart/js/ui.core.js | 519 -------- .../jquery-validate/demo/multipart/style.css | 705 ---------- .../demo/radio-checkbox-select-demo.html | 155 --- .../jquery-validate/demo/tabs/index.html | 157 --- .../jquery-validate/demo/themerollered.html | 227 ---- .../jquery-validate/demo/tinymce/index.html | 75 -- .../tinymce/themes/simple/editor_template.js | 1 - .../demo/tinymce/themes/simple/img/icons.gif | Bin 1440 -> 0 bytes .../demo/tinymce/themes/simple/langs/en.js | 11 - .../themes/simple/skins/default/ui.css | 32 - .../jquery-validate/demo/tinymce/tiny_mce.js | 1 - 91 files changed, 7664 deletions(-) delete mode 100644 thirdparty/jquery-validate/demo/ajaxSubmit-intergration-demo.html delete mode 100644 thirdparty/jquery-validate/demo/captcha/captcha.js delete mode 100644 thirdparty/jquery-validate/demo/captcha/fonts/Anorexia.ttf delete mode 100644 thirdparty/jquery-validate/demo/captcha/image_req.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/images/.htaccess delete mode 100644 thirdparty/jquery-validate/demo/captcha/images/button.png delete mode 100644 thirdparty/jquery-validate/demo/captcha/images/button.psd delete mode 100644 thirdparty/jquery-validate/demo/captcha/images/image.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/index.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/newsession.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/process.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/rand.php delete mode 100644 thirdparty/jquery-validate/demo/captcha/style.css delete mode 100644 thirdparty/jquery-validate/demo/css/chili.css delete mode 100644 thirdparty/jquery-validate/demo/css/cmxform.css delete mode 100644 thirdparty/jquery-validate/demo/css/cmxformTemplate.css delete mode 100644 thirdparty/jquery-validate/demo/css/core.css delete mode 100644 thirdparty/jquery-validate/demo/css/reset.css delete mode 100644 thirdparty/jquery-validate/demo/css/screen.css delete mode 100644 thirdparty/jquery-validate/demo/custom-messages-metadata-demo.html delete mode 100644 thirdparty/jquery-validate/demo/custom-methods-demo.html delete mode 100644 thirdparty/jquery-validate/demo/dynamic-totals.html delete mode 100644 thirdparty/jquery-validate/demo/errorcontainer-demo.html delete mode 100644 thirdparty/jquery-validate/demo/example.html delete mode 100644 thirdparty/jquery-validate/demo/form.php delete mode 100644 thirdparty/jquery-validate/demo/form.phps delete mode 100644 thirdparty/jquery-validate/demo/images/bg.gif delete mode 100644 thirdparty/jquery-validate/demo/images/checked.gif delete mode 100644 thirdparty/jquery-validate/demo/images/cmxform-divider.gif delete mode 100644 thirdparty/jquery-validate/demo/images/cmxform-fieldset.gif delete mode 100644 thirdparty/jquery-validate/demo/images/loading.gif delete mode 100644 thirdparty/jquery-validate/demo/images/unchecked.gif delete mode 100644 thirdparty/jquery-validate/demo/index.html delete mode 100644 thirdparty/jquery-validate/demo/js/chili-1.7.pack.js delete mode 100644 thirdparty/jquery-validate/demo/login/images/bg.gif delete mode 100644 thirdparty/jquery-validate/demo/login/images/header1.jpg delete mode 100644 thirdparty/jquery-validate/demo/login/images/page.gif delete mode 100644 thirdparty/jquery-validate/demo/login/images/required_star.gif delete mode 100644 thirdparty/jquery-validate/demo/login/index.html delete mode 100644 thirdparty/jquery-validate/demo/login/screen.css delete mode 100644 thirdparty/jquery-validate/demo/marketo/emails.php delete mode 100644 thirdparty/jquery-validate/demo/marketo/emails.phps delete mode 100644 thirdparty/jquery-validate/demo/marketo/ie6.css delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/backRequiredGray.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/back_green-fade.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/back_nav_blue.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/blank.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/button-submit.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/favicon.ico delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/help.png delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/left-nav-callout-long.png delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/login-sprite.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/logo_marketo.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/sf.png delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/step1-24.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/step2-24.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/step3-24.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/tab-sprite.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/tab_green.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/time.png delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/toggle.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/images/warning.gif delete mode 100644 thirdparty/jquery-validate/demo/marketo/index.html delete mode 100644 thirdparty/jquery-validate/demo/marketo/jquery.maskedinput.js delete mode 100644 thirdparty/jquery-validate/demo/marketo/mktSignup.js delete mode 100644 thirdparty/jquery-validate/demo/marketo/step2.htm delete mode 100644 thirdparty/jquery-validate/demo/marketo/stylesheet.css delete mode 100644 thirdparty/jquery-validate/demo/milk/bg.gif delete mode 100644 thirdparty/jquery-validate/demo/milk/emails.php delete mode 100644 thirdparty/jquery-validate/demo/milk/emails.phps delete mode 100644 thirdparty/jquery-validate/demo/milk/index.html delete mode 100644 thirdparty/jquery-validate/demo/milk/left_white.png delete mode 100644 thirdparty/jquery-validate/demo/milk/milk.css delete mode 100644 thirdparty/jquery-validate/demo/milk/milk.png delete mode 100644 thirdparty/jquery-validate/demo/milk/right_white.png delete mode 100644 thirdparty/jquery-validate/demo/milk/users.php delete mode 100644 thirdparty/jquery-validate/demo/milk/users.phps delete mode 100644 thirdparty/jquery-validate/demo/multipart/index.html delete mode 100644 thirdparty/jquery-validate/demo/multipart/js/jquery.maskedinput-1.0.js delete mode 100644 thirdparty/jquery-validate/demo/multipart/js/ui.accordion.js delete mode 100644 thirdparty/jquery-validate/demo/multipart/js/ui.core.js delete mode 100644 thirdparty/jquery-validate/demo/multipart/style.css delete mode 100644 thirdparty/jquery-validate/demo/radio-checkbox-select-demo.html delete mode 100644 thirdparty/jquery-validate/demo/tabs/index.html delete mode 100644 thirdparty/jquery-validate/demo/themerollered.html delete mode 100644 thirdparty/jquery-validate/demo/tinymce/index.html delete mode 100644 thirdparty/jquery-validate/demo/tinymce/themes/simple/editor_template.js delete mode 100644 thirdparty/jquery-validate/demo/tinymce/themes/simple/img/icons.gif delete mode 100644 thirdparty/jquery-validate/demo/tinymce/themes/simple/langs/en.js delete mode 100644 thirdparty/jquery-validate/demo/tinymce/themes/simple/skins/default/ui.css delete mode 100644 thirdparty/jquery-validate/demo/tinymce/tiny_mce.js diff --git a/thirdparty/jquery-validate/demo/ajaxSubmit-intergration-demo.html b/thirdparty/jquery-validate/demo/ajaxSubmit-intergration-demo.html deleted file mode 100644 index 5d531bb47..000000000 --- a/thirdparty/jquery-validate/demo/ajaxSubmit-intergration-demo.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -Test for jQuery validate() plugin - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -
    -
    - Login Form (Enter "foobar" as password) -

    - - -

    -

    - - -

    -

    - -

    -
    -
    - -
    Please login!
    - -
    - - - -

    Backend file: form.phps

    - -Back to main page - -
    - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/captcha/captcha.js b/thirdparty/jquery-validate/demo/captcha/captcha.js deleted file mode 100644 index 245bc45ab..000000000 --- a/thirdparty/jquery-validate/demo/captcha/captcha.js +++ /dev/null @@ -1,27 +0,0 @@ -$(function(){ - $("#refreshimg").click(function(){ - $.post('newsession.php'); - $("#captchaimage").load('image_req.php'); - return false; - }); - - $("#captchaform").validate({ - rules: { - captcha: { - required: true, - remote: "process.php" - } - }, - messages: { - captcha: "Correct captcha is required. Click the captcha to generate a new one" - }, - submitHandler: function() { - alert("Correct captcha!"); - }, - success: function(label) { - label.addClass("valid").text("Valid captcha!") - }, - onkeyup: false - }); - -}); diff --git a/thirdparty/jquery-validate/demo/captcha/fonts/Anorexia.ttf b/thirdparty/jquery-validate/demo/captcha/fonts/Anorexia.ttf deleted file mode 100644 index 453eeb00e82b699a6054ce2b9954705595c2c170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14300 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 z`Captcha image'; - -?> diff --git a/thirdparty/jquery-validate/demo/captcha/images/.htaccess b/thirdparty/jquery-validate/demo/captcha/images/.htaccess deleted file mode 100644 index f480ff4e4..000000000 --- a/thirdparty/jquery-validate/demo/captcha/images/.htaccess +++ /dev/null @@ -1 +0,0 @@ -AddType application/x-httpd-php .jpg \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/captcha/images/button.png b/thirdparty/jquery-validate/demo/captcha/images/button.png deleted file mode 100644 index 7ef79de5a1f422c79b3992ebd53f99d885368df7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1546 zcmWkueKga182|2#VX`KTk-IHFFC`jAN*QU|3^VW6i$-4NrSjU5dz&`el=X8d@xUqgS$`_7AKN|DLgZY%AJGQZt z)ZQb?0erGM18BIOwBfDX^h)c6O1xBamNXkKd=*q+Yw(QHR#$QK`-~b>R6MnxfV}%0 zAf*_7C7nP(?WQ8GZd#ZPE#Ebq>kX|0`k=_7IHSlgn-voTpI`bi8cn%}LgUT)NR=0_ zEvWP{{k1((7P%|i)$(nj2nbYOGwuCw7u4ygtvi+k*fv z9@0=Y*S_V8%-pUR!nOBiYg6!oT$-kWm*7wg*G8Mi68LOx6ZQw(2gi0&mfr3YS^r04 ziaX{{9PFle6Z^g7Q-_;_!;{E&Z#^1ALq`JHfy%Ro4X}OJ;sSqZlnc^I`J zR-j68LEss#S|-+|mUnAIf3(-SZY@KN?oYL+Eo0aOOy_5S&<19%ICxjdWX_q@TTo+% z$PZj|Jd8CEaH(XL+qD3=W3|-CYd0nadRyD1KHGktwro}8EMR3(`S=2 zh&2S(S*OuOl8&+|$n172_G;hc5aps$S~o$4k`mve=&k04K5o;bPXgHllxp0wC~UL# z26HnpmL+L7-^;m15ZdCr0iF@}kn)e!G5rE^R;ZXgm&oJKG>QCRdvd#?k%^X*KCiJ& z67sTSHZhJj5TUF^MjE5MVT9Co5rri)hXo;m;6AnQl(gM=@6hUYdYh|Y87l0yq!SPt z$jkSH`028tZ+4QT{()x)bYM>ZdG11Wq8TUiI?yDcyB_=L*F_d*!?`x{sP$D^#v7bd zH>zrC^sUyxwCJXU>KK9l&lBcbNu1Ws$K_0sv>&NzEBQr^d-Y}K<25_G!f=m%3Jh0X z8|pN$em6kN^w#vDc}&nU=BA37X|OwGENHBleDjN91Owx?-{u>+S?!Q2FCAf0Itb^- zE5#YQC5D@$W5J+>o38=1{GjtyQS7$?jybPM>bhOB_M%1I9qmNT?|*w6+}#QN6P=I~ zIbD~n97Ea(jCBhUKmJvJGU#d(g?=6$kU5Np-t|jM{3l+O*^Q+~aM6w8*tyeXR(|a^Wl>`jbrgJ%H8F226IoypiUDBZA2#}W) zRx{$+Url%+XG;n^RTMM~mJO$8L+nkF;!DkVHWXz%S_H}u!3apFp0hY@ml|5d_2$7v z=WV%duRZ0vNr5Mf@C=8nkJk&P%d!U7ZF?4~jDB|JWyPU{rSKAj2n<{%r)gvoMT4KU z#dh1wXe2%ONaa%mmh33pczUj*$Idk0HHUagecM8cfTvEfb&NZ*&mrZ>SMKgng6|1j ztyr(t#g)}z@C=-O&t99E_{Z9Ye>tH(!*5-eN^;!k%Myc+)0KAr)ze8?g3;1$6`_p7|dEr)G)( diff --git a/thirdparty/jquery-validate/demo/captcha/images/button.psd b/thirdparty/jquery-validate/demo/captcha/images/button.psd deleted file mode 100644 index a3bee848442d045002e0d0fcbbfcba071cbcf322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23968 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 diff --git a/thirdparty/jquery-validate/demo/captcha/index.php b/thirdparty/jquery-validate/demo/captcha/index.php deleted file mode 100644 index d9174af6e..000000000 --- a/thirdparty/jquery-validate/demo/captcha/index.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - AJAX CAPTCHA - - - - - - - - - - - - - - -

    AJAX CAPTCHA, based on http://psyrens.com/captcha/

    - -
    -
    -
    Captcha image
    - - - -
    -
    - -

    If you can't decipher the text on the image, click it to dynamically generate a new one.

    - - - - diff --git a/thirdparty/jquery-validate/demo/captcha/newsession.php b/thirdparty/jquery-validate/demo/captcha/newsession.php deleted file mode 100644 index 145ca9bfb..000000000 --- a/thirdparty/jquery-validate/demo/captcha/newsession.php +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/thirdparty/jquery-validate/demo/captcha/process.php b/thirdparty/jquery-validate/demo/captcha/process.php deleted file mode 100644 index e3a7e7d6f..000000000 --- a/thirdparty/jquery-validate/demo/captcha/process.php +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/thirdparty/jquery-validate/demo/captcha/rand.php b/thirdparty/jquery-validate/demo/captcha/rand.php deleted file mode 100644 index e3e9389ed..000000000 --- a/thirdparty/jquery-validate/demo/captcha/rand.php +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/thirdparty/jquery-validate/demo/captcha/style.css b/thirdparty/jquery-validate/demo/captcha/style.css deleted file mode 100644 index c0bbe5f90..000000000 --- a/thirdparty/jquery-validate/demo/captcha/style.css +++ /dev/null @@ -1,140 +0,0 @@ -body { - margin: 3% 5%; - padding: 0; - background-color: #fff; - color: #333; - font: 0.9em/1.3 Helvetica, Arial, Verdana, Sans-serif; -} - -a:link, a:visited { - background-color: #fff; - color: #333; - text-decoration: underline; -} - -a:hover, a:focus, a:active { - background-color: #ffb; - color: #454545; - text-decoration: underline; -} - -h1 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.5em Helvetica, Arial, Verdana, Sans-serif; -} - -h2 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.3em Helvetica, Arial, Verdana, Sans-serif; -} - -h3 { - margin: 2% 0%; - padding: 1%; - border-bottom: 1px solid #ddd; - background-color: #f8f8f8; - color: #666; - font: normal 1.2em Helvetica, Arial, Verdana, Sans-serif; -} - -table { - margin: 0; - padding: 0; - width: 100%; -} - -table th { - border: 1px solid #ddd; - font-weight: bold; - text-align: left; - padding: 1%; -} - -table td { - border: 1px solid #ddd; - padding: 1%; -} - -dl, dt, dd { - margin: 0; - padding: 0; -} - -form { - margin: 0; - padding: 0; -} - -fieldset { - border: 1px solid #ddd; - margin: 0% 0% 2% 0%; - padding: 2%; -} - -fieldset legend { - margin: 0; - padding: 0 4px; - background-color: inherit; - color: #333; -} - -code { - font: 1em "Courier New", Courier, Monospace; -} - -pre code { - font: 1.1em "Courier New", Courier, Monospace; - border-bottom: 1px solid #eee; -} - -img { - border: 1px solid #eee; -} - -p#statusgreen { - font-size: 1.2em; - background-color: #fff; - color: #0a0; -} - -p#statusred { - font-size: 1.2em; - background-color: #fff; - color: #a00; -} - -fieldset label { - display: block; -} - -fieldset label.error { - color: red; -} - -fieldset label.valid { - color: green; -} - -fieldset div#captchaimage { - float: left; - margin-right: 15px; -} - -fieldset input#captcha { - width: 25%; - border: 1px solid #ddd; - padding: 2px; -} - -fieldset input#submit { - display: block; - margin: 2% 0% 0% 0%; -} \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/css/chili.css b/thirdparty/jquery-validate/demo/css/chili.css deleted file mode 100644 index 6990449fc..000000000 --- a/thirdparty/jquery-validate/demo/css/chili.css +++ /dev/null @@ -1,15 +0,0 @@ -.jscom, .mix htcom { color: #4040c2; } -.com { color: green; } -.regexp { color: maroon; } -.string { color: teal; } -.keywords { color: blue; } -.global { color: #008; } -.numbers { color: #880; } -.comm { color: green; } -.tag { color: blue; } -.entity { color: blue; } -.string { color: teal; } -.aname { color: maroon; } -.avalue { color: maroon; } -.jquery { color: #00a; } -.plugin { color: red; } \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/css/cmxform.css b/thirdparty/jquery-validate/demo/css/cmxform.css deleted file mode 100644 index 120f5a473..000000000 --- a/thirdparty/jquery-validate/demo/css/cmxform.css +++ /dev/null @@ -1,46 +0,0 @@ -/********************************** - -Name: cmxform Styles - -***********************************/ -form.cmxform { - width: 370px; - font-size: 1.0em; - color: #333; -} - -form.cmxform legend { - padding-left: 0; -} - -form.cmxform legend, form.cmxform label { - color: #333; -} - -form.cmxform fieldset { - border: none; - border-top: 1px solid #C9DCA6; - background: url(../images/cmxform-fieldset.gif) left bottom repeat-x; - background-color: #F8FDEF; -} - -form.cmxform fieldset fieldset { - background: none; -} - -form.cmxform fieldset p, form.cmxform fieldset fieldset { - padding: 5px 10px 7px; - background: url(../images/cmxform-divider.gif) left bottom repeat-x; -} - -form.cmxform label.error, label.error { - /* remove the next line when you have trouble in IE6 with labels in list */ - color: red; - font-style: italic -} -div.error { display: none; } -input { border: 1px solid black; } -input.checkbox { border: none } -input:focus { border: 1px dotted black; } -input.error { border: 1px dotted red; } -form.cmxform .gray * { color: gray; } \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/css/cmxformTemplate.css b/thirdparty/jquery-validate/demo/css/cmxformTemplate.css deleted file mode 100644 index ac52f71b4..000000000 --- a/thirdparty/jquery-validate/demo/css/cmxformTemplate.css +++ /dev/null @@ -1,55 +0,0 @@ -/********************************** - -Use: cmxform template - -***********************************/ -form.cmxform fieldset { - margin-bottom: 10px; -} - -form.cmxform legend { - padding: 0 2px; - font-weight: bold; - _margin: 0 -7px; /* IE Win */ -} - -form.cmxform label { - display: inline-block; - line-height: 1.8; - vertical-align: top; - cursor: hand; -} - -form.cmxform fieldset p { - list-style: none; - padding: 5px; - margin: 0; -} - -form.cmxform fieldset fieldset { - border: none; - margin: 3px 0 0; -} - -form.cmxform fieldset fieldset legend { - padding: 0 0 5px; - font-weight: normal; -} - -form.cmxform fieldset fieldset label { - display: block; - width: auto; -} - -form.cmxform label { width: 100px; } /* Width of labels */ -form.cmxform fieldset fieldset label { margin-left: 103px; } /* Width plus 3 (html space) */ -form.cmxform label.error { - margin-left: 103px; - width: 220px; -} - -form.cmxform input.submit { - margin-left: 103px; -} - -/*\*//*/ form.cmxform legend { display: inline-block; } /* IE Mac legend fix */ \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/css/core.css b/thirdparty/jquery-validate/demo/css/core.css deleted file mode 100644 index 84494e873..000000000 --- a/thirdparty/jquery-validate/demo/css/core.css +++ /dev/null @@ -1,21 +0,0 @@ -body, div { font-family: 'lucida grande', helvetica, verdana, arial, sans-serif } -body { margin: 0; padding: 0; font-size: small; color: #333 } -h1, h2 { font-family: 'trebuchet ms', verdana, arial; padding: 10px; margin: 0 } -h1 { font-size: large } -#main { padding: 1em; } -#banner { padding: 15px; background-color: #06b; color: white; font-size: large; border-bottom: 1px solid #ccc; - background: url(../images/bg.gif) repeat-x; text-align: center } -#banner a { color: white; } - -p { margin: 10px 0; } - -li { margin-left: 10px; } - -h3 { margin: 1em 0 0; } - -h1 { font-size: 2em; } -h2 { font-size: 1.8em; } -h3 { font-size: 1.6em; } -h4 { font-size: 1.4em; } -h5 { font-size: 1.2em; } - diff --git a/thirdparty/jquery-validate/demo/css/reset.css b/thirdparty/jquery-validate/demo/css/reset.css deleted file mode 100644 index 5c376b374..000000000 --- a/thirdparty/jquery-validate/demo/css/reset.css +++ /dev/null @@ -1,61 +0,0 @@ -/********************************** - -Use: Reset Styles for all browsers - -***********************************/ - -body, p, blockquote { - margin: 0; - padding: 0; -} - -a img, iframe { border: none; } - -/* Headers -------------------------------*/ - -h1, h2, h3, h4, h5, h6 { - margin: 0; - padding: 0; - font-size: 100%; -} - -/* Lists -------------------------------*/ - -ul, ol, dl, li, dt, dd { - margin: 0; - padding: 0; -} - -/* Links -------------------------------*/ - -a, a:link {} -a:visited {} -a:hover {} -a:active {} - -/* Forms -------------------------------*/ - -form, fieldset { - margin: 0; - padding: 0; -} - -fieldset { border: 1px solid #000; } - -legend { - padding: 0; - color: #000; -} - -input, textarea, select { - margin: 0; - padding: 1px; - font-size: 100%; - font-family: inherit; -} - -select { padding: 0; } \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/css/screen.css b/thirdparty/jquery-validate/demo/css/screen.css deleted file mode 100644 index 840f572bb..000000000 --- a/thirdparty/jquery-validate/demo/css/screen.css +++ /dev/null @@ -1,11 +0,0 @@ -/********************************** - -Use: Main Screen Import - -***********************************/ - -@import "reset.css"; -@import "core.css"; - -@import "cmxformTemplate.css"; -@import "cmxform.css"; \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/custom-messages-metadata-demo.html b/thirdparty/jquery-validate/demo/custom-messages-metadata-demo.html deleted file mode 100644 index 46e3d6ec0..000000000 --- a/thirdparty/jquery-validate/demo/custom-messages-metadata-demo.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -jQuery validation plug-in - comment form example - - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -

    Take a look at the source to see how messages can be customized with metadata.

    - - -
    -
    - Please enter your email address -

    - - - -

    -

    - -

    -
    -
    - -
    -
    - Please enter your email address -

    - - - -

    -

    - -

    -
    -
    - -
    -
    - Please enter your email address -

    - - - -

    -

    - -

    -
    -
    - -Back to main page - - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/custom-methods-demo.html b/thirdparty/jquery-validate/demo/custom-methods-demo.html deleted file mode 100644 index 89b8fa6a1..000000000 --- a/thirdparty/jquery-validate/demo/custom-methods-demo.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -
    -

    - -
    - Example with custom methods and heavily customized error display - - - - - - - - - - - - - - - - -
    -
    - -
    -
    - -

    Your form contains tons of errors! Please try again.

    - -

    Back to main page

    - -
    - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/dynamic-totals.html b/thirdparty/jquery-validate/demo/dynamic-totals.html deleted file mode 100644 index 5ea458267..000000000 --- a/thirdparty/jquery-validate/demo/dynamic-totals.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - -jQuery validation plug-in - dynamic forms demo - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - - - -
    -

    - -
    - Example with custom methods and heavily customized error display - - - - - - - - - - - - - - - -
     
    -
    -
    - - - -

    Your form contains tons of errors! Please try again.

    - -

    Back to main page

    - -
    - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/errorcontainer-demo.html b/thirdparty/jquery-validate/demo/errorcontainer-demo.html deleted file mode 100644 index 2c062ea5c..000000000 --- a/thirdparty/jquery-validate/demo/errorcontainer-demo.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -
    -
    - Login Form -

    - - -

    -

    - - -

    -
    -
    -

    - -

    -
    -
    - - -
    -

    There are serious errors in your form submission, please see below for details.

    -
      -
    1. -
    2. -
    3. -
    4. -
    5. -
    -
    - -
    -
    - Validating a complete form -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -
    -
    - -
    -

    There are serious errors in your form submission, please see details above the form!

    -
    - -Back to main page - -
    - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/example.html b/thirdparty/jquery-validate/demo/example.html deleted file mode 100644 index 5b83f6d00..000000000 --- a/thirdparty/jquery-validate/demo/example.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - -jQuery validation plug-in - comment form example - - - - - - - - - - - - - -
    -
    - Please provide your name, email address (won't be published) and a comment -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - -

    -
    -
    - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/form.php b/thirdparty/jquery-validate/demo/form.php deleted file mode 100644 index 6539fd74b..000000000 --- a/thirdparty/jquery-validate/demo/form.php +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/thirdparty/jquery-validate/demo/form.phps b/thirdparty/jquery-validate/demo/form.phps deleted file mode 100644 index b25c6ef48..000000000 --- a/thirdparty/jquery-validate/demo/form.phps +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/images/bg.gif b/thirdparty/jquery-validate/demo/images/bg.gif deleted file mode 100644 index 846add07140d6ff8679e2d3715f6ee25a8045113..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1175 zcmZ?wbhEHbTzEjN_<%&o zL8;P%GG&M4Dh?}D9#*bCqFQrAz4oYP-BIoOW4evU^_z|xwVW_%Jz>^%(xUyORmUmY zuG9A2ryYCGIQN}#?LX^2;jHJxb3T*L`%O6?FzrIn^a~*~E{4s#7&-e=^qkAFb1%ow zzmmA%O7g<1sf(^=EV-7o^m@*+>v=0~6s){ay!vM8np@>-Z&j|lUA_Kx?Z!Lxo9?u3 zz1O|-!KA$pXB>Py|LD`DC!eoA^J3G5S39n}*?;5h(L3)?-~V{&$>$r-zubTQ?dkg; zZ$AJ0^!@kG-+%xA{}1%>C>RX^cnB!|WC61OGw6UsKzV|J<39rudPj2S4Ze(+&%TR>H7Kv!wy+* zv*w$dGfY>+o-S*?y}iKl#9Z&~&3AWK*uJ=X`g`;J{SA&Bay}L<4-a>^YQ&wXXnA~m zf~UtkpPemFPtWkpxOe7f%k%RK0z2e+2gLPt5b(-TL@HT@io2uKoA-50xk8`|of6`};@ji~HyQw*xZ~lj4I07PiC(jT~GHA2jjsJ$%qC zAf))PMMNy|VXK7H!iQ}#at|N2D<~;G>QGTjeAKC-weV4wj^4vZ-3CUAk9$na5+C;^p%XKP!|RpMUsy{rdawzy21;I=uSyD}%bz|NsBD zZ$E$k_4odrkN01HpD^co!-o6o&%So*Irsd-PoON&0Q^AlCkv|xg9w8TNEygZ2G&Rg zRVh~{2G7I}ox(W=1q!(`>c?Cp*Y`>_H8MV8=HO*!I8sujlfvZs;0TL|$ceT^fh-mx sf~a4}c|00Nc?P5=M^ diff --git a/thirdparty/jquery-validate/demo/images/cmxform-fieldset.gif b/thirdparty/jquery-validate/demo/images/cmxform-fieldset.gif deleted file mode 100644 index 9c48ea4bac40207261009276fbbcc20c44c5b88a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmV-A0mc4DNk%w1VF~~&0g(Uz_5A4Q`N;12*5miSA^8LV00000EC2ui015ys0RRI3 zgpaAq?GK}zwAzca-n{z{hT=$;=82~2dJ30oz<`{{FumMyuF$Ta!_9U-+m3krB@fDB z^NDmWl~idJN-bKqSFP6y^onOiAo*-gm&a;!I81&!)$e*c9k=V_e7*k<7$`VMSZH{N zn5ekO*y#8O87VnQ2^3%%b{VL7$%(1w>6!W2IXYSzT8AnS(7Ia68jBkGDl6-HJImVX z%Da2}+w0q!ODxQbi>!QnyvzIy9W6agU2T1hovppi-R=Di9xgsk&OIP~e(tKi9-yAS z4lnQCIv}4uZ*O0}kMFPVPTxI%0t*^Eh%lkTg$x@yddgX*xQ8EmhvrKB>H-Set8{R%<3wq ze${^A6HX%6FQ{x$Ej@nsQXrC9%nZy7d_c&+Br&C5XyV@c=aK_2b#1=4$DJWVVMcFa zWfCj0#T-D3S%8WKr!XvAE!ZZId~U8qc&+*6aO_5kD6GtG-*cz=)rD@Lk=0TxQ4(oO zGP;nAma%G6as&f|H2?s|bkG0* diff --git a/thirdparty/jquery-validate/demo/images/unchecked.gif b/thirdparty/jquery-validate/demo/images/unchecked.gif deleted file mode 100644 index 06ecaba118eef7e0e6116ee5ff14e16091629dd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmZ?wbhEHby};nU=VFDvSS3K)n6ia%LcMHmDbbU->lb~3QWB&eueU|?XL(ved* z$Dlw&cg+#?xqBFrbQ%~AD|)jeurV*1ki)>dEXL@im8(Cyqp-NN$};mAFF*W{k~+!4 lSb9c{nO**|XvZGDM)vOtS_R1_wKj&vIywPir8 - - - -jQuery validation plug-in - main demo - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -

    Default submitHandler is set to display an alert into of submitting the form

    - -
    -
    - Please provide your name, email address (won't be published) and a comment -

    - - -

    - - -

    -

    - - -

    -

    - - -

    -

    - -

    -
    -
    - -
    -
    - Validating a complete form -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -
    - Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo - - - - -
    -

    - -

    -
    -
    - -

    Syntetic examples

    - -

    Real-world examples

    - - -

    Testsuite

    - - -
    - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/js/chili-1.7.pack.js b/thirdparty/jquery-validate/demo/js/chili-1.7.pack.js deleted file mode 100644 index 90e7735cb..000000000 --- a/thirdparty/jquery-validate/demo/js/chili-1.7.pack.js +++ /dev/null @@ -1 +0,0 @@ -eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('8={3b:"1.6",2o:"1B.1Y,1B.23,1B.2e",2i:"",2H:1a,12:"",2C:1a,Z:"",2a:\'$$\',R:"&#F;",1j:"&#F;&#F;&#F;&#F;",1f:"&#F;<1W/>",3c:5(){9 $(y).39("1k")[0]},I:{},N:{}};(5($){$(5(){5 1J(l,a){5 2I(A,h){4 3=(1v h.3=="1h")?h.3:h.3.1w;k.1m({A:A,3:"("+3+")",u:1+(3.c(/\\\\./g,"%").c(/\\[.*?\\]/g,"%").3a(/\\((?!\\?)/g)||[]).u,z:(h.z)?h.z:8.2a})}5 2z(){4 1E=0;4 1x=x 2A;Q(4 i=0;i\';8.N[X]=1H;7($.31.34){4 W=J.1L(Y);4 $W=$(W);$("2d").1O($W)}v{$("2d").1O(Y)}}}5 1q(e,a){4 l=e&&e.1g&&e.1g[0]&&e.1g[0].37;7(!l)l="";l=l.c(/\\r\\n?/g,"\\n");4 C=1J(l,a);7(8.1j){C=C.c(/\\t/g,8.1j)}7(8.1f){C=C.c(/\\n/g,8.1f)}$(e).38(C)}5 1o(q,13){4 1l={12:8.12,2x:q+".1d",Z:8.Z,2w:q+".2u"};4 B;7(13&&1v 13=="2l")B=$.35(1l,13);v B=1l;9{a:B.12+B.2x,1p:B.Z+B.2w}}7($.2q)$.2q({36:"2l.15"});4 2n=x 1u("\\\\b"+8.2i+"\\\\b","2j");4 1e=[];$(8.2o).2D(5(){4 e=y;4 1n=$(e).3i("V");7(!1n){9}4 q=$.3u(1n.c(2n,""));7(\'\'!=q){1e.1m(e);4 f=1o(q,e.15);7(8.2H||e.15){7(!8.N[f.a]){1D{8.N[f.a]=1H;$.3v(f.a,5(M){M.f=f.a;8.I[f.a]=M;7(8.2C){2B(f.1p)}$("."+q).2D(5(){4 f=1o(q,y.15);7(M.f==f.a){1q(y,M)}})})}1I(3s){3t("a 3w Q: "+q+\'@\'+3z)}}}v{4 a=8.I[f.a];7(a){1q(e,a)}}}});7(J.1i&&J.1i.29){5 22(p){7(\'\'==p){9""}1z{4 16=(x 3A()).2k()}19(p.3x(16)>-1);p=p.c(/\\<1W[^>]*?\\>/3y,16);4 e=J.1L(\'<1k>\');e.3l=p;p=e.3m.c(x 1u(16,"g"),\'\\r\\n\');9 p}4 T="";4 18=1G;$(1e).3j().G("1k").U("2c",5(){18=y}).U("1M",5(){7(18==y)T=J.1i.29().3k});$("3n").U("3q",5(){7(\'\'!=T){2p.3r.3o(\'3p\',22(T));2V.2R=1a}}).U("2c",5(){T=""}).U("1M",5(){18=1G})}})})(1Z);8.I["1Y.1d"]={k:{2M:{3:/\\/\\*[^*]*\\*+(?:[^\\/][^*]*\\*+)*\\//},25:{3:/\\ - -
    - - - - -
    - - -
    - - - -
    - - - - -
    - - - - -

    Step 1 of 2

    -

    -

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -

    Login Information

    -
    - -
    - -
    - -
    -
    -
    - - -
    - -


    -
    -
    - - -
    - - - -
    -
    -
    - - - - -
    - - - - - - -
    - - - - diff --git a/thirdparty/jquery-validate/demo/marketo/jquery.maskedinput.js b/thirdparty/jquery-validate/demo/marketo/jquery.maskedinput.js deleted file mode 100644 index 0cd5cfcd5..000000000 --- a/thirdparty/jquery-validate/demo/marketo/jquery.maskedinput.js +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright (c) 2007 Josh Bush (digitalbush.com) - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Version: 1.1 - * Release: 2007-09-08 - */ -(function($) { - //Helper Functions for Caret positioning - function getCaretPosition(ctl){ - var res = {begin: 0, end: 0 }; - if (ctl.setSelectionRange){ - res.begin = ctl.selectionStart; - res.end = ctl.selectionEnd; - }else if (document.selection && document.selection.createRange){ - var range = document.selection.createRange(); - res.begin = 0 - range.duplicate().moveStart('character', -100000); - res.end = res.begin + range.text.length; - } - return res; - }; - - function setCaretPosition(ctl, pos){ - if(ctl.setSelectionRange){ - ctl.focus(); - ctl.setSelectionRange(pos,pos); - }else if (ctl.createTextRange){ - var range = ctl.createTextRange(); - range.collapse(true); - range.moveEnd('character', pos); - range.moveStart('character', pos); - range.select(); - } - }; - - //Predefined character definitions - var charMap={ - '9':"[0-9]", - 'a':"[A-Za-z]", - '*':"[A-Za-z0-9]" - }; - - //Helper method to inject character definitions - $.mask={ - addPlaceholder : function(c,r){ - charMap[c]=r; - } - }; - - $.fn.unmask=function(){ - return this.trigger("unmask"); - }; - - //Main Method - $.fn.mask = function(mask,settings) { - settings = $.extend({ - placeholder: "_", - completed: null - }, settings); - - //Build Regex for format validation - var reString="^"; - for(var i=0;i 16 && k < 32 ) || (k > 32 && k < 41)); - - //delete selection before proceeding - if((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){ - clearBuffer(pos.begin,pos.end); - } - //backspace and delete get special treatment - if(k==8){//backspace - while(pos.begin-->=0){ - if(!locked[pos.begin]){ - buffer[pos.begin]=settings.placeholder; - if($.browser.opera){ - //Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character. - writeBuffer(pos.begin); - setCaretPosition(this,pos.begin+1); - }else{ - writeBuffer(); - setCaretPosition(this,pos.begin); - } - return false; - } - } - }else if(k==46){//delete - clearBuffer(pos.begin,pos.begin+1); - writeBuffer(); - setCaretPosition(this,pos.begin); - return false; - }else if (k==27){ - clearBuffer(0,mask.length); - writeBuffer(); - setCaretPosition(this,0); - return false; - } - - }; - input.bind("keydown",keydownEvent); - - function keypressEvent(e){ - if(ignore){ - ignore=false; - return; - } - e=e||window.event; - var k=e.charCode||e.keyCode||e.which; - - var pos=getCaretPosition(this); - var caretPos=pos.begin; - - if(e.ctrlKey || e.altKey){//Ignore - return true; - }else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters - while(pos.begin=buffer.length) - settings.completed.call(input); - else - setCaretPosition(this,caretPos); - - return false; - }; - input.bind("keypress",keypressEvent); - - /*Helper Methods*/ - function clearBuffer(start,end){ - for(var i=start;i= 6 && /\d/.test(value) && /[a-z]/i.test(value); - if (!result) { - element.value = ""; - var validator = this; - setTimeout(function() { - validator.blockFocusCleanup = true; - element.focus(); - validator.blockFocusCleanup = false; - }, 1); - } - return result; - }, "Your password must be at least 6 characters long and contain at least one number and one character."); - - // a custom method making the default value for companyurl ("http://") invalid, without displaying the "invalid url" message - jQuery.validator.addMethod("defaultInvalid", function(value, element) { - return value != element.defaultValue; - }, ""); - - jQuery.validator.addMethod("billingRequired", function(value, element) { - if ($("#bill_to_co").is(":checked")) - return $(element).parents(".subTable").length; - return !this.optional(element); - }, ""); - - jQuery.validator.messages.required = ""; - $("form").validate({ - invalidHandler: function(e, validator) { - var errors = validator.numberOfInvalids(); - if (errors) { - var message = errors == 1 - ? 'You missed 1 field. It has been highlighted below' - : 'You missed ' + errors + ' fields. They have been highlighted below'; - $("div.error span").html(message); - $("div.error").show(); - } else { - $("div.error").hide(); - } - }, - onkeyup: false, - submitHandler: function() { - $("div.error").hide(); - alert("submit! use link below to go to the other step"); - }, - messages: { - password2: { - required: " ", - equalTo: "Please enter the same password as above" - }, - email: { - required: " ", - email: "Please enter a valid email address, example: you@yourdomain.com", - remote: jQuery.validator.format("{0} is already taken, please enter a different address.") - } - }, - debug:true - }); - - $(".resize").vjustify(); - $("div.buttonSubmit").hoverClass("buttonSubmitHover"); - - if ($.browser.safari) { - $("body").addClass("safari"); - } - - $("input.phone").mask("(999) 999-9999"); - $("input.zipcode").mask("99999"); - var creditcard = $("#creditcard").mask("9999 9999 9999 9999"); - - $("#cc_type").change( - function() { - switch ($(this).val()){ - case 'amex': - creditcard.unmask().mask("9999 999999 99999"); - break; - default: - creditcard.unmask().mask("9999 9999 9999 9999"); - break; - } - } - ); - - // toggle optional billing address - var subTableDiv = $("div.subTableDiv"); - var toggleCheck = $("input.toggleCheck"); - toggleCheck.is(":checked") - ? subTableDiv.hide() - : subTableDiv.show(); - $("input.toggleCheck").click(function() { - if (this.checked == true) { - subTableDiv.slideUp("medium"); - $("form").valid(); - } else { - subTableDiv.slideDown("medium"); - } - }); - - -}); - -$.fn.vjustify = function() { - var maxHeight=0; - $(".resize").css("height","auto"); - this.each(function(){ - if (this.offsetHeight > maxHeight) { - maxHeight = this.offsetHeight; - } - }); - this.each(function(){ - $(this).height(maxHeight); - if (this.offsetHeight > maxHeight) { - $(this).height((maxHeight-(this.offsetHeight-maxHeight))); - } - }); -}; - -$.fn.hoverClass = function(classname) { - return this.hover(function() { - $(this).addClass(classname); - }, function() { - $(this).removeClass(classname); - }); -}; \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/marketo/step2.htm b/thirdparty/jquery-validate/demo/marketo/step2.htm deleted file mode 100644 index 933d68265..000000000 --- a/thirdparty/jquery-validate/demo/marketo/step2.htm +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - - - - -Subscription Signup | Marketo - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - - -
    - - - -
    - - - - -
    - - - - -

    Step 2 of 2

    -

    Billing Information

    -

    -

    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Billing Address: -
    - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    -
    Credit Card Type: - -
    Expiration: - - -
    - -
    - -
    -
    - - -

    - -
    -
    -
    - -
    - - - -
    -
    -
    - - - - -
    - - - - - - -
    - - - - - - - diff --git a/thirdparty/jquery-validate/demo/marketo/stylesheet.css b/thirdparty/jquery-validate/demo/marketo/stylesheet.css deleted file mode 100644 index 7040c4fb0..000000000 --- a/thirdparty/jquery-validate/demo/marketo/stylesheet.css +++ /dev/null @@ -1,1179 +0,0 @@ -:-moz-any-link :focus { - outline: none; -} - -:focus { - -moz-outline-style: none; - outline: none; -} - -body { - font-size: 80%; - margin: 0; - padding: 0; - font-family: tahoma, geneva, sans-serif; - background-color: #000000; -} - -a { - color: #0653AB; - outline: 0px; - text-decoration: none; -} - -a:hover { - outline: 0px; - text-decoration: underline; -} - -img { - border: 0px; -} - -/* s1.0 - Page Containers */ -#letterbox { - margin: 10px auto; - width: 883px; - background-color: #364158; - border: 8px solid #D4D4D4; - padding: 1px 1px 10px 1px; -} - -#header-background { - background: url(images/back_nav_blue.gif) repeat-x; - margin: 0px auto; - padding: 0px; - height: 73px; - width: 883px; - border-top: 4px solid #CCEAFE; - border-bottom: 4px solid #D4D4D4; -} - -#page-container { - width: 866px; - margin: 0px auto; - margin-top: 33px; /* pad from top menu to actions buts*/ - margin-bottom: -11px; - padding-top: 8px; - padding-bottom: 8px; - background-color: #D4D4D4; /* light grey*/ - border-right: 1px solid #464646; -} - -#page-content-inner { - width: 849px; - margin: 0px auto; - border-top: 1px solid #9F9FA0; - border-left: 1px solid #A2A09A; - background-color: #F4F1E9; - position: relative; -} - -#page-content-inner #col-left { - width: 210px; - float: left; - background-color: #F4F1E9; -} - -#page-content-inner #col-main { - width: 639px; - background-color: #ffffff; - position: absolute; - right: 0px; - top: 0px; -} - -#footer-container { - width: 866px; - position: relative; - left: 8px; - padding: 2px 0px 10px 0px; - background-color: #D4D4D4; /* light grey*/ -} - -/* s2.0 - Global navigation bar */ -.nav-global-container { - width: 880px; - margin: 0px auto; - position: relative; -} - -* html .nav-global-container { /* ie6 fix*/ - margin-bottom: -6px; -} - -.login { - position: absolute; - right: 20px; - text-align: center; -} - -.login a,.login a span { - display: block; - height: 18px; - font-size: 11px; - background: url(images/login-sprite.gif) right -5px no-repeat; - text-decoration: none; - font-weight: bold; - padding: 5px 10px 5px 10px; - position: relative; -} - -.login a:hover { - color: #000000; - text-decoration: underline; -} - -div.login a span { - background-position: left -105px; - width: 4px; - position: absolute; - top: 0px; - left: 0px; - padding: 5px 0px 5px 0px;; -} - -div.login a:hover span { - -} - -.logo { - float: left; - margin: 0px 0px -5px 0px; /* neg marging for ie6 */ -} - -.logo img { - border: 0px; - margin-left: -1px; -} - -.nav-global { - float: left; - width: 645px; - margin: 40px 0px 0px 40px; - background-color: transparent; -} - -.nav-global ul { - margin: 0px; - padding: 0px; - list-style: none; -} - -.nav-global li { - float: left; - white-space: nowrap; -} - -div.nav-global li a,div.nav-global li a span { - background-image: url(images/tab-sprite.gif); - background-position: right 100px; - background-repeat: no-repeat; - height: 32px; - color: #666666; - text-decoration: none; - font: bold 16px 'trebuchet ms'; - margin-right: 15px; - display: block; - position: relative; - padding: 7px 15px 0px 15px; -} - -div.nav-global li a:hover { - background-position: right 0px; - color: #333333; -} - -div.nav-global li a:hover span { - background-position: left -100px; - display: block !important; -} - -div.nav-global li a span { - background-position: left 150px; - width: 4px; - position: absolute; - left: 0px; - top: 0px; - padding: 7px 0px 0px 0px; -} - -body.safari div.nav-global li a span { - display: none; -} - -div.nav-global li a.on,div.nav-global li a.on:hover { - background-position: right -55px; - color: #FFFFFF; -} - -div.nav-global li a.on span,div.nav-global li a.on:hover span { - background-position: left -155px; - display: block !important; -} - -div.action-container { - position: relative; - top: -45px; - cursor: pointer; -} - -div.action-icon-container { - position: absolute; - top: -17px; - left: -17px; - z-index: 10; - width: 100px; - height: 100px; - overflow: hidden; -} - -div.action-icon { - border: 0px; - position: absolute; - top: -0px; - left: 0px; -} - -div.action-button-container { - height: 106px; - width: 180px; - overflow: hidden; - position: absolute; - top: 0px; - left: 0px; - z-index: 5; -} - -img.action-icon { - border: 0px; - position: absolute; - top: 0px; - left: 0px; - z-index: 0 -} - -div.action-text { - z-index: 20; - color: #FFFFFF; - position: absolute; - left: 40px; - top: 12px; - font: 14px tahoma, geneva; - padding-top: 30px; -} - -div.bigbuttons { - top: -20px; -} - -div.action-header { - z-index: 21; - position: absolute; - left: 40px; - top: 10px; -} - -div.action-header b { - font: bold 17px tahoma, geneva; - display: block; - margin-bottom: 10px; - color: #0b2c89; - position: absolute; - top: 0px; - left: 0px; - width: 130px; -} - -div.action-header b.shadow { - top: 1px; - left: 1px; - color: #d5d5d5; -} - -img.action-button { - position: relative; -} - -div.hover img.action-button { - top: -131px; -} - -div.on img.action-button { - top: -261px; -} - -/* s3.0 - top of content Action Buttons */ -.action-buttons { - width: 100%; /* ie6 requires */ -} - -.action-buttons ul { - position: relative; - padding: 0px; -} - -.action-buttons li { - position: relative; /* ie6 fix */ - float: left; - list-style: none; - text-align: center; - line-height: 16px; - margin: -61px 0px 0px 0px; -} - -.action-home li { - margin: -49px 0px 0px 0px; -} - -.action-buttons a { - display: block; - height: 110px; - width: 175px; - padding: 14px 0px 0px 25px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - color: #ffffff; -} - -.action-buttons li span { - color: #053880; - line-height: 47px; - font-size: 17px; -} - -div.action-bottom { - margin: 15px 0px 10px 0px; - float: left; -} - -div.action-bottom a { - height: 61px; - width: 178px; - border: 0px; - background: url(images/action-bottom.gif) no-repeat 0px 0px; - color: #0b2c89; - float: left; - position: relative; - font: bold 17px tahoma, geneva; - text-decoration: none; - margin-right: 10px; -} - -div.action-bottom a span { - position: absolute; - top: 15px; - left: 40px; -} - -div.action-bottom a span.shadow { - top: 16px; - left: 41px; - color: #d4d4d4; -} - -.line-grey { - background: url(images/line-grey.gif) 0 0 repeat-x; - height: 2px; - margin: 8px 25px 20px 0; -} - -/* s4.0 - Home Hero Area */ -.hero-background { - position: relative; - width: 880px; - background: url(images/back_home-hero.jpg) 10px 0px no-repeat; - height: 211px; - margin: -20px 0px 45px 0px; -} - -.hero-text { - float: right; - width: 626px; - margin-top: 26px; -} - -.hero-text a { /* Sign Up Now Button */ - padding: 5px 32px 0px 0px; - float: right; -} - -.hero-text h1 { - font-size: 2.3em; - line-height: 1.2em; - color: #333333; - font-family: Trebuchet MS; - margin: 12px 0px 10px 10px; -} - -.hero-text h2 { - margin: 0px; - font-weight: normal; - font-size: 1.35em; - margin: 5px 0px 13px 10px -} - -/* s4.1 - Home Left Header tab */ -.col-left-header-tab { - position: relative; /* ie6 fix */ - background: url(images/tab_green.gif) 0 0 no-repeat; - height: 30px; - width: 166px; - text-align: center; - color: #ffffff; - font: 20px 'trebuchet ms'; - padding-top: 2px; - margin-top: -41px; - margin-left: 20px; - line-height: 29px; - margin-bottom: 8px; - display: block; -} - -.col-left-header-tab a { - color: #FFFFFF; -} - -.callout-green { - background: url(images/back_green-fade.gif) 0 0 repeat-x; - font-size: 1.2em; - padding: 10px 15px 20px 13px; - color: #303B52; - line-height: 1.4em; -} - -/* s4.2 - Home Left Quote */ -.callout-tan { - color: #666666; -} - -.callout-tan h1 { - background: #F4F1E9 url(images/back_tan-fade.gif) 0 0 repeat-y; - font-size: 1.1em; - text-align: center; - margin: 0px; - padding: 11px 5px 11px 2px; - color: #333333; -} - -.callout-tan p { - margin: 0px; - margin-top: 5px; - line-height: 1.4em; - padding: 5px 10px 7px 13px; -} - -.callout-tan p img { - float: left; - margin: 5px 10px 5px 0px; -} - -.callout-tan div { - text-align: left; - padding: 5px 10px 7px 0px; - font-weight: bold; -} - -/* s4.3 - purple home boxes */ -.box-purple { - background: #C6C8E3 url(images/back_home-icons.png) 0px 0px repeat-x; - border-left: 1px solid #ffffff; - color: #333333; - width: 581px; - padding: 10px 15px 20px 15px; -} - -div.box-purple a { - -} - -.box-purple h1 { - font-size: 1.5em; - margin: 10px 0px -15px 0px; -} - -.box-purple li { - margin: 0px 0px 0px -23px; - line-height: 1.6em; - font-size: 1em; -} - -.box-purple div { - padding: 0px 0px 0px 110px; -} - -.icon-text01 { - background-image: url(images/icon_search-engine-market.png); - background-repeat: no-repeat; -} - -* html .icon-text01 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_search-engine-market.png", - sizingMethod = "crop"); -} - -.icon-text02 { - background: url(images/icon_landing-pages.png) 0 0 no-repeat; -} - -* html .icon-text02 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_landing-pages.png", sizingMethod = - "crop"); -} - -.icon-text03 { - background: url(images/icon_salesforce.png) 0 0 no-repeat; -} - -* html .icon-text03 { - width: 460px; /* must have a width or heigh tag for ie6*/ - background-image: none; - filter: progid : DXImageTransform . Microsoft . - AlphaImageLoader(src = "images/icon_salesforce.png", sizingMethod = - "crop"); -} - -/* s4.4 - news home boxes */ -.callout-news { - color: #555555; - float: left; - width: 49%; - margin: 10px 1px 0px 0px; - padding-bottom: 20px; - text-align: left; -} - -.line-news-r { - border-right: 1px solid #D4D4D4; -} - -.callout-news h1 { - background-color: #EEEEEE; - font-size: 1.2em; - margin: 0px; - padding: 11px 5px 11px 15px; - color: #333333; -} - -.callout-news p { - margin: 10px 0px 0px 10px; - padding: 0px 10px 7px 20px; - background: url(images/news.gif) no-repeat left 1px; -} - -.callout-news p a { - -} - -.callout-news ul { - list-style-type: none; - padding: 0; - margin: 10px 0 0 10px; -} - -.callout-news li { - background: url(images/icon_news.gif) no-repeat left 2px; - padding: 0px 5px 5px 20px; -} - -.callout-news li a { - display: block; - margin-bottom: 5px; -} - -.callout-news div { - text-align: right; -} - -#scrollup { - position: relative; - overflow: hidden; - height: 440px; - width: 200px -} - -.headline { - position: absolute; - top: 600px; - left: 5px; - height: 585px; - width: 190px; - font: normal 12px tahoma, geneva !important; -} - -div.more { - margin: 5px 0px 0px 0px; - padding: 0px 10px 0px 0px; - letter-spacing: inherit; -} - -div.more a { - background: transparent url(images/arrow_r-blue.gif) no-repeat right 2px - ; - font-weight: bold; - padding: 0px 20px 0px 0px; - font-weight: bold; - text-decoration: none; -} - -div.more a:hover { - text-decoration: underline; -} - -/* sX.0 - Left Nav */ -.nav-left-back { - background: url(images/back_nav_side.gif) 0 0 repeat-x; -} - -div.empty { - background: #F1F0E5 url(images/back_green-fade.gif) 0 0 repeat-x; -} - -div.empty div.callout-green { - -} - -.nav-left { - padding-top: 12px; - /*background: url(images/logo_marketo_square.gif) 0 0 no-repeat;*/ - width: 210px; -} - -.nav-left ul { - margin: 0px; - padding: 0px; - list-style: none; -} - -.nav-left li a { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - color: #ffffff; - border-top: 1px solid #B3D38D; - border-bottom: 1px solid #7CA84E; - border-left: 1px solid #97B973; - padding: 6px 0px 0px 20px; -} - -.nav-left a:hover,.nav-left a.active:hover,#nav-left-sub a:hover { - color: #4C6F28; - background-color: #F4F1E9; -} - -.nav-left a.open { - background-image: url(images/arrow_d-green.gif); - background-repeat: no-repeat; - background-position: 6px 11px; -} - -.nav-left-header-tab { - position: relative; /* ie6 fix */ - background: url(images/tab_green.gif) 0 0 no-repeat; - height: 32px; - width: 166px; - text-align: center; - color: #ffffff; - margin: -41px 0px 0px 22px; - line-height: 22px; - margin-bottom: 8px; - display: block; -} - -div.empty div.nav-left-header-tab { - background: url(images/tab_green2.gif) 0 0 no-repeat; -} - -.nav-left a.active { - /* background: url(images/arrow_d-green.gif) 5px 10px no-repeat; */ - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #F4F1E9; - color: #4C6F28; - border-top: 1px solid #D1E5BB; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #DADADA; - padding: 6px 0px 0px 20px; -} - -#nav-left-sub a { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #D6E8C4; - color: #4C6F28; - border-top: 1px solid #D6E8C4; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #97B973; - border-right: 1px solid #8DBE5A; - padding: 6px 0px 0px 30px; -} - -* html #nav-left-sub { /* ie6 fix */ - margin-top: -1px; -} - -*+html #nav-left-sub { /* ie7 fix */ - margin-top: -1px; -} - -#nav-left-sub a.active-page { - display: block; - height: 24px; - text-decoration: none; - font-size: 12px; - font-weight: bold; - background-color: #ffffff; - color: #666666; - border-top: 0px solid #7CA84E; - border-bottom: 1px solid #B0CB95; - border-left: 1px solid #97B973; - border-right: 0px solid #8DBE5A; - padding: 6px 0px 0px 30px; - cursor: default; /* turns off hand icon for link */ -} - -/* sX.0 - Main Content */ -.main-content { - color: #666666; - position: absolute; - right: 20px; - padding-top: 20px; - width: 585px; - padding-bottom: 20px; -} - -div.main-content div.main-content { - -} - -.main-content h1 { - color: #5890D1; - font-size: 1.9em; - font-family: Trebuchet MS; - border-bottom: 1px solid #cccccc; - margin: 0px 10px 0px 0px; -} - -.main-content h2 { - color: #666666; - font-size: 1.3em; - font-weight: normal; - margin: 10px 10px 5px 0px; -} - -.main-content p { - margin: 10px 10px 10px 0px; - line-height: 1.55em; -} - -/* sX.1 - Main Content Sub Styles */ -.sub-grey { - border-top: 1px solid #D4D4D4; - border-bottom: 1px solid #D4D4D4; - background-color: #F4F4F4; - margin: 10px 10px 0px 0px; - padding: 0px 10px 20px 15px; -} - -.sub-white { - margin: 10px 10px 0px 0px; - padding: 0px 10px 20px 15px; -} - -img.screen-grab-r { - margin-right: -8px; - text-align: right; - padding: 0px 0px 0px 10px; -} - -div.main-content a.screenshot { - float: right; - padding: 10px 10px 0px 0px -} - -.content-foot { - border-top: 1px solid #D4D4D4; - font-size: .9em; - line-height: 1.45em; - margin: 10px 20px 0px 0px; - padding: 10px 10px 30px 0px; -} - -div.main-content ul { - position: relative; - left: -25px; -} - -div.main-content li { - margin-bottom: 5px; - list-style-type: disc -} - -div.main-content li a { - color: #6A6CB0; -} - -/* sX.0 - Footer */ -div.footer { - color: #666666; - font-size: .85em; - font-weight: normal; - height: 18px; - margin: 0px auto; - font-family: Tahoma, Geneva, sans-serif; - margin-top: 10px; -} - -.footer ul { - list-style-type: none; -} - -.footer li { - float: left; - border-right: 1px solid #666666; - padding: 0px 7px 0px 7px; - margin-top: 3px; -} - -.footer a { - color: #666666; - text-decoration: none; -} - -.footer a:hover { - color: #0653AB; - text-decoration: none; -} - -.footer li.line-off { - border-right: 0px solid #ffffff; -} - -div.footer strong { - font-weight: normal; -} - -/* sX.0 - General Colors */ -.line-grey,.line-grey-tier { - border-top: 1px solid #A3A3A2; -} - -.line-grey-tier { - padding-bottom: 25px; -} - -.bottom { - height: 10px; -} - -div.p10bottom { - padding-bottom: 10px; -} - -.clear { - clear: both; -} - -table.grid { - background: #EEEEEE; -} - -table.grid th { - background-color: #F4F4F4; -} - -table.grid td { - background-color: #FFFFFF; -} - -div.buttonSubmit { - position: relative; -} - -div.buttonSubmit input,div.buttonSubmit span { - height: 36px; - position: relative; - background-image: url(images/button-submit.gif); - background-repeat: no-repeat; - background-position: right 0px; - float: left; - color: #FFFFFF; - font-weight: bold; - padding: 0px 15px 2px 15px; - margin: 20px 0px 20px 0px; - border: 0px; - cursor: pointer; - z-index: 5; -} - -div.buttonSubmit input { - width: auto; -} - -div.buttonSubmit span { - width: 4px; - position: absolute; - left: 0px; - top: 0px; - background-position: left -36px; - padding: 0px 0px 0px 0px; - z-index: 10; -} - -body.safari div.buttonSubmit span { - display: none -} - -div.buttonSubmitHover input { - background-position: right -72px; -} - -div.buttonSubmitHover span { - background-position: left -108px; -} - -a.demoLink { - padding: 1px 10px 0px 17px; - height: 24px; - background: url(images/bullet_triangle_blue.gif) no-repeat 0px 4px; - display: block; - float: left; -} - -div.callout-tan a { - background: none; - color: #0653AB; - margin: auto; - display: block; -} - -div.callout-tan a:hover { - background: none; - color: #0653AB; -} - -label.error { - display: block; - color: red; - font-style: italic; - font-weight: normal; -} - -input.error { - border: 2px solid red; -} - -p.demoBlock { - border-bottom: 1px solid #DDDDDD; - padding-bottom: 10px; -} - -div.left-nav-callout { - height: 200px; - width: 190px; - top: 55px; - left: 5px; - position: relative; - padding-left: 9px; - padding-top: 13px; -} - -div.left-nav-callout img.png { - position: absolute; - z-index: 0; - top: 0px; - left: 0px; -} - -div.left-nav-callout h6 { - font: bold 14px tahoma, geneva; - color: #333333; - height: 36px; - padding-left: 5px; - margin: 0px; - position: relative; - z-index: 10; -} - -div.left-nav-callout a { - background: url(images/monitor24.gif) no-repeat 0px center; - padding: 5px 0px 5px 30px; - display: block; - font: bold 12px tahoma, geneva; - color: #336699; - margin-bottom: 5px; - position: relative; - z-index: 10; - width: 140px; -} - -form table td { - padding: 5px; -} - -form table input { - width: 200px; - padding: 3px; - margin: 0px; -} - -textarea { - width: 400px -} - -td.label { - width: 150px; -} - -tr.required td.label { - font-weight: bold; - background: url(/images/forms/backRequiredGray.gif) no-repeat right - center; -} - -div.subTableDiv { - width: 500px; -} - -div.subTableDiv td.label { - width: 135px; -} - -ul#homeBlog li div.description { - display: none; -} - -td.field input.error, td.field select.error, tr.errorRow td.field input,tr.errorRow td.field select { - border: 2px solid red; - background-color: #FFFFD5; - margin: 0px; - color: red; -} - -tr td.field div.formError { - display: none; - color: #FF0000; -} - -tr.errorRow td.field div.formError { - display: block; - font-weight: normal; -} - -div.error { - color: red; -} - -div.error a { - color: #336699; - font-size: 12px; - text-decoration: underline -} - -div.tooltip { - position: absolute; - left: 30px; - bottom: 0px; - display: none; /* in case javascript is disabled */ - width: 170px; - background-color: #F4F1E9; - z-index: 100; - padding: 10px; - border: 1px solid #CCCCCC; -} - -div.offerbox { - width: 125px; - float: left; - position: relative; -} - -div.offerbox h3 { - font: bold 17px tahoma, geneva; - color: #333333; - height: 55px; - margin: 0px auto; - text-align: center; -} - -div.offerbox h4 { - height: 100px; - font: normal 13px tahoma, geneva; - margin: 0px; -} - -div.offerbox h5 { - font: bold 14px tahoma, geneva; - margin: 0px; - height: 55px; -} - -div.offerbox h5 small { - float: left; - font-weight: normal; - font-size: 10px; -} - -div.offerbox div.learnmore { - padding-left: 25px; -} - -div#marketoEditions { - background: url(images/buynowBack.gif) no-repeat; - width: 584px; - height: 376px; - float: left; - position: relative; - margin-bottom: 10px; -} - -div.offerHeader { - background: #0D8BBD; - position: absolute; - top: 20px; - width: 266px; - height: 34px; - border: 1px solid #e1e4e2; -} - -div.offerHeader span { - font: 20px 'trebuchet ms'; - color: #FFFFFF; - position: absolute; - left: 0px; - top: 0px; -} - -div.offerHeader span.shadow { - font: 20px 'trebuchet ms'; - color: #333333; - position: absolute; -} - -div.offerbox div.buttonSubmit { - margin: 5px 0px 0px 10px; -} - -div.footerAddress { - position: absolute; - bottom: 30px; - left: 20px; - color: #666666; - font-size: 11px; - display: none; -} \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/milk/bg.gif b/thirdparty/jquery-validate/demo/milk/bg.gif deleted file mode 100644 index 2c7c3587808fbeb541ee6235fb78113502109a83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmZ?wbhEHb6k*V1XkcVGb?Vgr|Nj+#vM@3*Ff!;c00Bsbfk~mKf92`7{EO#oxz)Y- b-k#t5ZI3*rJ?mWd>eM!IhU1@X#2Ksso+upB diff --git a/thirdparty/jquery-validate/demo/milk/emails.php b/thirdparty/jquery-validate/demo/milk/emails.php deleted file mode 100644 index 86b4bc175..000000000 --- a/thirdparty/jquery-validate/demo/milk/emails.php +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/thirdparty/jquery-validate/demo/milk/emails.phps b/thirdparty/jquery-validate/demo/milk/emails.phps deleted file mode 100644 index d2219cc92..000000000 --- a/thirdparty/jquery-validate/demo/milk/emails.phps +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/milk/index.html b/thirdparty/jquery-validate/demo/milk/index.html deleted file mode 100644 index 3516800a4..000000000 --- a/thirdparty/jquery-validate/demo/milk/index.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - -Remember The Milk signup form - jQuery Validate plugin demo - with friendly permission from the RTM team - - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -
    - - -
    - - -
    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - -
    - - - - - - -
    -
      -
    - - -
    -
    - -
    -
    -
    -
    -
    - -
    - -
    - - - - - - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/milk/left_white.png b/thirdparty/jquery-validate/demo/milk/left_white.png deleted file mode 100644 index b889960cb0023e453057091edb2ddcf19f32e943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 538 zcmeAS@N?(olHy`uVBq!ia0vp@3=E7q9Be?AM2=-NkYXuz@(kesf*OvL4j`Yiz$3Dl zfq`2Hgc&d0t@{HM6f1F!C~+=IO)SaG&r=A=%uQu5FxEFR)i*E|a$KbVRG|t|5uBe^ zQl40p%HW%rT$G=inv$8Q;FejGTAp8&U98|6pk?hCGB_vM#4pUWt+Y|>FaUwp~rsKn=%OV&5umZd}<%Q35-D&h3P z?VM%XVa3TOTLhfaA8Bv7|335fw4XKixEYo_|2*?z#+NkhxhpcImR){1Tl;FK6Ng0d zqYJecwr^$cTKS1pBhAi!X^@WBqD`$WKwu|bDw}-IwfUfeThmdT35osqd pxGz@wV*kW#{)(7j;r*^S2Gfg+4)K_Dr~zY%!PC{xWt~$(697OL*D?SA diff --git a/thirdparty/jquery-validate/demo/milk/milk.css b/thirdparty/jquery-validate/demo/milk/milk.css deleted file mode 100644 index d5f128bf2..000000000 --- a/thirdparty/jquery-validate/demo/milk/milk.css +++ /dev/null @@ -1,236 +0,0 @@ -/* GENERAL ELEMENTS */ - -* { margin: 0; padding: 0; } - -body, input, select, textarea { font-family: verdana, arial, helvetica, sans-serif; font-size: 11px; } -body { color: #333; background-color: #fff; text-align: center; } - -a:link { color:#0060BF; text-decoration: underline; } -a:visited { color:#0060BF; text-decoration: underline; } -a:active { color:#0060BF; text-decoration: underline; } -a:hover { color:#000000; text-decoration: underline; } - -h1, h2, h3, h4, h5, h6 { font-family: "Lucida Grande", "Lucida Sans Unicode", geneva, verdana, arial, helvetica, sans-serif; font-weight: bold; color: #666; } -h1 { font-size: 1.8em; margin: 0em 0em 0.6em 0em; color: #EC5800; } -h2 { font-size: 1.5em; margin: 1.2em 0em 0.4em 0em; } -h3 { font-size: 1.4em; margin: 1.2em 0em 0.4em 0em; color: #EC5800; } -h4 { font-size: 1.2em; margin: 1.2em 0em 0.4em 0em; } -h5 { font-size: 1.0em; margin: 1.2em 0em 0.4em 0em; } -h6 { font-size: 0.8em; margin: 1.2em 0em 0.4em 0em; } - -img { border: 0px; } - -p { font-size: 1.0em; line-height: 1.3em; margin: 1.2em 0em 1.2em 0em; } -li > p { margin-top: 0.2em; } -pre { font-family: monospace; font-size: 1.0em; } -strong, b { font-weight: bold; } - -/* PAGE ELEMENTS */ - -/* Content */ - -#content { margin: 0em auto; width: 765px; padding: 10px 0 10px 0; text-align: left; /* Win IE5 */ } -.content { margin-left: 4.5em; margin-right: 4.5em; } -.content ol, .content ul, .content li { font-size: 1.0em; line-height: 1.3em; margin: 0.2em 0 0.1em 1.5em; } -.content ol.terms li { margin-bottom: 1em; } - -/* Header */ - -#header { padding-bottom: 10em; } -#headerlogo { float: left; } -#headerlogo img { width: 188px; height: 83px; } -#headernav { float: right; } - -label { font-weight: bold; } -#reminders label { font-weight: normal; } - -table.tabbedtable { padding-left: 3em; } -table.tabbedtable td { padding-bottom: 5px; } -table.tabbedtable label { text-align: right; padding-right: 9px; } -.hiddenlabel { visibility: hidden; } -.largelink { border: 1px solid #cacaca; padding: 10px; background-color: #E8EEF7; font-size: 1.2em; font-weight: bold; } -.largelinkwrap { padding-top: 10px; padding-bottom: 10px; } - - - -#signuptab { - float:left; - width:100%; - background:#fff url("bg.gif") repeat-x bottom; - font-size: 1.0em; - line-height: normal; -} -#signuptab ul { - margin:0; - padding: 0px 10px 0px 10px; - list-style:none; -} -#signuptab li { - float:left; - background:url("left_white.png") no-repeat left top; - margin:0; - padding:0 3px 0 9px; - border-bottom:1px solid #CACACA; -} -#signuptab a { - float:left; - display:block; - width:.1em; - background:url("right_white.png") no-repeat right top; - padding:2px 15px 0px 6px; - text-decoration:none; - font-weight:bold; - color:#fff; - white-space: nowrap; -} -#signuptab > ul a {width:auto;} -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#signuptab a {float:none;} -/* End IE5-Mac hack */ -#signuptab a:hover { - color:#333; -} -#signuptab #signupcurrent { - background-position:0 -150px; - border-width:0; -} -#signuptab #signupcurrent a { - background-position:100% -150px; - padding-bottom:1px; - color:#000; -} -#signuptab li:hover, #signuptab li:hover a { - background-position:0% -150px; - color:#000; -} -#signuptab li:hover a { - background-position:100% -150px; -} - -/* Signup box */ - -#signupbox { - width: 100%; - text-align: center; - margin: 0em auto; -} - -#signupwrap { - border: 1px solid #CACACA; - border-top: 0; - text-align: left; - padding: 35px 10px 20px 30px; - clear: both; -} - -/* Unsupported browsers */ - -.orange_rbcontent { padding: 0.4em; } -.orange_rbroundbox { width: 100%; } - -#unsupported { - font-weight: bold; - text-align: left; -} - -/*#content { - padding-top: 15px; -}*/ - -/* Signup form */ - -#signupform table { - border-spacing: 0px; - border-collapse: collapse; - empty-cells: show; -} - -#signupform .label { - padding-top: 2px; - padding-right: 8px; - vertical-align: top; - text-align: right; - width: 125px; - white-space: nowrap; -} - -#signupform .field { - padding-bottom: 10px; - white-space: nowrap; -} - -#signupform .status { - padding-top: 2px; - padding-left: 8px; - vertical-align: top; - width: 246px; - white-space: nowrap; -} - -#signupform .textfield { - width: 150px; -} - -#signupform label.error { - background:url("../images/unchecked.gif") no-repeat 0px 0px; - padding-left: 16px; - padding-bottom: 2px; - font-weight: bold; - color: #EA5200; -} - -#signupform label.checked { - background:url("../images/checked.gif") no-repeat 0px 0px; -} - -#signupform .success_msg { - font-weight: bold; - color: #0060BF; - margin-left: 19px; -} - -#signupform #dateformatStatus, #signupform #termsStatus { - margin-left: 6px; -} - -#signupform #dateformat_eu { - vertical-align: middle; -} - -#signupform #ldateformat_eu { - font-weight: normal; - vertical-align: middle; -} - -#signupform #dateformat_am { - vertical-align: middle; -} - -#signupform #ldateformat_am { - font-weight: normal; - vertical-align: middle; -} - -#signupform #termswrap { - float: left; -} - -#signupform #terms { - vertical-align: middle; - float: left; - display: block; - margin-right: 5px; -} - -#signupform #lterms { - font-weight: normal; - vertical-align: middle; - float: left; - display: block; - width: 350px; - white-space: normal; -} - -#signupform #lsignupsubmit { - visibility: hidden; -} \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/milk/milk.png b/thirdparty/jquery-validate/demo/milk/milk.png deleted file mode 100644 index b5e7151578041a9da2893b41df523c3ff7b80f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5121 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 HB{Ts5gh-*z diff --git a/thirdparty/jquery-validate/demo/milk/users.php b/thirdparty/jquery-validate/demo/milk/users.php deleted file mode 100644 index dba2f3986..000000000 --- a/thirdparty/jquery-validate/demo/milk/users.php +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/thirdparty/jquery-validate/demo/milk/users.phps b/thirdparty/jquery-validate/demo/milk/users.phps deleted file mode 100644 index dfe4c8e9c..000000000 --- a/thirdparty/jquery-validate/demo/milk/users.phps +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/multipart/index.html b/thirdparty/jquery-validate/demo/multipart/index.html deleted file mode 100644 index 2fc5973d6..000000000 --- a/thirdparty/jquery-validate/demo/multipart/index.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - -jQuery accordion form with validation - - - - - - - - - - - - - - - -
    -
    - -

    Help me Buy and Sell a House

    -

    This form is quick & easy to complete - in only 3 steps!

    -
    - - -
      -
    • -
      -
      Step 1 of 3 -
      *Required Field
      -

      Tell us about the property you're buying

      -   No:      Yes: -
      -
      -
      -
      - -
      -
      -
      -
      -
    • -
    • - - -
      -
      Step 2 of 3 -
      *Required Field
      -

      Tell us about the property you're selling

      -
      -
      -
      -
      -
      -
      -
      - -
      -
      -
      -
      -
      -
      -
      -
      -
    • -
    • - - -
      -
      Step 3 of 3 -
      *Required Field
      -

      Tell us about yourself

      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -
      -

      This is a sample form, no information is sent anywhere.

      -
      -
      -
      -
    • -
    -
    - -
    -
    - - - diff --git a/thirdparty/jquery-validate/demo/multipart/js/jquery.maskedinput-1.0.js b/thirdparty/jquery-validate/demo/multipart/js/jquery.maskedinput-1.0.js deleted file mode 100644 index 9ba3ecfa1..000000000 --- a/thirdparty/jquery-validate/demo/multipart/js/jquery.maskedinput-1.0.js +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright (c) 2007 Josh Bush (digitalbush.com) - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * Version: 1.0 - * Release: 2007-07-25 - */ -(function($) { - //Helper Functions for Caret positioning - function getCaretPosition(ctl){ - var res = {begin: 0, end: 0 }; - if (ctl.setSelectionRange){ - res.begin = ctl.selectionStart; - res.end = ctl.selectionEnd; - }else if (document.selection && document.selection.createRange){ - var range = document.selection.createRange(); - res.begin = 0 - range.duplicate().moveStart('character', -100000); - res.end = res.begin + range.text.length; - } - return res; - }; - - function setCaretPosition(ctl, pos){ - if(ctl.setSelectionRange){ - ctl.focus(); - ctl.setSelectionRange(pos,pos); - }else if (ctl.createTextRange){ - var range = ctl.createTextRange(); - range.collapse(true); - range.moveEnd('character', pos); - range.moveStart('character', pos); - range.select(); - } - }; - - //Predefined character definitions - var charMap={ - '9':"[0-9]", - 'a':"[A-Za-z]", - '*':"[A-Za-z0-9]" - }; - - //Helper method to inject character definitions - $.mask={ - addPlaceholder : function(c,r){ - charMap[c]=r; - } - }; - - //Main Method - $.fn.mask = function(mask,settings) { - settings = $.extend({ - placeholder: "_", - completed: null - }, settings); - - //Build Regex for format validation - var reString="^"; - for(var i=0;i 16 && k < 32 ) || (k > 32 && k < 41)); - - //delete selection before proceeding - if((pos.begin-pos.end)!=0 && (!ignore || k==8 || k==46)){ - clearBuffer(pos.begin,pos.end); - } - //backspace and delete get special treatment - if(k==8){//backspace - while(pos.begin-->=0){ - if(!locked[pos.begin]){ - buffer[pos.begin]=settings.placeholder; - if($.browser.opera){ - //Opera won't let you cancel the backspace, so we'll let it backspace over a dummy character. - writeBuffer(pos.begin); - setCaretPosition(this,pos.begin+1); - }else{ - writeBuffer(); - setCaretPosition(this,pos.begin); - } - return false; - } - } - }else if(k==46){//delete - clearBuffer(pos.begin,pos.begin+1); - writeBuffer(); - setCaretPosition(this,pos.begin); - return false; - }else if (k==27){ - clearBuffer(0,mask.length); - writeBuffer(); - setCaretPosition(this,0); - return false; - } - - }); - - input.keypress(function(e){ - if(ignore){ - ignore=false; - return; - } - e=e||window.event; - var k=e.charCode||e.keyCode||e.which; - - var pos=getCaretPosition(this); - var caretPos=pos.begin; - - if(e.ctrlKey || e.altKey){//Ignore - return true; - }else if ((k>=41 && k<=122) ||k==32 || k>186){//typeable characters - while(pos.begin=buffer.length) - settings.completed.call(input); - else - setCaretPosition(this,caretPos); - - return false; - }); - - /*Helper Methods*/ - function clearBuffer(start,end){ - for(var i=start;i").addClass("ui-icon " + o.icons.header).prependTo(this.headers); - this.active.find(".ui-icon").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected); - - // IE7-/Win - Extra vertical space in lists fixed - if ($.browser.msie) { - this.element.find('a').css('zoom', '1'); - } - - this.resize(); - - //ARIA - this.element.attr('role','tablist'); - - this.headers - .attr('role','tab') - .bind('keydown', function(event) { return self._keydown(event); }) - .next() - .attr('role','tabpanel'); - - this.headers - .not(this.active || "") - .attr('aria-expanded','false') - .attr("tabIndex", "-1") - .next() - .hide(); - - // make sure at least one header is in the tab order - if (!this.active.length) { - this.headers.eq(0).attr('tabIndex','0'); - } else { - this.active - .attr('aria-expanded','true') - .attr('tabIndex', '0'); - } - - // only need links in taborder for Safari - if (!$.browser.safari) - this.headers.find('a').attr('tabIndex','-1'); - - if (o.event) { - this.headers.bind((o.event) + ".accordion", function(event) { return self._clickHandler.call(self, event, this); }); - } - - }, - - destroy: function() { - var o = this.options; - - this.element - .removeClass("ui-accordion ui-widget ui-helper-reset") - .removeAttr("role") - .unbind('.accordion') - .removeData('accordion'); - - this.headers - .unbind(".accordion") - .removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top") - .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex"); - - this.headers.find("a").removeAttr("tabindex"); - this.headers.children(".ui-icon").remove(); - var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active"); - if (o.autoHeight || o.fillHeight) { - contents.css("height", ""); - } - }, - - _setData: function(key, value) { - if(key == 'alwaysOpen') { key = 'collapsible'; value = !value; } - $.widget.prototype._setData.apply(this, arguments); - }, - - _keydown: function(event) { - - var o = this.options, keyCode = $.ui.keyCode; - - if (o.disabled || event.altKey || event.ctrlKey) - return; - - var length = this.headers.length; - var currentIndex = this.headers.index(event.target); - var toFocus = false; - - switch(event.keyCode) { - case keyCode.RIGHT: - case keyCode.DOWN: - toFocus = this.headers[(currentIndex + 1) % length]; - break; - case keyCode.LEFT: - case keyCode.UP: - toFocus = this.headers[(currentIndex - 1 + length) % length]; - break; - case keyCode.SPACE: - case keyCode.ENTER: - return this._clickHandler({ target: event.target }, event.target); - } - - if (toFocus) { - $(event.target).attr('tabIndex','-1'); - $(toFocus).attr('tabIndex','0'); - toFocus.focus(); - return false; - } - - return true; - - }, - - resize: function() { - - var o = this.options, maxHeight; - - if (o.fillSpace) { - - if($.browser.msie) { var defOverflow = this.element.parent().css('overflow'); this.element.parent().css('overflow', 'hidden'); } - maxHeight = this.element.parent().height(); - if($.browser.msie) { this.element.parent().css('overflow', defOverflow); } - - this.headers.each(function() { - maxHeight -= $(this).outerHeight(); - }); - - var maxPadding = 0; - this.headers.next().each(function() { - maxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height()); - }).height(Math.max(0, maxHeight - maxPadding)) - .css('overflow', 'auto'); - - } else if ( o.autoHeight ) { - maxHeight = 0; - this.headers.next().each(function() { - maxHeight = Math.max(maxHeight, $(this).outerHeight()); - }).height(maxHeight); - } - - }, - - activate: function(index) { - // call clickHandler with custom event - var active = this._findActive(index)[0]; - this._clickHandler({ target: active }, active); - }, - - _findActive: function(selector) { - return selector - ? typeof selector == "number" - ? this.headers.filter(":eq(" + selector + ")") - : this.headers.not(this.headers.not(selector)) - : selector === false - ? $([]) - : this.headers.filter(":eq(0)"); - }, - - _clickHandler: function(event, target) { - - var o = this.options; - if (o.disabled) return false; - - // called only when using activate(false) to close all parts programmatically - if (!event.target && o.collapsible) { - this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all") - .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header); - this.active.next().addClass('ui-accordion-content-active'); - var toHide = this.active.next(), - data = { - options: o, - newHeader: $([]), - oldHeader: o.active, - newContent: $([]), - oldContent: toHide - }, - toShow = (this.active = $([])); - this._toggle(toShow, toHide, data); - return false; - } - - // get the click target - var clicked = $(event.currentTarget || target); - var clickedIsActive = clicked[0] == this.active[0]; - - // if animations are still active, or the active header is the target, ignore click - if (this.running || (!o.collapsible && clickedIsActive)) { - return false; - } - - // switch classes - this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all") - .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header); - this.active.next().addClass('ui-accordion-content-active'); - if (!clickedIsActive) { - clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top") - .find(".ui-icon").removeClass(o.icons.header).addClass(o.icons.headerSelected); - clicked.next().addClass('ui-accordion-content-active'); - } - - // find elements to show and hide - var toShow = clicked.next(), - toHide = this.active.next(), - data = { - options: o, - newHeader: clickedIsActive && o.collapsible ? $([]) : clicked, - oldHeader: this.active, - newContent: clickedIsActive && o.collapsible ? $([]) : toShow.find('> *'), - oldContent: toHide.find('> *') - }, - down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] ); - - this.active = clickedIsActive ? $([]) : clicked; - this._toggle(toShow, toHide, data, clickedIsActive, down); - - return false; - - }, - - _toggle: function(toShow, toHide, data, clickedIsActive, down) { - - var o = this.options, self = this; - - this.toShow = toShow; - this.toHide = toHide; - this.data = data; - - var complete = function() { if(!self) return; return self._completed.apply(self, arguments); }; - - // trigger changestart event - this._trigger("changestart", null, this.data); - - // count elements to animate - this.running = toHide.size() === 0 ? toShow.size() : toHide.size(); - - if (o.animated) { - - var animOptions = {}; - - if ( o.collapsible && clickedIsActive ) { - animOptions = { - toShow: $([]), - toHide: toHide, - complete: complete, - down: down, - autoHeight: o.autoHeight || o.fillSpace - }; - } else { - animOptions = { - toShow: toShow, - toHide: toHide, - complete: complete, - down: down, - autoHeight: o.autoHeight || o.fillSpace - }; - } - - if (!o.proxied) { - o.proxied = o.animated; - } - - if (!o.proxiedDuration) { - o.proxiedDuration = o.duration; - } - - o.animated = $.isFunction(o.proxied) ? - o.proxied(animOptions) : o.proxied; - - o.duration = $.isFunction(o.proxiedDuration) ? - o.proxiedDuration(animOptions) : o.proxiedDuration; - - var animations = $.ui.accordion.animations, - duration = o.duration, - easing = o.animated; - - if (!animations[easing]) { - animations[easing] = function(options) { - this.slide(options, { - easing: easing, - duration: duration || 700 - }); - }; - } - - animations[easing](animOptions); - - } else { - - if (o.collapsible && clickedIsActive) { - toShow.toggle(); - } else { - toHide.hide(); - toShow.show(); - } - - complete(true); - - } - - toHide.prev().attr('aria-expanded','false').attr("tabIndex", "-1").blur(); - toShow.prev().attr('aria-expanded','true').attr("tabIndex", "0").focus(); - - }, - - _completed: function(cancel) { - - var o = this.options; - - this.running = cancel ? 0 : --this.running; - if (this.running) return; - - if (o.clearStyle) { - this.toShow.add(this.toHide).css({ - height: "", - overflow: "" - }); - } - - this._trigger('change', null, this.data); - } - -}); - - -$.extend($.ui.accordion, { - version: "1.7.1", - defaults: { - active: null, - alwaysOpen: true, //deprecated, use collapsible - animated: 'slide', - autoHeight: true, - clearStyle: false, - collapsible: false, - event: "click", - fillSpace: false, - header: "> li > :first-child,> :not(li):even", - icons: { - header: "ui-icon-triangle-1-e", - headerSelected: "ui-icon-triangle-1-s" - }, - navigation: false, - navigationFilter: function() { - return this.href.toLowerCase() == location.href.toLowerCase(); - } - }, - animations: { - slide: function(options, additions) { - options = $.extend({ - easing: "swing", - duration: 300 - }, options, additions); - if ( !options.toHide.size() ) { - options.toShow.animate({height: "show"}, options); - return; - } - if ( !options.toShow.size() ) { - options.toHide.animate({height: "hide"}, options); - return; - } - var overflow = options.toShow.css('overflow'), - percentDone, - showProps = {}, - hideProps = {}, - fxAttrs = [ "height", "paddingTop", "paddingBottom" ], - originalWidth; - // fix width before calculating height of hidden element - var s = options.toShow; - originalWidth = s[0].style.width; - s.width( parseInt(s.parent().width(),10) - parseInt(s.css("paddingLeft"),10) - parseInt(s.css("paddingRight"),10) - (parseInt(s.css("borderLeftWidth"),10) || 0) - (parseInt(s.css("borderRightWidth"),10) || 0) ); - - $.each(fxAttrs, function(i, prop) { - hideProps[prop] = 'hide'; - - var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/); - showProps[prop] = { - value: parts[1], - unit: parts[2] || 'px' - }; - }); - options.toShow.css({ height: 0, overflow: 'hidden' }).show(); - options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{ - step: function(now, settings) { - // only calculate the percent when animating height - // IE gets very inconsistent results when animating elements - // with small values, which is common for padding - if (settings.prop == 'height') { - percentDone = (settings.now - settings.start) / (settings.end - settings.start); - } - - options.toShow[0].style[settings.prop] = - (percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit; - }, - duration: options.duration, - easing: options.easing, - complete: function() { - if ( !options.autoHeight ) { - options.toShow.css("height", ""); - } - options.toShow.css("width", originalWidth); - options.toShow.css({overflow: overflow}); - options.complete(); - } - }); - }, - bounceslide: function(options) { - this.slide(options, { - easing: options.down ? "easeOutBounce" : "swing", - duration: options.down ? 1000 : 200 - }); - }, - easeslide: function(options) { - this.slide(options, { - easing: "easeinout", - duration: 700 - }); - } - } -}); - -})(jQuery); diff --git a/thirdparty/jquery-validate/demo/multipart/js/ui.core.js b/thirdparty/jquery-validate/demo/multipart/js/ui.core.js deleted file mode 100644 index 6be9993b9..000000000 --- a/thirdparty/jquery-validate/demo/multipart/js/ui.core.js +++ /dev/null @@ -1,519 +0,0 @@ -/* - * jQuery UI 1.7.1 - * - * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * http://docs.jquery.com/UI - */ -;jQuery.ui || (function($) { - -var _remove = $.fn.remove, - isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9); - -//Helper functions and ui object -$.ui = { - version: "1.7.1", - - // $.ui.plugin is deprecated. Use the proxy pattern instead. - plugin: { - add: function(module, option, set) { - var proto = $.ui[module].prototype; - for(var i in set) { - proto.plugins[i] = proto.plugins[i] || []; - proto.plugins[i].push([option, set[i]]); - } - }, - call: function(instance, name, args) { - var set = instance.plugins[name]; - if(!set || !instance.element[0].parentNode) { return; } - - for (var i = 0; i < set.length; i++) { - if (instance.options[set[i][0]]) { - set[i][1].apply(instance.element, args); - } - } - } - }, - - contains: function(a, b) { - return document.compareDocumentPosition - ? a.compareDocumentPosition(b) & 16 - : a !== b && a.contains(b); - }, - - hasScroll: function(el, a) { - - //If overflow is hidden, the element might have extra content, but the user wants to hide it - if ($(el).css('overflow') == 'hidden') { return false; } - - var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop', - has = false; - - if (el[scroll] > 0) { return true; } - - // TODO: determine which cases actually cause this to happen - // if the element doesn't have the scroll set, see if it's possible to - // set the scroll - el[scroll] = 1; - has = (el[scroll] > 0); - el[scroll] = 0; - return has; - }, - - isOverAxis: function(x, reference, size) { - //Determines when x coordinate is over "b" element axis - return (x > reference) && (x < (reference + size)); - }, - - isOver: function(y, x, top, left, height, width) { - //Determines when x, y coordinates is over "b" element - return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width); - }, - - keyCode: { - BACKSPACE: 8, - CAPS_LOCK: 20, - COMMA: 188, - CONTROL: 17, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - INSERT: 45, - LEFT: 37, - NUMPAD_ADD: 107, - NUMPAD_DECIMAL: 110, - NUMPAD_DIVIDE: 111, - NUMPAD_ENTER: 108, - NUMPAD_MULTIPLY: 106, - NUMPAD_SUBTRACT: 109, - PAGE_DOWN: 34, - PAGE_UP: 33, - PERIOD: 190, - RIGHT: 39, - SHIFT: 16, - SPACE: 32, - TAB: 9, - UP: 38 - } -}; - -// WAI-ARIA normalization -if (isFF2) { - var attr = $.attr, - removeAttr = $.fn.removeAttr, - ariaNS = "http://www.w3.org/2005/07/aaa", - ariaState = /^aria-/, - ariaRole = /^wairole:/; - - $.attr = function(elem, name, value) { - var set = value !== undefined; - - return (name == 'role' - ? (set - ? attr.call(this, elem, name, "wairole:" + value) - : (attr.apply(this, arguments) || "").replace(ariaRole, "")) - : (ariaState.test(name) - ? (set - ? elem.setAttributeNS(ariaNS, - name.replace(ariaState, "aaa:"), value) - : attr.call(this, elem, name.replace(ariaState, "aaa:"))) - : attr.apply(this, arguments))); - }; - - $.fn.removeAttr = function(name) { - return (ariaState.test(name) - ? this.each(function() { - this.removeAttributeNS(ariaNS, name.replace(ariaState, "")); - }) : removeAttr.call(this, name)); - }; -} - -//jQuery plugins -$.fn.extend({ - remove: function() { - // Safari has a native remove event which actually removes DOM elements, - // so we have to use triggerHandler instead of trigger (#3037). - $("*", this).add(this).each(function() { - $(this).triggerHandler("remove"); - }); - return _remove.apply(this, arguments ); - }, - - enableSelection: function() { - return this - .attr('unselectable', 'off') - .css('MozUserSelect', '') - .unbind('selectstart.ui'); - }, - - disableSelection: function() { - return this - .attr('unselectable', 'on') - .css('MozUserSelect', 'none') - .bind('selectstart.ui', function() { return false; }); - }, - - scrollParent: function() { - var scrollParent; - if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) { - scrollParent = this.parents().filter(function() { - return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); - }).eq(0); - } else { - scrollParent = this.parents().filter(function() { - return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1)); - }).eq(0); - } - - return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent; - } -}); - - -//Additional selectors -$.extend($.expr[':'], { - data: function(elem, i, match) { - return !!$.data(elem, match[3]); - }, - - focusable: function(element) { - var nodeName = element.nodeName.toLowerCase(), - tabIndex = $.attr(element, 'tabindex'); - return (/input|select|textarea|button|object/.test(nodeName) - ? !element.disabled - : 'a' == nodeName || 'area' == nodeName - ? element.href || !isNaN(tabIndex) - : !isNaN(tabIndex)) - // the element and all of its ancestors must be visible - // the browser may report that the area is hidden - && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length; - }, - - tabbable: function(element) { - var tabIndex = $.attr(element, 'tabindex'); - return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable'); - } -}); - - -// $.widget is a factory to create jQuery plugins -// taking some boilerplate code out of the plugin code -function getter(namespace, plugin, method, args) { - function getMethods(type) { - var methods = $[namespace][plugin][type] || []; - return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods); - } - - var methods = getMethods('getter'); - if (args.length == 1 && typeof args[0] == 'string') { - methods = methods.concat(getMethods('getterSetter')); - } - return ($.inArray(method, methods) != -1); -} - -$.widget = function(name, prototype) { - var namespace = name.split(".")[0]; - name = name.split(".")[1]; - - // create plugin method - $.fn[name] = function(options) { - var isMethodCall = (typeof options == 'string'), - args = Array.prototype.slice.call(arguments, 1); - - // prevent calls to internal methods - if (isMethodCall && options.substring(0, 1) == '_') { - return this; - } - - // handle getter methods - if (isMethodCall && getter(namespace, name, options, args)) { - var instance = $.data(this[0], name); - return (instance ? instance[options].apply(instance, args) - : undefined); - } - - // handle initialization and non-getter methods - return this.each(function() { - var instance = $.data(this, name); - - // constructor - (!instance && !isMethodCall && - $.data(this, name, new $[namespace][name](this, options))._init()); - - // method call - (instance && isMethodCall && $.isFunction(instance[options]) && - instance[options].apply(instance, args)); - }); - }; - - // create widget constructor - $[namespace] = $[namespace] || {}; - $[namespace][name] = function(element, options) { - var self = this; - - this.namespace = namespace; - this.widgetName = name; - this.widgetEventPrefix = $[namespace][name].eventPrefix || name; - this.widgetBaseClass = namespace + '-' + name; - - this.options = $.extend({}, - $.widget.defaults, - $[namespace][name].defaults, - $.metadata && $.metadata.get(element)[name], - options); - - this.element = $(element) - .bind('setData.' + name, function(event, key, value) { - if (event.target == element) { - return self._setData(key, value); - } - }) - .bind('getData.' + name, function(event, key) { - if (event.target == element) { - return self._getData(key); - } - }) - .bind('remove', function() { - return self.destroy(); - }); - }; - - // add widget prototype - $[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype); - - // TODO: merge getter and getterSetter properties from widget prototype - // and plugin prototype - $[namespace][name].getterSetter = 'option'; -}; - -$.widget.prototype = { - _init: function() {}, - destroy: function() { - this.element.removeData(this.widgetName) - .removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled') - .removeAttr('aria-disabled'); - }, - - option: function(key, value) { - var options = key, - self = this; - - if (typeof key == "string") { - if (value === undefined) { - return this._getData(key); - } - options = {}; - options[key] = value; - } - - $.each(options, function(key, value) { - self._setData(key, value); - }); - }, - _getData: function(key) { - return this.options[key]; - }, - _setData: function(key, value) { - this.options[key] = value; - - if (key == 'disabled') { - this.element - [value ? 'addClass' : 'removeClass']( - this.widgetBaseClass + '-disabled' + ' ' + - this.namespace + '-state-disabled') - .attr("aria-disabled", value); - } - }, - - enable: function() { - this._setData('disabled', false); - }, - disable: function() { - this._setData('disabled', true); - }, - - _trigger: function(type, event, data) { - var callback = this.options[type], - eventName = (type == this.widgetEventPrefix - ? type : this.widgetEventPrefix + type); - - event = $.Event(event); - event.type = eventName; - - // copy original event properties over to the new event - // this would happen if we could call $.event.fix instead of $.Event - // but we don't have a way to force an event to be fixed multiple times - if (event.originalEvent) { - for (var i = $.event.props.length, prop; i;) { - prop = $.event.props[--i]; - event[prop] = event.originalEvent[prop]; - } - } - - this.element.trigger(event, data); - - return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false - || event.isDefaultPrevented()); - } -}; - -$.widget.defaults = { - disabled: false -}; - - -/** Mouse Interaction Plugin **/ - -$.ui.mouse = { - _mouseInit: function() { - var self = this; - - this.element - .bind('mousedown.'+this.widgetName, function(event) { - return self._mouseDown(event); - }) - .bind('click.'+this.widgetName, function(event) { - if(self._preventClickEvent) { - self._preventClickEvent = false; - event.stopImmediatePropagation(); - return false; - } - }); - - // Prevent text selection in IE - if ($.browser.msie) { - this._mouseUnselectable = this.element.attr('unselectable'); - this.element.attr('unselectable', 'on'); - } - - this.started = false; - }, - - // TODO: make sure destroying one instance of mouse doesn't mess with - // other instances of mouse - _mouseDestroy: function() { - this.element.unbind('.'+this.widgetName); - - // Restore text selection in IE - ($.browser.msie - && this.element.attr('unselectable', this._mouseUnselectable)); - }, - - _mouseDown: function(event) { - // don't let more than one widget handle mouseStart - // TODO: figure out why we have to use originalEvent - event.originalEvent = event.originalEvent || {}; - if (event.originalEvent.mouseHandled) { return; } - - // we may have missed mouseup (out of window) - (this._mouseStarted && this._mouseUp(event)); - - this._mouseDownEvent = event; - - var self = this, - btnIsLeft = (event.which == 1), - elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false); - if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { - return true; - } - - this.mouseDelayMet = !this.options.delay; - if (!this.mouseDelayMet) { - this._mouseDelayTimer = setTimeout(function() { - self.mouseDelayMet = true; - }, this.options.delay); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = (this._mouseStart(event) !== false); - if (!this._mouseStarted) { - event.preventDefault(); - return true; - } - } - - // these delegates are required to keep context - this._mouseMoveDelegate = function(event) { - return self._mouseMove(event); - }; - this._mouseUpDelegate = function(event) { - return self._mouseUp(event); - }; - $(document) - .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate) - .bind('mouseup.'+this.widgetName, this._mouseUpDelegate); - - // preventDefault() is used to prevent the selection of text here - - // however, in Safari, this causes select boxes not to be selectable - // anymore, so this fix is needed - ($.browser.safari || event.preventDefault()); - - event.originalEvent.mouseHandled = true; - return true; - }, - - _mouseMove: function(event) { - // IE mouseup check - mouseup happened when mouse was out of window - if ($.browser.msie && !event.button) { - return this._mouseUp(event); - } - - if (this._mouseStarted) { - this._mouseDrag(event); - return event.preventDefault(); - } - - if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { - this._mouseStarted = - (this._mouseStart(this._mouseDownEvent, event) !== false); - (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); - } - - return !this._mouseStarted; - }, - - _mouseUp: function(event) { - $(document) - .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate) - .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate); - - if (this._mouseStarted) { - this._mouseStarted = false; - this._preventClickEvent = (event.target == this._mouseDownEvent.target); - this._mouseStop(event); - } - - return false; - }, - - _mouseDistanceMet: function(event) { - return (Math.max( - Math.abs(this._mouseDownEvent.pageX - event.pageX), - Math.abs(this._mouseDownEvent.pageY - event.pageY) - ) >= this.options.distance - ); - }, - - _mouseDelayMet: function(event) { - return this.mouseDelayMet; - }, - - // These are placeholder methods, to be overriden by extending plugin - _mouseStart: function(event) {}, - _mouseDrag: function(event) {}, - _mouseStop: function(event) {}, - _mouseCapture: function(event) { return true; } -}; - -$.ui.mouse.defaults = { - cancel: null, - distance: 1, - delay: 0 -}; - -})(jQuery); diff --git a/thirdparty/jquery-validate/demo/multipart/style.css b/thirdparty/jquery-validate/demo/multipart/style.css deleted file mode 100644 index fbf08c24f..000000000 --- a/thirdparty/jquery-validate/demo/multipart/style.css +++ /dev/null @@ -1,705 +0,0 @@ -/******************************************** - AUTHOR: Erwin Aligam - WEBSITE: http://www.styleshout.com/ - TEMPLATE NAME: Techmania 1.0 - TEMPLATE CODE: S-0003 - VERSION: 1.1 - *******************************************/ - /******************************************** - HTML ELEMENTS -********************************************/ /* Top elements */ - /** { margin:0; padding: 0; }*/ -body { - background-color: #000; - color: #555; - font: 78%/ 1.6 Verdana, 'Trebuchet MS', arial, sans-serif; - text-align: center; - margin: 15px 0; -} - -/* links */ -a { - color: #213540; - background: inherit; - text-decoration: none; -} - -a:hover { - color: #3e4255; - text-decoration: underline; - background: inherit; -} - -/* headers */ -h1,h2,h3 { - font-family: 'Trebuchet MS', Arial, sans-serif; - font-weight: bold; -} - -h1 { - font-size: 1.5em; - margin: 10px 15px; -} - -h2 { - font-size: 1.3em; - text-transform: uppercase; - color: #339900; - margin: 10px 15px; -} - -h3 { - font-size: 1.1em; - color: #333; - margin: 16px 0 0 18px; -} - -h1,h2,h3 { - padding: 0; -} - -p { - line-height: 1.4em; - padding: 0 15px; -} - -p.error { - color: #CC0033; -} - -ul,ol { - margin: 10px 6px; - padding: 0 15px; - color: #006699; -} - -ul span,ol span { - color: #666666; -} - -/* images */ -img { - border: 2px solid #CCC; -} - -img.float-right { - margin: 5px 0px 10px 10px; -} - -img.float-left { - margin: 5px 10px 10px 0px; -} - -code { - margin: 5px 0; - padding: 10px; - text-align: left; - display: block; - overflow: auto; - font: 500 1em/ 1.5em 'Lucida Console', 'courier new', monospace; - /* white-space: pre; */ - background: #FAFAFA; - border: 1px solid #EAEAEA; - border-left: 5px solid #72A545; -} - -acronym { - cursor: help; - border-bottom: 1px solid #777; -} - -blockquote { - margin: 15px; - padding: 0 0 0 32px; - background: #FAFAFA url(quote.gif) no-repeat 5px 10px !important; - background-position: 8px 10px; - border: 1px solid #EAEAEA; - border-left: 5px solid #72A545; - font-weight: bold; -} - -/* form elements */ -fieldset { - margin: 12px 12px 18px; - padding-left: 6px; - border: 1px solid #004080; - color: #006699; -} - -fieldset fieldset { - border: 1px solid #9ea190; - margin: 17px 14px; -} - -form { - margin: 10px 15px; - padding: 0; -} - -label { - font-weight: bold; - margin: 5px 3px 0 0; - width: 160px; - text-align: right; - float: left; -} - -legend { - font-size: 1.2em; - padding: 0 12px; - font-weight: 900; - background-color: #F9F9F9; -} - -fieldset fieldset legend { - font-size: 1em; - color: #1a2129; - padding: 0 18px; - margin-left: 75px; -} - -input { - padding: 3px; - margin: 4px 0; - border: 1px solid #CFCED3; - font: normal 1em Verdana, sans-serif; - color: #777; -} - -textarea { - width: 400px; - padding: 4px; - font: normal 1em Verdana, sans-serif; - border: 1px solid #eee; - height: 100px; - display: block; - color: #777; -} - -input.button { - margin: 0; - font: bold 12px Arial, Sans-serif; - border: 1px solid #EAEAEA; - padding: 3px 4px; - background: #CCC url(buttonbg.gif) repeat-x left bottom; - color: #333; /* color: #339900; */ - cursor: pointer; -} - -input.submitbutton { - background-color: #006699; - color: #FFF; - background-image: none; - font-weight: 900; - border: 1px solid #EAEAEA; - margin: 0 0 0 200px; -} - -/* search */ -#sidebar #search { - background: #f2f2f2; - margin: 0 15px; - padding: 5px 0; -} - -#sidebar #search img { - vertical-align: bottom; -} - -#sidebar #search .textbox { - background: #FFF url(input.png) no-repeat top left; - border: 1px solid #EAEAEA; - font-size: 11px; - padding: 3px; - width: 110px; -} - -#sidebar #search input.searchbutton { - margin: 0; - font: bold 100% Arial, Sans-serif; - border: 1px solid #CCC; - background: #CCC url(buttonbg.gif) repeat-x left bottom; - padding: 1px; - height: 25px; - color: #333; - width: 55px; -} - -/***************************** - LAYOUT -******************************/ -#wrap { - margin: 0 auto; - padding: 0; - text-align: left; - background-color: #FFF; - width: 790px; -} - -#content-wrap { - clear: both; - margin: 0; - padding: 0; - width: 790px; -} - -/* header */ -#header { - position: relative; - clear: left; - width: 790px; - height: 137px; - margin: 0; - padding: 0; - background: #000 url(headerbg.jpg) no-repeat left bottom; -} - -#header h1#logo-text { - float: right; - margin: 39px 58px 0 0; - padding: 0; - font: bolder 3.2em 'Trebuchet MS', Arial, Sans-serif; - letter-spacing: -2px; - color: #FFF; - text-transform: none; - /* change the values of top and right to adjust the position of the logo*/ - top: 35px; - right: 30px; -} - -#header h2#slogan { - float: right; - margin: 0 38px 0 0; - padding: 0; - font: bold 1.5em 'Trebuchet MS', Arial, Sans-serif; - text-transform: none; - letter-spacing: 1px; - color: #FFF; - clear: both; - text-align: right; -} - -#header h1#logo-text span { - color: #CFCED3; -} - -/* menu tabs */ -#header #header-tabs { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 25px; - background: #000; - font: bold 1.1em Verdana, Tahoma, 'Trebuchet MS', Sans-serif; -} - -#header-tabs ul { - margin: 0; - padding: 2px 0px 0px 0px; - list-style: none; -} - -#header-tabs li { - display: inline; - margin: 0; - padding: 0; -} - -#header-tabs a { - float: left; - background: url(tableft.gif) no-repeat left top; - margin: 0; - padding: 0 0 0 4px; - text-decoration: none; -} - -#header-tabs a span { - float: left; - display: block; - background: url(tabright.gif) no-repeat right top; - padding: 7px 15px 4px 8px; - color: #CCC; -} - -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#header-tabs a span { - float: none; -} - -/* End IE5-Mac hack */ -#header-tabs a:hover span { - color: #FFF; -} - -#header-tabs a:hover { - background-position: 0% -42px; -} - -#header-tabs a:hover span { - background-position: 100% -42px; -} - -#header-tabs #current a { - background-position: 0% -42px; -} - -#header-tabs #current a span { - background-position: 100% -42px; - color: #FFF; -} - -/* main content */ -#main { - width: 748px; - margin: 0; - padding: 8px 16px; - background-color: #F9F9F9; - border-left: 5px solid #000; - border-right: 5px solid #000; -} - -#main h1 { - padding: 8px 0 3px 25px; - text-transform: none; - border-bottom: 2px solid #f2f2f2; - color: #339900; -} - -/* sidebar */ -#sidebar { /* float: right; - width: 245px; - margin: 0 0 10px 0; padding: 0; - background-color: inherit; */ - display: none; -} - -#sidebar h1 { - padding: 8px 0px 3px 25px; - background: url(square_arrow.gif) no-repeat 0% .7em; - text-transform: none; - color: #339900; -} - -#sidebar ul.sidemenu { - list-style: none; - margin: 10px 15px; - padding: 0; -} - -#sidebar ul.sidemenu li { - margin-bottom: 1px; - border: 1px solid #f2f2f2; -} - -#sidebar ul.sidemenu a { - display: block; - font-weight: bold; - color: #333; - text-decoration: none; - padding: 2px 5px 2px 10px; - background: #f2f2f2; - border-left: 5px solid #CCC; - min-height: 18px; -} - -* html body #sidebar ul.sidemenu a { - height: 18px; -} - -#sidebar ul.sidemenu a:hover { - padding: 2px 5px 2px 10px; - background: #f2f2f2; - color: #339900; - border-left: 5px solid #72A545; -} - -/* footer */ -#footer { - clear: both; - height: 40px; - color: #CCC; - background: #000; - margin: 0; - font-size: 92%; -} - -#footer a { - text-decoration: none; - font-weight: bold; - color: #FFF; -} - -#footer #footer-left { - width: 68%; - float: left; - text-align: left; - margin: 0; - padding: 10px; -} - -#footer #footer-right { - width: 25%; - float: right; - text-align: right; - margin: 0; - padding: 10px; -} - -/* alignment classes */ -.float-left { - float: left; -} - -.float-right { - float: right; -} - -.align-left { - text-align: left; -} - -.align-right { - text-align: right; -} - -/* additional classes */ -.clear { - clear: both; -} - -.hide { - display: none; -} - -.gray { - color: #CCC; -} - -.comments { - color: #333; - background: #FFF; - text-align: right; - border-top: 1px dashed #EFF0F1; - border-bottom: 1px dashed #EFF0F1; - padding: 5px 0; - margin-top: 20px; -} - -html { - min-height: 100.1%; -} - -/* ------ one ------------*/ -body .mainText { - font-family: Arial, Helvetica, sans-serif; - font-size: 12px; -} - -#demoText h1,.mainText h1 { - font-size: 130%; - color: #0099FF; - text-decoration: none; - font-family: Arial, Helvetica, sans-serif; - margin: 5px 4px 5px 24px; - background: none; - padding: 0; - border: none; - text-transform: capitalize; -} - -.mainText h2 { - font-size: 110%; - color: #000033; - font-family: Arial, Helvetica, sans-serif; - text-decoration: none; - background: none; - margin: 4px 32px 6px 22px; - text-transform: capitalize; -} - -.mainText h3 { - font-size: 120%; - font-weight: 900; - margin: 14px 0 0 0; - text-align: center; - color: #000033; -} - -.mainText table { - width: 95%; - border: 1px solid #0099FF; - border-collapse: collapse; - margin: 18px 7px; -} - -.mainText table td { - background-color: #99CCFF; - color: #000033; - padding: 4px; -} - -.mainText table th { - background-color: #000033; - color: #99CCFF; - padding: 4px; -} - -.mainText .linkPar a { - color: #000033; - text-decoration: underline; -} - -.mainText .linkPar a:hover { - color: #660033; - text-decoration: none; - font-weight: 900; -} - -.pusher { - cursor: pointer; - padding: 3px 10px 3px 22px; - font-weight: 900; - font-size: 14px; -} - -/* ------------- form specific styles are here -------------- */ -fieldset { - margin: 0; - border: 1px solid #C3DE00; - padding: 10px; - /*border:none; -padding:0;*/ - color: #7563A5; -} - -legend { - background-color: #FFFFFF; - text-align: center; - color: #097981; - padding: 0 12px; -} - -label { - text-align: right; - width: 298px; - border-right: 1px dotted #099; - padding-right: 5px; - margin: 0 0 8px 0; - float: left; - clear: left; - display: block; - color: #7563A5; -} - -label.checkbox,label.textarea { - border: none; -} - -label.lgfield { - border: none; - text-align: center; - clear: both; - float: none; - width: 100%; -} - -fieldset input,fieldset select,fieldset textarea { - margin-left: 10px; - margin-bottom: 8px; -} - -select.longfield { - margin: 0 0 0 115px; -} - -input [type="radio"],input [type="checkbox"] { - margin: 2px 0 0 4px; -} - -textarea { - width: 250px; - float: left; -} - -/*Get Help Form Styles*/ -p.formDisclaimer { - text-align: center; - margin: 32px 24px 12px 0; - font-style: italic; -} - -div.buttonWrapper { - margin: 28px 0 14px 0; - clear: both; - text-align: center; -} - -.formspacer { - height: 1em; - clear: both; -} - -.hideField { - display: none; -} - -.pushOpen { - height: 18em; -} - -/* ----- error message for field validation ----- */ -#stepForm label.warning { - text-align: left; - width: auto; - padding: 0; - margin: 0 0 0 10px; - float: none; - clear: none; - display: inline; - color: #CC3366; - font-size: 10px; - border: none; - border-top: 1px dotted #CC3366; -} - -div.requiredNotice { - width: 140px; - float: right; - margin: 0 24px 0 0; - padding: 0; -} - -h3.stepHeader { - text-align: left; - font-size: 16px; - font-weight: bold; - margin: 0 0 24px 24px; - color: #676cac; -} - -ul#stepForm,ul#stepForm li { - margin: 0; - padding: 0; -} - -ul#stepForm li { - list-style: none; -} - -/* Form Buttons */ -input.submitbutton,.nextbutton,.prevbutton { - width: 100px; - height: 40px; - background-color: #663399; - padding: 4px; - border: 1px solid #339933; - cursor: pointer; - text-align: center; - color: #FFFFFF; - margin: 7px; -} - -input.submitbutton { - background-color: #006699; -} \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/radio-checkbox-select-demo.html b/thirdparty/jquery-validate/demo/radio-checkbox-select-demo.html deleted file mode 100644 index 12c417ca0..000000000 --- a/thirdparty/jquery-validate/demo/radio-checkbox-select-demo.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - -Test for jQuery validate() plugin - - - - - - - - - - - - - - -

    jQuery Validation Plugin Demo

    -
    - -
    -
    - Validating a form with a radio and checkbox buttons -
    - Gender - - - -
    -
    - Family - - - - -
    -

    - - -
    - -

    -
    - Spam - - - - -
    -

    - -

    -
    -
    - -
    -

    Some tests with selects

    -

    -
    - -

    - -

    -
    - -

    - -

    -
    - -

    - -

    -
    - -

    - -

    -
    - -Back to main page - -
    - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/tabs/index.html b/thirdparty/jquery-validate/demo/tabs/index.html deleted file mode 100644 index 8a9f69c3b..000000000 --- a/thirdparty/jquery-validate/demo/tabs/index.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - -jQuery UI tabs integration demo - - - - - - - - - - - - - - -
    - -
    - -
    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -
    -
    -

    - - -

    -

    - - -

    -

    - - - - -

    -
    -
    -

    - - -

    -

    - - -

    -

    - - -

    -
    -
    - - -
    - - - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/themerollered.html b/thirdparty/jquery-validate/demo/themerollered.html deleted file mode 100644 index 445a22bde..000000000 --- a/thirdparty/jquery-validate/demo/themerollered.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - -jQuery validation plug-in - main demo - - - - - - - - - - - - - - - - - - - - -
    -
    - Please provide your name, email address (won't be published) and a comment -

    - - -

    - - -

    -

    - - -

    -

    - - -

    -

    - -

    -
    -
    - -
    -
    - Validating a complete form -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -

    - - -

    -
    - Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo - - - - -
    -

    - -

    -
    -
    - - - - - \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/tinymce/index.html b/thirdparty/jquery-validate/demo/tinymce/index.html deleted file mode 100644 index 8bfd18220..000000000 --- a/thirdparty/jquery-validate/demo/tinymce/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - -jQuery Validation plugin: integration with TinyMCE - - - - - - - - - - -
    -

    TinyMCE and Validation Plugin integration example

    - - - - -
    - - - - -
    - -
    - - - diff --git a/thirdparty/jquery-validate/demo/tinymce/themes/simple/editor_template.js b/thirdparty/jquery-validate/demo/tinymce/themes/simple/editor_template.js deleted file mode 100644 index d19fb53f7..000000000 --- a/thirdparty/jquery-validate/demo/tinymce/themes/simple/editor_template.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+"/skins/"+s.skin+"/content.css");});DOM.loadCSS((s.editor_css?ed.documentBaseURI.toAbsolute(s.editor_css):'')||url+"/skins/"+s.skin+"/ui.css");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar("tools1");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})(); \ No newline at end of file diff --git a/thirdparty/jquery-validate/demo/tinymce/themes/simple/img/icons.gif b/thirdparty/jquery-validate/demo/tinymce/themes/simple/img/icons.gif deleted file mode 100644 index 16af141ff0eea376a889b1e8d28e9c1cacaaab16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1440 zcmV;R1z-9{Nk%w1VaNa!0QUd@Ib*`7v&H}b0P*i`B{WZ*I4YI8{iDPCZ*XyWj;?N! z&ooP8CcKTM%}ImAk&d@bUef&=iA% zhPA3sm56OYcjMRI^s}jof~E0n!SIozxs`y)bZpaM%~elOt(xIz_1F@`xREtxwxO@X zElsNLx;f_MIwnTOux@bk@5r<-;@s){f~fMSskU>S&vlpdmZGk)n^Ks084*pfMo5}`Y)@uBrt7q^ z_xb)XxI@^-XhLVQWPPfUtMQSg&Xb6UQhU2=S3pa1!Lhs1Kwz1)!P59aI6r5pthLM4 zE-ud4`aC>8zybolqcQ$sRq*)W>+kl^)!br%x2LJkVv+Dui1Oh7|6z>ag023Luhg%= z;=sbh)RP30t>V}2$H?fg=;-%zOTU8v0MO8l85I$+z}bYP#G9DS_#hs}n3hj*tissz zAwYQh{QX~VkH5&*9YTcu{{H^`{_yYcW|;u|{Qilm^upTyi?sd!nVG)6{{LrW`s5%! zQETJeu@Y0sB3Qy+jGVB@-BWO)C1U{h_4v@?@UEu*S8lPiucH6>|4vxO2|0#LaF@v0 z@ZaCy@c8hkxVXaB{z|fT@U~;Hv$d$T$J*xpqPpE8TH+G^0=vlI+KzIEuZN}B@UYO} z&dtoGp5{=vw)ErQRcDJbQgSxGf8JYL_`X^{uFH_9uqY`f`}_Of)zF}&w4mVd!0r05 zoM3>k!2kdMA^8LW00930EC2ui0LTCo000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVW@EluM+^lPFV4B&kwhfCK?JZW}S8Lq-x8D(>2KU{_0tBn}8A zagb%p1Q&P-6u`78(}*2LRH3FT;{^Z%ooYoWl!#X%K7Tem@Rf*AgGMWAZK^N;uLKrJ zgqs_6Dufyfw<06~AZA3KR{>nO09GJYj!yq2Mo2^;St0-;UpPxp*8_}f6+Z>JE!?&a z+dPb*b~hYDra%-%J`C}|)xna%9$;-yz|zc`Z6DmMS)p07fiENwe4t=jwVQEwY|=zo zxL=@s=&E6Qp)TGXT_1)l*emUVx)m?~6;Hl)c5^2e&KlH&3v877L9rfP;Fp}T4iu?af8AOXd@5C0(U&fK3z8Av u{UxbK=items.length){for(i=0,l=base.length;i=items.length||base[i]!=items[i]){bp=i+1;break;}}}if(base.length=base.length||base[i]!=items[i]){bp=i+1;break;}}}if(bp==1)return path;for(i=0,l=base.length-(bp-1);i=0;i--){if(path[i].length==0||path[i]==".")continue;if(path[i]=='..'){nb++;continue;}if(nb>0){nb--;continue;}o.push(path[i]);}i=base.length-nb;if(i<=0)return'/'+o.reverse().join('/');return'/'+base.slice(0,i).join('/')+'/'+o.reverse().join('/');},getURI:function(nh){var s,t=this;if(!t.source||nh){s='';if(!nh){if(t.protocol)s+=t.protocol+'://';if(t.userInfo)s+=t.userInfo+'@';if(t.host)s+=t.host;if(t.port)s+=':'+t.port;}if(t.path)s+=t.path;if(t.query)s+='?'+t.query;if(t.anchor)s+='#'+t.anchor;t.source=s;}return t.source;}});})();(function(){var each=tinymce.each;tinymce.create('static tinymce.util.Cookie',{getHash:function(n){var v=this.get(n),h;if(v){each(v.split('&'),function(v){v=v.split('=');h=h||{};h[unescape(v[0])]=unescape(v[1]);});}return h;},setHash:function(n,v,e,p,d,s){var o='';each(v,function(v,k){o+=(!o?'':'&')+escape(k)+'='+escape(v);});this.set(n,o,e,p,d,s);},get:function(n){var c=document.cookie,e,p=n+"=",b;if(!c)return;b=c.indexOf("; "+p);if(b==-1){b=c.indexOf(p);if(b!=0)return null;}else b+=2;e=c.indexOf(";",b);if(e==-1)e=c.length;return unescape(c.substring(b+p.length,e));},set:function(n,v,e,p,d,s){document.cookie=n+"="+escape(v)+((e)?"; expires="+e.toGMTString():"")+((p)?"; path="+escape(p):"")+((d)?"; domain="+d:"")+((s)?"; secure":"");},remove:function(n,p){var d=new Date();d.setTime(d.getTime()-1000);this.set(n,'',d,p,d);}});})();tinymce.create('static tinymce.util.JSON',{serialize:function(o){var i,v,s=tinymce.util.JSON.serialize,t;if(o==null)return'null';t=typeof o;if(t=='string'){v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString(16);return'\\u'+'0000'.substring(a.length)+a;})+'"';}if(t=='object'){if(o instanceof Array){for(i=0,v='[';i0?',':'')+s(o[i]);return v+']';}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}';}return''+o;},parse:function(s){try{return eval('('+s+')');}catch(ex){}}});tinymce.create('static tinymce.util.XHR',{send:function(o){var x,t,w=window,c=0;o.scope=o.scope||this;o.success_scope=o.success_scope||o.scope;o.error_scope=o.error_scope||o.scope;o.async=o.async===false?false:true;o.data=o.data||'';function get(s){x=0;try{x=new ActiveXObject(s);}catch(ex){}return x;};x=w.XMLHttpRequest?new XMLHttpRequest():get('Microsoft.XMLHTTP')||get('Msxml2.XMLHTTP');if(x){if(x.overrideMimeType)x.overrideMimeType(o.content_type);x.open(o.type||(o.data?'POST':'GET'),o.url,o.async);if(o.content_type)x.setRequestHeader('Content-Type',o.content_type);x.send(o.data);function ready(){if(!o.async||x.readyState==4||c++>10000){if(o.success&&c<10000&&x.status==200)o.success.call(o.success_scope,''+x.responseText,x,o);else if(o.error)o.error.call(o.error_scope,c>10000?'TIMED_OUT':'GENERAL',x,o);x=null;}else w.setTimeout(ready,10);};if(!o.async)return ready();t=w.setTimeout(ready,10);}}});(function(){var extend=tinymce.extend,JSON=tinymce.util.JSON,XHR=tinymce.util.XHR;tinymce.create('tinymce.util.JSONRequest',{JSONRequest:function(s){this.settings=extend({},s);this.count=0;},send:function(o){var ecb=o.error,scb=o.success;o=extend(this.settings,o);o.success=function(c,x){c=JSON.parse(c);if(typeof(c)=='undefined'){c={error:'JSON Parse error.'};}if(c.error)ecb.call(o.error_scope||o.scope,c.error,x);else scb.call(o.success_scope||o.scope,c.result);};o.error=function(ty,x){ecb.call(o.error_scope||o.scope,ty,x);};o.data=JSON.serialize({id:o.id||'c'+(this.count++),method:o.method,params:o.params});o.content_type='application/json';XHR.send(o);},'static':{sendRPC:function(o){return new tinymce.util.JSONRequest().send(o);}}});}());(function(){var each=tinymce.each,is=tinymce.is;var isWebKit=tinymce.isWebKit,isIE=tinymce.isIE;tinymce.create('tinymce.dom.DOMUtils',{doc:null,root:null,files:null,listeners:{},pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,cache:{},idPattern:/^#[\w]+$/,elmPattern:/^[\w_*]+$/,elmClassPattern:/^([\w_]*)\.([\w_]+)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(d,s){var t=this;t.doc=d;t.win=window;t.files={};t.cssFlicker=false;t.counter=0;t.boxModel=!tinymce.isIE||d.compatMode=="CSS1Compat";t.stdMode=d.documentMode===8;this.settings=s=tinymce.extend({keep_values:false,hex_colors:1,process_html:1},s);if(tinymce.isIE6){try{d.execCommand('BackgroundImageCache',false,true);}catch(e){t.cssFlicker=true;}}tinymce.addUnload(t.destroy,t);},getRoot:function(){var t=this,s=t.settings;return(s&&t.get(s.root_element))||t.doc.body;},getViewPort:function(w){var d,b;w=!w?this.win:w;d=w.document;b=this.boxModel?d.documentElement:d.body;return{x:w.pageXOffset||b.scrollLeft,y:w.pageYOffset||b.scrollTop,w:w.innerWidth||b.clientWidth,h:w.innerHeight||b.clientHeight};},getRect:function(e){var p,t=this,sr;e=t.get(e);p=t.getPos(e);sr=t.getSize(e);return{x:p.x,y:p.y,w:sr.w,h:sr.h};},getSize:function(e){var t=this,w,h;e=t.get(e);w=t.getStyle(e,'width');h=t.getStyle(e,'height');if(w.indexOf('px')===-1)w=0;if(h.indexOf('px')===-1)h=0;return{w:parseInt(w)||e.offsetWidth||e.clientWidth,h:parseInt(h)||e.offsetHeight||e.clientHeight};},getParent:function(n,f,r){var na,se=this.settings;n=this.get(n);if(se.strict_root)r=r||this.getRoot();if(is(f,'string')){na=f.toUpperCase();f=function(n){var s=false;if(n.nodeType==1&&na==='*'){s=true;return false;}each(na.split(','),function(v){if(n.nodeType==1&&((se.strict&&n.nodeName.toUpperCase()==v)||n.nodeName.toUpperCase()==v)){s=true;return false;}});return s;};}while(n){if(n==r)return null;if(f(n))return n;n=n.parentNode;}return null;},get:function(e){var n;if(e&&this.doc&&typeof(e)=='string'){n=e;e=this.doc.getElementById(e);if(e&&e.id!==n)return this.doc.getElementsByName(n)[1];}return e;},select:function(pa,s){var t=this,cs,c,pl,o=[],x,i,l,n,xp;s=t.get(s)||t.doc;if(s.querySelectorAll){if(s!=t.doc){i=s.id;s.id='_mc_tmp';pa='#_mc_tmp '+pa;}l=tinymce.grep(s.querySelectorAll(pa));s.id=i;return l;}if(!t.selectorRe)t.selectorRe=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@([\w\\]+)([\^\$\*!]?=)([\w\\]+)\])?(?:\:([\w\\]+))?/i;;if(tinymce.isAir){each(tinymce.explode(pa),function(v){if(!(xp=t.cache[v])){xp='';each(v.split(' '),function(v){v=t.selectorRe.exec(v);xp+=v[1]?'//'+v[1]:'//*';if(v[2])xp+="[@id='"+v[2]+"']";if(v[3]){each(v[3].split('.'),function(n){xp+="[@class = '"+n+"' or contains(concat(' ', @class, ' '), ' "+n+" ')]";});}});t.cache[v]=xp;}xp=t.doc.evaluate(xp,s,null,4,null);while(n=xp.iterateNext())o.push(n);});return o;}if(t.settings.strict){function get(s,n){return s.getElementsByTagName(n.toLowerCase());};}else{function get(s,n){return s.getElementsByTagName(n);};}if(t.elmPattern.test(pa)){x=get(s,pa);for(i=0,l=x.length;i=0;i--)cs+='}, '+(i?'n':'s')+');';cs+='})';t.cache[pa]=cs=eval(cs);}cs(isIE?collectIE:collect,s);});each(o,function(n){if(isIE)n.removeAttribute('mce_save');else delete n.mce_save;});return o;},add:function(p,n,a,h,c){var t=this;return this.run(p,function(p){var e,k;e=is(n,'string')?t.doc.createElement(n):n;t.setAttribs(e,a);if(h){if(h.nodeType)e.appendChild(h);else t.setHTML(e,h);}return!c?p.appendChild(e):e;});},create:function(n,a,h){return this.add(this.doc.createElement(n),n,a,h,1);},createHTML:function(n,a,h){var o='',t=this,k;o+='<'+n;for(k in a){if(a.hasOwnProperty(k))o+=' '+k+'="'+t.encode(a[k])+'"';}if(tinymce.is(h))return o+'>'+h+'';return o+' />';},remove:function(n,k){return this.run(n,function(n){var p,g;p=n.parentNode;if(!p)return null;if(k){each(n.childNodes,function(c){p.insertBefore(c.cloneNode(true),n);});}return p.removeChild(n);});},setStyle:function(n,na,v){var t=this;return t.run(n,function(e){var s,i;s=e.style;na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(t.pixelStyles.test(na)&&(tinymce.is(v,'number')||/^[\-0-9\.]+$/.test(v)))v+='px';switch(na){case'opacity':if(isIE){s.filter=v===''?'':"alpha(opacity="+(v*100)+")";if(!n.currentStyle||!n.currentStyle.hasLayout)s.display='inline-block';}s[na]=s['-moz-opacity']=s['-khtml-opacity']=v||'';break;case'float':isIE?s.styleFloat=v:s.cssFloat=v;break;default:s[na]=v||'';}if(t.settings.update_styles)t.setAttrib(e,'mce_style');});},getStyle:function(n,na,c){n=this.get(n);if(!n)return false;if(this.doc.defaultView&&c){na=na.replace(/[A-Z]/g,function(a){return'-'+a;});try{return this.doc.defaultView.getComputedStyle(n,null).getPropertyValue(na);}catch(ex){return null;}}na=na.replace(/-(\D)/g,function(a,b){return b.toUpperCase();});if(na=='float')na=isIE?'styleFloat':'cssFloat';if(n.currentStyle&&c)return n.currentStyle[na];return n.style[na];},setStyles:function(e,o){var t=this,s=t.settings,ol;ol=s.update_styles;s.update_styles=0;each(o,function(v,n){t.setStyle(e,n,v);});s.update_styles=ol;if(s.update_styles)t.setAttrib(e,s.cssText);},setAttrib:function(e,n,v){var t=this;if(!e||!n)return;if(t.settings.strict)n=n.toLowerCase();return this.run(e,function(e){var s=t.settings;switch(n){case"style":if(!is(v,'string')){each(v,function(v,n){t.setStyle(e,n,v);});return;}if(s.keep_values){if(v&&!t._isRes(v))e.setAttribute('mce_style',v,2);else e.removeAttribute('mce_style',2);}e.style.cssText=v;break;case"class":e.className=v||'';break;case"src":case"href":if(s.keep_values){if(s.url_converter)v=s.url_converter.call(s.url_converter_scope||t,v,n,e);t.setAttrib(e,'mce_'+n,v,2);}break;case"shape":e.setAttribute('mce_style',v);break;}if(is(v)&&v!==null&&v.length!==0)e.setAttribute(n,''+v,2);else e.removeAttribute(n,2);});},setAttribs:function(e,o){var t=this;return this.run(e,function(e){each(o,function(v,n){t.setAttrib(e,n,v);});});},getAttrib:function(e,n,dv){var v,t=this;e=t.get(e);if(!e||e.nodeType!==1)return false;if(!is(dv))dv='';if(/^(src|href|style|coords|shape)$/.test(n)){v=e.getAttribute("mce_"+n);if(v)return v;}if(isIE&&t.props[n]){v=e[t.props[n]];v=v&&v.nodeValue?v.nodeValue:v;}if(!v)v=e.getAttribute(n,2);if(n==='style'){v=v||e.style.cssText;if(v){v=t.serializeStyle(t.parseStyle(v));if(t.settings.keep_values&&!t._isRes(v))e.setAttribute('mce_style',v);}}if(isWebKit&&n==="class"&&v)v=v.replace(/(apple|webkit)\-[a-z\-]+/gi,'');if(isIE){switch(n){case'rowspan':case'colspan':if(v===1)v='';break;case'size':if(v==='+0'||v===20)v='';break;case'width':case'height':case'vspace':case'checked':case'disabled':case'readonly':if(v===0)v='';break;case'hspace':if(v===-1)v='';break;case'maxlength':case'tabindex':if(v===32768||v===2147483647||v==='32768')v='';break;case'compact':case'noshade':case'nowrap':if(v===65535)return n;return dv;case'shape':v=v.toLowerCase();break;default:if(n.indexOf('on')===0&&v)v=(''+v).replace(/^function\s+anonymous\(\)\s+\{\s+(.*)\s+\}$/,'$1');}}return(v!==undefined&&v!==null&&v!=='')?''+v:dv;},getPos:function(n){var t=this,x=0,y=0,e,d=t.doc,r;n=t.get(n);if(n&&isIE){n=n.getBoundingClientRect();e=t.boxModel?d.documentElement:d.body;x=t.getStyle(t.select('html')[0],'borderWidth');x=(x=='medium'||t.boxModel&&!t.isIE6)&&2||x;n.top+=t.win.self!=t.win.top?2:0;return{x:n.left+e.scrollLeft-x,y:n.top+e.scrollTop-x};}r=n;while(r){x+=r.offsetLeft||0;y+=r.offsetTop||0;r=r.offsetParent;}r=n;while(r){if(!/^table-row|inline.*/i.test(t.getStyle(r,"display",1))){x-=r.scrollLeft||0;y-=r.scrollTop||0;}r=r.parentNode;if(r==d.body)break;}return{x:x,y:y};},parseStyle:function(st){var t=this,s=t.settings,o={};if(!st)return o;function compress(p,s,ot){var t,r,b,l;t=o[p+'-top'+s];if(!t)return;r=o[p+'-right'+s];if(t!=r)return;b=o[p+'-bottom'+s];if(r!=b)return;l=o[p+'-left'+s];if(b!=l)return;o[ot]=l;delete o[p+'-top'+s];delete o[p+'-right'+s];delete o[p+'-bottom'+s];delete o[p+'-left'+s];};function compress2(ta,a,b,c){var t;t=o[a];if(!t)return;t=o[b];if(!t)return;t=o[c];if(!t)return;o[ta]=o[a]+' '+o[b]+' '+o[c];delete o[a];delete o[b];delete o[c];};st=st.replace(/&(#?[a-z0-9]+);/g,'&$1_MCE_SEMI_');each(st.split(';'),function(v){var sv,ur=[];if(v){v=v.replace(/_MCE_SEMI_/g,';');v=v.replace(/url\([^\)]+\)/g,function(v){ur.push(v);return'url('+ur.length+')';});v=v.split(':');sv=tinymce.trim(v[1]);sv=sv.replace(/url\(([^\)]+)\)/g,function(a,b){return ur[parseInt(b)-1];});sv=sv.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});if(s.url_converter){sv=sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(x,c){return'url('+s.url_converter.call(s.url_converter_scope||t,t.decode(c),'style',null)+')';});}o[tinymce.trim(v[0]).toLowerCase()]=sv;}});compress("border","","border");compress("border","-width","border-width");compress("border","-color","border-color");compress("border","-style","border-style");compress("padding","","padding");compress("margin","","margin");compress2('border','border-width','border-style','border-color');if(isIE){if(o.border=='medium none')o.border='';}return o;},serializeStyle:function(o){var s='';each(o,function(v,k){if(k&&v){if(tinymce.isGecko&&k.indexOf('-moz-')===0)return;switch(k){case'color':case'background-color':v=v.toLowerCase();break;}s+=(s?' ':'')+k+': '+v+';';}});return s;},loadCSS:function(u){var t=this,d=t.doc;if(!u)u='';each(u.split(','),function(u){if(t.files[u])return;t.files[u]=true;t.add(t.select('head')[0],'link',{rel:'stylesheet',href:tinymce._addVer(u)});});},addClass:function(e,c){return this.run(e,function(e){var o;if(!c)return 0;if(this.hasClass(e,c))return e.className;o=this.removeClass(e,c);return e.className=(o!=''?(o+' '):'')+c;});},removeClass:function(e,c){var t=this,re;return t.run(e,function(e){var v;if(t.hasClass(e,c)){if(!re)re=new RegExp("(^|\\s+)"+c+"(\\s+|$)","g");v=e.className.replace(re,' ');return e.className=tinymce.trim(v!=' '?v:'');}return e.className;});},hasClass:function(n,c){n=this.get(n);if(!n||!c)return false;return(' '+n.className+' ').indexOf(' '+c+' ')!==-1;},show:function(e){return this.setStyle(e,'display','block');},hide:function(e){return this.setStyle(e,'display','none');},isHidden:function(e){e=this.get(e);return!e||e.style.display=='none'||this.getStyle(e,'display')=='none';},uniqueId:function(p){return(!p?'mce_':p)+(this.counter++);},setHTML:function(e,h){var t=this;return this.run(e,function(e){var x,i,nl,n,p,x;h=t.processHTML(h);if(isIE){function set(){try{e.innerHTML='
    '+h;e.removeChild(e.firstChild);}catch(ex){while(e.firstChild)e.firstChild.removeNode();x=t.create('div');x.innerHTML='
    '+h;each(x.childNodes,function(n,i){if(i)e.appendChild(n);});}};if(t.settings.fix_ie_paragraphs)h=h.replace(/

    <\/p>|]+)><\/p>|/gi,' 

    ');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("p");for(i=nl.length-1,x=0;i>=0;i--){n=nl[i];if(!n.hasChildNodes()){if(!n.mce_keep){x=1;break;}n.removeAttribute('mce_keep');}}}if(x){h=h.replace(/

    ]+)>|

    /g,'

    ');h=h.replace(/<\/p>/g,'
    ');set();if(t.settings.fix_ie_paragraphs){nl=e.getElementsByTagName("DIV");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.mce_tmp){p=t.doc.createElement('p');n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(a,b){var v;if(b!=='mce_tmp'){v=n.getAttribute(b);if(!v&&b==='class')v=n.className;p.setAttribute(b,v);}});for(x=0;x|]+)>/gi,'<$1b$2>');h=h.replace(/<(\/?)em>|]+)>/gi,'<$1i$2>');}else if(isIE){h=h.replace(/'/g,''');h=h.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi,'');}h=h.replace(/]+)\/>|/gi,'');if(s.keep_values){if(/)/g,'\n');s=s.replace(/^[\r\n]*|[\r\n]*$/g,'');s=s.replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g,'');return s;};h=h.replace(/]+|)>([\s\S]*?)<\/script>/g,function(v,a,b){b=trim(b);if(!a)a=' type="text/javascript"';if(b)b='';return''+b+'';});h=h.replace(/]+|)>([\s\S]*?)<\/style>/g,function(v,a,b){b=trim(b);return''+b+'';});}h=h.replace(//g,'');h=h.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi,function(a,n){function handle(m,b,c){var u=c;if(a.indexOf('mce_'+b)!=-1)return m;if(b=='style'){if(t._isRes(c))return m;if(s.hex_colors){u=u.replace(/rgb\([^\)]+\)/g,function(v){return t.toHex(v);});}if(s.url_converter){u=u.replace(/url\([\'\"]?([^\)\'\"]+)\)/g,function(x,c){return'url('+t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n))+')';});}}else if(b!='coords'&&b!='shape'){if(s.url_converter)u=t.encode(s.url_converter.call(s.url_converter_scope||t,t.decode(c),b,n));}return' '+b+'="'+c+'" mce_'+b+'="'+u+'"';};a=a.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi,handle);a=a.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi,handle);return a.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi,handle);});}return h;},getOuterHTML:function(e){var d;e=this.get(e);if(!e)return null;if(isIE)return e.outerHTML;d=(e.ownerDocument||this.doc).createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML;},setOuterHTML:function(e,h,d){var t=this;return this.run(e,function(e){var n,tp;e=t.get(e);d=d||e.ownerDocument||t.doc;if(isIE&&e.nodeType==1)e.outerHTML=h;else{tp=d.createElement("body");tp.innerHTML=h;n=tp.lastChild;while(n){t.insertAfter(n.cloneNode(true),e);n=n.previousSibling;}t.remove(e);}});},decode:function(s){var e,n,v;if(/&[^;]+;/.test(s)){e=this.doc.createElement("div");e.innerHTML=s;n=e.firstChild;v='';if(n){do{v+=n.nodeValue;}while(n.nextSibling);}return v||s;}return s;},encode:function(s){return s?(''+s).replace(/[<>&\"]/g,function(c,b){switch(c){case'&':return'&';case'"':return'"';case'<':return'<';case'>':return'>';}return c;}):s;},insertAfter:function(n,r){var t=this;r=t.get(r);return this.run(n,function(n){var p,ns;p=r.parentNode;ns=r.nextSibling;if(ns)p.insertBefore(n,ns);else p.appendChild(n);return n;});},isBlock:function(n){if(n.nodeType&&n.nodeType!==1)return false;n=n.nodeName||n;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);},replace:function(n,o,k){if(is(o,'array'))n=n.cloneNode(true);return this.run(o,function(o){if(k){each(o.childNodes,function(c){n.appendChild(c.cloneNode(true));});}return o.parentNode.replaceChild(n,o);});},toHex:function(s){var c=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);function hex(s){s=parseInt(s).toString(16);return s.length>1?s:'0'+s;};if(c){s='#'+hex(c[1])+hex(c[2])+hex(c[3]);return s;}return s;},getClasses:function(){var t=this,cl=[],i,lo={},f=t.settings.class_filter,ov;if(t.classes)return t.classes;function addClasses(s){each(s.imports,function(r){addClasses(r);});each(s.cssRules||s.rules,function(r){switch(r.type||1){case 1:if(r.selectorText){each(r.selectorText.split(','),function(v){v=v.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(v)||!/\.[\w\-]+$/.test(v))return;ov=v;v=v.replace(/.*\.([a-z0-9_\-]+).*/i,'$1');if(f&&!(v=f(v,ov)))return;if(!lo[v]){cl.push({'class':v});lo[v]=1;}});}break;case 3:addClasses(r.styleSheet);break;}});};try{each(t.doc.styleSheets,addClasses);}catch(ex){}if(cl.length>0)t.classes=cl;return cl;},run:function(e,f,s){var t=this,o;if(t.doc&&typeof(e)==='string')e=t.get(e);if(!e)return false;s=s||this;if(!e.nodeType&&(e.length||e.length===0)){o=[];each(e,function(e,i){if(e){if(typeof(e)=='string')e=t.doc.getElementById(e);o.push(f.call(s,e,i));}});return o;}return f.call(s,e);},getAttribs:function(n){var o;n=this.get(n);if(!n)return[];if(isIE){o=[];if(n.nodeName=='OBJECT')return n.attributes;n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi,function(a,b){o.push({specified:1,nodeName:b});});return o;}return n.attributes;},destroy:function(s){var t=this;t.win=t.doc=t.root=null;if(!s)tinymce.removeUnload(t.destroy);},_isRes:function(c){return/^(top|left|bottom|right|width|height)/i.test(c)||/;\s*(top|left|bottom|right|width|height)/i.test(c);}});tinymce.DOM=new tinymce.dom.DOMUtils(document,{process_html:0});})();(function(){var each=tinymce.each,DOM=tinymce.DOM,isIE=tinymce.isIE,isWebKit=tinymce.isWebKit,Event;tinymce.create('static tinymce.dom.Event',{inits:[],events:[],add:function(o,n,f,s){var cb,t=this,el=t.events,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.add(o,n,f,s));});return r;}o=DOM.get(o);if(!o)return;cb=function(e){e=e||window.event;if(e&&!e.target&&isIE)e.target=e.srcElement;if(!s)return f(e);return f.call(s,e);};if(n=='unload'){tinymce.unloads.unshift({func:cb});return cb;}if(n=='init'){if(t.domLoaded)cb();else t.inits.push(cb);return cb;}el.push({obj:o,name:n,func:f,cfunc:cb,scope:s});t._add(o,n,cb);return f;},remove:function(o,n,f){var t=this,a=t.events,s=false,r;if(o&&o instanceof Array){r=[];each(o,function(o){o=DOM.get(o);r.push(t.remove(o,n,f));});return r;}o=DOM.get(o);each(a,function(e,i){if(e.obj==o&&e.name==n&&(!f||(e.func==f||e.cfunc==f))){a.splice(i,1);t._remove(o,n,e.cfunc);s=true;return false;}});return s;},clear:function(o){var t=this,a=t.events,i,e;if(o){o=DOM.get(o);for(i=a.length-1;i>=0;i--){e=a[i];if(e.obj===o){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;a.splice(i,1);}}}},cancel:function(e){if(!e)return false;this.stop(e);return this.prevent(e);},stop:function(e){if(e.stopPropagation)e.stopPropagation();else e.cancelBubble=true;return false;},prevent:function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false;return false;},_unload:function(){var t=Event;each(t.events,function(e,i){t._remove(e.obj,e.name,e.cfunc);e.obj=e.cfunc=null;});t.events=[];t=null;},_add:function(o,n,f){if(o.attachEvent)o.attachEvent('on'+n,f);else if(o.addEventListener)o.addEventListener(n,f,false);else o['on'+n]=f;},_remove:function(o,n,f){if(o){try{if(o.detachEvent)o.detachEvent('on'+n,f);else if(o.removeEventListener)o.removeEventListener(n,f,false);else o['on'+n]=null;}catch(ex){}}},_pageInit:function(){var e=Event;if(e.domLoaded)return;e._remove(window,'DOMContentLoaded',e._pageInit);e.domLoaded=true;each(e.inits,function(c){c();});e.inits=[];},_wait:function(){var t;if(window.tinyMCE_GZ&&tinyMCE_GZ.loaded){Event.domLoaded=1;return;}if(isIE&&document.location.protocol!='https:'){document.write('';bi=s.body_id||'tinymce';if(bi.indexOf('=')!=-1){bi=t.getParam('body_id','','hash');bi=bi[t.id]||bi;}bc=s.body_class||'';if(bc.indexOf('=')!=-1){bc=t.getParam('body_class','','hash');bc=bc[t.id]||'';}t.iframeHTML+='';if(tinymce.relaxedDomain){if(isIE||(tinymce.isOpera&&parseFloat(opera.version())>=9.5))u='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()';else if(tinymce.isOpera)u='javascript:(function(){document.open();document.domain="'+document.domain+'";document.close();ed.setupIframe();})()';}n=DOM.add(o.iframeContainer,'iframe',{id:t.id+"_ifr",src:u||'javascript:""',frameBorder:'0',style:{width:'100%',height:h}});t.contentAreaContainer=o.iframeContainer;DOM.get(o.editorContainer).style.display=t.orgDisplay;DOM.get(t.id).style.display='none';if(tinymce.isOldWebKit){Event.add(n,'load',t.setupIframe,t);n.src=tinymce.baseURL+'/plugins/safari/blank.htm';}else{if(!isIE||!tinymce.relaxedDomain)t.setupIframe();e=n=o=null;}},setupIframe:function(){var t=this,s=t.settings,e=DOM.get(t.id),d=t.getDoc(),h,b;if(!isIE||!tinymce.relaxedDomain){d.open();d.write(t.iframeHTML);d.close();}if(!isIE){try{if(!s.readonly)d.designMode='On';}catch(ex){}}if(isIE){b=t.getBody();DOM.hide(b);if(!s.readonly)b.contentEditable=true;DOM.show(b);}t.dom=new tinymce.DOM.DOMUtils(t.getDoc(),{keep_values:true,url_converter:t.convertURL,url_converter_scope:t,hex_colors:s.force_hex_style_colors,class_filter:s.class_filter,update_styles:1,fix_ie_paragraphs:1});t.serializer=new tinymce.dom.Serializer({entity_encoding:s.entity_encoding,entities:s.entities,valid_elements:s.verify_html===false?'*[*]':s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,invalid_elements:s.invalid_elements,fix_table_elements:s.fix_table_elements,fix_list_elements:s.fix_list_elements,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans,font_size_classes:s.font_size_classes,font_size_style_values:s.font_size_style_values,apply_source_formatting:s.apply_source_formatting,remove_linebreaks:s.remove_linebreaks,element_format:s.element_format,dom:t.dom});t.selection=new tinymce.dom.Selection(t.dom,t.getWin(),t.serializer);t.forceBlocks=new tinymce.ForceBlocks(t,{forced_root_block:s.forced_root_block});t.editorCommands=new tinymce.EditorCommands(t);t.serializer.onPreProcess.add(function(se,o){return t.onPreProcess.dispatch(t,o,se);});t.serializer.onPostProcess.add(function(se,o){return t.onPostProcess.dispatch(t,o,se);});t.onPreInit.dispatch(t);if(!s.gecko_spellcheck)t.getBody().spellcheck=0;if(!s.readonly)t._addEvents();t.controlManager.onPostRender.dispatch(t,t.controlManager);t.onPostRender.dispatch(t);if(s.directionality)t.getBody().dir=s.directionality;if(s.nowrap)t.getBody().style.whiteSpace="nowrap";if(s.auto_resize)t.onNodeChange.add(t.resizeToContent,t);if(s.custom_elements){function handleCustom(ed,o){each(explode(s.custom_elements),function(v){var n;if(v.indexOf('~')===0){v=v.substring(1);n='span';}else n='div';o.content=o.content.replace(new RegExp('<('+v+')([^>]*)>','g'),'<'+n+' mce_name="$1"$2>');o.content=o.content.replace(new RegExp('','g'),'');});};t.onBeforeSetContent.add(handleCustom);t.onPostProcess.add(function(ed,o){if(o.set)handleCustom(ed,o)});}if(s.handle_node_change_callback){t.onNodeChange.add(function(ed,cm,n){t.execCallback('handle_node_change_callback',t.id,n,-1,-1,true,t.selection.isCollapsed());});}if(s.save_callback){t.onSaveContent.add(function(ed,o){var h=t.execCallback('save_callback',t.id,o.content,t.getBody());if(h)o.content=h;});}if(s.onchange_callback){t.onChange.add(function(ed,l){t.execCallback('onchange_callback',t,l);});}if(s.convert_newlines_to_brs){t.onBeforeSetContent.add(function(ed,o){if(o.initial)o.content=o.content.replace(/\r?\n/g,'
    ');});}if(s.fix_nesting&&isIE){t.onBeforeSetContent.add(function(ed,o){o.content=t._fixNesting(o.content);});}if(s.preformatted){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^\s*/,'');o.content=o.content.replace(/<\/pre>\s*$/,'');if(o.set)o.content='
    '+o.content+'
    ';});}if(s.verify_css_classes){t.serializer.attribValueFilter=function(n,v){var s,cl;if(n=='class'){if(!t.classesRE){cl=t.dom.getClasses();if(cl.length>0){s='';each(cl,function(o){s+=(s?'|':'')+o['class'];});t.classesRE=new RegExp('('+s+')','gi');}}return!t.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v)||t.classesRE.test(v)?v:'';}return v;};}if(s.convert_fonts_to_spans)t._convertFonts();if(s.inline_styles)t._convertInlineElements();if(s.cleanup_callback){t.onBeforeSetContent.add(function(ed,o){o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);});t.onPreProcess.add(function(ed,o){if(o.set)t.execCallback('cleanup_callback','insert_to_editor_dom',o.node,o);if(o.get)t.execCallback('cleanup_callback','get_from_editor_dom',o.node,o);});t.onPostProcess.add(function(ed,o){if(o.set)o.content=t.execCallback('cleanup_callback','insert_to_editor',o.content,o);if(o.get)o.content=t.execCallback('cleanup_callback','get_from_editor',o.content,o);});}if(s.save_callback){t.onGetContent.add(function(ed,o){if(o.save)o.content=t.execCallback('save_callback',t.id,o.content,t.getBody());});}if(s.handle_event_callback){t.onEvent.add(function(ed,e,o){if(t.execCallback('handle_event_callback',e,ed,o)===false)Event.cancel(e);});}t.onSetContent.add(function(){t.addVisual(t.getBody());});if(s.padd_empty_editor){t.onPostProcess.add(function(ed,o){o.content=o.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
    [\r\n]*)$/,'');});}if(isGecko&&!s.readonly){try{d.designMode='Off';d.designMode='On';}catch(ex){}}setTimeout(function(){if(t.removed)return;t.load({initial:true,format:(s.cleanup_on_startup?'html':'raw')});t.startContent=t.getContent({format:'raw'});t.undoManager.add({initial:true});t.initialized=true;t.onInit.dispatch(t);t.execCallback('setupcontent_callback',t.id,t.getBody(),t.getDoc());t.execCallback('init_instance_callback',t);t.focus(true);t.nodeChanged({initial:1});if(s.content_css){tinymce.each(explode(s.content_css),function(u){t.dom.loadCSS(t.documentBaseURI.toAbsolute(u));});}if(s.auto_focus){setTimeout(function(){var ed=EditorManager.get(s.auto_focus);ed.selection.select(ed.getBody(),1);ed.selection.collapse(1);ed.getWin().focus();},100);}},1);e=null;},focus:function(sf){var oed,t=this,ce=t.settings.content_editable;if(!sf){if(!ce&&(!isIE||t.selection.getNode().ownerDocument!=t.getDoc()))t.getWin().focus();}if(EditorManager.activeEditor!=t){if((oed=EditorManager.activeEditor)!=null)oed.onDeactivate.dispatch(oed,t);t.onActivate.dispatch(t,oed);}EditorManager._setActive(t);},execCallback:function(n){var t=this,f=t.settings[n],s;if(!f)return;if(t.callbackLookup&&(s=t.callbackLookup[n])){f=s.func;s=s.scope;}if(is(f,'string')){s=f.replace(/\.\w+$/,'');s=s?tinymce.resolve(s):0;f=tinymce.resolve(f);t.callbackLookup=t.callbackLookup||{};t.callbackLookup[n]={func:f,scope:s};}return f.apply(s||t,Array.prototype.slice.call(arguments,1));},translate:function(s){var c=this.settings.language||'en',i18n=EditorManager.i18n;if(!s)return'';return i18n[c+'.'+s]||s.replace(/{\#([^}]+)\}/g,function(a,b){return i18n[c+'.'+b]||'{#'+b+'}';});},getLang:function(n,dv){return EditorManager.i18n[(this.settings.language||'en')+'.'+n]||(is(dv)?dv:'{#'+n+'}');},getParam:function(n,dv,ty){var tr=tinymce.trim,v=is(this.settings[n])?this.settings[n]:dv,o;if(ty==='hash'){o={};if(is(v,'string')){each(v.indexOf('=')>0?v.split(/[;,](?![^=;,]*(?:[;,]|$))/):v.split(','),function(v){v=v.split('=');if(v.length>1)o[tr(v[0])]=tr(v[1]);else o[tr(v[0])]=tr(v);});}else o=v;return o;}return v;},nodeChanged:function(o){var t=this,s=t.selection,n=s.getNode()||t.getBody();if(t.initialized){t.onNodeChange.dispatch(t,o?o.controlManager||t.controlManager:t.controlManager,isIE&&n.ownerDocument!=t.getDoc()?t.getBody():n,s.isCollapsed(),o);}},addButton:function(n,s){var t=this;t.buttons=t.buttons||{};t.buttons[n]=s;},addCommand:function(n,f,s){this.execCommands[n]={func:f,scope:s||this};},addQueryStateHandler:function(n,f,s){this.queryStateCommands[n]={func:f,scope:s||this};},addQueryValueHandler:function(n,f,s){this.queryValueCommands[n]={func:f,scope:s||this};},addShortcut:function(pa,desc,cmd_func,sc){var t=this,c;if(!t.settings.custom_shortcuts)return false;t.shortcuts=t.shortcuts||{};if(is(cmd_func,'string')){c=cmd_func;cmd_func=function(){t.execCommand(c,false,null);};}if(is(cmd_func,'object')){c=cmd_func;cmd_func=function(){t.execCommand(c[0],c[1],c[2]);};}each(explode(pa),function(pa){var o={func:cmd_func,scope:sc||this,desc:desc,alt:false,ctrl:false,shift:false};each(explode(pa,'+'),function(v){switch(v){case'alt':case'ctrl':case'shift':o[v]=true;break;default:o.charCode=v.charCodeAt(0);o.keyCode=v.toUpperCase().charCodeAt(0);}});t.shortcuts[(o.ctrl?'ctrl':'')+','+(o.alt?'alt':'')+','+(o.shift?'shift':'')+','+o.keyCode]=o;});return true;},execCommand:function(cmd,ui,val,a){var t=this,s=0,o,st;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd)&&(!a||!a.skip_focus))t.focus();o={};t.onBeforeExecCommand.dispatch(t,cmd,ui,val,o);if(o.terminate)return false;if(t.execCallback('execcommand_callback',t.id,t.selection.getNode(),cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(o=t.execCommands[cmd]){st=o.func.call(o.scope,ui,val);if(st!==true){t.onExecCommand.dispatch(t,cmd,ui,val,a);return st;}}each(t.plugins,function(p){if(p.execCommand&&p.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);s=1;return false;}});if(s)return true;if(t.theme.execCommand&&t.theme.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}if(t.editorCommands.execCommand(cmd,ui,val)){t.onExecCommand.dispatch(t,cmd,ui,val,a);return true;}t.getDoc().execCommand(cmd,ui,val);t.onExecCommand.dispatch(t,cmd,ui,val,a);},queryCommandState:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryStateCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandState(c);if(o!==-1)return o;try{return this.getDoc().queryCommandState(c);}catch(ex){}},queryCommandValue:function(c){var t=this,o,s;if(t._isHidden())return;if(o=t.queryValueCommands[c]){s=o.func.call(o.scope);if(s!==true)return s;}o=t.editorCommands.queryCommandValue(c);if(is(o))return o;try{return this.getDoc().queryCommandValue(c);}catch(ex){}},show:function(){var t=this;DOM.show(t.getContainer());DOM.hide(t.id);t.load();},hide:function(){var t=this,d=t.getDoc();if(isIE&&d)d.execCommand('SelectAll');t.save();DOM.hide(t.getContainer());DOM.setStyle(t.id,'display',t.orgDisplay);},isHidden:function(){return!DOM.isHidden(this.id);},setProgressState:function(b,ti,o){this.onSetProgressState.dispatch(this,b,ti,o);return b;},resizeToContent:function(){var t=this;DOM.setStyle(t.id+"_ifr",'height',t.getBody().scrollHeight);},load:function(o){var t=this,e=t.getElement(),h;if(e){o=o||{};o.load=true;h=t.setContent(is(e.value)?e.value:e.innerHTML,o);o.element=e;if(!o.no_events)t.onLoadContent.dispatch(t,o);o.element=e=null;return h;}},save:function(o){var t=this,e=t.getElement(),h,f;if(!e||!t.initialized)return;o=o||{};o.save=true;if(!o.no_events){t.undoManager.typing=0;t.undoManager.add();}o.element=e;h=o.content=t.getContent(o);if(!o.no_events)t.onSaveContent.dispatch(t,o);h=o.content;if(!/TEXTAREA|INPUT/i.test(e.nodeName)){e.innerHTML=h;if(f=DOM.getParent(t.id,'form')){each(f.elements,function(e){if(e.name==t.id){e.value=h;return false;}});}}else e.value=h;o.element=e=null;return h;},setContent:function(h,o){var t=this;o=o||{};o.format=o.format||'html';o.set=true;o.content=h;if(!o.no_events)t.onBeforeSetContent.dispatch(t,o);if(!tinymce.isIE&&(h.length===0||/^\s+$/.test(h))){o.content=t.dom.setHTML(t.getBody(),'
    ');o.format='raw';}o.content=t.dom.setHTML(t.getBody(),tinymce.trim(o.content));if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;o.content=t.dom.setHTML(t.getBody(),t.serializer.serialize(t.getBody(),o));}if(!o.no_events)t.onSetContent.dispatch(t,o);return o.content;},getContent:function(o){var t=this,h;o=o||{};o.format=o.format||'html';o.get=true;if(!o.no_events)t.onBeforeGetContent.dispatch(t,o);if(o.format!='raw'&&t.settings.cleanup){o.getInner=true;h=t.serializer.serialize(t.getBody(),o);}else h=t.getBody().innerHTML;h=h.replace(/^\s*|\s*$/g,'');o.content=h;if(!o.no_events)t.onGetContent.dispatch(t,o);return o.content;},isDirty:function(){var t=this;return tinymce.trim(t.startContent)!=tinymce.trim(t.getContent({format:'raw',no_events:1}))&&!t.isNotDirty;},getContainer:function(){var t=this;if(!t.container)t.container=DOM.get(t.editorContainer||t.id+'_parent');return t.container;},getContentAreaContainer:function(){return this.contentAreaContainer;},getElement:function(){return DOM.get(this.settings.content_element||this.id);},getWin:function(){var t=this,e;if(!t.contentWindow){e=DOM.get(t.id+"_ifr");if(e)t.contentWindow=e.contentWindow;}return t.contentWindow;},getDoc:function(){var t=this,w;if(!t.contentDocument){w=t.getWin();if(w)t.contentDocument=w.document;}return t.contentDocument;},getBody:function(){return this.bodyElement||this.getDoc().body;},convertURL:function(u,n,e){var t=this,s=t.settings;if(s.urlconverter_callback)return t.execCallback('urlconverter_callback',u,e,true,n);if(!s.convert_urls||(e&&e.nodeName=='LINK')||u.indexOf('file:')===0)return u;if(s.relative_urls)return t.documentBaseURI.toRelative(u);u=t.documentBaseURI.toAbsolute(u,s.remove_script_host);return u;},addVisual:function(e){var t=this,s=t.settings;e=e||t.getBody();if(!is(t.hasVisual))t.hasVisual=s.visual;each(t.dom.select('table,a',e),function(e){var v;switch(e.nodeName){case'TABLE':v=t.dom.getAttrib(e,'border');if(!v||v=='0'){if(t.hasVisual)t.dom.addClass(e,s.visual_table_class);else t.dom.removeClass(e,s.visual_table_class);}return;case'A':v=t.dom.getAttrib(e,'name');if(v){if(t.hasVisual)t.dom.addClass(e,'mceItemAnchor');else t.dom.removeClass(e,'mceItemAnchor');}return;}});t.onVisualAid.dispatch(t,e,t.hasVisual);},remove:function(){var t=this,e=t.getContainer();t.removed=1;t.hide();t.execCallback('remove_instance_callback',t);t.onRemove.dispatch(t);t.onExecCommand.listeners=[];EditorManager.remove(t);DOM.remove(e);},destroy:function(s){var t=this;if(t.destroyed)return;if(!s){tinymce.removeUnload(t.destroy);tinyMCE.onBeforeUnload.remove(t._beforeUnload);if(t.theme.destroy)t.theme.destroy();t.controlManager.destroy();t.selection.destroy();t.dom.destroy();if(!t.settings.content_editable){Event.clear(t.getWin());Event.clear(t.getDoc());}Event.clear(t.getBody());Event.clear(t.formElement);}if(t.formElement){t.formElement.submit=t.formElement._mceOldSubmit;t.formElement._mceOldSubmit=null;}t.contentAreaContainer=t.formElement=t.container=t.settings.content_element=t.bodyElement=t.contentDocument=t.contentWindow=null;if(t.selection)t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null;t.destroyed=1;},_addEvents:function(){var t=this,i,s=t.settings,lo={mouseup:'onMouseUp',mousedown:'onMouseDown',click:'onClick',keyup:'onKeyUp',keydown:'onKeyDown',keypress:'onKeyPress',submit:'onSubmit',reset:'onReset',contextmenu:'onContextMenu',dblclick:'onDblClick',paste:'onPaste'};function eventHandler(e,o){var ty=e.type;if(t.removed)return;if(t.onEvent.dispatch(t,e,o)!==false){t[lo[e.fakeType||e.type]].dispatch(t,e,o);}};each(lo,function(v,k){switch(k){case'contextmenu':if(tinymce.isOpera){Event.add(t.getBody(),'mousedown',function(e){if(e.ctrlKey){e.fakeType='contextmenu';eventHandler(e);}});}else Event.add(t.getBody(),k,eventHandler);break;case'paste':Event.add(t.getBody(),k,function(e){var tx,h,el,r;if(e.clipboardData)tx=e.clipboardData.getData('text/plain');else if(tinymce.isIE)tx=t.getWin().clipboardData.getData('Text');eventHandler(e,{text:tx,html:h});});break;case'submit':case'reset':Event.add(t.getElement().form||DOM.getParent(t.id,'form'),k,eventHandler);break;default:Event.add(s.content_editable?t.getBody():t.getDoc(),k,eventHandler);}});Event.add(s.content_editable?t.getBody():(isGecko?t.getDoc():t.getWin()),'focus',function(e){t.focus(true);});if(tinymce.isGecko){Event.add(t.getDoc(),'DOMNodeInserted',function(e){var v;e=e.target;if(e.nodeType===1&&e.nodeName==='IMG'&&(v=e.getAttribute('mce_src')))e.src=t.documentBaseURI.toAbsolute(v);});}if(isGecko){function setOpts(){var t=this,d=t.getDoc(),s=t.settings;if(isGecko&&!s.readonly){if(t._isHidden()){try{if(!s.content_editable)d.designMode='On';}catch(ex){}}try{d.execCommand("styleWithCSS",0,false);}catch(ex){if(!t._isHidden())try{d.execCommand("useCSS",0,true);}catch(ex){}}if(!s.table_inline_editing)try{d.execCommand('enableInlineTableEditing',false,false);}catch(ex){}if(!s.object_resizing)try{d.execCommand('enableObjectResizing',false,false);}catch(ex){}}};t.onBeforeExecCommand.add(setOpts);t.onMouseDown.add(setOpts);}t.onMouseUp.add(t.nodeChanged);t.onClick.add(t.nodeChanged);t.onKeyUp.add(function(ed,e){var c=e.keyCode;if((c>=33&&c<=36)||(c>=37&&c<=40)||c==13||c==45||c==46||c==8||(tinymce.isMac&&(c==91||c==93))||e.ctrlKey)t.nodeChanged();});t.onReset.add(function(){t.setContent(t.startContent,{format:'raw'});});if(t.getParam('tab_focus')){function tabCancel(ed,e){if(e.keyCode===9)return Event.cancel(e);};function tabHandler(ed,e){var x,i,f,el,v;function find(d){f=DOM.getParent(ed.id,'form');el=f.elements;if(f){each(el,function(e,i){if(e.id==ed.id){x=i;return false;}});if(d>0){for(i=x+1;i=0;i--){if(el[i].type!='hidden')return el[i];}}}return null;};if(e.keyCode===9){v=explode(ed.getParam('tab_focus'));if(v.length==1){v[1]=v[0];v[0]=':prev';}if(e.shiftKey){if(v[0]==':prev')el=find(-1);else el=DOM.get(v[0]);}else{if(v[1]==':next')el=find(1);else el=DOM.get(v[1]);}if(el){if(ed=EditorManager.get(el.id||el.name))ed.focus();else window.setTimeout(function(){window.focus();el.focus();},10);return Event.cancel(e);}}};t.onKeyUp.add(tabCancel);if(isGecko){t.onKeyPress.add(tabHandler);t.onKeyDown.add(tabCancel);}else t.onKeyDown.add(tabHandler);}if(s.custom_shortcuts){if(s.custom_undo_redo_keyboard_shortcuts){t.addShortcut('ctrl+z',t.getLang('undo_desc'),'Undo');t.addShortcut('ctrl+y',t.getLang('redo_desc'),'Redo');}if(isGecko){t.addShortcut('ctrl+b',t.getLang('bold_desc'),'Bold');t.addShortcut('ctrl+i',t.getLang('italic_desc'),'Italic');t.addShortcut('ctrl+u',t.getLang('underline_desc'),'Underline');}for(i=1;i<=6;i++)t.addShortcut('ctrl+'+i,'',['FormatBlock',false,'']);t.addShortcut('ctrl+7','',['FormatBlock',false,'

    ']);t.addShortcut('ctrl+8','',['FormatBlock',false,'

    ']);t.addShortcut('ctrl+9','',['FormatBlock',false,'
    ']);function find(e){var v=null;if(!e.altKey&&!e.ctrlKey&&!e.metaKey)return v;each(t.shortcuts,function(o){if(tinymce.isMac&&o.ctrl!=e.metaKey)return;else if(!tinymce.isMac&&o.ctrl!=e.ctrlKey)return;if(o.alt!=e.altKey)return;if(o.shift!=e.shiftKey)return;if(e.keyCode==o.keyCode||(e.charCode&&e.charCode==o.charCode)){v=o;return false;}});return v;};t.onKeyUp.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyPress.add(function(ed,e){var o=find(e);if(o)return Event.cancel(e);});t.onKeyDown.add(function(ed,e){var o=find(e);if(o){o.func.call(o.scope);return Event.cancel(e);}});}if(tinymce.isIE){Event.add(t.getDoc(),'controlselect',function(e){var re=t.resizeInfo,cb;e=e.target;if(e.nodeName!=='IMG')return;if(re)Event.remove(re.node,re.ev,re.cb);if(!t.dom.hasClass(e,'mceItemNoResize')){ev='resizeend';cb=Event.add(e,ev,function(e){var v;e=e.target;if(v=t.dom.getStyle(e,'width')){t.dom.setAttrib(e,'width',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'width','');}if(v=t.dom.getStyle(e,'height')){t.dom.setAttrib(e,'height',v.replace(/[^0-9%]+/g,''));t.dom.setStyle(e,'height','');}});}else{ev='resizestart';cb=Event.add(e,'resizestart',Event.cancel,Event);}re=t.resizeInfo={node:e,ev:ev,cb:cb};});t.onKeyDown.add(function(ed,e){switch(e.keyCode){case 8:if(t.selection.getRng().item){t.selection.getRng().item(0).removeNode();return Event.cancel(e);}}});}if(tinymce.isOpera){t.onClick.add(function(ed,e){Event.prevent(e);});}if(s.custom_undo_redo){function addUndo(){t.undoManager.typing=0;t.undoManager.add();};if(tinymce.isIE){Event.add(t.getWin(),'blur',function(e){var n;if(t.selection){n=t.selection.getNode();if(!t.removed&&n.ownerDocument&&n.ownerDocument!=t.getDoc())addUndo();}});}else{Event.add(t.getDoc(),'blur',function(){if(t.selection&&!t.removed)addUndo();});}t.onMouseDown.add(addUndo);t.onKeyUp.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45||e.ctrlKey){t.undoManager.typing=0;t.undoManager.add();}});t.onKeyDown.add(function(ed,e){if((e.keyCode>=33&&e.keyCode<=36)||(e.keyCode>=37&&e.keyCode<=40)||e.keyCode==13||e.keyCode==45){if(t.undoManager.typing){t.undoManager.add();t.undoManager.typing=0;}return;}if(!t.undoManager.typing){t.undoManager.add();t.undoManager.typing=1;}});}},_convertInlineElements:function(){var t=this,s=t.settings,dom=t.dom,v,e,na,st,sp;function convert(ed,o){if(!s.inline_styles)return;if(o.get){each(t.dom.select('table,u,strike',o.node),function(n){switch(n.nodeName){case'TABLE':if(v=dom.getAttrib(n,'height')){dom.setStyle(n,'height',v);dom.setAttrib(n,'height','');}break;case'U':case'STRIKE':n.style.textDecoration=n.nodeName=='U'?'underline':'line-through';dom.setAttrib(n,'mce_style','');dom.setAttrib(n,'mce_name','span');break;}});}else if(o.set){each(t.dom.select('table,span',o.node).reverse(),function(n){if(n.nodeName=='TABLE'){if(v=dom.getStyle(n,'height'))dom.setAttrib(n,'height',v.replace(/[^0-9%]+/g,''));}else{if(n.style.textDecoration=='underline')na='u';else if(n.style.textDecoration=='line-through')na='strike';else na='';if(na){n.style.textDecoration='';dom.setAttrib(n,'mce_style','');e=dom.create(na,{style:dom.getAttrib(n,'style')});dom.replace(e,n,1);}}});}};t.onPreProcess.add(convert);if(!s.cleanup_on_startup){t.onSetContent.add(function(ed,o){if(o.initial)convert(t,{node:t.getBody(),set:1});});}},_convertFonts:function(){var t=this,s=t.settings,dom=t.dom,fz,fzn,sl,cl;if(!s.inline_styles)return;fz=[8,10,12,14,18,24,36];fzn=['xx-small','x-small','small','medium','large','x-large','xx-large'];if(sl=s.font_size_style_values)sl=explode(sl);if(cl=s.font_size_classes)cl=explode(cl);function process(no){var n,sp,nl,x;if(!s.inline_styles)return;nl=t.dom.select('font',no);for(x=nl.length-1;x>=0;x--){n=nl[x];sp=dom.create('span',{style:dom.getAttrib(n,'style'),'class':dom.getAttrib(n,'class')});dom.setStyles(sp,{fontFamily:dom.getAttrib(n,'face'),color:dom.getAttrib(n,'color'),backgroundColor:n.style.backgroundColor});if(n.size){if(sl)dom.setStyle(sp,'fontSize',sl[parseInt(n.size)-1]);else dom.setAttrib(sp,'class',cl[parseInt(n.size)-1]);}dom.setAttrib(sp,'mce_style','');dom.replace(sp,n,1);}};t.onPreProcess.add(function(ed,o){if(o.get)process(o.node);});t.onSetContent.add(function(ed,o){if(o.initial)process(o.node);});},_isHidden:function(){var s;if(!isGecko)return 0;s=this.selection.getSel();return(!s||!s.rangeCount||s.rangeCount==0);},_fixNesting:function(s){var d=[],i;s=s.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(a,b,c){var e;if(b==='/'){if(!d.length)return'';if(c!==d[d.length-1].tag){for(i=d.length-1;i>=0;i--){if(d[i].tag===c){d[i].close=1;break;}}return'';}else{d.pop();if(d.length&&d[d.length-1].close){a=a+'';d.pop();}}}else{if(/^(br|hr|input|meta|img|link|param)$/i.test(c))return a;if(/\/>$/.test(a))return a;d.push({tag:c});}return a;});for(i=d.length-1;i>=0;i--)s+='';return s;}});})();(function(){var each=tinymce.each,isIE=tinymce.isIE,isGecko=tinymce.isGecko,isOpera=tinymce.isOpera,isWebKit=tinymce.isWebKit;function isBlock(n){return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n.nodeName);};tinymce.create('tinymce.EditorCommands',{EditorCommands:function(ed){this.editor=ed;},execCommand:function(cmd,ui,val){var t=this,ed=t.editor,f;switch(cmd){case'Cut':case'Copy':case'Paste':try{ed.getDoc().execCommand(cmd,ui,val);}catch(ex){if(isGecko){ed.windowManager.confirm(ed.getLang('clipboard_msg'),function(s){if(s)window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');});}else ed.windowManager.alert(ed.getLang('clipboard_no_support'));}return true;case'mceResetDesignMode':case'mceBeginUndoLevel':return true;case'unlink':t.UnLink();return true;case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':t.mceJustify(cmd,cmd.substring(7).toLowerCase());return true;case'mceEndUndoLevel':case'mceAddUndoLevel':ed.undoManager.add();return true;default:f=this[cmd];if(f){f.call(this,ui,val);return true;}}return false;},Indent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){d.setStyle(e,'paddingLeft',(parseInt(e.style.paddingLeft||0)+iv)+iu);});return;}ed.getDoc().execCommand('Indent',false,null);if(isIE){d.getParent(s.getNode(),function(n){if(n.nodeName=='BLOCKQUOTE'){n.dir=n.style.cssText='';}});}},Outdent:function(){var ed=this.editor,d=ed.dom,s=ed.selection,e,v,iv,iu;iv=ed.settings.indentation;iu=/[a-z%]+$/i.exec(iv);iv=parseInt(iv);if(ed.settings.inline_styles&&(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList())){each(this._getSelectedBlocks(),function(e){v=Math.max(0,parseInt(e.style.paddingLeft||0)-iv);d.setStyle(e,'paddingLeft',v?v+iu:'');});return;}ed.getDoc().execCommand('Outdent',false,null);},mceSetAttribute:function(u,v){var ed=this.editor,d=ed.dom,e;if(e=d.getParent(ed.selection.getNode(),d.isBlock))d.setAttrib(e,v.name,v.value);},mceSetContent:function(u,v){this.editor.setContent(v);},mceToggleVisualAid:function(){var ed=this.editor;ed.hasVisual=!ed.hasVisual;ed.addVisual();},mceReplaceContent:function(u,v){var s=this.editor.selection;s.setContent(v.replace(/\{\$selection\}/g,s.getContent({format:'text'})));},mceInsertLink:function(u,v){var ed=this.editor,s=ed.selection,e=ed.dom.getParent(s.getNode(),'A');if(tinymce.is(v,'string'))v={href:v};function set(e){each(v,function(v,k){ed.dom.setAttrib(e,k,v);});};if(!e){ed.execCommand('CreateLink',false,'javascript:mctmp(0);');each(ed.dom.select('a'),function(e){if(e.href=='javascript:mctmp(0);')set(e);});}else{if(v.href)set(e);else ed.dom.remove(e,1);}},UnLink:function(){var ed=this.editor,s=ed.selection;if(s.isCollapsed())s.select(s.getNode());ed.getDoc().execCommand('unlink',false,null);s.collapse(0);},FontName:function(u,v){var t=this,ed=t.editor,s=ed.selection,e;if(!v){if(s.isCollapsed())s.select(s.getNode());t.RemoveFormat();}else{if(ed.settings.convert_fonts_to_spans)t._applyInlineStyle('span',{style:{fontFamily:v}});else ed.getDoc().execCommand('FontName',false,v);}},FontSize:function(u,v){var ed=this.editor,s=ed.settings,fc,fs;if(s.convert_fonts_to_spans&&v>=1&&v<=7){fs=tinymce.explode(s.font_size_style_values);fc=tinymce.explode(s.font_size_classes);if(fc)v=fc[v-1]||v;else v=fs[v-1]||v;}if(v>=1&&v<=7)ed.getDoc().execCommand('FontSize',false,v);else this._applyInlineStyle('span',{style:{fontSize:v}});},queryCommandValue:function(c){var f=this['queryValue'+c];if(f)return f.call(this,c);return false;},queryCommandState:function(cmd){var f;switch(cmd){case'JustifyLeft':case'JustifyCenter':case'JustifyRight':case'JustifyFull':return this.queryStateJustify(cmd,cmd.substring(7).toLowerCase());default:if(f=this['queryState'+cmd])return f.call(this,cmd);}return-1;},_queryState:function(c){try{return this.editor.getDoc().queryCommandState(c);}catch(ex){}},_queryVal:function(c){try{return this.editor.getDoc().queryCommandValue(c);}catch(ex){}},queryValueFontSize:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontSize;if(!v&&(isOpera||isWebKit)){if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.size;return v;}return v||this._queryVal('FontSize');},queryValueFontName:function(){var ed=this.editor,v=0,p;if(p=ed.dom.getParent(ed.selection.getNode(),'FONT'))v=p.face;if(p=ed.dom.getParent(ed.selection.getNode(),'SPAN'))v=p.style.fontFamily.replace(/, /g,',').replace(/[\'\"]/g,'').toLowerCase();if(!v)v=this._queryVal('FontName');return v;},mceJustify:function(c,v){var ed=this.editor,se=ed.selection,n=se.getNode(),nn=n.nodeName,bl,nb,dom=ed.dom,rm;if(ed.settings.inline_styles&&this.queryStateJustify(c,v))rm=1;bl=dom.getParent(n,ed.dom.isBlock);if(nn=='IMG'){if(v=='full')return;if(rm){if(v=='center')dom.setStyle(bl||n.parentNode,'textAlign','');dom.setStyle(n,'float','');this.mceRepaint();return;}if(v=='center'){if(bl&&/^(TD|TH)$/.test(bl.nodeName))bl=0;if(!bl||bl.childNodes.length>1){nb=dom.create('p');nb.appendChild(n.cloneNode(false));if(bl)dom.insertAfter(nb,bl);else dom.insertAfter(nb,n);dom.remove(n);n=nb.firstChild;bl=nb;}dom.setStyle(bl,'textAlign',v);dom.setStyle(n,'float','');}else{dom.setStyle(n,'float',v);dom.setStyle(bl||n.parentNode,'textAlign','');}this.mceRepaint();return;}if(ed.settings.inline_styles&&ed.settings.forced_root_block){if(rm)v='';each(this._getSelectedBlocks(dom.getParent(se.getStart(),dom.isBlock),dom.getParent(se.getEnd(),dom.isBlock)),function(e){dom.setAttrib(e,'align','');dom.setStyle(e,'textAlign',v=='full'?'justify':v);});return;}else if(!rm)ed.getDoc().execCommand(c,false,null);if(ed.settings.inline_styles){if(rm){dom.getParent(ed.selection.getNode(),function(n){if(n.style&&n.style.textAlign)dom.setStyle(n,'textAlign','');});return;}each(dom.select('*'),function(n){var v=n.align;if(v){if(v=='full')v='justify';dom.setStyle(n,'textAlign',v);dom.setAttrib(n,'align','');}});}},mceSetCSSClass:function(u,v){this.mceSetStyleInfo(0,{command:'setattrib',name:'class',value:v});},getSelectedElement:function(){var t=this,ed=t.editor,dom=ed.dom,se=ed.selection,r=se.getRng(),r1,r2,sc,ec,so,eo,e,sp,ep,re;if(se.isCollapsed()||r.item)return se.getNode();re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if(isIE){r1=r.duplicate();r1.collapse(true);sc=r1.parentElement();r2=r.duplicate();r2.collapse(false);ec=r2.parentElement();if(sc!=ec){r1.move('character',1);sc=r1.parentElement();}if(sc==ec){r1=r.duplicate();r1.moveToElementText(sc);if(r1.compareEndPoints('StartToStart',r)==0&&r1.compareEndPoints('EndToEnd',r)==0)return re&&re.test(sc.nodeName)?null:sc;}}else{function getParent(n){return dom.getParent(n,function(n){return n.nodeType==1;});};sc=r.startContainer;ec=r.endContainer;so=r.startOffset;eo=r.endOffset;if(!r.collapsed){if(sc==ec){if(so-eo<2){if(sc.hasChildNodes()){sp=sc.childNodes[so];return re&&re.test(sp.nodeName)?null:sp;}}}}if(sc.nodeType!=3||ec.nodeType!=3)return null;if(so==0){sp=getParent(sc);if(sp&&sp.firstChild!=sc)sp=null;}if(so==sc.nodeValue.length){e=sc.nextSibling;if(e&&e.nodeType==1)sp=sc.nextSibling;}if(eo==0){e=ec.previousSibling;if(e&&e.nodeType==1)ep=e;}if(eo==ec.nodeValue.length){ep=getParent(ec);if(ep&&ep.lastChild!=ec)ep=null;}if(sp==ep)return re&&sp&&re.test(sp.nodeName)?null:sp;}return null;},InsertHorizontalRule:function(){if(isGecko||isIE)this.editor.selection.setContent('
    ');else this.editor.getDoc().execCommand('InsertHorizontalRule',false,'');},RemoveFormat:function(){var t=this,ed=t.editor,s=ed.selection,b;if(isWebKit)s.setContent(s.getContent({format:'raw'}).replace(/(<(span|b|i|strong|em|strike) [^>]+>|<(span|b|i|strong|em|strike)>|<\/(span|b|i|strong|em|strike)>|)/g,''),{format:'raw'});else ed.getDoc().execCommand('RemoveFormat',false,null);t.mceSetStyleInfo(0,{command:'removeformat'});ed.addVisual();},mceSetStyleInfo:function(u,v){var t=this,ed=t.editor,d=ed.getDoc(),dom=ed.dom,e,b,s=ed.selection,nn=v.wrapper||'span',b=s.getBookmark(),re;function set(n,e){if(n.nodeType==1){switch(v.command){case'setattrib':return dom.setAttrib(n,v.name,v.value);case'setstyle':return dom.setStyle(n,v.name,v.value);case'removeformat':return dom.setAttrib(n,'class','');}}};re=ed.settings.merge_styles_invalid_parents;if(tinymce.is(re,'string'))re=new RegExp(re,'i');if((e=t.getSelectedElement())&&!ed.settings.force_span_wrappers)set(e,1);else{d.execCommand('FontName',false,'__');each(isWebKit?dom.select('span'):dom.select('font'),function(n){var sp,e;if(dom.getAttrib(n,'face')=='__'||n.style.fontFamily==='__'){sp=dom.create(nn,{mce_new:'1'});set(sp);each(n.childNodes,function(n){sp.appendChild(n.cloneNode(true));});dom.replace(sp,n);}});}each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!dom.getAttrib(n,'mce_new')){p=dom.getParent(n,function(n){return n.nodeType==1&&dom.getAttrib(n,'mce_new');});if(p)dom.remove(n,1);}});each(dom.select(nn).reverse(),function(n){var p=n.parentNode;if(!p||!dom.getAttrib(n,'mce_new'))return;if(ed.settings.force_span_wrappers&&p.nodeName!='SPAN')return;if(p.nodeName==nn.toUpperCase()&&p.childNodes.length==1)return dom.remove(p,1);if(n.nodeType==1&&(!re||!re.test(p.nodeName))&&p.childNodes.length==1){set(p);dom.setAttrib(n,'class','');}});each(dom.select(nn).reverse(),function(n){if(dom.getAttrib(n,'mce_new')||(dom.getAttribs(n).length<=1&&n.className==='')){if(!dom.getAttrib(n,'class')&&!dom.getAttrib(n,'style'))return dom.remove(n,1);dom.setAttrib(n,'mce_new','');}});s.moveToBookmark(b);},queryStateJustify:function(c,v){var ed=this.editor,n=ed.selection.getNode(),dom=ed.dom;if(n&&n.nodeName=='IMG'){if(dom.getStyle(n,'float')==v)return 1;return n.parentNode.style.textAlign==v;}n=dom.getParent(ed.selection.getStart(),function(n){return n.nodeType==1&&n.style.textAlign;});if(v=='full')v='justify';if(ed.settings.inline_styles)return(n&&n.style.textAlign==v);return this._queryState(c);},ForeColor:function(ui,v){var ed=this.editor;if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{color:v}});return;}else ed.getDoc().execCommand('ForeColor',false,v);},HiliteColor:function(ui,val){var t=this,ed=t.editor,d=ed.getDoc();if(ed.settings.convert_fonts_to_spans){this._applyInlineStyle('span',{style:{backgroundColor:val}});return;}function set(s){if(!isGecko)return;try{d.execCommand("styleWithCSS",0,s);}catch(ex){d.execCommand("useCSS",0,!s);}};if(isGecko||isOpera){set(true);d.execCommand('hilitecolor',false,val);set(false);}else d.execCommand('BackColor',false,val);},Undo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.undo();ed.nodeChanged();}else ed.getDoc().execCommand('Undo',false,null);},Redo:function(){var ed=this.editor;if(ed.settings.custom_undo_redo){ed.undoManager.redo();ed.nodeChanged();}else ed.getDoc().execCommand('Redo',false,null);},FormatBlock:function(ui,val){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,bl,nb,b;function isBlock(n){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(n.nodeName);};bl=dom.getParent(s.getNode(),function(n){return isBlock(n);});if(bl){if((isIE&&isBlock(bl.parentNode))||bl.nodeName=='DIV'){nb=ed.dom.create(val);each(dom.getAttribs(bl),function(v){dom.setAttrib(nb,v.nodeName,dom.getAttrib(bl,v.nodeName));});b=s.getBookmark();dom.replace(nb,bl,1);s.moveToBookmark(b);ed.nodeChanged();return;}}val=ed.settings.forced_root_block?(val||'

    '):val;if(val.indexOf('<')==-1)val='<'+val+'>';if(tinymce.isGecko)val=val.replace(/<(div|blockquote|code|dt|dd|dl|samp)>/gi,'$1');ed.getDoc().execCommand('FormatBlock',false,val);},mceCleanup:function(){var ed=this.editor,s=ed.selection,b=s.getBookmark();ed.setContent(ed.getContent());s.moveToBookmark(b);},mceRemoveNode:function(ui,val){var ed=this.editor,s=ed.selection,b,n=val||s.getNode();if(n==ed.getBody())return;b=s.getBookmark();ed.dom.remove(n,1);s.moveToBookmark(b);ed.nodeChanged();},mceSelectNodeDepth:function(ui,val){var ed=this.editor,s=ed.selection,c=0;ed.dom.getParent(s.getNode(),function(n){if(n.nodeType==1&&c++==val){s.select(n);ed.nodeChanged();return false;}},ed.getBody());},mceSelectNode:function(u,v){this.editor.selection.select(v);},mceInsertContent:function(ui,val){this.editor.selection.setContent(val);},mceInsertRawHTML:function(ui,val){var ed=this.editor;ed.selection.setContent('tiny_mce_marker');ed.setContent(ed.getContent().replace(/tiny_mce_marker/g,val));},mceRepaint:function(){var s,b,e=this.editor;if(tinymce.isGecko){try{s=e.selection;b=s.getBookmark(true);if(s.getSel())s.getSel().selectAllChildren(e.getBody());s.collapse(true);s.moveToBookmark(b);}catch(ex){}}},queryStateUnderline:function(){var ed=this.editor,n=ed.selection.getNode();if(n&&n.nodeName=='A')return false;return this._queryState('Underline');},queryStateOutdent:function(){var ed=this.editor,n;if(ed.settings.inline_styles){if((n=ed.dom.getParent(ed.selection.getStart(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;if((n=ed.dom.getParent(ed.selection.getEnd(),ed.dom.isBlock))&&parseInt(n.style.paddingLeft)>0)return true;}return this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()||(!ed.settings.inline_styles&&!!ed.dom.getParent(ed.selection.getNode(),'BLOCKQUOTE'));},queryStateInsertUnorderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'UL');},queryStateInsertOrderedList:function(){return this.editor.dom.getParent(this.editor.selection.getNode(),'OL');},queryStatemceBlockQuote:function(){return!!this.editor.dom.getParent(this.editor.selection.getStart(),function(n){return n.nodeName==='BLOCKQUOTE';});},mceBlockQuote:function(){var t=this,ed=t.editor,s=ed.selection,dom=ed.dom,sb,eb,n,bm,bq,r,bq2,i,nl;function getBQ(e){return dom.getParent(e,function(n){return n.nodeName==='BLOCKQUOTE';});};sb=dom.getParent(s.getStart(),isBlock);eb=dom.getParent(s.getEnd(),isBlock);if(bq=getBQ(sb)){if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();if(getBQ(eb)){bq2=bq.cloneNode(false);while(n=eb.nextSibling)bq2.appendChild(n.parentNode.removeChild(n));}if(bq2)dom.insertAfter(bq2,bq);nl=t._getSelectedBlocks(sb,eb);for(i=nl.length-1;i>=0;i--){dom.insertAfter(nl[i],bq);}if(/^\s*$/.test(bq.innerHTML))dom.remove(bq,1);if(bq2&&/^\s*$/.test(bq2.innerHTML))dom.remove(bq2,1);if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(0);if(dom.getParent(s.getStart(),isBlock)!=sb){r=s.getRng();r.move('character',-1);r.select();}}}else t.editor.selection.moveToBookmark(bm);return;}if(isIE&&!sb&&!eb){t.editor.getDoc().execCommand('Indent');n=getBQ(s.getNode());n.style.margin=n.dir='';return;}if(!sb||!eb)return;if(sb!=eb||sb.childNodes.length>1||(sb.childNodes.length==1&&sb.firstChild.nodeName!='BR'))bm=s.getBookmark();each(t._getSelectedBlocks(getBQ(s.getStart()),getBQ(s.getEnd())),function(e){if(e.nodeName=='BLOCKQUOTE'&&!bq){bq=e;return;}if(!bq){bq=dom.create('blockquote');e.parentNode.insertBefore(bq,e);}if(e.nodeName=='BLOCKQUOTE'&&bq){n=e.firstChild;while(n){bq.appendChild(n.cloneNode(true));n=n.nextSibling;}dom.remove(e);return;}bq.appendChild(dom.remove(e));});if(!bm){if(!isIE){r=ed.getDoc().createRange();r.setStart(sb,0);r.setEnd(sb,0);s.setRng(r);}else{s.select(sb);s.collapse(1);}}else s.moveToBookmark(bm);},_applyInlineStyle:function(na,at,op){var t=this,ed=t.editor,dom=ed.dom,bm,lo={},kh;na=na.toUpperCase();if(op&&op.check_classes&&at['class'])op.check_classes.push(at['class']);function replaceFonts(){var bm;each(dom.select(tinymce.isWebKit&&!tinymce.isAir?'span':'font'),function(n){if(n.style.fontFamily=='mceinline'||n.face=='mceinline'){if(!bm)bm=ed.selection.getBookmark();at._mce_new='1';dom.replace(dom.create(na,at),n,1);}});each(dom.select(na),function(n){if(n.getAttribute('_mce_new')){function removeStyle(n){if(n.nodeType==1){each(at.style,function(v,k){dom.setStyle(n,k,'');});if(at['class']&&n.className&&op){each(op.check_classes,function(c){if(dom.hasClass(n,c))dom.removeClass(n,c);});}}};each(dom.select(na,n),removeStyle);if(n.parentNode&&n.parentNode.nodeType==1&&n.parentNode.childNodes.length==1)removeStyle(n.parentNode);dom.getParent(n.parentNode,function(pn){if(pn.nodeType==1){if(at.style){each(at.style,function(v,k){var sv;if(!lo[k]&&(sv=dom.getStyle(pn,k))){if(sv===v)dom.setStyle(n,k,'');lo[k]=1;}});}if(at['class']&&pn.className&&op){each(op.check_classes,function(c){if(dom.hasClass(pn,c))dom.removeClass(n,c);});}}return false;});n.removeAttribute('_mce_new');}});each(dom.select(na).reverse(),function(n){var c=0;each(dom.getAttribs(n),function(an){if(an.nodeName.substring(0,1)!='_'&&dom.getAttrib(n,an.nodeName)!=''){c++;}});if(c==0)dom.remove(n,1);});ed.selection.moveToBookmark(bm);return!!bm;};ed.focus();ed.getDoc().execCommand('FontName',false,'mceinline');replaceFonts();if(kh=t._applyInlineStyle.keyhandler){ed.onKeyUp.remove(kh);ed.onKeyPress.remove(kh);ed.onKeyDown.remove(kh);ed.onSetContent.remove(t._applyInlineStyle.chandler);}if(ed.selection.isCollapsed()){t._pendingStyles=tinymce.extend(t._pendingStyles||{},at.style);t._applyInlineStyle.chandler=ed.onSetContent.add(function(){delete t._pendingStyles;});t._applyInlineStyle.keyhandler=kh=function(e){if(t._pendingStyles){at.style=t._pendingStyles;delete t._pendingStyles;}if(replaceFonts()){ed.onKeyDown.remove(t._applyInlineStyle.keyhandler);ed.onKeyPress.remove(t._applyInlineStyle.keyhandler);}if(e.type=='keyup')ed.onKeyUp.remove(t._applyInlineStyle.keyhandler);};ed.onKeyDown.add(kh);ed.onKeyPress.add(kh);ed.onKeyUp.add(kh);}else t._pendingStyles=0;},_getSelectedBlocks:function(st,en){var ed=this.editor,dom=ed.dom,s=ed.selection,sb,eb,n,bl=[];sb=dom.getParent(st||s.getStart(),isBlock);eb=dom.getParent(en||s.getEnd(),isBlock);if(sb)bl.push(sb);if(sb&&eb&&sb!=eb){n=sb;while((n=n.nextSibling)&&n!=eb){if(isBlock(n))bl.push(n);}}if(eb&&sb!=eb)bl.push(eb);return bl;}});})();tinymce.create('tinymce.UndoManager',{index:0,data:null,typing:0,UndoManager:function(ed){var t=this,Dispatcher=tinymce.util.Dispatcher;t.editor=ed;t.data=[];t.onAdd=new Dispatcher(this);t.onUndo=new Dispatcher(this);t.onRedo=new Dispatcher(this);},add:function(l){var t=this,i,ed=t.editor,b,s=ed.settings,la;l=l||{};l.content=l.content||ed.getContent({format:'raw',no_events:1});l.content=l.content.replace(/^\s*|\s*$/g,'');la=t.data[t.index>0&&(t.index==0||t.index==t.data.length)?t.index-1:t.index];if(!l.initial&&la&&l.content==la.content)return null;if(s.custom_undo_redo_levels){if(t.data.length>s.custom_undo_redo_levels){for(i=0;i0){if(t.index==t.data.length&&t.index>1){i=t.index;t.typing=0;if(!t.add())t.index=i;--t.index;}l=t.data[--t.index];ed.setContent(l.content,{format:'raw'});ed.selection.moveToBookmark(l.bookmark);t.onUndo.dispatch(t,l);}return l;},redo:function(){var t=this,ed=t.editor,l=null;if(t.index','gi');t.rePadd=new RegExp(']+)><\\\/p>|]+)\\\/>|]+)>\\s+<\\\/p>|

    <\\\/p>||

    \\s+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR1=new RegExp(']+)>[\\s\\u00a0]+<\\\/p>|

    [\\s\\u00a0]+<\\\/p>'.replace(/p/g,elm),'gi');t.reNbsp2BR2=new RegExp(']+)>( | )<\\\/p>|

    ( | )<\\\/p>'.replace(/p/g,elm),'gi');t.reBR2Nbsp=new RegExp(']+)>\\s*
    \\s*<\\\/p>|

    \\s*
    \\s*<\\\/p>'.replace(/p/g,elm),'gi');t.reTrailBr=new RegExp('\\s*
    \\s*<\\\/p>'.replace(/p/g,elm),'gi');function padd(ed,o){if(isOpera)o.content=o.content.replace(t.reOpera,'');o.content=o.content.replace(t.rePadd,'<'+elm+'$1$2$3$4$5$6>\u00a0');if(!isIE&&!isOpera&&o.set){o.content=o.content.replace(t.reNbsp2BR1,'<'+elm+'$1$2>
    ');o.content=o.content.replace(t.reNbsp2BR2,'<'+elm+'$1$2>
    ');}else{o.content=o.content.replace(t.reBR2Nbsp,'<'+elm+'$1$2>\u00a0');o.content=o.content.replace(t.reTrailBr,'');}};ed.onBeforeSetContent.add(padd);ed.onPostProcess.add(padd);if(s.forced_root_block){ed.onInit.add(t.forceRoots,t);ed.onSetContent.add(t.forceRoots,t);ed.onBeforeGetContent.add(t.forceRoots,t);}},setup:function(){var t=this,ed=t.editor,s=ed.settings;if(s.forced_root_block){ed.onKeyUp.add(t.forceRoots,t);ed.onPreProcess.add(t.forceRoots,t);}if(s.force_br_newlines){if(isIE){ed.onKeyPress.add(function(ed,e){var n,s=ed.selection;if(e.keyCode==13&&s.getNode().nodeName!='LI'){s.setContent('
    ',{format:'raw'});n=ed.dom.get('__');n.removeAttribute('id');s.select(n);s.collapse();return Event.cancel(e);}});}return;}if(!isIE&&s.force_p_newlines){ed.onKeyPress.add(function(ed,e){if(e.keyCode==13&&!e.shiftKey){if(!t.insertPara(e))Event.cancel(e);}});if(isGecko){ed.onKeyDown.add(function(ed,e){if((e.keyCode==8||e.keyCode==46)&&!e.shiftKey)t.backspaceDelete(e,e.keyCode==8);});}}function ren(rn,na){var ne=ed.dom.create(na);each(rn.attributes,function(a){if(a.specified&&a.nodeValue)ne.setAttribute(a.nodeName.toLowerCase(),a.nodeValue);});each(rn.childNodes,function(n){ne.appendChild(n.cloneNode(true));});rn.parentNode.replaceChild(ne,rn);return ne;};if(isIE&&s.element!='P'){ed.onKeyPress.add(function(ed,e){t.lastElm=ed.selection.getNode().nodeName;});ed.onKeyUp.add(function(ed,e){var bl,sel=ed.selection,n=sel.getNode(),b=ed.getBody();if(b.childNodes.length===1&&n.nodeName=='P'){n=ren(n,s.element);sel.select(n);sel.collapse();ed.nodeChanged();}else if(e.keyCode==13&&!e.shiftKey&&t.lastElm!='P'){bl=ed.dom.getParent(n,'P');if(bl){ren(bl,s.element);ed.nodeChanged();}}});}},find:function(n,t,s){var ed=this.editor,w=ed.getDoc().createTreeWalker(n,4,null,false),c=-1;while(n=w.nextNode()){c++;if(t==0&&n==s)return c;if(t==1&&c==s)return n;}return-1;},forceRoots:function(ed,e){var t=this,ed=t.editor,b=ed.getBody(),d=ed.getDoc(),se=ed.selection,s=se.getSel(),r=se.getRng(),si=-2,ei,so,eo,tr,c=-0xFFFFFF;var nx,bl,bp,sp,le,nl=b.childNodes,i,n,eid;for(i=nl.length-1;i>=0;i--){nx=nl[i];if(nx.nodeType==3||(!t.dom.isBlock(nx)&&nx.nodeType!=8)){if(!bl){if(nx.nodeType!=3||/[^\s]/g.test(nx.nodeValue)){if(si==-2&&r){if(!isIE){if(r.startContainer.nodeType==1&&(n=r.startContainer.childNodes[r.startOffset])&&n.nodeType==1){eid=n.getAttribute("id");n.setAttribute("id","__mce");}else{if(ed.dom.getParent(r.startContainer,function(e){return e===b;})){so=r.startOffset;eo=r.endOffset;si=t.find(b,0,r.startContainer);ei=t.find(b,0,r.endContainer);}}}else{tr=d.body.createTextRange();tr.moveToElementText(b);tr.collapse(1);bp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(1);sp=tr.move('character',c)*-1;tr=r.duplicate();tr.collapse(0);le=(tr.move('character',c)*-1)-sp;si=sp-bp;ei=le;}}bl=ed.dom.create(ed.settings.forced_root_block);bl.appendChild(nx.cloneNode(1));nx.parentNode.replaceChild(bl,nx);}}else{if(bl.hasChildNodes())bl.insertBefore(nx,bl.firstChild);else bl.appendChild(nx);}}else bl=null;}if(si!=-2){if(!isIE){bl=b.getElementsByTagName(ed.settings.element)[0];r=d.createRange();if(si!=-1)r.setStart(t.find(b,1,si),so);else r.setStart(bl,0);if(ei!=-1)r.setEnd(t.find(b,1,ei),eo);else r.setEnd(bl,0);if(s){s.removeAllRanges();s.addRange(r);}}else{try{r=s.createRange();r.moveToElementText(b);r.collapse(1);r.moveStart('character',si);r.moveEnd('character',ei);r.select();}catch(ex){}}}else if(!isIE&&(n=ed.dom.get('__mce'))){if(eid)n.setAttribute('id',eid);else n.removeAttribute('id');r=d.createRange();r.setStartBefore(n);r.setEndBefore(n);se.setRng(r);}},getParentBlock:function(n){var d=this.dom;return d.getParent(n,d.isBlock);},insertPara:function(e){var t=this,ed=t.editor,dom=ed.dom,d=ed.getDoc(),se=ed.settings,s=ed.selection.getSel(),r=s.getRangeAt(0),b=d.body;var rb,ra,dir,sn,so,en,eo,sb,eb,bn,bef,aft,sc,ec,n,vp=dom.getViewPort(ed.getWin()),y,ch,car;function isEmpty(n){n=n.innerHTML;n=n.replace(/<(img|hr|table)/gi,'-');n=n.replace(/<[^>]+>/g,'');return n.replace(/[ \t\r\n]+/g,'')=='';};rb=d.createRange();rb.setStart(s.anchorNode,s.anchorOffset);rb.collapse(true);ra=d.createRange();ra.setStart(s.focusNode,s.focusOffset);ra.collapse(true);dir=rb.compareBoundaryPoints(rb.START_TO_END,ra)<0;sn=dir?s.anchorNode:s.focusNode;so=dir?s.anchorOffset:s.focusOffset;en=dir?s.focusNode:s.anchorNode;eo=dir?s.focusOffset:s.anchorOffset;if(sn===en&&/^(TD|TH)$/.test(sn.nodeName)){dom.remove(sn.firstChild);ed.dom.add(sn,se.element,null,'
    ');aft=ed.dom.add(sn,se.element,null,'
    ');r=d.createRange();r.selectNodeContents(aft);r.collapse(1);ed.selection.setRng(r);return false;}if(sn==b&&en==b&&b.firstChild&&ed.dom.isBlock(b.firstChild)){sn=en=sn.firstChild;so=eo=0;rb=d.createRange();rb.setStart(sn,0);ra=d.createRange();ra.setStart(en,0);}sn=sn.nodeName=="HTML"?d.body:sn;sn=sn.nodeName=="BODY"?sn.firstChild:sn;en=en.nodeName=="HTML"?d.body:en;en=en.nodeName=="BODY"?en.firstChild:en;sb=t.getParentBlock(sn);eb=t.getParentBlock(en);bn=sb?sb.nodeName:se.element;if(t.dom.getParent(sb,function(n){return/OL|UL|PRE/.test(n.nodeName);}))return true;if(sb&&(sb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(sb.style.position))){bn=se.element;sb=null;}if(eb&&(eb.nodeName=='CAPTION'||/absolute|relative|static/gi.test(eb.style.position))){bn=se.element;eb=null;}if(/(TD|TABLE|TH|CAPTION)/.test(bn)||(sb&&bn=="DIV"&&/left|right/gi.test(sb.style.cssFloat))){bn=se.element;sb=eb=null;}bef=(sb&&sb.nodeName==bn)?sb.cloneNode(0):ed.dom.create(bn);aft=(eb&&eb.nodeName==bn)?eb.cloneNode(0):ed.dom.create(bn);aft.removeAttribute('id');if(/^(H[1-6])$/.test(bn)&&sn.nodeValue&&so==sn.nodeValue.length)aft=ed.dom.create(se.element);n=sc=sn;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;sc=n;}while((n=n.previousSibling?n.previousSibling:n.parentNode));n=ec=en;do{if(n==b||n.nodeType==9||t.dom.isBlock(n)||/(TD|TABLE|TH|CAPTION)/.test(n.nodeName))break;ec=n;}while((n=n.nextSibling?n.nextSibling:n.parentNode));if(sc.nodeName==bn)rb.setStart(sc,0);else rb.setStartBefore(sc);rb.setEnd(sn,so);bef.appendChild(rb.cloneContents()||d.createTextNode(''));try{ra.setEndAfter(ec);}catch(ex){}ra.setStart(en,eo);aft.appendChild(ra.cloneContents()||d.createTextNode(''));r=d.createRange();if(!sc.previousSibling&&sc.parentNode.nodeName==bn){r.setStartBefore(sc.parentNode);}else{if(rb.startContainer.nodeName==bn&&rb.startOffset==0)r.setStartBefore(rb.startContainer);else r.setStart(rb.startContainer,rb.startOffset);}if(!ec.nextSibling&&ec.parentNode.nodeName==bn)r.setEndAfter(ec.parentNode);else r.setEnd(ra.endContainer,ra.endOffset);r.deleteContents();if(isOpera)ed.getWin().scrollTo(0,vp.y);if(bef.firstChild&&bef.firstChild.nodeName==bn)bef.innerHTML=bef.firstChild.innerHTML;if(aft.firstChild&&aft.firstChild.nodeName==bn)aft.innerHTML=aft.firstChild.innerHTML;if(isEmpty(bef))bef.innerHTML='
    ';function appendStyles(e,en){var nl=[],nn,n,i;e.innerHTML='';if(se.keep_styles){n=en;do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)){nn=n.cloneNode(false);dom.setAttrib(nn,'id','');nl.push(nn);}}while(n=n.parentNode);}if(nl.length>0){for(i=nl.length-1,nn=e;i>=0;i--)nn=nn.appendChild(nl[i]);nl[0].innerHTML=isOpera?' ':'
    ';return nl[0];}else e.innerHTML=isOpera?' ':'
    ';};if(isEmpty(aft))car=appendStyles(aft,en);if(isOpera&&parseFloat(opera.version())<9.5){r.insertNode(bef);r.insertNode(aft);}else{r.insertNode(aft);r.insertNode(bef);}aft.normalize();bef.normalize();function first(n){return d.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,false).nextNode()||n;};r=d.createRange();r.selectNodeContents(isGecko?first(car||aft):car||aft);r.collapse(1);s.removeAllRanges();s.addRange(r);y=ed.dom.getPos(aft).y;ch=aft.clientHeight;if(yvp.y+vp.h){ed.getWin().scrollTo(0,y Date: Mon, 14 Apr 2014 16:50:51 +1200 Subject: [PATCH 14/23] BUG Fix jstree when duplicating subtrees --- admin/javascript/LeftAndMain.Tree.js | 20 ++++--- model/Hierarchy.php | 30 ++++++---- .../Framework/Test/Behaviour/CmsUiContext.php | 58 ++++++++++++++++++- 3 files changed, 86 insertions(+), 22 deletions(-) diff --git a/admin/javascript/LeftAndMain.Tree.js b/admin/javascript/LeftAndMain.Tree.js index eabaf1b98..0404dc792 100644 --- a/admin/javascript/LeftAndMain.Tree.js +++ b/admin/javascript/LeftAndMain.Tree.js @@ -253,11 +253,19 @@ parentNode = data.ParentID ? self.getNodeByID(data.ParentID) : false, newNode = $(html); + // Extract the state for the new node from the properties taken from the provided HTML template. + // This will correctly initialise the behaviour of the node for ajax loading of children. + var properties = {data: ''}; + if(newNode.hasClass('jstree-open')) { + properties.state = 'open'; + } else if(newNode.hasClass('jstree-closed')) { + properties.state = 'closed'; + } this.jstree( 'create_node', parentNode.length ? parentNode : -1, 'last', - '', + properties, function(node) { var origClasses = node.attr('class'); // Copy attributes @@ -265,6 +273,7 @@ var attr = newNode[0].attributes[i]; node.attr(attr.name, attr.value); } + // Substitute html from request for that generated by jstree node.addClass(origClasses).html(newNode.html()); callback(node); } @@ -356,13 +365,10 @@ // Duplicates can be caused by the subtree reloading through // a tree "open"/"select" event, while at the same time creating a new node self.getNodeByID(node.data('id')).not(node).remove(); - + + // Select this node self.jstree('deselect_all'); self.jstree('select_node', node); - // Similar to jstree's correct_state, but doesn't remove children - var hasChildren = (node.children('ul').length > 0); - node.toggleClass('jstree-leaf', !hasChildren); - if(!hasChildren) node.removeClass('jstree-closed jstree-open'); }; // TODO 'initially_opened' config doesn't apply here @@ -387,7 +393,7 @@ if(node.length) { self.updateNode(node, nodeData.html, nodeData); setTimeout(function() { - correctStateFn(node) ; + correctStateFn(node); }, 500); } else { includesNewNode = true; diff --git a/model/Hierarchy.php b/model/Hierarchy.php index 4f5b80b8b..3f20c1de9 100644 --- a/model/Hierarchy.php +++ b/model/Hierarchy.php @@ -275,12 +275,12 @@ class Hierarchy extends DataExtension { if($children) { foreach($children as $child) { $markingMatches = $this->markingFilterMatches($child); - // Filtered results should always show opened, since actual matches - // might be hidden by non-matching parent nodes. - if($this->markingFilter && $markingMatches) { - $child->markOpened(); - } - if(!$this->markingFilter || $markingMatches) { + if($markingMatches) { + // Filtered results should always show opened, since actual matches + // might be hidden by non-matching parent nodes. + if($this->markingFilter) { + $child->markOpened(); + } if($child->$numChildrenMethod()) { $child->markUnexpanded(); } else { @@ -310,18 +310,24 @@ class Hierarchy extends DataExtension { } /** - * Return CSS classes of 'unexpanded', 'closed', both, or neither, depending on - * the marking of this DataObject. + * Return CSS classes of 'unexpanded', 'closed', both, or neither, as well as a + * 'jstree-*' state depending on the marking of this DataObject. + * + * @return string */ public function markingClasses() { $classes = ''; if(!$this->isExpanded()) { - $classes .= " unexpanded jstree-closed"; + $classes .= " unexpanded"; } - if($this->isTreeOpened()) { - if($this->numChildren() > 0) $classes .= " jstree-open"; + + // Set jstree open state, or mark it as a leaf (closed) if there are no children + if(!$this->numChildren()) { + $classes .= " jstree-leaf closed"; + } elseif($this->isTreeOpened()) { + $classes .= " jstree-open"; } else { - $classes .= " closed"; + $classes .= " jstree-closed closed"; } return $classes; } diff --git a/tests/behat/features/bootstrap/SilverStripe/Framework/Test/Behaviour/CmsUiContext.php b/tests/behat/features/bootstrap/SilverStripe/Framework/Test/Behaviour/CmsUiContext.php index 7f49a6c57..de80aa3f4 100644 --- a/tests/behat/features/bootstrap/SilverStripe/Framework/Test/Behaviour/CmsUiContext.php +++ b/tests/behat/features/bootstrap/SilverStripe/Framework/Test/Behaviour/CmsUiContext.php @@ -180,13 +180,65 @@ class CmsUiContext extends BehatContext { } /** - * @When /^I click on "([^"]*)" in the tree$/ + * Applies a specific action to an element + * + * @param NodeElement $element Element to act on + * @param string $action Action, which may be one of 'hover', 'double click', 'right click', or 'left click' + * The default 'click' behaves the same as left click */ - public function stepIClickOnElementInTheTree($text) { + protected function interactWithElement($element, $action = 'click') { + switch($action) { + case 'hover': + $element->mouseOver(); + break; + case 'double click': + $element->doubleClick(); + break; + case 'right click': + $element->rightClick(); + break; + case 'left click': + case 'click': + default: + $element->click(); + break; + } + + } + + /** + * @When /^I (?P(?:(?:double |right |left |)click)|hover) on "(?P[^"]*)" in the context menu/ + */ + public function stepIClickOnElementInTheContextMenu($method, $link) { + $context = $this->getMainContext(); + // Wait until context menu has appeared + $this->getSession()->wait( + 1000, + "window.jQuery && window.jQuery('.jstree-apple-context').size() > 0" + ); + $regionObj = $context->getRegionObj('.jstree-apple-context'); + assertNotNull($regionObj, "Context menu could not be found"); + + $linkObj = $regionObj->findLink($link); + if (empty($linkObj)) { + throw new \Exception(sprintf( + 'The link "%s" was not found in the context menu on the page %s', + $link, + $this->getSession()->getCurrentUrl() + )); + } + + $this->interactWithElement($linkObj, $method); + } + + /** + * @When /^I (?P(?:(?:double |right |left |)click)|hover) on "(?P[^"]*)" in the tree$/ + */ + public function stepIClickOnElementInTheTree($method, $text) { $treeEl = $this->getCmsTreeElement(); $treeNode = $treeEl->findLink($text); assertNotNull($treeNode, sprintf('%s not found', $text)); - $treeNode->click(); + $this->interactWithElement($treeNode, $method); } /** From afad65ee71a69754e16e1d4c486e57b29cf1336d Mon Sep 17 00:00:00 2001 From: Tim Snadden Date: Wed, 30 Apr 2014 09:12:23 +1200 Subject: [PATCH 15/23] Fix 'Uncaught ReferenceError: jQuery is not defined' if jQuery is not included in template. --- security/MemberLoginForm.php | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/security/MemberLoginForm.php b/security/MemberLoginForm.php index 9f86fd207..9f6fc6e62 100644 --- a/security/MemberLoginForm.php +++ b/security/MemberLoginForm.php @@ -3,12 +3,12 @@ * Log-in form for the "member" authentication method. * * Available extension points: - * - "authenticationFailed": Called when login was not successful. + * - "authenticationFailed": Called when login was not successful. * Arguments: $data containing the form submission - * - "forgotPassword": Called before forgot password logic kicks in, - * allowing extensions to "veto" execution by returning FALSE. + * - "forgotPassword": Called before forgot password logic kicks in, + * allowing extensions to "veto" execution by returning FALSE. * Arguments: $member containing the detected Member record - * + * * @package framework * @subpackage security */ @@ -21,16 +21,16 @@ class MemberLoginForm extends LoginForm { public $loggedInAsField = 'FirstName'; protected $authenticator_class = 'MemberAuthenticator'; - + /** * Since the logout and dologin actions may be conditionally removed, it's necessary to ensure these * remain valid actions regardless of the member login state. * * @var array - * @config + * @config */ private static $allowed_actions = array('dologin', 'logout'); - + /** * Constructor * @@ -59,7 +59,7 @@ class MemberLoginForm extends LoginForm { if(Director::fileExists($customCSS)) { Requirements::css($customCSS); } - + if(isset($_REQUEST['BackURL'])) { $backURL = $_REQUEST['BackURL']; } else { @@ -92,7 +92,7 @@ class MemberLoginForm extends LoginForm { } if(Security::config()->autologin_enabled) { $fields->push(new CheckboxField( - "Remember", + "Remember", _t('Member.REMEMBERME', "Remember me next time?") )); } @@ -124,7 +124,7 @@ class MemberLoginForm extends LoginForm { $js = <<message = _t( - 'Member.LOGGEDINAS', - "You're logged in as {name}.", + 'Member.LOGGEDINAS', + "You're logged in as {name}.", array('name' => $member->{$this->loggedInAsField}) ); } @@ -162,11 +162,11 @@ JS; Session::set('SessionForms.MemberLoginForm.Remember', isset($data['Remember'])); } - if(isset($_REQUEST['BackURL'])) $backURL = $_REQUEST['BackURL']; - else $backURL = null; + if(isset($_REQUEST['BackURL'])) $backURL = $_REQUEST['BackURL']; + else $backURL = null; if($backURL) Session::set('BackURL', $backURL); - + // Show the right tab on failed login $loginLink = Director::absoluteURL($this->controller->Link('login')); if($backURL) $loginLink .= '?BackURL=' . urlencode($backURL); @@ -201,7 +201,7 @@ JS; $cp->sessionMessage('Your password has expired. Please choose a new one.', 'good'); return $this->controller->redirect('Security/changepassword'); } - + // Absolute redirection URLs may cause spoofing if(isset($_REQUEST['BackURL']) && $_REQUEST['BackURL'] && Director::is_site_url($_REQUEST['BackURL']) ) { return $this->controller->redirect($_REQUEST['BackURL']); @@ -312,7 +312,7 @@ JS; _t('Member.ENTEREMAIL', 'Please enter an email address to get a password reset link.'), 'bad' ); - + $this->controller->redirect('Security/lostpassword'); } } From 4fd3015ea47caa3183a9627d62fbcddef31c8235 Mon Sep 17 00:00:00 2001 From: James Pluck Date: Thu, 1 May 2014 10:45:12 +1200 Subject: [PATCH 16/23] FIX: corrected link to CMS Alternating Button Page --- docs/en/howto/extend-cms-interface.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/howto/extend-cms-interface.md b/docs/en/howto/extend-cms-interface.md index 04622316e..74d80f04a 100644 --- a/docs/en/howto/extend-cms-interface.md +++ b/docs/en/howto/extend-cms-interface.md @@ -210,4 +210,4 @@ blocks and concepts for more complex extensions as well. * [Reference: CMS Architecture](../reference/cms-architecture) * [Reference: Layout](../reference/layout) * [Topics: Rich Text Editing](../topics/rich-text-editing) - * [CMS Alternating Button](../reference/cms-alternating-button) + * [CMS Alternating Button](../howto/cms-alternating-button) From bd5abb62ff7a040a7feb265cb1f9451c7b61e00a Mon Sep 17 00:00:00 2001 From: Michael Parkhill Date: Thu, 1 May 2014 15:35:45 +1200 Subject: [PATCH 17/23] FIX: parent::init is not called first In the controller's init function, parent::init() should be called before any other method calls. --- docs/en/reference/rssfeed.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/en/reference/rssfeed.md b/docs/en/reference/rssfeed.md index b799b5c90..b10cc9eaa 100644 --- a/docs/en/reference/rssfeed.md +++ b/docs/en/reference/rssfeed.md @@ -47,6 +47,7 @@ SilverStripe what values to include in the feed. class Page_Controller extends ContentController { private static $allowed_actions = array('rss'); public function init() { + parent::init(); // linkToFeed will add an appropriate HTML link tag to the website // tag to notify web browsers that an RSS feed is available // for this page. You can include as many feeds on the page as you @@ -56,7 +57,6 @@ SilverStripe what values to include in the feed. // In this example $this->Link("rss") refers to the *rss* function // we define below. RSSFeed::linkToFeed($this->Link("rss"), "RSS feed of this blog"); - parent::init(); } public function rss() { // Creates a new RSS Feed list @@ -87,8 +87,8 @@ updates. Update mysite/code/Page.php to something like this: private static $allowed_actions = array('rss'); public function init() { - RSSFeed::linkToFeed($this->Link() . "rss", "10 Most Recently Updated Pages"); parent::init(); + RSSFeed::linkToFeed($this->Link() . "rss", "10 Most Recently Updated Pages"); } public function rss() { @@ -130,8 +130,8 @@ for all the students as we've seen before. class Page_Controller extends ContentController { private static $allowed_actions = array('students'); public function init() { - RSSFeed::linkToFeed($this->Link("students"), "Students feed"); parent::init(); + RSSFeed::linkToFeed($this->Link("students"), "Students feed"); } public function students() { $rss = new RSSFeed( From 8e841cc4717117919a595dfa0f73f18c6170f82d Mon Sep 17 00:00:00 2001 From: Hamish Friedlander Date: Fri, 2 May 2014 14:41:10 +1200 Subject: [PATCH 18/23] FIX folder Title not being exactly the same as Name field if setName modified the value --- filesystem/File.php | 14 +++++++------- filesystem/Folder.php | 9 ++++++--- tests/filesystem/FolderTest.php | 17 ++++++++++++++++- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/filesystem/File.php b/filesystem/File.php index 965079ace..286bfae06 100644 --- a/filesystem/File.php +++ b/filesystem/File.php @@ -625,19 +625,19 @@ class File extends DataObject { } } - // Update title - if(!$this->getField('Title')) { - $this->__set('Title', str_replace(array('-','_'),' ', preg_replace('/\.[^.]+$/', '', $name))); - } - // Update actual field value $this->setField('Name', $name); // Ensure that the filename is updated as well (only in-memory) // Important: Circumvent the getter to avoid infinite loops $this->setField('Filename', $this->getRelativePath()); - - return $this->getField('Name'); + + // Update title + if(!$this->Title) { + $this->Title = str_replace(array('-','_'),' ', preg_replace('/\.[^.]+$/', '', $name)); + } + + return $name; } /** diff --git a/filesystem/Folder.php b/filesystem/Folder.php index bad6d0d0f..ba03e26f4 100644 --- a/filesystem/Folder.php +++ b/filesystem/Folder.php @@ -352,13 +352,16 @@ class Folder extends File { * Note that this is not appropriate for files, because someone might want to create a human-readable name * of a file that is different from its name on disk. But folders should always match their name on disk. */ public function setTitle($title) { - $this->setField('Title',$title); - parent::setName($title); //set the name and filename to match the title + $this->setName($title); + } + + public function getTitle() { + return $this->Name; } public function setName($name) { - $this->setField('Title',$name); parent::setName($name); + $this->setField('Title', $this->Name); } public function setFilename($filename) { diff --git a/tests/filesystem/FolderTest.php b/tests/filesystem/FolderTest.php index d37d69b2f..cda9b7f62 100644 --- a/tests/filesystem/FolderTest.php +++ b/tests/filesystem/FolderTest.php @@ -354,5 +354,20 @@ class FolderTest extends SapphireTest { $folder4 = Folder::find_or_make('/FolderTest/EN-US-Lang'); $this->assertEquals($folder->ID, $folder4->ID); } - + + public function testTitleTiedToName() { + $newFolder = new Folder(); + + $newFolder->Name = 'TestNameCopiedToTitle'; + $this->assertEquals($newFolder->Name, $newFolder->Title); + + $newFolder->Title = 'TestTitleCopiedToName'; + $this->assertEquals($newFolder->Name, $newFolder->Title); + + $newFolder->Name = 'TestNameWithIllegalCharactersCopiedToTitle '; + $this->assertEquals($newFolder->Name, $newFolder->Title); + + $newFolder->Title = 'TestTitleWithIllegalCharactersCopiedToName '; + $this->assertEquals($newFolder->Name, $newFolder->Title); + } } From 48f65669c8bb05d49a8d1eb83c41da4f88272a3c Mon Sep 17 00:00:00 2001 From: Simon Welsh Date: Fri, 2 May 2014 15:24:51 +1000 Subject: [PATCH 19/23] Change PHP 5.6 to an allowed failure --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index fe75192d1..14e32996e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,6 +26,9 @@ matrix: env: DB=MYSQL CORE_RELEASE=3.1 - php: 5.4 env: DB=MYSQL CORE_RELEASE=3.1 BEHAT_TEST=1 + allow_failures: + - php: 5.6 + env: DB=MYSQL CORE_RELEASE=3.1 before_script: - composer self-update From bec8927a08bf82139020fc3db9f3e6eb25ac0efc Mon Sep 17 00:00:00 2001 From: Will Morgan Date: Thu, 17 Apr 2014 14:14:51 +0100 Subject: [PATCH 20/23] BUG Allow PHPUnit installation with composer / Fix travis --- .travis.yml | 2 +- composer.json | 3 ++ dev/phpunit/PhpUnitWrapper.php | 20 +++++--- dev/phpunit/PhpUnitWrapper_3_4.php | 8 +-- dev/phpunit/PhpUnitWrapper_3_5.php | 59 ++------------------- dev/phpunit/PhpUnitWrapper_Generic.php | 71 ++++++++++++++++++++++++++ 6 files changed, 97 insertions(+), 66 deletions(-) create mode 100644 dev/phpunit/PhpUnitWrapper_Generic.php diff --git a/.travis.yml b/.travis.yml index 14e32996e..5db2c5ec2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -41,7 +41,7 @@ before_script: - php ~/travis-support/travis_setup_php54_webserver.php --if-env BEHAT_TEST script: - - "if [ \"$BEHAT_TEST\" = \"\" ]; then phpunit framework/tests; fi" + - "if [ \"$BEHAT_TEST\" = \"\" ]; then vendor/bin/phpunit framework/tests; fi" - "if [ \"$BEHAT_TEST\" = \"1\" ]; then vendor/bin/behat @framework; fi" after_failure: diff --git a/composer.json b/composer.json index 0114eca1c..16559bd74 100644 --- a/composer.json +++ b/composer.json @@ -19,6 +19,9 @@ "php": ">=5.3.2", "composer/installers": "*" }, + "require-dev": { + "phpunit/PHPUnit": "~3.7" + }, "autoload": { "classmap": ["tests/behat/features/bootstrap"] }, diff --git a/dev/phpunit/PhpUnitWrapper.php b/dev/phpunit/PhpUnitWrapper.php index 194339ea7..3765d6478 100644 --- a/dev/phpunit/PhpUnitWrapper.php +++ b/dev/phpunit/PhpUnitWrapper.php @@ -138,14 +138,22 @@ class PhpUnitWrapper implements IPhpUnitWrapper { public static function inst() { if (self::$phpunit_wrapper == null) { - if (fileExistsInIncludePath("/PHPUnit/Autoload.php")) { + // Loaded via autoloader, composer or other generic + if (class_exists('PHPUnit_Runner_Version')) { + self::$phpunit_wrapper = new PhpUnitWrapper_Generic(); + } + // 3.5 detection + else if (fileExistsInIncludePath("/PHPUnit/Autoload.php")) { self::$phpunit_wrapper = new PhpUnitWrapper_3_5(); - } else - if (fileExistsInIncludePath("/PHPUnit/Framework.php")) { + } + // 3.4 detection + else if (fileExistsInIncludePath("/PHPUnit/Framework.php")) { self::$phpunit_wrapper = new PhpUnitWrapper_3_4(); - } else { + } + // No version found - will lead to an error + else { self::$phpunit_wrapper = new PhpUnitWrapper(); - } + } self::$phpunit_wrapper->init(); } @@ -209,7 +217,7 @@ class PhpUnitWrapper implements IPhpUnitWrapper { $this->beforeRunTests(); $this->getSuite()->run($this->getFrameworkTestResults()); - $this->aferRunTests(); + $this->afterRunTests(); } /** diff --git a/dev/phpunit/PhpUnitWrapper_3_4.php b/dev/phpunit/PhpUnitWrapper_3_4.php index 6a0d5f67b..3e259df2c 100644 --- a/dev/phpunit/PhpUnitWrapper_3_4.php +++ b/dev/phpunit/PhpUnitWrapper_3_4.php @@ -9,7 +9,9 @@ */ class PhpUnitWrapper_3_4 extends PhpUnitWrapper { - protected $version = 'PhpUnit V3.4'; + public function getVersion() { + return 'PhpUnit V3.4'; + } /** * Initialise the wrapper class. @@ -46,10 +48,10 @@ class PhpUnitWrapper_3_4 extends PhpUnitWrapper { } /** - * Overwrites aferRunTests. Creates coverage report and clover report + * Overwrites afterRunTests. Creates coverage report and clover report * if required. */ - protected function aferRunTests() { + protected function afterRunTests() { if($this->getCoverageStatus()) { diff --git a/dev/phpunit/PhpUnitWrapper_3_5.php b/dev/phpunit/PhpUnitWrapper_3_5.php index 4f244e866..d0bf48efe 100644 --- a/dev/phpunit/PhpUnitWrapper_3_5.php +++ b/dev/phpunit/PhpUnitWrapper_3_5.php @@ -4,16 +4,10 @@ * @subpackage dev */ -class PhpUnitWrapper_3_5 extends PhpUnitWrapper { +class PhpUnitWrapper_3_5 extends PhpUnitWrapper_Generic { - protected $version = 'PhpUnit V3.5'; - - protected $coverage = null; - - protected static $test_name = 'SapphireTest'; - - public static function get_test_name() { - return self::$test_name; + public function getVersion() { + return 'PhpUnit V3.5'; } /** @@ -23,56 +17,9 @@ class PhpUnitWrapper_3_5 extends PhpUnitWrapper { if(!class_exists('PHPUnit_Framework_TestCase')) { require_once 'PHP/CodeCoverage.php'; require_once 'PHP/CodeCoverage/Report/HTML.php'; - require_once 'PHPUnit/Autoload.php'; - require_once 'PHP/CodeCoverage/Filter.php'; } } - - /** - * Overwrites beforeRunTests. Initiates coverage-report generation if - * $coverage has been set to true (@see setCoverageStatus). - */ - protected function beforeRunTests() { - - if($this->getCoverageStatus()) { - $this->coverage = new PHP_CodeCoverage(); - $coverage = $this->coverage; - - $filter = $coverage->filter(); - $modules = $this->moduleDirectories(); - - foreach(TestRunner::config()->coverage_filter_dirs as $dir) { - if($dir[0] == '*') { - $dir = substr($dir, 1); - foreach ($modules as $module) { - $filter->addDirectoryToBlacklist(BASE_PATH . "/$module/$dir"); - } - } else { - $filter->addDirectoryToBlacklist(BASE_PATH . '/' . $dir); - } - } - - $filter->addFileToBlacklist(__FILE__, 'PHPUNIT'); - - $coverage->start(self::get_test_name()); - } - } - - /** - * Overwrites aferRunTests. Creates coverage report and clover report - * if required. - */ - protected function aferRunTests() { - - if($this->getCoverageStatus()) { - $coverage = $this->coverage; - $coverage->stop(); - - $writer = new PHP_CodeCoverage_Report_HTML(); - $writer->process($coverage, ASSETS_PATH.'/code-coverage-report'); - } - } } diff --git a/dev/phpunit/PhpUnitWrapper_Generic.php b/dev/phpunit/PhpUnitWrapper_Generic.php new file mode 100644 index 000000000..502c98f88 --- /dev/null +++ b/dev/phpunit/PhpUnitWrapper_Generic.php @@ -0,0 +1,71 @@ +getCoverageStatus()) { + $this->coverage = new PHP_CodeCoverage(); + $coverage = $this->coverage; + + $filter = $coverage->filter(); + $modules = $this->moduleDirectories(); + + foreach(TestRunner::config()->coverage_filter_dirs as $dir) { + if($dir[0] == '*') { + $dir = substr($dir, 1); + foreach ($modules as $module) { + $filter->addDirectoryToBlacklist(BASE_PATH . "/$module/$dir"); + } + } else { + $filter->addDirectoryToBlacklist(BASE_PATH . '/' . $dir); + } + } + + $filter->addFileToBlacklist(__FILE__, 'PHPUNIT'); + + $coverage->start(self::get_test_name()); + } + } + + /** + * Overwrites afterRunTests. Creates coverage report and clover report + * if required. + */ + protected function afterRunTests() { + + if($this->getCoverageStatus()) { + $coverage = $this->coverage; + $coverage->stop(); + + $writer = new PHP_CodeCoverage_Report_HTML(); + $writer->process($coverage, ASSETS_PATH.'/code-coverage-report'); + } + } + +} From b9872c08560834b20cdd92f8119b600dfa8e976b Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Fri, 2 May 2014 15:05:20 +1200 Subject: [PATCH 21/23] Allow PHPUnit installations with composer Instruct travis to use composer version of phpunit --- .travis.yml | 2 +- composer.json | 3 ++ dev/phpunit/PhpUnitWrapper.php | 20 +++++--- dev/phpunit/PhpUnitWrapper_3_4.php | 8 +-- dev/phpunit/PhpUnitWrapper_3_5.php | 59 ++------------------- dev/phpunit/PhpUnitWrapper_Generic.php | 71 ++++++++++++++++++++++++++ 6 files changed, 97 insertions(+), 66 deletions(-) create mode 100644 dev/phpunit/PhpUnitWrapper_Generic.php diff --git a/.travis.yml b/.travis.yml index 6093b7bed..dbe45ae33 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ before_script: - cd ~/builds/ss script: - - phpunit framework/tests + - vendor/bin/phpunit framework/tests branches: except: diff --git a/composer.json b/composer.json index 71633d783..70989787f 100644 --- a/composer.json +++ b/composer.json @@ -19,6 +19,9 @@ "php": ">=5.3.2", "composer/installers": "*" }, + "require-dev": { + "phpunit/PHPUnit": "~3.7" + }, "autoload": { "classmap": ["tests/behat/features/bootstrap"] } diff --git a/dev/phpunit/PhpUnitWrapper.php b/dev/phpunit/PhpUnitWrapper.php index 194339ea7..3765d6478 100644 --- a/dev/phpunit/PhpUnitWrapper.php +++ b/dev/phpunit/PhpUnitWrapper.php @@ -138,14 +138,22 @@ class PhpUnitWrapper implements IPhpUnitWrapper { public static function inst() { if (self::$phpunit_wrapper == null) { - if (fileExistsInIncludePath("/PHPUnit/Autoload.php")) { + // Loaded via autoloader, composer or other generic + if (class_exists('PHPUnit_Runner_Version')) { + self::$phpunit_wrapper = new PhpUnitWrapper_Generic(); + } + // 3.5 detection + else if (fileExistsInIncludePath("/PHPUnit/Autoload.php")) { self::$phpunit_wrapper = new PhpUnitWrapper_3_5(); - } else - if (fileExistsInIncludePath("/PHPUnit/Framework.php")) { + } + // 3.4 detection + else if (fileExistsInIncludePath("/PHPUnit/Framework.php")) { self::$phpunit_wrapper = new PhpUnitWrapper_3_4(); - } else { + } + // No version found - will lead to an error + else { self::$phpunit_wrapper = new PhpUnitWrapper(); - } + } self::$phpunit_wrapper->init(); } @@ -209,7 +217,7 @@ class PhpUnitWrapper implements IPhpUnitWrapper { $this->beforeRunTests(); $this->getSuite()->run($this->getFrameworkTestResults()); - $this->aferRunTests(); + $this->afterRunTests(); } /** diff --git a/dev/phpunit/PhpUnitWrapper_3_4.php b/dev/phpunit/PhpUnitWrapper_3_4.php index 570a0b1d4..96f0fe293 100644 --- a/dev/phpunit/PhpUnitWrapper_3_4.php +++ b/dev/phpunit/PhpUnitWrapper_3_4.php @@ -9,7 +9,9 @@ */ class PhpUnitWrapper_3_4 extends PhpUnitWrapper { - protected $version = 'PhpUnit V3.4'; + public function getVersion() { + return 'PhpUnit V3.4'; + } /** * Initialise the wrapper class. @@ -46,10 +48,10 @@ class PhpUnitWrapper_3_4 extends PhpUnitWrapper { } /** - * Overwrites aferRunTests. Creates coverage report and clover report + * Overwrites afterRunTests. Creates coverage report and clover report * if required. */ - protected function aferRunTests() { + protected function afterRunTests() { if($this->getCoverageStatus()) { diff --git a/dev/phpunit/PhpUnitWrapper_3_5.php b/dev/phpunit/PhpUnitWrapper_3_5.php index 13974225c..d0bf48efe 100644 --- a/dev/phpunit/PhpUnitWrapper_3_5.php +++ b/dev/phpunit/PhpUnitWrapper_3_5.php @@ -4,16 +4,10 @@ * @subpackage dev */ -class PhpUnitWrapper_3_5 extends PhpUnitWrapper { +class PhpUnitWrapper_3_5 extends PhpUnitWrapper_Generic { - protected $version = 'PhpUnit V3.5'; - - protected $coverage = null; - - protected static $test_name = 'SapphireTest'; - - public static function get_test_name() { - return self::$test_name; + public function getVersion() { + return 'PhpUnit V3.5'; } /** @@ -23,56 +17,9 @@ class PhpUnitWrapper_3_5 extends PhpUnitWrapper { if(!class_exists('PHPUnit_Framework_TestCase')) { require_once 'PHP/CodeCoverage.php'; require_once 'PHP/CodeCoverage/Report/HTML.php'; - require_once 'PHPUnit/Autoload.php'; - require_once 'PHP/CodeCoverage/Filter.php'; } } - - /** - * Overwrites beforeRunTests. Initiates coverage-report generation if - * $coverage has been set to true (@see setCoverageStatus). - */ - protected function beforeRunTests() { - - if($this->getCoverageStatus()) { - $this->coverage = new PHP_CodeCoverage(); - $coverage = $this->coverage; - - $filter = $coverage->filter(); - $modules = $this->moduleDirectories(); - - foreach(TestRunner::$coverage_filter_dirs as $dir) { - if($dir[0] == '*') { - $dir = substr($dir, 1); - foreach ($modules as $module) { - $filter->addDirectoryToBlacklist(BASE_PATH . "/$module/$dir"); - } - } else { - $filter->addDirectoryToBlacklist(BASE_PATH . '/' . $dir); - } - } - - $filter->addFileToBlacklist(__FILE__, 'PHPUNIT'); - - $coverage->start(self::get_test_name()); - } - } - - /** - * Overwrites aferRunTests. Creates coverage report and clover report - * if required. - */ - protected function aferRunTests() { - - if($this->getCoverageStatus()) { - $coverage = $this->coverage; - $coverage->stop(); - - $writer = new PHP_CodeCoverage_Report_HTML(); - $writer->process($coverage, ASSETS_PATH.'/code-coverage-report'); - } - } } diff --git a/dev/phpunit/PhpUnitWrapper_Generic.php b/dev/phpunit/PhpUnitWrapper_Generic.php new file mode 100644 index 000000000..502c98f88 --- /dev/null +++ b/dev/phpunit/PhpUnitWrapper_Generic.php @@ -0,0 +1,71 @@ +getCoverageStatus()) { + $this->coverage = new PHP_CodeCoverage(); + $coverage = $this->coverage; + + $filter = $coverage->filter(); + $modules = $this->moduleDirectories(); + + foreach(TestRunner::config()->coverage_filter_dirs as $dir) { + if($dir[0] == '*') { + $dir = substr($dir, 1); + foreach ($modules as $module) { + $filter->addDirectoryToBlacklist(BASE_PATH . "/$module/$dir"); + } + } else { + $filter->addDirectoryToBlacklist(BASE_PATH . '/' . $dir); + } + } + + $filter->addFileToBlacklist(__FILE__, 'PHPUNIT'); + + $coverage->start(self::get_test_name()); + } + } + + /** + * Overwrites afterRunTests. Creates coverage report and clover report + * if required. + */ + protected function afterRunTests() { + + if($this->getCoverageStatus()) { + $coverage = $this->coverage; + $coverage->stop(); + + $writer = new PHP_CodeCoverage_Report_HTML(); + $writer->process($coverage, ASSETS_PATH.'/code-coverage-report'); + } + } + +} From 9116e40eb86d45854c9f7693e3049288137511ca Mon Sep 17 00:00:00 2001 From: Simon Welsh Date: Sun, 4 May 2014 11:46:06 +1000 Subject: [PATCH 22/23] Don't add the class manifest with tests as an exclusive manifest --- dev/TestRunner.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/TestRunner.php b/dev/TestRunner.php index 786499de4..7b2b23aea 100755 --- a/dev/TestRunner.php +++ b/dev/TestRunner.php @@ -82,7 +82,7 @@ class TestRunner extends Controller { BASE_PATH, true, isset($_GET['flush']) ); - SS_ClassLoader::instance()->pushManifest($classManifest); + SS_ClassLoader::instance()->pushManifest($classManifest, false); SapphireTest::set_test_class_manifest($classManifest); SS_TemplateLoader::instance()->pushManifest(new SS_TemplateManifest( From 677f0edcfcf7f8bd52ff3a7bccd23200d90407e8 Mon Sep 17 00:00:00 2001 From: Stephen Shkardoon Date: Mon, 5 May 2014 19:26:05 +1200 Subject: [PATCH 23/23] MINOR LeftAndMain::getRecord check $ClassName before use While the check for `$classname` was done in the first conditional, it was left out of the other two, leading to potential issues when an invalid ID was given, instead of the expected `false`. --- admin/code/LeftAndMain.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/code/LeftAndMain.php b/admin/code/LeftAndMain.php index de8a36b53..fd1f53982 100644 --- a/admin/code/LeftAndMain.php +++ b/admin/code/LeftAndMain.php @@ -627,9 +627,9 @@ class LeftAndMain extends Controller implements PermissionProvider { $className = $this->stat('tree_class'); if($className && $id instanceof $className) { return $id; - } else if($id == 'root') { + } else if($className && $id == 'root') { return singleton($className); - } else if(is_numeric($id)) { + } else if($className && is_numeric($id)) { return DataObject::get_by_id($className, $id); } else { return false;