From 90ce82a1a120bbb76c88b4d2f2d4befab1ad86ae Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Mon, 5 Dec 2016 17:33:44 -0300 Subject: [PATCH 001/178] Add symfony git ignore --- code/.gitignore | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 code/.gitignore diff --git a/code/.gitignore b/code/.gitignore new file mode 100644 index 000000000..93821ad1c --- /dev/null +++ b/code/.gitignore @@ -0,0 +1,16 @@ +/app/config/parameters.yml +/build/ +/phpunit.xml +/var/* +!/var/cache +/var/cache/* +!var/cache/.gitkeep +!/var/logs +/var/logs/* +!var/logs/.gitkeep +!/var/sessions +/var/sessions/* +!var/sessions/.gitkeep +!var/SymfonyRequirements.php +/vendor/ +/web/bundles/ From c52d9cb5ff7c1b13f22307495800b420ebe418d3 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Mon, 5 Dec 2016 17:34:27 -0300 Subject: [PATCH 002/178] initial symfony commit --- code/LICENSE | 19 + code/README.md | 69 + code/app/.htaccess | 7 + code/app/AppCache.php | 7 + code/app/AppKernel.php | 50 + code/app/Resources/views/base.html.twig | 13 + .../Resources/views/default/index.html.twig | 76 + code/app/autoload.php | 11 + code/app/config/config.yml | 71 + code/app/config/config_dev.yml | 34 + code/app/config/config_prod.yml | 21 + code/app/config/config_test.yml | 16 + code/app/config/parameters.yml.dist | 19 + code/app/config/routing.yml | 3 + code/app/config/routing_dev.yml | 14 + code/app/config/security.yml | 24 + code/app/config/services.yml | 9 + code/bin/console | 28 + code/bin/symfony_requirements | 146 ++ code/composer.json | 65 + code/composer.lock | 2092 +++++++++++++++++ code/config.php | 0 code/phpunit.xml.dist | 31 + code/src/.htaccess | 7 + code/src/AppBundle/AppBundle.php | 9 + .../Controller/DefaultController.php | 21 + .../Controller/DefaultControllerTest.php | 18 + code/var/SymfonyRequirements.php | 819 +++++++ code/var/cache/.gitkeep | 0 code/var/logs/.gitkeep | 0 code/var/sessions/.gitkeep | 0 code/web/.htaccess | 68 + code/web/app.php | 18 + code/web/app_dev.php | 30 + code/web/apple-touch-icon.png | Bin 0 -> 2092 bytes code/web/config.php | 422 ++++ code/web/favicon.ico | Bin 0 -> 6518 bytes code/web/robots.txt | 5 + docker/docker-compose-test.yml | 3 +- docker/php/scripts/www.conf | 53 + 40 files changed, 4297 insertions(+), 1 deletion(-) create mode 100644 code/LICENSE create mode 100644 code/README.md create mode 100644 code/app/.htaccess create mode 100644 code/app/AppCache.php create mode 100644 code/app/AppKernel.php create mode 100644 code/app/Resources/views/base.html.twig create mode 100644 code/app/Resources/views/default/index.html.twig create mode 100644 code/app/autoload.php create mode 100644 code/app/config/config.yml create mode 100644 code/app/config/config_dev.yml create mode 100644 code/app/config/config_prod.yml create mode 100644 code/app/config/config_test.yml create mode 100644 code/app/config/parameters.yml.dist create mode 100644 code/app/config/routing.yml create mode 100644 code/app/config/routing_dev.yml create mode 100644 code/app/config/security.yml create mode 100644 code/app/config/services.yml create mode 100755 code/bin/console create mode 100755 code/bin/symfony_requirements create mode 100644 code/composer.json create mode 100644 code/composer.lock create mode 100755 code/config.php create mode 100644 code/phpunit.xml.dist create mode 100644 code/src/.htaccess create mode 100644 code/src/AppBundle/AppBundle.php create mode 100644 code/src/AppBundle/Controller/DefaultController.php create mode 100644 code/tests/AppBundle/Controller/DefaultControllerTest.php create mode 100644 code/var/SymfonyRequirements.php create mode 100644 code/var/cache/.gitkeep create mode 100644 code/var/logs/.gitkeep create mode 100644 code/var/sessions/.gitkeep create mode 100644 code/web/.htaccess create mode 100644 code/web/app.php create mode 100644 code/web/app_dev.php create mode 100644 code/web/apple-touch-icon.png create mode 100644 code/web/config.php create mode 100644 code/web/favicon.ico create mode 100644 code/web/robots.txt create mode 100644 docker/php/scripts/www.conf diff --git a/code/LICENSE b/code/LICENSE new file mode 100644 index 000000000..12a74531e --- /dev/null +++ b/code/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2004-2016 Fabien Potencier + +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. diff --git a/code/README.md b/code/README.md new file mode 100644 index 000000000..23cec201f --- /dev/null +++ b/code/README.md @@ -0,0 +1,69 @@ +Symfony Standard Edition +======================== + +Welcome to the Symfony Standard Edition - a fully-functional Symfony +application that you can use as the skeleton for your new applications. + +For details on how to download and get started with Symfony, see the +[Installation][1] chapter of the Symfony Documentation. + +What's inside? +-------------- + +The Symfony Standard Edition is configured with the following defaults: + + * An AppBundle you can use to start coding; + + * Twig as the only configured template engine; + + * Doctrine ORM/DBAL; + + * Swiftmailer; + + * Annotations enabled for everything. + +It comes pre-configured with the following bundles: + + * **FrameworkBundle** - The core Symfony framework bundle + + * [**SensioFrameworkExtraBundle**][6] - Adds several enhancements, including + template and routing annotation capability + + * [**DoctrineBundle**][7] - Adds support for the Doctrine ORM + + * [**TwigBundle**][8] - Adds support for the Twig templating engine + + * [**SecurityBundle**][9] - Adds security by integrating Symfony's security + component + + * [**SwiftmailerBundle**][10] - Adds support for Swiftmailer, a library for + sending emails + + * [**MonologBundle**][11] - Adds support for Monolog, a logging library + + * **WebProfilerBundle** (in dev/test env) - Adds profiling functionality and + the web debug toolbar + + * **SensioDistributionBundle** (in dev/test env) - Adds functionality for + configuring and working with Symfony distributions + + * [**SensioGeneratorBundle**][13] (in dev/test env) - Adds code generation + capabilities + + * **DebugBundle** (in dev/test env) - Adds Debug and VarDumper component + integration + +All libraries and bundles included in the Symfony Standard Edition are +released under the MIT or BSD license. + +Enjoy! + +[1]: https://symfony.com/doc/3.2/setup.html +[6]: https://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html +[7]: https://symfony.com/doc/3.2/doctrine.html +[8]: https://symfony.com/doc/3.2/templating.html +[9]: https://symfony.com/doc/3.2/security.html +[10]: https://symfony.com/doc/3.2/email.html +[11]: https://symfony.com/doc/3.2/logging.html +[12]: https://symfony.com/doc/3.2/assetic/asset_management.html +[13]: https://symfony.com/doc/current/bundles/SensioGeneratorBundle/index.html diff --git a/code/app/.htaccess b/code/app/.htaccess new file mode 100644 index 000000000..fb1de45bd --- /dev/null +++ b/code/app/.htaccess @@ -0,0 +1,7 @@ + + Require all denied + + + Order deny,allow + Deny from all + diff --git a/code/app/AppCache.php b/code/app/AppCache.php new file mode 100644 index 000000000..639ec2cd7 --- /dev/null +++ b/code/app/AppCache.php @@ -0,0 +1,7 @@ +getEnvironment(), ['dev', 'test'], true)) { + $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); + $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle(); + $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle(); + $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle(); + } + + return $bundles; + } + + public function getRootDir() + { + return __DIR__; + } + + public function getCacheDir() + { + return dirname(__DIR__).'/var/cache/'.$this->getEnvironment(); + } + + public function getLogDir() + { + return dirname(__DIR__).'/var/logs'; + } + + public function registerContainerConfiguration(LoaderInterface $loader) + { + $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml'); + } +} diff --git a/code/app/Resources/views/base.html.twig b/code/app/Resources/views/base.html.twig new file mode 100644 index 000000000..bafd28d3b --- /dev/null +++ b/code/app/Resources/views/base.html.twig @@ -0,0 +1,13 @@ + + + + + {% block title %}Welcome!{% endblock %} + {% block stylesheets %}{% endblock %} + + + + {% block body %}{% endblock %} + {% block javascripts %}{% endblock %} + + diff --git a/code/app/Resources/views/default/index.html.twig b/code/app/Resources/views/default/index.html.twig new file mode 100644 index 000000000..1ce2bac82 --- /dev/null +++ b/code/app/Resources/views/default/index.html.twig @@ -0,0 +1,76 @@ +{% extends 'base.html.twig' %} + +{% block body %} +
+
+
+

Welcome to Symfony {{ constant('Symfony\\Component\\HttpKernel\\Kernel::VERSION') }}

+
+ +
+

+ + + Your application is now ready. You can start working on it at: + {{ base_dir }} +

+
+ + + +
+
+{% endblock %} + +{% block stylesheets %} + +{% endblock %} diff --git a/code/app/autoload.php b/code/app/autoload.php new file mode 100644 index 000000000..31321faa5 --- /dev/null +++ b/code/app/autoload.php @@ -0,0 +1,11 @@ +getParameterOption(['--env', '-e'], getenv('SYMFONY_ENV') ?: 'dev'); +$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(['--no-debug', '']) && $env !== 'prod'; + +if ($debug) { + Debug::enable(); +} + +$kernel = new AppKernel($env, $debug); +$application = new Application($kernel); +$application->run($input); diff --git a/code/bin/symfony_requirements b/code/bin/symfony_requirements new file mode 100755 index 000000000..a7bf65a1b --- /dev/null +++ b/code/bin/symfony_requirements @@ -0,0 +1,146 @@ +#!/usr/bin/env php +getPhpIniConfigPath(); + +echo_title('Symfony Requirements Checker'); + +echo '> PHP is using the following php.ini file:'.PHP_EOL; +if ($iniPath) { + echo_style('green', ' '.$iniPath); +} else { + echo_style('yellow', ' WARNING: No configuration file (php.ini) used by PHP!'); +} + +echo PHP_EOL.PHP_EOL; + +echo '> Checking Symfony requirements:'.PHP_EOL.' '; + +$messages = array(); +foreach ($symfonyRequirements->getRequirements() as $req) { + if ($helpText = get_error_message($req, $lineSize)) { + echo_style('red', 'E'); + $messages['error'][] = $helpText; + } else { + echo_style('green', '.'); + } +} + +$checkPassed = empty($messages['error']); + +foreach ($symfonyRequirements->getRecommendations() as $req) { + if ($helpText = get_error_message($req, $lineSize)) { + echo_style('yellow', 'W'); + $messages['warning'][] = $helpText; + } else { + echo_style('green', '.'); + } +} + +if ($checkPassed) { + echo_block('success', 'OK', 'Your system is ready to run Symfony projects'); +} else { + echo_block('error', 'ERROR', 'Your system is not ready to run Symfony projects'); + + echo_title('Fix the following mandatory requirements', 'red'); + + foreach ($messages['error'] as $helpText) { + echo ' * '.$helpText.PHP_EOL; + } +} + +if (!empty($messages['warning'])) { + echo_title('Optional recommendations to improve your setup', 'yellow'); + + foreach ($messages['warning'] as $helpText) { + echo ' * '.$helpText.PHP_EOL; + } +} + +echo PHP_EOL; +echo_style('title', 'Note'); +echo ' The command console could use a different php.ini file'.PHP_EOL; +echo_style('title', '~~~~'); +echo ' than the one used with your web server. To be on the'.PHP_EOL; +echo ' safe side, please check the requirements from your web'.PHP_EOL; +echo ' server using the '; +echo_style('yellow', 'web/config.php'); +echo ' script.'.PHP_EOL; +echo PHP_EOL; + +exit($checkPassed ? 0 : 1); + +function get_error_message(Requirement $requirement, $lineSize) +{ + if ($requirement->isFulfilled()) { + return; + } + + $errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL; + $errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL; + + return $errorMessage; +} + +function echo_title($title, $style = null) +{ + $style = $style ?: 'title'; + + echo PHP_EOL; + echo_style($style, $title.PHP_EOL); + echo_style($style, str_repeat('~', strlen($title)).PHP_EOL); + echo PHP_EOL; +} + +function echo_style($style, $message) +{ + // ANSI color codes + $styles = array( + 'reset' => "\033[0m", + 'red' => "\033[31m", + 'green' => "\033[32m", + 'yellow' => "\033[33m", + 'error' => "\033[37;41m", + 'success' => "\033[37;42m", + 'title' => "\033[34m", + ); + $supports = has_color_support(); + + echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : ''); +} + +function echo_block($style, $title, $message) +{ + $message = ' '.trim($message).' '; + $width = strlen($message); + + echo PHP_EOL.PHP_EOL; + + echo_style($style, str_repeat(' ', $width)); + echo PHP_EOL; + echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT)); + echo PHP_EOL; + echo_style($style, $message); + echo PHP_EOL; + echo_style($style, str_repeat(' ', $width)); + echo PHP_EOL; +} + +function has_color_support() +{ + static $support; + + if (null === $support) { + if (DIRECTORY_SEPARATOR == '\\') { + $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI'); + } else { + $support = function_exists('posix_isatty') && @posix_isatty(STDOUT); + } + } + + return $support; +} diff --git a/code/composer.json b/code/composer.json new file mode 100644 index 000000000..fd21ada36 --- /dev/null +++ b/code/composer.json @@ -0,0 +1,65 @@ +{ + "name": "symfony/framework-standard-edition", + "license": "MIT", + "type": "project", + "description": "The \"Symfony Standard Edition\" distribution", + "autoload": { + "psr-4": { "": "src/" }, + "classmap": [ "app/AppKernel.php", "app/AppCache.php" ] + }, + "autoload-dev": { + "psr-4": { "Tests\\": "tests/" } + }, + "require": { + "php": ">=5.5.9", + "symfony/symfony": "3.2.*", + "doctrine/orm": "^2.5", + "doctrine/doctrine-bundle": "^1.6", + "doctrine/doctrine-cache-bundle": "^1.2", + "symfony/swiftmailer-bundle": "^2.3", + "symfony/monolog-bundle": "^3.0", + "symfony/polyfill-apcu": "^1.0", + "sensio/distribution-bundle": "^5.0", + "sensio/framework-extra-bundle": "^3.0.2", + "incenteev/composer-parameter-handler": "^2.0" + }, + "require-dev": { + "sensio/generator-bundle": "^3.0", + "symfony/phpunit-bridge": "^3.0" + }, + "scripts": { + "symfony-scripts": [ + "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", + "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", + "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", + "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", + "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", + "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" + ], + "post-install-cmd": [ + "@symfony-scripts" + ], + "post-update-cmd": [ + "@symfony-scripts" + ] + }, + "config": { + "platform": { + "php": "5.5.9" + } + }, + "extra": { + "symfony-app-dir": "app", + "symfony-bin-dir": "bin", + "symfony-var-dir": "var", + "symfony-web-dir": "web", + "symfony-tests-dir": "tests", + "symfony-assets-install": "relative", + "incenteev-parameters": { + "file": "app/config/parameters.yml" + }, + "branch-alias": { + "dev-master": "3.2-dev" + } + } +} diff --git a/code/composer.lock b/code/composer.lock new file mode 100644 index 000000000..3f443de07 --- /dev/null +++ b/code/composer.lock @@ -0,0 +1,2092 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "e8806838d7235c3d2ab386293836949f", + "packages": [ + { + "name": "doctrine/annotations", + "version": "v1.2.7", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": ">=5.3.2" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Annotations\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2015-08-31T12:32:49+00:00" + }, + { + "name": "doctrine/cache", + "version": "v1.6.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/b6f544a20f4807e81f7044d31e679ccbb1866dc3", + "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3", + "shasum": "" + }, + "require": { + "php": "~5.5|~7.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "phpunit/phpunit": "~4.8|~5.0", + "predis/predis": "~1.0", + "satooshi/php-coveralls": "~0.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2016-10-29T11:16:17+00:00" + }, + { + "name": "doctrine/collections", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a", + "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2015-04-14T22:21:58+00:00" + }, + { + "name": "doctrine/common", + "version": "v2.6.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "a579557bc689580c19fee4e27487a67fe60defc0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/a579557bc689580c19fee4e27487a67fe60defc0", + "reference": "a579557bc689580c19fee4e27487a67fe60defc0", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "doctrine/cache": "1.*", + "doctrine/collections": "1.*", + "doctrine/inflector": "1.*", + "doctrine/lexer": "1.*", + "php": "~5.5|~7.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8|~5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common Library for Doctrine projects", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "collections", + "eventmanager", + "persistence", + "spl" + ], + "time": "2015-12-25T13:18:31+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.5.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/9f8c05cd5225a320d56d4bfdb4772f10d045a0c9", + "reference": "9f8c05cd5225a320d56d4bfdb4772f10d045a0c9", + "shasum": "" + }, + "require": { + "doctrine/common": ">=2.4,<2.7-dev", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "4.*", + "symfony/console": "2.*||^3.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\DBAL\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Database Abstraction Layer", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "persistence", + "queryobject" + ], + "time": "2016-09-09T19:13:33+00:00" + }, + { + "name": "doctrine/doctrine-bundle", + "version": "1.6.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineBundle.git", + "reference": "dd40b0a7fb16658cda9def9786992b8df8a49be7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/dd40b0a7fb16658cda9def9786992b8df8a49be7", + "reference": "dd40b0a7fb16658cda9def9786992b8df8a49be7", + "shasum": "" + }, + "require": { + "doctrine/dbal": "~2.3", + "doctrine/doctrine-cache-bundle": "~1.0", + "jdorn/sql-formatter": "~1.1", + "php": ">=5.3.2", + "symfony/console": "~2.3|~3.0", + "symfony/dependency-injection": "~2.3|~3.0", + "symfony/doctrine-bridge": "~2.2|~3.0", + "symfony/framework-bundle": "~2.3|~3.0" + }, + "require-dev": { + "doctrine/orm": "~2.3", + "phpunit/phpunit": "~4", + "satooshi/php-coveralls": "~0.6.1", + "symfony/phpunit-bridge": "~2.7|~3.0", + "symfony/property-info": "~2.8|~3.0", + "symfony/validator": "~2.2|~3.0", + "symfony/yaml": "~2.2|~3.0", + "twig/twig": "~1.10" + }, + "suggest": { + "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", + "symfony/web-profiler-bundle": "To use the data collector." + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\DoctrineBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org/" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony DoctrineBundle", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "orm", + "persistence" + ], + "time": "2016-08-10T15:35:22+00:00" + }, + { + "name": "doctrine/doctrine-cache-bundle", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineCacheBundle.git", + "reference": "18c600a9b82f6454d2e81ca4957cdd56a1cf3504" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/18c600a9b82f6454d2e81ca4957cdd56a1cf3504", + "reference": "18c600a9b82f6454d2e81ca4957cdd56a1cf3504", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.4.2", + "doctrine/inflector": "~1.0", + "php": ">=5.3.2", + "symfony/doctrine-bridge": "~2.2|~3.0" + }, + "require-dev": { + "instaclick/coding-standard": "~1.1", + "instaclick/object-calisthenics-sniffs": "dev-master", + "instaclick/symfony2-coding-standard": "dev-remaster", + "phpunit/phpunit": "~4", + "predis/predis": "~0.8", + "satooshi/php-coveralls": "~0.6.1", + "squizlabs/php_codesniffer": "~1.5", + "symfony/console": "~2.2|~3.0", + "symfony/finder": "~2.2|~3.0", + "symfony/framework-bundle": "~2.2|~3.0", + "symfony/phpunit-bridge": "~2.7|~3.0", + "symfony/security-acl": "~2.3|~3.0", + "symfony/validator": "~2.2|~3.0", + "symfony/yaml": "~2.2|~3.0" + }, + "suggest": { + "symfony/security-acl": "For using this bundle to cache ACLs" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Fabio B. Silva", + "email": "fabio.bat.silva@gmail.com" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@hotmail.com" + }, + { + "name": "Doctrine Project", + "homepage": "http://www.doctrine-project.org/" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Bundle for Doctrine Cache", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2016-01-26T17:28:51+00:00" + }, + { + "name": "doctrine/inflector", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Inflector\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2015-11-06T14:35:42+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14T21:17:01+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "doctrine/orm", + "version": "v2.5.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/doctrine2.git", + "reference": "73e4be7c7b3ba26f96b781a40b33feba4dfa6d45" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/73e4be7c7b3ba26f96b781a40b33feba4dfa6d45", + "reference": "73e4be7c7b3ba26f96b781a40b33feba4dfa6d45", + "shasum": "" + }, + "require": { + "doctrine/cache": "~1.4", + "doctrine/collections": "~1.2", + "doctrine/common": ">=2.5-dev,<2.7-dev", + "doctrine/dbal": ">=2.5-dev,<2.6-dev", + "doctrine/instantiator": "~1.0.1", + "ext-pdo": "*", + "php": ">=5.4", + "symfony/console": "~2.5|~3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0", + "symfony/yaml": "~2.3|~3.0" + }, + "suggest": { + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + }, + "bin": [ + "bin/doctrine", + "bin/doctrine.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\ORM\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "orm" + ], + "time": "2016-09-10T18:51:13+00:00" + }, + { + "name": "incenteev/composer-parameter-handler", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/Incenteev/ParameterHandler.git", + "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc", + "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/yaml": "~2.3|~3.0" + }, + "require-dev": { + "composer/composer": "1.0.*@dev", + "phpspec/prophecy-phpunit": "~1.0", + "symfony/filesystem": "~2.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Incenteev\\ParameterHandler\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Composer script handling your ignored parameter file", + "homepage": "https://github.com/Incenteev/ParameterHandler", + "keywords": [ + "parameters management" + ], + "time": "2015-11-10T17:04:01+00:00" + }, + { + "name": "jdorn/sql-formatter", + "version": "v1.2.17", + "source": { + "type": "git", + "url": "https://github.com/jdorn/sql-formatter.git", + "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", + "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "lib" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Dorn", + "email": "jeremy@jeremydorn.com", + "homepage": "http://jeremydorn.com/" + } + ], + "description": "a PHP SQL highlighting library", + "homepage": "https://github.com/jdorn/sql-formatter/", + "keywords": [ + "highlight", + "sql" + ], + "time": "2014-01-12T16:20:24+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.22.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "bad29cb8d18ab0315e6c477751418a82c850d558" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bad29cb8d18ab0315e6c477751418a82c850d558", + "reference": "bad29cb8d18ab0315e6c477751418a82c850d558", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-11-26T00:15:39+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e", + "reference": "a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "pseudorandom", + "random" + ], + "time": "2016-11-07T23:38:38+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, + { + "name": "sensio/distribution-bundle", + "version": "v5.0.14", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", + "reference": "e64947de9ebc37732a62f5115164484a9bee7fa6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/e64947de9ebc37732a62f5115164484a9bee7fa6", + "reference": "e64947de9ebc37732a62f5115164484a9bee7fa6", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "sensiolabs/security-checker": "~3.0|~4.0", + "symfony/class-loader": "~2.3|~3.0", + "symfony/config": "~2.3|~3.0", + "symfony/dependency-injection": "~2.3|~3.0", + "symfony/filesystem": "~2.3|~3.0", + "symfony/http-kernel": "~2.3|~3.0", + "symfony/process": "~2.3|~3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\DistributionBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Base bundle for Symfony Distributions", + "keywords": [ + "configuration", + "distribution" + ], + "time": "2016-10-30T23:18:01+00:00" + }, + { + "name": "sensio/framework-extra-bundle", + "version": "v3.0.16", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "507a15f56fa7699f6cc8c2c7de4080b19ce22546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/507a15f56fa7699f6cc8c2c7de4080b19ce22546", + "reference": "507a15f56fa7699f6cc8c2c7de4080b19ce22546", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.2", + "symfony/dependency-injection": "~2.3|~3.0", + "symfony/framework-bundle": "~2.3|~3.0" + }, + "require-dev": { + "symfony/browser-kit": "~2.3|~3.0", + "symfony/dom-crawler": "~2.3|~3.0", + "symfony/expression-language": "~2.4|~3.0", + "symfony/finder": "~2.3|~3.0", + "symfony/phpunit-bridge": "~2.7|~3.0", + "symfony/security-bundle": "~2.4|~3.0", + "symfony/twig-bundle": "~2.3|~3.0", + "twig/twig": "~1.11|~2.0" + }, + "suggest": { + "symfony/expression-language": "", + "symfony/psr-http-message-bridge": "To use the PSR-7 converters", + "symfony/security-bundle": "" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\FrameworkExtraBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle provides a way to configure your controllers with annotations", + "keywords": [ + "annotations", + "controllers" + ], + "time": "2016-03-25T17:08:27+00:00" + }, + { + "name": "sensiolabs/security-checker", + "version": "v4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/security-checker.git", + "reference": "116027b57b568ed61b7b1c80eeb4f6ee9e8c599c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/116027b57b568ed61b7b1c80eeb4f6ee9e8c599c", + "reference": "116027b57b568ed61b7b1c80eeb4f6ee9e8c599c", + "shasum": "" + }, + "require": { + "symfony/console": "~2.7|~3.0" + }, + "bin": [ + "security-checker" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-0": { + "SensioLabs\\Security": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "A security checker for your composer.lock", + "time": "2016-09-23T18:09:57+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v5.4.4", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "545ce9136690cea74f98f86fbb9c92dd9ab1a756" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/545ce9136690cea74f98f86fbb9c92dd9ab1a756", + "reference": "545ce9136690cea74f98f86fbb9c92dd9ab1a756", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "mockery/mockery": "~0.9.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "http://swiftmailer.org", + "keywords": [ + "email", + "mail", + "mailer" + ], + "time": "2016-11-24T01:01:23+00:00" + }, + { + "name": "symfony/monolog-bundle", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "5f2d2d62530cd66be361216107869a3b061045db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/5f2d2d62530cd66be361216107869a3b061045db", + "reference": "5f2d2d62530cd66be361216107869a3b061045db", + "shasum": "" + }, + "require": { + "monolog/monolog": "~1.18", + "php": ">=5.3.2", + "symfony/config": "~2.7|~3.0", + "symfony/dependency-injection": "~2.7|~3.0", + "symfony/http-kernel": "~2.7|~3.0", + "symfony/monolog-bridge": "~2.7|~3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8", + "symfony/console": "~2.3|~3.0", + "symfony/yaml": "~2.3|~3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MonologBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony MonologBundle", + "homepage": "http://symfony.com", + "keywords": [ + "log", + "logging" + ], + "time": "2016-11-15T15:54:07+00:00" + }, + { + "name": "symfony/polyfill-apcu", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-apcu.git", + "reference": "5d4474f447403c3348e37b70acc2b95475b7befa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/5d4474f447403c3348e37b70acc2b95475b7befa", + "reference": "5d4474f447403c3348e37b70acc2b95475b7befa", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "apcu", + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-intl-icu", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "2d6e2b20d457603eefb6e614286c22efca30fdb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/2d6e2b20d457603eefb6e614286c22efca30fdb4", + "reference": "2d6e2b20d457603eefb6e614286c22efca30fdb4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/intl": "~2.3|~3.0" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's ICU-related data and classes", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "1dd42b9b89556f18092f3d1ada22cb05ac85383c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/1dd42b9b89556f18092f3d1ada22cb05ac85383c", + "reference": "1dd42b9b89556f18092f3d1ada22cb05ac85383c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-util": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php56\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-php70", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "13ce343935f0f91ca89605a2f6ca6f5c2f3faac2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/13ce343935f0f91ca89605a2f6ca6f5c2f3faac2", + "reference": "13ce343935f0f91ca89605a2f6ca6f5c2f3faac2", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-util", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-util.git", + "reference": "746bce0fca664ac0a575e465f65c6643faddf7fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/746bce0fca664ac0a575e465f65c6643faddf7fb", + "reference": "746bce0fca664ac0a575e465f65c6643faddf7fb", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Util\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony utilities for portability of PHP codes", + "homepage": "https://symfony.com", + "keywords": [ + "compat", + "compatibility", + "polyfill", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/swiftmailer-bundle", + "version": "v2.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/swiftmailer-bundle.git", + "reference": "d7b7bd6bb6e9b32ebc5f9778f94d4b4e4af5d069" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/d7b7bd6bb6e9b32ebc5f9778f94d4b4e4af5d069", + "reference": "d7b7bd6bb6e9b32ebc5f9778f94d4b4e4af5d069", + "shasum": "" + }, + "require": { + "php": ">=5.3.2", + "swiftmailer/swiftmailer": ">=4.2.0,~5.0", + "symfony/config": "~2.7|~3.0", + "symfony/dependency-injection": "~2.7|~3.0", + "symfony/http-kernel": "~2.7|~3.0" + }, + "require-dev": { + "symfony/console": "~2.7|~3.0", + "symfony/framework-bundle": "~2.7|~3.0", + "symfony/phpunit-bridge": "~2.7|~3.0", + "symfony/yaml": "~2.7|~3.0" + }, + "suggest": { + "psr/log": "Allows logging" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SwiftmailerBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony SwiftmailerBundle", + "homepage": "http://symfony.com", + "time": "2016-10-27T17:59:30+00:00" + }, + { + "name": "symfony/symfony", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/symfony.git", + "reference": "b96a144bc875684f3338f697687147a2696d73eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/symfony/zipball/b96a144bc875684f3338f697687147a2696d73eb", + "reference": "b96a144bc875684f3338f697687147a2696d73eb", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.4", + "php": ">=5.5.9", + "psr/cache": "~1.0", + "psr/log": "~1.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php56": "~1.0", + "symfony/polyfill-php70": "~1.0", + "symfony/polyfill-util": "~1.0", + "twig/twig": "~1.28|~2.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.0", + "phpdocumentor/type-resolver": "<0.2.0" + }, + "provide": { + "psr/cache-implementation": "1.0" + }, + "replace": { + "symfony/asset": "self.version", + "symfony/browser-kit": "self.version", + "symfony/cache": "self.version", + "symfony/class-loader": "self.version", + "symfony/config": "self.version", + "symfony/console": "self.version", + "symfony/css-selector": "self.version", + "symfony/debug": "self.version", + "symfony/debug-bundle": "self.version", + "symfony/dependency-injection": "self.version", + "symfony/doctrine-bridge": "self.version", + "symfony/dom-crawler": "self.version", + "symfony/event-dispatcher": "self.version", + "symfony/expression-language": "self.version", + "symfony/filesystem": "self.version", + "symfony/finder": "self.version", + "symfony/form": "self.version", + "symfony/framework-bundle": "self.version", + "symfony/http-foundation": "self.version", + "symfony/http-kernel": "self.version", + "symfony/inflector": "self.version", + "symfony/intl": "self.version", + "symfony/ldap": "self.version", + "symfony/monolog-bridge": "self.version", + "symfony/options-resolver": "self.version", + "symfony/process": "self.version", + "symfony/property-access": "self.version", + "symfony/property-info": "self.version", + "symfony/proxy-manager-bridge": "self.version", + "symfony/routing": "self.version", + "symfony/security": "self.version", + "symfony/security-bundle": "self.version", + "symfony/security-core": "self.version", + "symfony/security-csrf": "self.version", + "symfony/security-guard": "self.version", + "symfony/security-http": "self.version", + "symfony/serializer": "self.version", + "symfony/stopwatch": "self.version", + "symfony/templating": "self.version", + "symfony/translation": "self.version", + "symfony/twig-bridge": "self.version", + "symfony/twig-bundle": "self.version", + "symfony/validator": "self.version", + "symfony/var-dumper": "self.version", + "symfony/web-profiler-bundle": "self.version", + "symfony/workflow": "self.version", + "symfony/yaml": "self.version" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "~1.6", + "doctrine/data-fixtures": "1.0.*", + "doctrine/dbal": "~2.4", + "doctrine/doctrine-bundle": "~1.4", + "doctrine/orm": "~2.4,>=2.4.5", + "egulias/email-validator": "~1.2,>=1.2.8|~2.0", + "monolog/monolog": "~1.11", + "ocramius/proxy-manager": "~0.4|~1.0|~2.0", + "phpdocumentor/reflection-docblock": "^3.0", + "predis/predis": "~1.0", + "symfony/phpunit-bridge": "~3.2", + "symfony/polyfill-apcu": "~1.1", + "symfony/security-acl": "~2.8|~3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", + "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", + "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", + "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/", + "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", + "Symfony\\Bundle\\": "src/Symfony/Bundle/", + "Symfony\\Component\\": "src/Symfony/Component/" + }, + "classmap": [ + "src/Symfony/Component/Intl/Resources/stubs" + ], + "exclude-from-classmap": [ + "**/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "The Symfony PHP framework", + "homepage": "https://symfony.com", + "keywords": [ + "framework" + ], + "time": "2016-11-30T08:46:24+00:00" + }, + { + "name": "twig/twig", + "version": "v1.28.2", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "b22ce0eb070e41f7cba65d78fe216de29726459c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/b22ce0eb070e41f7cba65d78fe216de29726459c", + "reference": "b22ce0eb070e41f7cba65d78fe216de29726459c", + "shasum": "" + }, + "require": { + "php": ">=5.2.7" + }, + "require-dev": { + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~3.2@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.28-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "http://twig.sensiolabs.org", + "keywords": [ + "templating" + ], + "time": "2016-11-23T18:41:40+00:00" + } + ], + "packages-dev": [ + { + "name": "sensio/generator-bundle", + "version": "v3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git", + "reference": "0d3c9c4864142dc6a368fa0d952a8b83215e8740" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/0d3c9c4864142dc6a368fa0d952a8b83215e8740", + "reference": "0d3c9c4864142dc6a368fa0d952a8b83215e8740", + "shasum": "" + }, + "require": { + "symfony/console": "~2.7|~3.0", + "symfony/framework-bundle": "~2.7|~3.0", + "symfony/process": "~2.7|~3.0", + "symfony/yaml": "~2.7|~3.0" + }, + "require-dev": { + "doctrine/orm": "~2.4", + "symfony/doctrine-bridge": "~2.7|~3.0", + "twig/twig": "~1.18" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\GeneratorBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle generates code for you", + "time": "2016-11-07T19:48:31+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "a56acfdb96be7c82f4bcf16b7c77f1960690b0e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/a56acfdb96be7c82f4bcf16b7c77f1960690b0e2", + "reference": "a56acfdb96be7c82f4bcf16b7c77f1960690b0e2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony PHPUnit Bridge", + "homepage": "https://symfony.com", + "time": "2016-11-25T22:54:21+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.5.9" + }, + "platform-dev": [], + "platform-overrides": { + "php": "5.5.9" + } +} diff --git a/code/config.php b/code/config.php new file mode 100755 index 000000000..e69de29bb diff --git a/code/phpunit.xml.dist b/code/phpunit.xml.dist new file mode 100644 index 000000000..65e90821d --- /dev/null +++ b/code/phpunit.xml.dist @@ -0,0 +1,31 @@ + + + + + + + + + + + + tests + + + + + + src + + src/*Bundle/Resources + src/*/*Bundle/Resources + src/*/Bundle/*Bundle/Resources + + + + diff --git a/code/src/.htaccess b/code/src/.htaccess new file mode 100644 index 000000000..fb1de45bd --- /dev/null +++ b/code/src/.htaccess @@ -0,0 +1,7 @@ + + Require all denied + + + Order deny,allow + Deny from all + diff --git a/code/src/AppBundle/AppBundle.php b/code/src/AppBundle/AppBundle.php new file mode 100644 index 000000000..05123b678 --- /dev/null +++ b/code/src/AppBundle/AppBundle.php @@ -0,0 +1,9 @@ +render('default/index.html.twig', [ + 'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR, + ]); + } +} diff --git a/code/tests/AppBundle/Controller/DefaultControllerTest.php b/code/tests/AppBundle/Controller/DefaultControllerTest.php new file mode 100644 index 000000000..594803cce --- /dev/null +++ b/code/tests/AppBundle/Controller/DefaultControllerTest.php @@ -0,0 +1,18 @@ +request('GET', '/'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + $this->assertContains('Welcome to Symfony', $crawler->filter('#container h1')->text()); + } +} diff --git a/code/var/SymfonyRequirements.php b/code/var/SymfonyRequirements.php new file mode 100644 index 000000000..7e7723af3 --- /dev/null +++ b/code/var/SymfonyRequirements.php @@ -0,0 +1,819 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/* + * Users of PHP 5.2 should be able to run the requirements checks. + * This is why the file and all classes must be compatible with PHP 5.2+ + * (e.g. not using namespaces and closures). + * + * ************** CAUTION ************** + * + * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of + * the installation/update process. The original file resides in the + * SensioDistributionBundle. + * + * ************** CAUTION ************** + */ + +/** + * Represents a single PHP requirement, e.g. an installed extension. + * It can be a mandatory requirement or an optional recommendation. + * There is a special subclass, named PhpIniRequirement, to check a php.ini configuration. + * + * @author Tobias Schultze + */ +class Requirement +{ + private $fulfilled; + private $testMessage; + private $helpText; + private $helpHtml; + private $optional; + + /** + * Constructor that initializes the requirement. + * + * @param bool $fulfilled Whether the requirement is fulfilled + * @param string $testMessage The message for testing the requirement + * @param string $helpHtml The help text formatted in HTML for resolving the problem + * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) + * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement + */ + public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false) + { + $this->fulfilled = (bool) $fulfilled; + $this->testMessage = (string) $testMessage; + $this->helpHtml = (string) $helpHtml; + $this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText; + $this->optional = (bool) $optional; + } + + /** + * Returns whether the requirement is fulfilled. + * + * @return bool true if fulfilled, otherwise false + */ + public function isFulfilled() + { + return $this->fulfilled; + } + + /** + * Returns the message for testing the requirement. + * + * @return string The test message + */ + public function getTestMessage() + { + return $this->testMessage; + } + + /** + * Returns the help text for resolving the problem. + * + * @return string The help text + */ + public function getHelpText() + { + return $this->helpText; + } + + /** + * Returns the help text formatted in HTML. + * + * @return string The HTML help + */ + public function getHelpHtml() + { + return $this->helpHtml; + } + + /** + * Returns whether this is only an optional recommendation and not a mandatory requirement. + * + * @return bool true if optional, false if mandatory + */ + public function isOptional() + { + return $this->optional; + } +} + +/** + * Represents a PHP requirement in form of a php.ini configuration. + * + * @author Tobias Schultze + */ +class PhpIniRequirement extends Requirement +{ + /** + * Constructor that initializes the requirement. + * + * @param string $cfgName The configuration name used for ini_get() + * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, + * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement + * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. + * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. + * Example: You require a config to be true but PHP later removes this config and defaults it to true internally. + * @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) + * @param string|null $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) + * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) + * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement + */ + public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false) + { + $cfgValue = ini_get($cfgName); + + if (is_callable($evaluation)) { + if (null === $testMessage || null === $helpHtml) { + throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.'); + } + + $fulfilled = call_user_func($evaluation, $cfgValue); + } else { + if (null === $testMessage) { + $testMessage = sprintf('%s %s be %s in php.ini', + $cfgName, + $optional ? 'should' : 'must', + $evaluation ? 'enabled' : 'disabled' + ); + } + + if (null === $helpHtml) { + $helpHtml = sprintf('Set %s to %s in php.ini*.', + $cfgName, + $evaluation ? 'on' : 'off' + ); + } + + $fulfilled = $evaluation == $cfgValue; + } + + parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional); + } +} + +/** + * A RequirementCollection represents a set of Requirement instances. + * + * @author Tobias Schultze + */ +class RequirementCollection implements IteratorAggregate +{ + /** + * @var Requirement[] + */ + private $requirements = array(); + + /** + * Gets the current RequirementCollection as an Iterator. + * + * @return Traversable A Traversable interface + */ + public function getIterator() + { + return new ArrayIterator($this->requirements); + } + + /** + * Adds a Requirement. + * + * @param Requirement $requirement A Requirement instance + */ + public function add(Requirement $requirement) + { + $this->requirements[] = $requirement; + } + + /** + * Adds a mandatory requirement. + * + * @param bool $fulfilled Whether the requirement is fulfilled + * @param string $testMessage The message for testing the requirement + * @param string $helpHtml The help text formatted in HTML for resolving the problem + * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) + */ + public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null) + { + $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false)); + } + + /** + * Adds an optional recommendation. + * + * @param bool $fulfilled Whether the recommendation is fulfilled + * @param string $testMessage The message for testing the recommendation + * @param string $helpHtml The help text formatted in HTML for resolving the problem + * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) + */ + public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null) + { + $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true)); + } + + /** + * Adds a mandatory requirement in form of a php.ini configuration. + * + * @param string $cfgName The configuration name used for ini_get() + * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, + * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement + * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. + * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. + * Example: You require a config to be true but PHP later removes this config and defaults it to true internally. + * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) + * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) + * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) + */ + public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null) + { + $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false)); + } + + /** + * Adds an optional recommendation in form of a php.ini configuration. + * + * @param string $cfgName The configuration name used for ini_get() + * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, + * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement + * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. + * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. + * Example: You require a config to be true but PHP later removes this config and defaults it to true internally. + * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived) + * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived) + * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags) + */ + public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null) + { + $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true)); + } + + /** + * Adds a requirement collection to the current set of requirements. + * + * @param RequirementCollection $collection A RequirementCollection instance + */ + public function addCollection(RequirementCollection $collection) + { + $this->requirements = array_merge($this->requirements, $collection->all()); + } + + /** + * Returns both requirements and recommendations. + * + * @return Requirement[] + */ + public function all() + { + return $this->requirements; + } + + /** + * Returns all mandatory requirements. + * + * @return Requirement[] + */ + public function getRequirements() + { + $array = array(); + foreach ($this->requirements as $req) { + if (!$req->isOptional()) { + $array[] = $req; + } + } + + return $array; + } + + /** + * Returns the mandatory requirements that were not met. + * + * @return Requirement[] + */ + public function getFailedRequirements() + { + $array = array(); + foreach ($this->requirements as $req) { + if (!$req->isFulfilled() && !$req->isOptional()) { + $array[] = $req; + } + } + + return $array; + } + + /** + * Returns all optional recommendations. + * + * @return Requirement[] + */ + public function getRecommendations() + { + $array = array(); + foreach ($this->requirements as $req) { + if ($req->isOptional()) { + $array[] = $req; + } + } + + return $array; + } + + /** + * Returns the recommendations that were not met. + * + * @return Requirement[] + */ + public function getFailedRecommendations() + { + $array = array(); + foreach ($this->requirements as $req) { + if (!$req->isFulfilled() && $req->isOptional()) { + $array[] = $req; + } + } + + return $array; + } + + /** + * Returns whether a php.ini configuration is not correct. + * + * @return bool php.ini configuration problem? + */ + public function hasPhpIniConfigIssue() + { + foreach ($this->requirements as $req) { + if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) { + return true; + } + } + + return false; + } + + /** + * Returns the PHP configuration file (php.ini) path. + * + * @return string|false php.ini file path + */ + public function getPhpIniConfigPath() + { + return get_cfg_var('cfg_file_path'); + } +} + +/** + * This class specifies all requirements and optional recommendations that + * are necessary to run the Symfony Standard Edition. + * + * @author Tobias Schultze + * @author Fabien Potencier + */ +class SymfonyRequirements extends RequirementCollection +{ + const LEGACY_REQUIRED_PHP_VERSION = '5.3.3'; + const REQUIRED_PHP_VERSION = '5.5.9'; + + /** + * Constructor that initializes the requirements. + */ + public function __construct() + { + /* mandatory requirements follow */ + + $installedPhpVersion = phpversion(); + $requiredPhpVersion = $this->getPhpRequiredVersion(); + + $this->addRecommendation( + $requiredPhpVersion, + 'Vendors should be installed in order to check all requirements.', + 'Run the composer install command.', + 'Run the "composer install" command.' + ); + + if (false !== $requiredPhpVersion) { + $this->addRequirement( + version_compare($installedPhpVersion, $requiredPhpVersion, '>='), + sprintf('PHP version must be at least %s (%s installed)', $requiredPhpVersion, $installedPhpVersion), + sprintf('You are running PHP version "%s", but Symfony needs at least PHP "%s" to run. + Before using Symfony, upgrade your PHP installation, preferably to the latest version.', + $installedPhpVersion, $requiredPhpVersion), + sprintf('Install PHP %s or newer (installed version is %s)', $requiredPhpVersion, $installedPhpVersion) + ); + } + + $this->addRequirement( + version_compare($installedPhpVersion, '5.3.16', '!='), + 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it', + 'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)' + ); + + $this->addRequirement( + is_dir(__DIR__.'/../vendor/composer'), + 'Vendor libraries must be installed', + 'Vendor libraries are missing. Install composer following instructions from http://getcomposer.org/. '. + 'Then run "php composer.phar install" to install them.' + ); + + $cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache'; + + $this->addRequirement( + is_writable($cacheDir), + 'app/cache/ or var/cache/ directory must be writable', + 'Change the permissions of either "app/cache/" or "var/cache/" directory so that the web server can write into it.' + ); + + $logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs'; + + $this->addRequirement( + is_writable($logsDir), + 'app/logs/ or var/logs/ directory must be writable', + 'Change the permissions of either "app/logs/" or "var/logs/" directory so that the web server can write into it.' + ); + + if (version_compare($installedPhpVersion, '7.0.0', '<')) { + $this->addPhpIniRequirement( + 'date.timezone', true, false, + 'date.timezone setting must be set', + 'Set the "date.timezone" setting in php.ini* (like Europe/Paris).' + ); + } + + if (false !== $requiredPhpVersion && version_compare($installedPhpVersion, $requiredPhpVersion, '>=')) { + $timezones = array(); + foreach (DateTimeZone::listAbbreviations() as $abbreviations) { + foreach ($abbreviations as $abbreviation) { + $timezones[$abbreviation['timezone_id']] = true; + } + } + + $this->addRequirement( + isset($timezones[@date_default_timezone_get()]), + sprintf('Configured default timezone "%s" must be supported by your installation of PHP', @date_default_timezone_get()), + 'Your default timezone is not supported by PHP. Check for typos in your php.ini file and have a look at the list of deprecated timezones at http://php.net/manual/en/timezones.others.php.' + ); + } + + $this->addRequirement( + function_exists('iconv'), + 'iconv() must be available', + 'Install and enable the iconv extension.' + ); + + $this->addRequirement( + function_exists('json_encode'), + 'json_encode() must be available', + 'Install and enable the JSON extension.' + ); + + $this->addRequirement( + function_exists('session_start'), + 'session_start() must be available', + 'Install and enable the session extension.' + ); + + $this->addRequirement( + function_exists('ctype_alpha'), + 'ctype_alpha() must be available', + 'Install and enable the ctype extension.' + ); + + $this->addRequirement( + function_exists('token_get_all'), + 'token_get_all() must be available', + 'Install and enable the Tokenizer extension.' + ); + + $this->addRequirement( + function_exists('simplexml_import_dom'), + 'simplexml_import_dom() must be available', + 'Install and enable the SimpleXML extension.' + ); + + if (function_exists('apc_store') && ini_get('apc.enabled')) { + if (version_compare($installedPhpVersion, '5.4.0', '>=')) { + $this->addRequirement( + version_compare(phpversion('apc'), '3.1.13', '>='), + 'APC version must be at least 3.1.13 when using PHP 5.4', + 'Upgrade your APC extension (3.1.13+).' + ); + } else { + $this->addRequirement( + version_compare(phpversion('apc'), '3.0.17', '>='), + 'APC version must be at least 3.0.17', + 'Upgrade your APC extension (3.0.17+).' + ); + } + } + + $this->addPhpIniRequirement('detect_unicode', false); + + if (extension_loaded('suhosin')) { + $this->addPhpIniRequirement( + 'suhosin.executor.include.whitelist', + create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'), + false, + 'suhosin.executor.include.whitelist must be configured correctly in php.ini', + 'Add "phar" to suhosin.executor.include.whitelist in php.ini*.' + ); + } + + if (extension_loaded('xdebug')) { + $this->addPhpIniRequirement( + 'xdebug.show_exception_trace', false, true + ); + + $this->addPhpIniRequirement( + 'xdebug.scream', false, true + ); + + $this->addPhpIniRecommendation( + 'xdebug.max_nesting_level', + create_function('$cfgValue', 'return $cfgValue > 100;'), + true, + 'xdebug.max_nesting_level should be above 100 in php.ini', + 'Set "xdebug.max_nesting_level" to e.g. "250" in php.ini* to stop Xdebug\'s infinite recursion protection erroneously throwing a fatal error in your project.' + ); + } + + $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null; + + $this->addRequirement( + null !== $pcreVersion, + 'PCRE extension must be available', + 'Install the PCRE extension (version 8.0+).' + ); + + if (extension_loaded('mbstring')) { + $this->addPhpIniRequirement( + 'mbstring.func_overload', + create_function('$cfgValue', 'return (int) $cfgValue === 0;'), + true, + 'string functions should not be overloaded', + 'Set "mbstring.func_overload" to 0 in php.ini* to disable function overloading by the mbstring extension.' + ); + } + + /* optional recommendations follow */ + + if (file_exists(__DIR__.'/../vendor/composer')) { + require_once __DIR__.'/../vendor/autoload.php'; + + try { + $r = new ReflectionClass('Sensio\Bundle\DistributionBundle\SensioDistributionBundle'); + + $contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php'); + } catch (ReflectionException $e) { + $contents = ''; + } + $this->addRecommendation( + file_get_contents(__FILE__) === $contents, + 'Requirements file should be up-to-date', + 'Your requirements file is outdated. Run composer install and re-check your configuration.' + ); + } + + $this->addRecommendation( + version_compare($installedPhpVersion, '5.3.4', '>='), + 'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions', + 'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.' + ); + + $this->addRecommendation( + version_compare($installedPhpVersion, '5.3.8', '>='), + 'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156', + 'Install PHP 5.3.8 or newer if your project uses annotations.' + ); + + $this->addRecommendation( + version_compare($installedPhpVersion, '5.4.0', '!='), + 'You should not use PHP 5.4.0 due to the PHP bug #61453', + 'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.' + ); + + $this->addRecommendation( + version_compare($installedPhpVersion, '5.4.11', '>='), + 'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)', + 'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.' + ); + + $this->addRecommendation( + (version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<')) + || + version_compare($installedPhpVersion, '5.4.8', '>='), + 'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909', + 'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.' + ); + + if (null !== $pcreVersion) { + $this->addRecommendation( + $pcreVersion >= 8.0, + sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion), + 'PCRE 8.0+ is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.' + ); + } + + $this->addRecommendation( + class_exists('DomDocument'), + 'PHP-DOM and PHP-XML modules should be installed', + 'Install and enable the PHP-DOM and the PHP-XML modules.' + ); + + $this->addRecommendation( + function_exists('mb_strlen'), + 'mb_strlen() should be available', + 'Install and enable the mbstring extension.' + ); + + $this->addRecommendation( + function_exists('iconv'), + 'iconv() should be available', + 'Install and enable the iconv extension.' + ); + + $this->addRecommendation( + function_exists('utf8_decode'), + 'utf8_decode() should be available', + 'Install and enable the XML extension.' + ); + + $this->addRecommendation( + function_exists('filter_var'), + 'filter_var() should be available', + 'Install and enable the filter extension.' + ); + + if (!defined('PHP_WINDOWS_VERSION_BUILD')) { + $this->addRecommendation( + function_exists('posix_isatty'), + 'posix_isatty() should be available', + 'Install and enable the php_posix extension (used to colorize the CLI output).' + ); + } + + $this->addRecommendation( + extension_loaded('intl'), + 'intl extension should be available', + 'Install and enable the intl extension (used for validators).' + ); + + if (extension_loaded('intl')) { + // in some WAMP server installations, new Collator() returns null + $this->addRecommendation( + null !== new Collator('fr_FR'), + 'intl extension should be correctly configured', + 'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.' + ); + + // check for compatible ICU versions (only done when you have the intl extension) + if (defined('INTL_ICU_VERSION')) { + $version = INTL_ICU_VERSION; + } else { + $reflector = new ReflectionExtension('intl'); + + ob_start(); + $reflector->info(); + $output = strip_tags(ob_get_clean()); + + preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches); + $version = $matches[1]; + } + + $this->addRecommendation( + version_compare($version, '4.0', '>='), + 'intl ICU version should be at least 4+', + 'Upgrade your intl extension with a newer ICU version (4+).' + ); + + if (class_exists('Symfony\Component\Intl\Intl')) { + $this->addRecommendation( + \Symfony\Component\Intl\Intl::getIcuDataVersion() <= \Symfony\Component\Intl\Intl::getIcuVersion(), + sprintf('intl ICU version installed on your system is outdated (%s) and does not match the ICU data bundled with Symfony (%s)', \Symfony\Component\Intl\Intl::getIcuVersion(), \Symfony\Component\Intl\Intl::getIcuDataVersion()), + 'To get the latest internationalization data upgrade the ICU system package and the intl PHP extension.' + ); + if (\Symfony\Component\Intl\Intl::getIcuDataVersion() <= \Symfony\Component\Intl\Intl::getIcuVersion()) { + $this->addRecommendation( + \Symfony\Component\Intl\Intl::getIcuDataVersion() === \Symfony\Component\Intl\Intl::getIcuVersion(), + sprintf('intl ICU version installed on your system (%s) does not match the ICU data bundled with Symfony (%s)', \Symfony\Component\Intl\Intl::getIcuVersion(), \Symfony\Component\Intl\Intl::getIcuDataVersion()), + 'To avoid internationalization data inconsistencies upgrade the symfony/intl component.' + ); + } + } + + $this->addPhpIniRecommendation( + 'intl.error_level', + create_function('$cfgValue', 'return (int) $cfgValue === 0;'), + true, + 'intl.error_level should be 0 in php.ini', + 'Set "intl.error_level" to "0" in php.ini* to inhibit the messages when an error occurs in ICU functions.' + ); + } + + $accelerator = + (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable')) + || + (extension_loaded('apc') && ini_get('apc.enabled')) + || + (extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable')) + || + (extension_loaded('Zend OPcache') && ini_get('opcache.enable')) + || + (extension_loaded('xcache') && ini_get('xcache.cacher')) + || + (extension_loaded('wincache') && ini_get('wincache.ocenabled')) + ; + + $this->addRecommendation( + $accelerator, + 'a PHP accelerator should be installed', + 'Install and/or enable a PHP accelerator (highly recommended).' + ); + + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + $this->addRecommendation( + $this->getRealpathCacheSize() >= 5 * 1024 * 1024, + 'realpath_cache_size should be at least 5M in php.ini', + 'Setting "realpath_cache_size" to e.g. "5242880" or "5M" in php.ini* may improve performance on Windows significantly in some cases.' + ); + } + + $this->addPhpIniRecommendation('short_open_tag', false); + + $this->addPhpIniRecommendation('magic_quotes_gpc', false, true); + + $this->addPhpIniRecommendation('register_globals', false, true); + + $this->addPhpIniRecommendation('session.auto_start', false); + + $this->addRecommendation( + class_exists('PDO'), + 'PDO should be installed', + 'Install PDO (mandatory for Doctrine).' + ); + + if (class_exists('PDO')) { + $drivers = PDO::getAvailableDrivers(); + $this->addRecommendation( + count($drivers) > 0, + sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'), + 'Install PDO drivers (mandatory for Doctrine).' + ); + } + } + + /** + * Loads realpath_cache_size from php.ini and converts it to int. + * + * (e.g. 16k is converted to 16384 int) + * + * @return int + */ + protected function getRealpathCacheSize() + { + $size = ini_get('realpath_cache_size'); + $size = trim($size); + $unit = strtolower(substr($size, -1, 1)); + switch ($unit) { + case 'g': + return $size * 1024 * 1024 * 1024; + case 'm': + return $size * 1024 * 1024; + case 'k': + return $size * 1024; + default: + return (int) $size; + } + } + + /** + * Defines PHP required version from Symfony version. + * + * @return string|false The PHP required version or false if it could not be guessed + */ + protected function getPhpRequiredVersion() + { + if (!file_exists($path = __DIR__.'/../composer.lock')) { + return false; + } + + $composerLock = json_decode(file_get_contents($path), true); + foreach ($composerLock['packages'] as $package) { + $name = $package['name']; + if ('symfony/symfony' !== $name && 'symfony/http-kernel' !== $name) { + continue; + } + + return (int) $package['version'][1] > 2 ? self::REQUIRED_PHP_VERSION : self::LEGACY_REQUIRED_PHP_VERSION; + } + + return false; + } +} diff --git a/code/var/cache/.gitkeep b/code/var/cache/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/code/var/logs/.gitkeep b/code/var/logs/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/code/var/sessions/.gitkeep b/code/var/sessions/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/code/web/.htaccess b/code/web/.htaccess new file mode 100644 index 000000000..4dc725167 --- /dev/null +++ b/code/web/.htaccess @@ -0,0 +1,68 @@ +# Use the front controller as index file. It serves as a fallback solution when +# every other rewrite/redirect fails (e.g. in an aliased environment without +# mod_rewrite). Additionally, this reduces the matching process for the +# start page (path "/") because otherwise Apache will apply the rewriting rules +# to each configured DirectoryIndex file (e.g. index.php, index.html, index.pl). +DirectoryIndex app.php + +# By default, Apache does not evaluate symbolic links if you did not enable this +# feature in your server configuration. Uncomment the following line if you +# install assets as symlinks or if you experience problems related to symlinks +# when compiling LESS/Sass/CoffeScript assets. +# Options FollowSymlinks + +# Disabling MultiViews prevents unwanted negotiation, e.g. "/app" should not resolve +# to the front controller "/app.php" but be rewritten to "/app.php/app". + + Options -MultiViews + + + + RewriteEngine On + + # Determine the RewriteBase automatically and set it as environment variable. + # If you are using Apache aliases to do mass virtual hosting or installed the + # project in a subdirectory, the base path will be prepended to allow proper + # resolution of the app.php file and to redirect to the correct URI. It will + # work in environments without path prefix as well, providing a safe, one-size + # fits all solution. But as you do not need it in this case, you can comment + # the following 2 lines to eliminate the overhead. + RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$ + RewriteRule ^(.*) - [E=BASE:%1] + + # Sets the HTTP_AUTHORIZATION header removed by Apache + RewriteCond %{HTTP:Authorization} . + RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect to URI without front controller to prevent duplicate content + # (with and without `/app.php`). Only do this redirect on the initial + # rewrite by Apache and not on subsequent cycles. Otherwise we would get an + # endless redirect loop (request -> rewrite to front controller -> + # redirect -> request -> ...). + # So in case you get a "too many redirects" error or you always get redirected + # to the start page because your Apache does not expose the REDIRECT_STATUS + # environment variable, you have 2 choices: + # - disable this feature by commenting the following 2 lines or + # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the + # following RewriteCond (best solution) + RewriteCond %{ENV:REDIRECT_STATUS} ^$ + RewriteRule ^app\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L] + + # If the requested filename exists, simply serve it. + # We only want to let Apache serve files and not directories. + RewriteCond %{REQUEST_FILENAME} -f + RewriteRule ^ - [L] + + # Rewrite all other queries to the front controller. + RewriteRule ^ %{ENV:BASE}/app.php [L] + + + + + # When mod_rewrite is not available, we instruct a temporary redirect of + # the start page to the front controller explicitly so that the website + # and the generated links can still be used. + RedirectMatch 302 ^/$ /app.php/ + # RedirectTemp cannot be used instead + + diff --git a/code/web/app.php b/code/web/app.php new file mode 100644 index 000000000..6bd0ea016 --- /dev/null +++ b/code/web/app.php @@ -0,0 +1,18 @@ +loadClassCache(); +//$kernel = new AppCache($kernel); + +// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter +//Request::enableHttpMethodParameterOverride(); +$request = Request::createFromGlobals(); +$response = $kernel->handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/code/web/app_dev.php b/code/web/app_dev.php new file mode 100644 index 000000000..1309adda3 --- /dev/null +++ b/code/web/app_dev.php @@ -0,0 +1,30 @@ +loadClassCache(); +$request = Request::createFromGlobals(); +$response = $kernel->handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/code/web/apple-touch-icon.png b/code/web/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6b6ce170b949de35108974b6b05ecc90cc5f5d GIT binary patch literal 2092 zcmV+{2-Ek8P)&z+r}5D*Y;ZEcQ@j;*b&9UUE8TU$s-NPd2Pm(2P~0000DbW%=J z0FX}%II8UaA!Wnbel$ITMF0Q?Zb?KzRCocr)74>sF$e_UAELfhzZr<_mum zxrzA$6;n1T|3uYd)S!+N(+=;U51ev6SwJoj)K}3R9HCE%Ezo3T0|KV;=S^$}*Zkuq z`UIUlf1nEt^U)m0-9>?iWBPLBUiw$G$*Rc*-51d8O4lv|QC;;5oOER~R>{ zvEl#!@*RYn7%dyKJXW`-X|P745xJpt&b31=OAz4gitPe+mf? zpjHTeZ&@DSCq*6v;92;d5GXXEAWS#apjs2^?9818L4b+nmb}9gZ2*j`l0W~y9EWae zebeUZNM#U`#PPWM2zu`Psm`OFjDnfkf>pR-BC+@>KvK@d$i4B73BT^BfmRBD3Fpnq zt&QNR4@D6Q@z2k%%VAXwLv`?Q?F{rr#IZgfKfY!Qsy2Gtt(IeS;Uf*z20**7ER$bp z#cG~R?m1c^1uQ)1!dG_5U*}t~ofLLqeAo{pj=s9$TFXTk&8F|rllQ$fn+K^sOu!ut zhOzhasWOy{;8U+pZdgCsMN8K^?4BnGuavC?kHk_L$}7SGB6@zr!)#w#8w?LXg{FPJ z!UCEnb)gJJZ!{}tsLgl~1p0kg4A4=+F_l2U4!K4W>hcm-lB1#H1Ud?29niSCt}MNP z5_&PJ73_OadX(2BzCzh(snTX%)kr~6V63Y>JJG$b@vq`cV3VS?KKrM8p)q697_!0u>+i$unT0 z$#4yxV@WMxjn>7!q1CB9F`jJ2#V-g zu@#x}6uRrU^`ewuo}jB|V1rIbhW1SoJwov-Sd&j$+h zoV0Pp_`AHY&Vb4xEP@6v9;or)^}OHJ5`yVo1R-1Z0-KZ+y*M6zcDWV7 z*l2BR!q7H+sZ6;xJDu0z#A^tSdm)0NX$vfvq;p<0@ri!sTbsGb+O6uOSe#Q8XDX z9D;Rtt>{(92v{qx#J|V>VBU(WckYxAA!FiTSgGkpd+{rm#}R+ph85V05ydUSxLTbC zBR_Z{ethB+doU3Nf-RwcnNdCiUMerdgT3OEM(Ar$d;om*ED2&RZPyyH2Cr6 z|2kBQrh8VdS_kFRDET3`(d^GI(tvm8&wZMk6aces06J-Zl+;v6(p6oV3Xj4)6xXl0 zQp+qigkhJqPVb#u^8Z&}L)&+m1T%*|fN73}rHGNyg;pv)#&r{Y z-?nWpwv`?pS8xo$7lS*&7*R5mpmSQ;fYIxnBxnAkYeG{a#1r1ke`%AG z5VMHY-yreZQD86yY=U0575S(<7fl0K65=JAZJqp_3>fK1!qGnlpelMr>J=}_lpRE> z#4BRiFwUV?qX`v+9AAG45|7t)p3Yw-&JwT|0UrhJDm^=SoYp(uY|-duEy3RFFpe)a zLDp=atW&V>I?y`TVs0L80A^jqMOuU`Q8#+5+zU_|#y3eR0Jt_0fbIT??+2)+ zkAwUJdZ+<~&@F#yN)#uPA%&jeFe3BZJ)L6-j$TBC4o0yLC`Z9nwkunc?ME`U2Y^qC z{z8EWz!OR^2g4G@=v4#~&>6{_SQH4ryi(M8wF_wMgDcPg)e)II1d5~3RY?DJCs$yQ z4|xcaBr^|k?U_iRIk9J?!E1>vGZEmJ zHB>Q-JeGDM2>Hf7p1tqGuD6bDaSR>a6~G;|<#9|*`EC7x^t_dxEw3^B#>V~D@#(&KA*0000getFailedRequirements(); +$minorProblems = $symfonyRequirements->getFailedRecommendations(); +$hasMajorProblems = (bool) count($majorProblems); +$hasMinorProblems = (bool) count($minorProblems); + +?> + + + + + + Symfony Configuration Checker + + + +
+
+ + + +
+ +
+
+
+

Configuration Checker

+

+ This script analyzes your system to check whether is + ready to run Symfony applications. +

+ + +

Major problems

+

Major problems have been detected and must be fixed before continuing:

+
    + +
  1. getTestMessage() ?> +

    getHelpHtml() ?>

    +
  2. + +
+ + + +

Recommendations

+

+ Additionally, toTo enhance your Symfony experience, + it’s recommended that you fix the following: +

+
    + +
  1. getTestMessage() ?> +

    getHelpHtml() ?>

    +
  2. + +
+ + + hasPhpIniConfigIssue()): ?> +

* + getPhpIniConfigPath()): ?> + Changes to the php.ini file must be done in "getPhpIniConfigPath() ?>". + + To change settings, create a "php.ini". + +

+ + + +

All checks passed successfully. Your system is ready to run Symfony applications.

+ + + +
+
+
+
Symfony Standard Edition
+
+ + diff --git a/code/web/favicon.ico b/code/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..479f7f50f404ada1e42c536097521d19f2c22f35 GIT binary patch literal 6518 zcmeHLTWD5E5Kuy5M>-BgCK}6B8uRHx|%3>L5P|~O|ntQ zD!!Jkw41=CfUf}7Y>i>k%K=@zd-rz03PXkrQJkKhPTU1316WJ0t;)^K zbyu!jaThLJh>sjO(gCIvVc@`l?8mUf@?VxRKb$qO($xL+ALa-_~@WM&XcK|z6}QYkrb;DB&Ee*AdFuz@nj!@bZS z<->;$=Qy4}f4ng zT`R9&zg9W$g*fMA(V|7V4!nwC1N}icH$iJ+|IndBsoL6Fw{YP?U32~VbvbzOp!Rp| z+QoH3{j>x9l=r2cuRkN**Q-~rq^qk-7B5~b%asw z{R`YNd-iNcpPfE^TKOs}D%6J$A3l`g;$nI7X{UL zSHSyawhQh!&z`LUKzZ$;*}Tik%OlNg-n`jWRaLp_>grTuW24<4-nr1Qk5d>Z|IndB zV}Rb@F=NJ1UdNOvQ{rXImgzjkRbgR-$NZsHK#uLv`8VUnjvZ_3IG5CGYYkHp{Xw7d zUNu1;&*)z`<8uGDG1Qh^W3>M}%s80~_!^L=J#-L5|3XUxZ>I4h7WG4aK41rYe;RNb z{dzzh`=oIWFb~idV2v^;>#wwo1oIc@?}q#)V7o6pV(@W}vHkDBqXE{EGL7~r9QKUK z!ohxnM<=ldqlbHr`L~$+8^Bspw$YMU=aHXyQq|en z*|tyB2O48DW47~gBD^Kg$xGb?+Qc=CMT8&G9|BsT)cQO>~+M55vtF}6w__k_%yb`&ZqF(P}LYkrZe14%vWR1L8kIAS+Ydq zJoUeL@j_))R#q~1xcm3-Q-{(94H^{swD}W2KC|H*`qsi5gZ)L&PrevAT?puFo}m7^ zx;pWCdq3z6r($w*G)-0BO9hyw_IKB<1M-knc#-^QRNgg!KSvzK%(* zN%nO;_$&|q8-2#fZ@3n^^=%`+hBd6wE?v4LckbK~)_qHtF10y#>eMOqKlR_ce~)z5 z8j_Kb@n>hCdZ3T?FjklNeusbaS`$8c^hot?*|J4gyToyn3u|nG?j6v5mbL>r;6L>d>JgQV+Aqk!e%06S-n|p#BF8%R*Y;nP*5$gS zct^3WWsHWbPx(OSO&2kAGmqV6AMdTx*UIwr=~LDJ;K2ix#WQ*K>{;0Fwr$&#{`T$L zKtmm+G`pic*gziI!FxvinnQt=#(iuS;n zw{G218frV4IB_EDeqBp>9(1010jeLk4!|59XvudEx^Q2V-`UxzxaLNU$&<5Z&nk`c zO-)UK&UFOTcYmPyIn!Tn{s*1;RBc3#)p*9Y_U6qS)8TjqT<^cbWb4+gT9;El@`Ag1 z^{QOHd|B;+kCZp@p8l|Z`X3PPpXs-p!tayTwpP_oJLb-vt1@TJnx%O4>eaz7{I=jb zS+{PTFi){I-@kvq@^L?Y-^8@Tax-hDk|Yg%>C>l=*{Xi!{t)W}jr^$Hh3AjD9n;;h zxU{r1=;8NDYiny5`+DIc{gA_YZGqpn#s%spSloq=H3w2&<%;kFa|Q#KYsjJ^~{?$ zPkG2k8hyZ+Wo!8ctWTV{*LL@sKxa+M{8I)*{jtYk?eESm(7`9urcKlF#*G_Qf7|;u zN!o?)64|?VuS}gfRr&lGs1E4d4H?$PV*FnWXan=ZM|x<3|5j2u>Le9aR(|hp! z58sEiK5od38#hSfniT&pfUaLK{sO?JH2}_LBk1OXAOrK-$Gr6I+gHD}jYiCGZ_B&< zrfqL;=eyK39P?b7d~CoO#Jt;(Rfx50)SaxqE@4a?v{nKRcJS`NK8@?%PWH*G`cW@v zpE-lI5@Qp;&-snLY11Z^$r>K~tnsXwZmR`HKqm9D@&i-9%1z)TE#w*Aan@mejjUh4 zUf+fvxBFWDCyZI+vYF2A(TBR6cfoAnUEzJ84Q5Bs0h;!~ub8<%QG<}5Yh#~RsCx{6 z&Fa4H(T887(+?K`rk8dk-=@(6PVn-cbRvev^tb!j=}uC<33gAlnE%;N;oxJW2uoNyrWR#`=%?o~Id@HEm8peo|(F z++&w_Gih%Y#@_;1x1NFgd%%wY{QkZJU>++0u%2X1YmGAOo*V5m{_KIz9{B8m=r_v| BFLeL_ literal 0 HcmV?d00001 diff --git a/code/web/robots.txt b/code/web/robots.txt new file mode 100644 index 000000000..4665fcae3 --- /dev/null +++ b/code/web/robots.txt @@ -0,0 +1,5 @@ +# www.robotstxt.org/ +# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 + +User-agent: * +Disallow: diff --git a/docker/docker-compose-test.yml b/docker/docker-compose-test.yml index da278ba9e..c4b5a82a4 100644 --- a/docker/docker-compose-test.yml +++ b/docker/docker-compose-test.yml @@ -19,7 +19,8 @@ services: container_name: opencats_test_data image: busybox volumes: - - ..:/var/www/public + - ../code:/var/www/public + - ../docker/php/scripts/www.conf:/etc/nginx/sites-enabled/www.conf - ../test/config.php:/var/www/public/config.php - ../test/INSTALL_BLOCK:/var/www/public/INSTALL_BLOCK command: "true" diff --git a/docker/php/scripts/www.conf b/docker/php/scripts/www.conf new file mode 100644 index 000000000..4d10904e3 --- /dev/null +++ b/docker/php/scripts/www.conf @@ -0,0 +1,53 @@ +server { + listen 80; + listen 443 ssl http2; + server_name localhost; + root /var/www/public/web; + + include conf.d/basic.conf; + + location / { + # try to serve file directly, fallback to app.php + try_files $uri /app.php$is_args$args; + } + # DEV + # This rule should only be placed on your development environment + # In production, don't include this and don't deploy app_dev.php or config.php + location ~ ^/(app_dev|config)\.php(/|$) { + fastcgi_pass unix:/var/run/php5-fpm.sock; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + # When you are using symlinks to link the document root to the + # current version of your application, you should pass the real + # application path instead of the path to the symlink to PHP + # FPM. + # Otherwise, PHP's OPcache may not properly detect changes to + # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126 + # for more information). + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + fastcgi_param DOCUMENT_ROOT $realpath_root; + } + # PROD + location ~ ^/app\.php(/|$) { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass php:9000; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param DOCUMENT_ROOT $realpath_root; + # for debugging 1h + proxy_connect_timeout 3600s; + proxy_send_timeout 3600s; + proxy_read_timeout 3600s; + fastcgi_send_timeout 3600s; + fastcgi_read_timeout 3600s; + } + # return 404 for all other php files not matching the front controller + # this prevents access to other php files you don't want to be accessible. + location ~ \.php$ { + return 404; + } + + error_log /var/log/nginx/project_error.log; + access_log /var/log/nginx/project_access.log; +} From 608f193f93ef40767f7a8fedc159bb937f1e2e44 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Tue, 6 Dec 2016 15:02:42 -0300 Subject: [PATCH 003/178] Initial setup + LegacyContoller --- code/app/config/routing.yml | 1 + .../AppBundle/Controller/LegacyController.php | 295 ++++++++++++++++++ .../Resources/views/Legacy/index.html.twig | 7 + .../Tests/Controller/LegacyControllerTest.php | 16 + code/web/app_dev.php | 14 +- docker/docker-compose-test.yml | 9 +- docker/mysite.template | 70 +++++ docker/php/Dockerfile | 2 + docker/php/scripts/www.conf | 53 ---- 9 files changed, 404 insertions(+), 63 deletions(-) create mode 100644 code/src/AppBundle/Controller/LegacyController.php create mode 100644 code/src/AppBundle/Resources/views/Legacy/index.html.twig create mode 100644 code/src/AppBundle/Tests/Controller/LegacyControllerTest.php create mode 100644 docker/mysite.template delete mode 100644 docker/php/scripts/www.conf diff --git a/code/app/config/routing.yml b/code/app/config/routing.yml index 8eadc31ae..9532cb2ee 100644 --- a/code/app/config/routing.yml +++ b/code/app/config/routing.yml @@ -1,3 +1,4 @@ app: resource: "@AppBundle/Controller/" type: annotation + prefix: / diff --git a/code/src/AppBundle/Controller/LegacyController.php b/code/src/AppBundle/Controller/LegacyController.php new file mode 100644 index 000000000..7cb8c6275 --- /dev/null +++ b/code/src/AppBundle/Controller/LegacyController.php @@ -0,0 +1,295 @@ +startTimer(); + + /* Check to see if the server went through a SVN update while the session + * was active. + */ + $_SESSION['CATS']->checkForcedUpdate(); + + + /* We would hook this, but the hooks aren't loaded by the time this code executes. + * if ASP module exists (code is running on catsone.com), load the website by default + * rather than the login page. + */ + if (ModuleUtility::moduleExists("asp") && ModuleUtility::moduleExists("website")) + { + // FIXME: Can we optimize this a bit...? + include_once('modules/asp/lib/General.php'); + + if (!(isset($careerPage) && $careerPage) && + !(isset($rssPage) && $rssPage) && + !(isset($xmlPage) && $xmlPage) && + (!isset($_GET['m']) || empty($_GET['m'])) && + (Asp::getSubDomain() == '' || isset($_GET['a']))) + { + ModuleUtility::loadModule('website'); + exit(1); + } + } + + + /* Check to see if the user level suddenly changed. If the user was changed to disabled, + * also log the user out. + */ + // FIXME: This is slow! + if ($_SESSION['CATS']->isLoggedIn()) + { + $users = new Users($_SESSION['CATS']->getSiteID()); + $forceLogoutData = $users->getForceLogoutData($_SESSION['CATS']->getUserID()); + + if (!empty($forceLogoutData) && ($forceLogoutData['forceLogout'] == 1 || + $_SESSION['CATS']->getRealAccessLevel() != $forceLogoutData['accessLevel'])) + { + $_SESSION['CATS']->setRealAccessLevel($forceLogoutData['accessLevel']); + + if ($forceLogoutData['accessLevel'] == ACCESS_LEVEL_DISABLED || + $forceLogoutData['forceLogout'] == 1) + { + /* Log the user out. */ + $unixName = $_SESSION['CATS']->getUnixName(); + + $_SESSION['CATS']->logout(); + unset($_SESSION['CATS']); + unset($_SESSION['modules']); + + $URI = 'm=login'; + + if (!empty($unixName) && $unixName != 'demo') + { + $URI .= '&s=' . $unixName; + } + + CATSUtility::transferRelativeURI($URI); + die(); + } + } + } + + /* Check to see if we are supposed to display the career page. */ + if (((isset($careerPage) && $careerPage) || + (isset($_GET['showCareerPortal']) && $_GET['showCareerPortal'] == '1'))) + { + ModuleUtility::loadModule('careers'); + } + + /* Check to see if we are supposed to display an rss page. */ + else if (isset($rssPage) && $rssPage) + { + ModuleUtility::loadModule('rss'); + } + + else if (isset($xmlPage) && $xmlPage) + { + ModuleUtility::loadModule('xml'); + } + + /* Check to see if the user was forcibly logged out (logged in from another browser). */ + else if ($_SESSION['CATS']->isLoggedIn() && + (!isset($_GET['m']) || ModuleUtility::moduleRequiresAuthentication($_GET['m'])) && + $_SESSION['CATS']->checkForceLogout()) + { + // FIXME: Unset session / etc.? + ModuleUtility::loadModule('login'); + } + + /* If user specified a module, load it; otherwise, load the home module. */ + else if (!isset($_GET['m']) || empty($_GET['m'])) + { + if ($_SESSION['CATS']->isLoggedIn()) + { + $_SESSION['CATS']->logPageView(); + + if (!eval(Hooks::get('INDEX_LOAD_HOME'))) return; + + ModuleUtility::loadModule('home'); + } + else + { + ModuleUtility::loadModule('login'); + } + } + else + { + if ($_GET['m'] == 'logout') + { + /* There isn't really a logout module. It's just a few lines. */ + $unixName = $_SESSION['CATS']->getUnixName(); + + $_SESSION['CATS']->logout(); + unset($_SESSION['CATS']); + unset($_SESSION['modules']); + + $URI = 'm=login'; + /* Local demo account doesn't relogin. */ + if (!empty($unixName) && $unixName != 'demo') + { + $URI .= '&s=' . $unixName; + } + + if (isset($_GET['message'])) + { + $URI .= '&message=' . urlencode($_GET['message']); + } + + if (isset($_GET['messageSuccess'])) + { + $URI .= '&messageSuccess=' . urlencode($_GET['messageSuccess']); + } + + /* catsone.com demo domain doesn't relogin. */ + if (strpos(CATSUtility::getIndexName(), '://demo.catsone.com') !== false) + { + CATSUtility::transferURL('http://www.catsone.com'); + } + else + { + CATSUtility::transferRelativeURI($URI); + } + } + else if (!ModuleUtility::moduleRequiresAuthentication($_GET['m'])) + { + /* No authentication required; load the module. */ + ModuleUtility::loadModule($_GET['m']); + } + else if (!$_SESSION['CATS']->isLoggedIn()) + { + /* User isn't logged in and authentication is required; send the user + * to the login page. + */ + ModuleUtility::loadModule('login'); + } + else + { + /* Everything's good; load the requested module. */ + $_SESSION['CATS']->logPageView(); + ModuleUtility::loadModule($_GET['m']); + } + } + + if (isset($errorHandler)) + { + $errorHandler->reportErrors(); + } + } + return new Response(ob_get_clean()); + } + +} diff --git a/code/src/AppBundle/Resources/views/Legacy/index.html.twig b/code/src/AppBundle/Resources/views/Legacy/index.html.twig new file mode 100644 index 000000000..f09f89b69 --- /dev/null +++ b/code/src/AppBundle/Resources/views/Legacy/index.html.twig @@ -0,0 +1,7 @@ +{% extends "::base.html.twig" %} + +{% block title %}AppBundle:Legacy:index{% endblock %} + +{% block body %} +

Welcome to the Legacy:index page

+{% endblock %} diff --git a/code/src/AppBundle/Tests/Controller/LegacyControllerTest.php b/code/src/AppBundle/Tests/Controller/LegacyControllerTest.php new file mode 100644 index 000000000..9ceaffc62 --- /dev/null +++ b/code/src/AppBundle/Tests/Controller/LegacyControllerTest.php @@ -0,0 +1,16 @@ +request('GET', '/'); + } + +} diff --git a/code/web/app_dev.php b/code/web/app_dev.php index 1309adda3..7f1f761d4 100644 --- a/code/web/app_dev.php +++ b/code/web/app_dev.php @@ -10,13 +10,13 @@ // This check prevents access to debug front controllers that are deployed by accident to production servers. // Feel free to remove this, extend it, or make something more sophisticated. -if (isset($_SERVER['HTTP_CLIENT_IP']) - || isset($_SERVER['HTTP_X_FORWARDED_FOR']) - || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1']) || php_sapi_name() === 'cli-server') -) { - header('HTTP/1.0 403 Forbidden'); - exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); -} +//if (isset($_SERVER['HTTP_CLIENT_IP']) +// || isset($_SERVER['HTTP_X_FORWARDED_FOR']) +// || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1']) || php_sapi_name() === 'cli-server') +//) { +// header('HTTP/1.0 403 Forbidden'); +// exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); +//} /** @var \Composer\Autoload\ClassLoader $loader */ $loader = require __DIR__.'/../app/autoload.php'; diff --git a/docker/docker-compose-test.yml b/docker/docker-compose-test.yml index c4b5a82a4..79c72f209 100644 --- a/docker/docker-compose-test.yml +++ b/docker/docker-compose-test.yml @@ -2,12 +2,15 @@ version: '2' services: opencats: container_name: opencats_test_web - image: prooph/nginx:www + image: nginx:1.11.6 ports: - "80:80" - "443:443" volumes_from: - opencatsdata + environment: + - NGINX_HOST=foobar.com + - NGINX_PORT=80 php: container_name: opencats_test_php @@ -19,8 +22,8 @@ services: container_name: opencats_test_data image: busybox volumes: - - ../code:/var/www/public - - ../docker/php/scripts/www.conf:/etc/nginx/sites-enabled/www.conf + - ./mysite.template:/etc/nginx/conf.d/default.conf + - ../code:/var/www/ - ../test/config.php:/var/www/public/config.php - ../test/INSTALL_BLOCK:/var/www/public/INSTALL_BLOCK command: "true" diff --git a/docker/mysite.template b/docker/mysite.template new file mode 100644 index 000000000..92ffc952e --- /dev/null +++ b/docker/mysite.template @@ -0,0 +1,70 @@ +upstream phpfcgi { + server php:9000; +} +server { + listen 80; + + server_name opencats; + root /var/www/web; + + error_log /var/log/nginx/symfony2.error.log; + access_log /var/log/nginx/symfony2.access.log; + + # strip app.php/ prefix if it is present + rewrite ^/app_dev\.php/?(.*)$ /$1 permanent; + rewrite_log on; + + location / { + index app_dev.php; + try_files $uri @rewriteapp; + } + + location @rewriteapp { + rewrite ^(.*)$ /app_dev.php/$1 last; + } + + # pass the PHP scripts to FastCGI server from upstream phpfcgi + location ~ ^/(app|app_dev|config)\.php(/|$) { + fastcgi_pass phpfcgi; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTPS off; + } +} + + +server { + listen 443; + + server_name opencats; + root /var/www/web; + + #ssl on; + #ssl_certificate /etc/ssl/certs/symfony2.crt; + #ssl_certificate_key /etc/ssl/private/symfony2.key; + + error_log /var/log/nginx/symfony2.error.log; + access_log /var/log/nginx/symfony2.access.log; + + # strip app.php/ prefix if it is present + rewrite ^/app\.php/?(.*)$ /$1 permanent; + + location / { + index app.php; + try_files $uri @rewriteapp; + } + + location @rewriteapp { + rewrite ^(.*)$ /app.php/$1 last; + } + + # pass the PHP scripts to FastCGI server from upstream phpfcgi + location ~ ^/(app|app_dev|config)\.php(/|$) { + fastcgi_pass phpfcgi; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param HTTPS on; + } +} \ No newline at end of file diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile index 2bfd64c36..95b04a162 100644 --- a/docker/php/Dockerfile +++ b/docker/php/Dockerfile @@ -29,3 +29,5 @@ RUN dos2unix /opt/install-composer.sh && \ ENV DOCKERIZE_VERSION v0.2.0 RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz +RUN echo "date.timezone='UTC'" > /usr/local/etc/php/conf.d/timezone.ini +WORKDIR /var/www diff --git a/docker/php/scripts/www.conf b/docker/php/scripts/www.conf deleted file mode 100644 index 4d10904e3..000000000 --- a/docker/php/scripts/www.conf +++ /dev/null @@ -1,53 +0,0 @@ -server { - listen 80; - listen 443 ssl http2; - server_name localhost; - root /var/www/public/web; - - include conf.d/basic.conf; - - location / { - # try to serve file directly, fallback to app.php - try_files $uri /app.php$is_args$args; - } - # DEV - # This rule should only be placed on your development environment - # In production, don't include this and don't deploy app_dev.php or config.php - location ~ ^/(app_dev|config)\.php(/|$) { - fastcgi_pass unix:/var/run/php5-fpm.sock; - fastcgi_split_path_info ^(.+\.php)(/.*)$; - include fastcgi_params; - # When you are using symlinks to link the document root to the - # current version of your application, you should pass the real - # application path instead of the path to the symlink to PHP - # FPM. - # Otherwise, PHP's OPcache may not properly detect changes to - # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126 - # for more information). - fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; - fastcgi_param DOCUMENT_ROOT $realpath_root; - } - # PROD - location ~ ^/app\.php(/|$) { - fastcgi_split_path_info ^(.+\.php)(/.+)$; - fastcgi_pass php:9000; - include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_param DOCUMENT_ROOT $realpath_root; - # for debugging 1h - proxy_connect_timeout 3600s; - proxy_send_timeout 3600s; - proxy_read_timeout 3600s; - fastcgi_send_timeout 3600s; - fastcgi_read_timeout 3600s; - } - # return 404 for all other php files not matching the front controller - # this prevents access to other php files you don't want to be accessible. - location ~ \.php$ { - return 404; - } - - error_log /var/log/nginx/project_error.log; - access_log /var/log/nginx/project_access.log; -} From a2e1706888da7968c32bf2d9b1bd83860c4da987 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Tue, 6 Dec 2016 22:05:35 -0300 Subject: [PATCH 004/178] Initial commit for making OpenCATS requests work wrapped on symphony --- QueueCLI.php | 30 ++--- ajax.php | 14 +-- ajax/deleteActivity.php | 2 +- ajax/editActivity.php | 6 +- ajax/getAttachmentLocal.php | 4 +- ajax/getCompanyContacts.php | 2 +- ajax/getCompanyLocation.php | 2 +- ajax/getCompanyLocationAndDepartments.php | 2 +- ajax/getCompanyNames.php | 4 +- ajax/getDataGridPager.php | 6 +- ajax/getDataItemJobOrders.php | 6 +- ajax/getParsedAddress.php | 6 +- ajax/getPipelineDetails.php | 2 +- ajax/getPipelineJobOrder.php | 12 +- ajax/setCandidateJobOrderRating.php | 2 +- ajax/testEmailSettings.php | 2 +- ajax/zipLookup.php | 4 +- careers/index.php | 2 +- .../AppBundle/Controller/LegacyController.php | 77 ++++++------ {lib => code/web}/IFrameBlank.html | 0 .../calendar => code/web/css}/Calendar.css | 0 .../web/css/careersPage.css | 118 +++++++++--------- ie.css => code/web/css/ie.css | 0 .../web/css}/import/MassImport.css | 2 +- {modules => code/web/css}/install/install.css | 2 +- main.css => code/web/css/main.css | 38 +++--- not-ie.css => code/web/css/not-ie.css | 0 .../web/css}/settings/downloads.css | 16 +-- {modules => code/web/css}/tests/tests.css | 0 {modules => code/web/css}/wizard/style.css | 2 +- {images => code/web/images}/CATS-powered.gif | Bin {images => code/web/images}/CATS-sig.gif | Bin {images => code/web/images}/actions/add.gif | Bin .../web/images}/actions/add_contact.gif | Bin .../web/images}/actions/add_job_order.gif | Bin .../web/images}/actions/add_small.gif | Bin .../web/images}/actions/add_to_pipeline.gif | Bin {images => code/web/images}/actions/blank.gif | Bin .../web/images}/actions/check_all.gif | Bin .../web/images}/actions/delete.gif | Bin .../web/images}/actions/delete_small.gif | Bin {images => code/web/images}/actions/edit.gif | Bin {images => code/web/images}/actions/email.gif | Bin .../web/images}/actions/email_no.gif | Bin {images => code/web/images}/actions/info.gif | Bin .../web/images}/actions/job_order.gif | Bin {images => code/web/images}/actions/print.gif | Bin .../web/images}/actions/screen.gif | Bin .../web/images}/actions/screen_grey.gif | Bin .../web/images}/actions/uncheck_all.gif | Bin {images => code/web/images}/actions/view.gif | Bin .../web/images}/active_tab_gradient.gif | Bin {images => code/web/images}/activities.gif | Bin {images => code/web/images}/add_licenses.jpg | Bin .../web/images}/applicationLogo.jpg | Bin {images => code/web/images}/arrow_down.gif | Bin {images => code/web/images}/arrow_down.png | Bin {images => code/web/images}/arrow_left_24.gif | Bin {images => code/web/images}/arrow_next.gif | Bin {images => code/web/images}/arrow_next.png | Bin .../web/images}/arrow_right_24.gif | Bin {images => code/web/images}/attachment.gif | Bin {images => code/web/images}/bell.gif | Bin {images => code/web/images}/bgBlue.gif | Bin {images => code/web/images}/bgGrayForm.gif | Bin {images => code/web/images}/blue_check.gif | Bin {images => code/web/images}/blue_gradient.jpg | Bin {images => code/web/images}/bullet_black.gif | Bin {images => code/web/images}/button_bg.gif | Bin .../web/images}/button_bg_down.gif | Bin {images => code/web/images}/calendar.gif | Bin {images => code/web/images}/calendar1_bg.gif | Bin {images => code/web/images}/calendar_add.gif | Bin {images => code/web/images}/candidate.gif | Bin .../web/images}/candidate_inline.gif | Bin .../web/images}/candidate_small.gif | Bin .../web/images}/candidate_tiny.gif | Bin .../web/images}/careers_apply-o.gif | Bin {images => code/web/images}/careers_apply.gif | Bin {images => code/web/images}/careers_arrow.gif | Bin {images => code/web/images}/careers_cats.gif | Bin .../web/images}/careers_populate.gif | Bin .../web/images}/careers_powered.gif | Bin .../web/images}/careers_return-o.gif | Bin .../web/images}/careers_return.gif | Bin {images => code/web/images}/careers_rss-o.gif | Bin {images => code/web/images}/careers_rss.gif | Bin .../web/images}/careers_search-o.gif | Bin .../web/images}/careers_search.gif | Bin .../web/images}/careers_share-o.gif | Bin {images => code/web/images}/careers_share.gif | Bin .../web/images}/careers_show-o.gif | Bin {images => code/web/images}/careers_show.gif | Bin .../web/images}/careers_submit-o.gif | Bin .../web/images}/careers_submit.gif | Bin {images => code/web/images}/cats_icon.gif | Bin {images => code/web/images}/cats_logo.jpg | Bin {images => code/web/images}/cats_small_ad.jpg | Bin {images => code/web/images}/checkbox.gif | Bin .../web/images}/checkbox_blank.gif | Bin {images => code/web/images}/cognizo-logo.jpg | Bin {images => code/web/images}/companies.gif | Bin {images => code/web/images}/consider.gif | Bin {images => code/web/images}/contact.gif | Bin {images => code/web/images}/contact_small.gif | Bin {images => code/web/images}/copyArrow-d.jpg | Bin {images => code/web/images}/copyArrow.jpg | Bin {images => code/web/images}/copyBg-d.jpg | Bin {images => code/web/images}/copyBg.jpg | Bin {images => code/web/images}/copyBottom-d.jpg | Bin {images => code/web/images}/copyBottom.jpg | Bin {images => code/web/images}/copyTemplate.psd | Bin {images => code/web/images}/copyTop-d.jpg | Bin {images => code/web/images}/copyTop.jpg | Bin {images => code/web/images}/cp_add.gif | Bin {images => code/web/images}/cp_back.gif | Bin {images => code/web/images}/cp_delete.gif | Bin {images => code/web/images}/cp_edit.gif | Bin {images => code/web/images}/cp_info.jpg | Bin {images => code/web/images}/cp_listing.jpg | Bin .../web/images}/cp_questionnaire.jpg | Bin {images => code/web/images}/cp_resume.jpg | Bin {images => code/web/images}/cp_save.gif | Bin {images => code/web/images}/cross.gif | Bin {images => code/web/images}/customsearch.jpg | Bin {images => code/web/images}/customsearch2.jpg | Bin .../images}/dashboard_preview/activity.png | Bin .../images}/dashboard_preview/candidates.png | Bin .../web/images}/dashboard_preview/image.png | Bin .../images}/dashboard_preview/joborders.png | Bin .../images}/dashboard_preview/pipeline.png | Bin .../dashboard_preview/recent_job_orders.png | Bin .../images}/dashboard_preview/submissions.png | Bin .../web/images}/dashboard_preview/text.png | Bin .../images}/dashboard_preview/title_bar.png | Bin .../dashboard_preview/upcoming_events.png | Bin {images => code/web/images}/downward.gif | Bin {images => code/web/images}/edit.gif | Bin {images => code/web/images}/email.gif | Bin {images => code/web/images}/email_logo.jpg | Bin {images => code/web/images}/favicon.ico | Bin {images => code/web/images}/file/avi.gif | Bin {images => code/web/images}/file/bmp.gif | Bin {images => code/web/images}/file/doc.gif | Bin {images => code/web/images}/file/eps.gif | Bin {images => code/web/images}/file/gif.gif | Bin {images => code/web/images}/file/jpeg.gif | Bin {images => code/web/images}/file/jpg.gif | Bin {images => code/web/images}/file/pdf.gif | Bin {images => code/web/images}/file/png.gif | Bin {images => code/web/images}/file/ppt.gif | Bin {images => code/web/images}/file/rtf.gif | Bin {images => code/web/images}/file/txt.gif | Bin {images => code/web/images}/file/wmv.gif | Bin {images => code/web/images}/file/xls.gif | Bin {images => code/web/images}/file/zip.gif | Bin {images => code/web/images}/fileTypeBz2.jpg | Bin {images => code/web/images}/fileTypeDoc.jpg | Bin {images => code/web/images}/fileTypeGz.jpg | Bin {images => code/web/images}/fileTypeHtml.jpg | Bin {images => code/web/images}/fileTypePdf.jpg | Bin {images => code/web/images}/fileTypeRtf.jpg | Bin {images => code/web/images}/fileTypeTar.jpg | Bin {images => code/web/images}/fileTypeTxt.jpg | Bin {images => code/web/images}/fileTypeZip.jpg | Bin .../web/images}/firefox-spread-btn-2.png | Bin .../web/images}/folder1_locked.jpg | Bin .../web/images}/friendly_error.jpg | Bin {images => code/web/images}/google_maps.gif | Bin {images => code/web/images}/gradient.gif | Bin {images => code/web/images}/graphNoData.jpg | Bin {images => code/web/images}/gray_gradient.gif | Bin {images => code/web/images}/gray_x.gif | Bin {images => code/web/images}/home.gif | Bin .../web/images}/i-firefox-small.gif | Bin {images => code/web/images}/i-firefox.gif | Bin {images => code/web/images}/i-ie.gif | Bin .../web/images}/i-opera-grayed.gif | Bin {images => code/web/images}/i-outlook.gif | Bin .../web/images}/i-safari-grayed.gif | Bin {images => code/web/images}/i-thunderbird.gif | Bin {images => code/web/images}/icon_clock.gif | Bin {images => code/web/images}/indicator.gif | Bin {images => code/web/images}/indicator2.gif | Bin .../web/images}/indicator_small.gif | Bin {images => code/web/images}/information.gif | Bin {images => code/web/images}/install_logo.gif | Bin {images => code/web/images}/interview.gif | Bin {images => code/web/images}/job_orders.gif | Bin {images => code/web/images}/joborder.gif | Bin {images => code/web/images}/key.png | Bin {images => code/web/images}/large_error.gif | Bin .../web/images}/lightblue_gradient.jpg | Bin .../web/images}/lightblue_gradient_15.jpg | Bin {images => code/web/images}/loading.gif | Bin {images => code/web/images}/login2.jpg | Bin {images => code/web/images}/maskBG.gif | Bin {images => code/web/images}/massImport.jpg | Bin .../web/images}/massResumeImport.jpg | Bin {images => code/web/images}/meeting.gif | Bin {images => code/web/images}/moveUp-o.gif | Bin {images => code/web/images}/moveUp.gif | Bin {images => code/web/images}/mru/blank.gif | Bin {images => code/web/images}/mru/candidate.gif | Bin {images => code/web/images}/mru/company.gif | Bin {images => code/web/images}/mru/contact.gif | Bin {images => code/web/images}/mru/job_order.gif | Bin .../web/images}/mru_background.gif | Bin {images => code/web/images}/mycompany.gif | Bin .../web/images}/mycompany_small.gif | Bin .../web/images}/new_activity_inline.gif | Bin .../web/images}/new_browser_inline.gif | Bin {images => code/web/images}/new_window.gif | Bin {images => code/web/images}/next.gif | Bin .../web/images}/noDataByDisability.png | Bin .../web/images}/noDataByGender.png | Bin .../web/images}/nodata/activitiesTop.jpg | Bin .../web/images}/nodata/addMassImport-o.jpg | Bin .../web/images}/nodata/addMassImport.jpg | Bin .../web/images}/nodata/candidateButton-o.jpg | Bin .../web/images}/nodata/candidatesButton.jpg | Bin .../web/images}/nodata/candidatesTop.jpg | Bin .../web/images}/nodata/companiesTop.jpg | Bin .../web/images}/nodata/contactsButton-o.jpg | Bin .../web/images}/nodata/contactsButton.jpg | Bin .../web/images}/nodata/contactsTop.jpg | Bin .../images}/nodata/dashboardNoCandidates.jpg | Bin .../nodata/dashboardNoCandidatesWhite.jpg | Bin .../web/images}/nodata/dashboardNoHires.jpg | Bin .../images}/nodata/dashboardNoHiresWhite.jpg | Bin .../web/images}/nodata/jobOrdersButton-o.jpg | Bin .../web/images}/nodata/jobOrdersButton.jpg | Bin .../web/images}/nodata/jobOrdersTop.jpg | Bin .../web/images}/nodata/joborders.jpg | Bin .../web/images}/nodata/listsTop.jpg | Bin .../web/images}/nodata/noDataTable.jpg | Bin {images => code/web/images}/nosort.gif | Bin .../web/images}/orange_gradient.jpg | Bin {images => code/web/images}/other.gif | Bin .../web/images}/package_editors.gif | Bin {images => code/web/images}/paperclip.gif | Bin {images => code/web/images}/paperclip_add.gif | Bin {images => code/web/images}/parser/ad.gif | Bin {images => code/web/images}/parser/arrow.gif | Bin .../web/images}/parser/attachment.gif | Bin .../web/images}/parser/document.gif | Bin {images => code/web/images}/parser/import.gif | Bin {images => code/web/images}/parser/manual.gif | Bin {images => code/web/images}/parser/new.gif | Bin {images => code/web/images}/parser/or.gif | Bin {images => code/web/images}/parser/paste.gif | Bin .../web/images}/parser/statusBar.jpg | Bin .../web/images}/parser/statusBottomLeft.jpg | Bin .../web/images}/parser/statusBottomRight.jpg | Bin {images => code/web/images}/parser/title.gif | Bin .../web/images}/parser/transfer.gif | Bin .../web/images}/parser/transfer_grey.gif | Bin {images => code/web/images}/personal.gif | Bin {images => code/web/images}/phone.gif | Bin {images => code/web/images}/popup.gif | Bin .../web/images}/poweredByResfly.jpg | Bin {images => code/web/images}/prev.gif | Bin {images => code/web/images}/profButton-o.jpg | Bin {images => code/web/images}/profButton.jpg | Bin .../web/images}/professionalLeft.jpg | Bin .../web/images}/professional_icon.gif | Bin {images => code/web/images}/public.gif | Bin {images => code/web/images}/rcf_logo.gif | Bin .../web/images}/recruitingEasy.jpg | Bin {images => code/web/images}/red_gradient.jpg | Bin {images => code/web/images}/report1small.jpg | Bin {images => code/web/images}/reports.gif | Bin {images => code/web/images}/reportsSmall.gif | Bin .../web/images}/resume_preview_inline.gif | Bin {images => code/web/images}/scrollBottom.jpg | Bin {images => code/web/images}/scrollTop.jpg | Bin {images => code/web/images}/search.gif | Bin {images => code/web/images}/serverSystem.jpg | Bin {images => code/web/images}/settings.gif | Bin .../web/images}/settingsAdminProf.jpg | Bin {images => code/web/images}/signUp.jpg | Bin {images => code/web/images}/sort_table_bg.gif | Bin {images => code/web/images}/stars/star0.gif | Bin {images => code/web/images}/stars/star1.gif | Bin {images => code/web/images}/stars/star2.gif | Bin {images => code/web/images}/stars/star3.gif | Bin {images => code/web/images}/stars/star4.gif | Bin {images => code/web/images}/stars/star5.gif | Bin .../web/images}/stars/starneg1.gif | Bin .../web/images}/stars/starneg2.gif | Bin .../web/images}/stars/starneg3.gif | Bin .../web/images}/stars/starneg4.gif | Bin .../web/images}/stars/starneg5.gif | Bin .../web/images}/stars/starneg6.gif | Bin .../web/images}/stars/starsave.gif | Bin {images => code/web/images}/submit.gif | Bin {images => code/web/images}/superblogo.gif | Bin {images => code/web/images}/support.gif | Bin {images => code/web/images}/tab1.png | Bin {images => code/web/images}/tab2.png | Bin {images => code/web/images}/tab3.png | Bin {images => code/web/images}/tab_add.gif | Bin {images => code/web/images}/tablebg.gif | Bin {images => code/web/images}/tabs/active.jpg | Bin {images => code/web/images}/tabs/inactive.jpg | Bin .../web/images}/tabs/small_account.jpg | Bin .../web/images}/tabs/small_logout.jpg | Bin .../web/images}/tabs/small_upgrade.jpg | Bin .../web/images}/tabs/subtab_active.jpg | Bin .../web/images}/tabs/subtab_inactive.jpg | Bin {images => code/web/images}/tests.gif | Bin {images => code/web/images}/tests_inline.gif | Bin {images => code/web/images}/tiled2c.gif | Bin {images => code/web/images}/toolbarImport.jpg | Bin .../web/images}/toolbarPreview.jpg | Bin {images => code/web/images}/unsubmit.gif | Bin {images => code/web/images}/upward.gif | Bin {images => code/web/images}/vcard.gif | Bin {images => code/web/images}/vip_arrow.gif | Bin {images => code/web/images}/vip_banner.gif | Bin {images => code/web/images}/wf_error.gif | Bin .../web/images}/wizard/bottomLeft.jpg | Bin .../web/images}/wizard/bottomRight.jpg | Bin .../web/images}/wizard/massImport.jpg | Bin .../web/images}/wizard/opaqueLogo.jpg | Bin .../web/images}/wizard/professional.jpg | Bin .../web/images}/wizard/sectionTopLeft.jpg | Bin .../web/images}/wizard/sectionTopRight.jpg | Bin .../web/images}/wizard/topLeft.jpg | Bin .../web/images}/wizard/topRight.jpg | Bin {js => code/web/js}/activity.js | 0 .../web/js}/activity/validator.js | 0 {js => code/web/js}/addressParser.js | 0 {js => code/web/js}/attachment.js | 0 {js => code/web/js}/backup.js | 0 {modules => code/web/js}/calendar/Calendar.js | 0 .../web/js}/calendar/CalendarUI.js | 0 .../web/js}/calendar/validator.js | 0 {js => code/web/js}/calendarDateInput.js | 0 {js => code/web/js}/candidate.js | 0 {js => code/web/js}/candidateParser.js | 0 .../web/js}/candidates/activityvalidator.js | 0 .../web/js}/candidates/validator.js | 0 {js => code/web/js}/careerPortalApply.js | 0 {js => code/web/js}/careerportal.js | 0 {js => code/web/js}/careersPage.js | 94 +++++++------- .../web/js}/companies/validator.js | 0 {js => code/web/js}/company.js | 0 {js => code/web/js}/contact.js | 0 .../web/js}/contacts/validator.js | 0 {js => code/web/js}/dataGrid.js | 0 {js => code/web/js}/dataGridFilters.js | 0 {js => code/web/js}/doubleListEditor.js | 0 {js => code/web/js}/eeo.js | 0 {js => code/web/js}/emailHandler.js | 0 {js => code/web/js}/export.js | 0 {js => code/web/js}/highlightrows.js | 0 {js => code/web/js}/home.js | 0 {modules => code/web/js}/import/import.js | 0 {js => code/web/js}/index.php | 0 {js => code/web/js}/install.js | 0 {js => code/web/js}/joborder.js | 0 .../web/js}/joborders/validator.js | 0 {js => code/web/js}/jquery-1.3.2.min.js | 0 {js => code/web/js}/lib.js | 0 {js => code/web/js}/listEditor.js | 0 {js => code/web/js}/lists.js | 0 {modules => code/web/js}/login/validator.js | 0 {js => code/web/js}/massImport.js | 0 {js => code/web/js}/match.js | 0 {js => code/web/js}/pipeline.js | 0 {js => code/web/js}/questionnaire.js | 0 {js => code/web/js}/quickAction.js | 0 {js => code/web/js}/searchAdvanced.js | 0 {js => code/web/js}/searchSaved.js | 0 {modules => code/web/js}/settings/Settings.js | 0 .../web/js}/settings/validator.js | 0 {js => code/web/js}/sorttable.js | 0 {js => code/web/js}/submodal/close.gif | Bin {js => code/web/js}/submodal/loading.html | 2 +- {js => code/web/js}/submodal/subModal.js | 0 {js => code/web/js}/suggest.js | 0 {js => code/web/js}/sweetTitles.js | 0 {modules => code/web/js}/tests/validator.js | 0 .../web/js}/toolbar/toolbarlibForLegacy.js | 0 {js => code/web/js}/wizardIntro.js | 0 {modules => code/web}/login/login.css | 2 +- config.php | 2 +- constants.php | 2 +- docker/docker-compose-test.yml | 6 +- docker/mysite.template | 4 +- docker/php/Dockerfile | 4 +- index.php | 32 ++--- installtest.php | 8 +- installwizard.php | 8 +- lib/ActivityEntries.php | 6 +- lib/AddressParser.php | 4 +- lib/Attachments.php | 8 +- lib/CATSUtility.php | 8 +- lib/CBFUtility.php | 2 +- lib/Calendar.php | 14 +-- lib/Candidates.php | 12 +- lib/CareerPortal.php | 2 +- lib/CommonErrors.php | 4 +- lib/Companies.php | 14 +-- lib/Contacts.php | 8 +- lib/ControlPanel.php | 2 +- lib/Dashboard.php | 2 +- lib/DataGrid.php | 10 +- lib/DefaultQuestionnaires.php | 2 +- lib/Display.php | 2 +- lib/DocumentToText.php | 4 +- lib/EmailTemplates.php | 4 +- lib/Export.php | 8 +- lib/ExtraFields.php | 2 +- lib/FileCompressor.php | 4 +- lib/GraphGenerator.php | 14 +-- lib/Graphs.php | 2 +- lib/InstallationTests.php | 10 +- lib/JavaScriptCompressor.php | 2 +- lib/JobOrders.php | 14 +-- lib/License.php | 4 +- lib/ListEditor.php | 2 +- lib/LoginActivity.php | 4 +- lib/Mailer.php | 4 +- lib/ModuleUtility.php | 21 ++-- lib/NewVersionCheck.php | 4 +- lib/Pipelines.php | 2 +- lib/Profile.php | 4 +- lib/Questionnaire.php | 4 +- lib/QueueProcessor.php | 4 +- lib/Search.php | 6 +- lib/Statistics.php | 2 +- lib/SystemUtility.php | 2 +- lib/Tags.php | 2 +- lib/Template.php | 2 +- lib/TemplateUtility.php | 14 +-- lib/UserInterface.php | 2 +- lib/Users.php | 3 +- lib/WebForm.php | 2 +- lib/Wizard.php | 2 +- modules/activity/ActivityDataGrid.tpl | 2 +- modules/activity/ActivityUI.php | 12 +- modules/activity/Search.tpl | 2 +- modules/activity/dataGrids.php | 8 +- modules/attachments/AttachmentsUI.php | 4 +- modules/calendar/Calendar.tpl | 2 +- modules/calendar/CalendarUI.php | 6 +- modules/calendar/tasks/Reminders.php | 8 +- modules/candidates/Add.tpl | 4 +- .../AddActivityChangeStatusModal.tpl | 6 +- modules/candidates/Candidates.tpl | 10 +- modules/candidates/CandidatesUI.php | 50 ++++---- modules/candidates/CreateAttachmentModal.tpl | 2 +- .../candidates/CreateImageAttachmentModal.tpl | 2 +- modules/candidates/Edit.tpl | 2 +- modules/candidates/Search.tpl | 2 +- modules/candidates/dataGrids.php | 4 +- modules/careers/CareersUI.php | 34 ++--- modules/companies/Add.tpl | 2 +- modules/companies/Companies.tpl | 4 +- modules/companies/CompaniesUI.php | 28 ++--- modules/companies/CreateAttachmentModal.tpl | 2 +- modules/companies/Edit.tpl | 2 +- modules/companies/Search.tpl | 2 +- modules/companies/dataGrids.php | 6 +- modules/contacts/Add.tpl | 2 +- modules/contacts/Contacts.tpl | 6 +- modules/contacts/ContactsUI.php | 26 ++-- modules/contacts/Edit.tpl | 2 +- modules/contacts/Search.tpl | 2 +- modules/contacts/dataGrids.php | 6 +- modules/export/ExportUI.php | 4 +- modules/graphs/GraphsUI.php | 12 +- modules/home/Home.tpl | 4 +- modules/home/HomeUI.php | 16 +-- modules/home/dataGrids.php | 14 +-- modules/import/BulkResumesHelp.tpl | 2 +- modules/import/Import.tpl | 2 +- modules/import/Import1.tpl | 2 +- modules/import/Import2.tpl | 2 +- modules/import/ImportCommits.tpl | 2 +- modules/import/ImportRecent.tpl | 2 +- modules/import/ImportResumes.tpl | 2 +- modules/import/ImportResumesBulk.tpl | 2 +- modules/import/ImportUI.php | 24 ++-- modules/import/MassImport.tpl | 2 +- modules/import/MassImportEdit.tpl | 10 +- modules/import/ajax/processMassImportItem.php | 2 +- modules/install/CATSUI.php | 2 +- modules/install/ajax/attachmentsReindex.php | 8 +- .../ajax/attachmentsToThreeDirectory.php | 8 +- modules/install/ajax/maint.php | 2 +- modules/install/ajax/ui.php | 16 +-- modules/install/notinstalled.php | 4 +- modules/install/phpVersion.php | 4 +- modules/joborders/Add.tpl | 2 +- modules/joborders/AddModalPopup.tpl | 2 +- modules/joborders/CreateAttachmentModal.tpl | 2 +- modules/joborders/JobOrders.tpl | 6 +- modules/joborders/JobOrdersUI.php | 48 +++---- modules/joborders/Search.tpl | 2 +- modules/joborders/dataGrids.php | 6 +- modules/lists/Lists.tpl | 2 +- modules/lists/ListsUI.php | 24 ++-- modules/lists/ajax/addToLists.php | 6 +- modules/lists/ajax/deleteList.php | 6 +- modules/lists/ajax/editListName.php | 6 +- modules/lists/ajax/newList.php | 6 +- modules/lists/dataGrids.php | 6 +- modules/login/ForgotPassword.tpl | 2 +- modules/login/Login.tpl | 4 +- modules/login/LoginUI.php | 12 +- modules/login/NoCookiesModal.tpl | 2 +- modules/queue/tasks.php | 4 +- modules/queue/tasks/CleanExceptions.php | 2 +- modules/queue/tasks/SampleRecurring.php | 2 +- modules/queue/tasks/SampleTask.php | 2 +- modules/queue/tasks/Sphinx.php | 4 +- modules/reports/EEOReport.tpl | 2 +- modules/reports/GraphView.tpl | 2 +- modules/reports/JobOrderReport.tpl | 2 +- modules/reports/ReportsUI.php | 10 +- modules/rss/RssUI.php | 10 +- modules/settings/AddUser.tpl | 2 +- modules/settings/Administration.tpl | 6 +- modules/settings/AspDownloads.tpl | 4 +- modules/settings/CareerPortalSettings.tpl | 2 +- modules/settings/CareerPortalTemplateEdit.tpl | 2 +- modules/settings/ChangePassword.tpl | 2 +- modules/settings/CustomizeCalendar.tpl | 2 +- modules/settings/CustomizeExtraFields.tpl | 2 +- modules/settings/CustomizeReports.tpl | 2 +- modules/settings/EEOEOCSettings.tpl | 2 +- modules/settings/EditUser.tpl | 2 +- modules/settings/EmailSettings.tpl | 2 +- modules/settings/ItemHistory.tpl | 2 +- modules/settings/Localization.tpl | 2 +- modules/settings/MyProfile.tpl | 2 +- modules/settings/NewInstallWizard.tpl | 4 +- modules/settings/NewVersionCheck.tpl | 2 +- modules/settings/Passwords.tpl | 2 +- modules/settings/PreviewPageTop.tpl | 2 +- modules/settings/SettingsUI.php | 42 +++---- modules/settings/SiteName.tpl | 2 +- modules/settings/SystemInformation.tpl | 2 +- modules/settings/ajax/backup.php | 6 +- modules/settings/getFirefoxModal.tpl | 2 +- modules/settings/tags.tpl | 2 +- modules/tests/CATSTestReporter.php | 2 +- modules/tests/Tests.tpl | 2 +- modules/tests/TestsUI.php | 16 +-- modules/tests/ajax/getCandidateJobOrderID.php | 2 +- modules/tests/testcases/AJAXTests.php | 2 +- modules/tests/waitForDb.php | 6 +- modules/toolbar/ToolbarUI.php | 14 +-- modules/wizard/Show.tpl | 2 +- modules/wizard/WizardUI.php | 12 +- modules/xml/XmlUI.php | 16 +-- .../latest-sphinx-search/Search.php | 6 +- rebuild_old_docs.php | 2 +- rss/index.php | 2 +- scripts/makeBackup.php | 18 +-- src/OpenCATS/Entity/CompanyRepository.php | 2 +- src/OpenCATS/Entity/JobOrderRepository.php | 2 +- .../IntegrationTests/DatabaseSearchTest.php | 2 +- .../IntegrationTests/DatabaseTestCase.php | 6 +- .../Tests/UnitTests/AJAXInterfaceTest.php | 2 +- .../Tests/UnitTests/AddressParserTest.php | 4 +- .../Tests/UnitTests/ArrayUtilityTest.php | 2 +- .../Tests/UnitTests/BrowserDetectionTest.php | 2 +- .../Tests/UnitTests/CompanyRepositoryTest.php | 2 +- .../Tests/UnitTests/DateUtilityTest.php | 6 +- .../Tests/UnitTests/FileUtilityTest.php | 2 +- .../Tests/UnitTests/ResultSetUtilityTest.php | 2 +- .../Tests/UnitTests/StringUtilityTest.php | 2 +- src/OpenCATS/Tests/UnitTests/VCardTest.php | 2 +- test/config.php | 2 +- test/features/bootstrap/FeatureContext.php | 14 +-- xml/index.php | 2 +- 580 files changed, 811 insertions(+), 812 deletions(-) rename {lib => code/web}/IFrameBlank.html (100%) rename {modules/calendar => code/web/css}/Calendar.css (100%) rename careersPage.css => code/web/css/careersPage.css (97%) rename ie.css => code/web/css/ie.css (100%) rename {modules => code/web/css}/import/MassImport.css (97%) rename {modules => code/web/css}/install/install.css (98%) rename main.css => code/web/css/main.css (95%) rename not-ie.css => code/web/css/not-ie.css (100%) rename {modules => code/web/css}/settings/downloads.css (98%) rename {modules => code/web/css}/tests/tests.css (100%) rename {modules => code/web/css}/wizard/style.css (96%) rename {images => code/web/images}/CATS-powered.gif (100%) rename {images => code/web/images}/CATS-sig.gif (100%) rename {images => code/web/images}/actions/add.gif (100%) rename {images => code/web/images}/actions/add_contact.gif (100%) rename {images => code/web/images}/actions/add_job_order.gif (100%) rename {images => code/web/images}/actions/add_small.gif (100%) rename {images => code/web/images}/actions/add_to_pipeline.gif (100%) rename {images => code/web/images}/actions/blank.gif (100%) rename {images => code/web/images}/actions/check_all.gif (100%) rename {images => code/web/images}/actions/delete.gif (100%) rename {images => code/web/images}/actions/delete_small.gif (100%) rename {images => code/web/images}/actions/edit.gif (100%) rename {images => code/web/images}/actions/email.gif (100%) rename {images => code/web/images}/actions/email_no.gif (100%) rename {images => code/web/images}/actions/info.gif (100%) rename {images => code/web/images}/actions/job_order.gif (100%) rename {images => code/web/images}/actions/print.gif (100%) rename {images => code/web/images}/actions/screen.gif (100%) rename {images => code/web/images}/actions/screen_grey.gif (100%) rename {images => code/web/images}/actions/uncheck_all.gif (100%) rename {images => code/web/images}/actions/view.gif (100%) rename {images => code/web/images}/active_tab_gradient.gif (100%) rename {images => code/web/images}/activities.gif (100%) rename {images => code/web/images}/add_licenses.jpg (100%) rename {images => code/web/images}/applicationLogo.jpg (100%) rename {images => code/web/images}/arrow_down.gif (100%) rename {images => code/web/images}/arrow_down.png (100%) rename {images => code/web/images}/arrow_left_24.gif (100%) rename {images => code/web/images}/arrow_next.gif (100%) rename {images => code/web/images}/arrow_next.png (100%) rename {images => code/web/images}/arrow_right_24.gif (100%) rename {images => code/web/images}/attachment.gif (100%) rename {images => code/web/images}/bell.gif (100%) rename {images => code/web/images}/bgBlue.gif (100%) rename {images => code/web/images}/bgGrayForm.gif (100%) rename {images => code/web/images}/blue_check.gif (100%) rename {images => code/web/images}/blue_gradient.jpg (100%) rename {images => code/web/images}/bullet_black.gif (100%) rename {images => code/web/images}/button_bg.gif (100%) rename {images => code/web/images}/button_bg_down.gif (100%) rename {images => code/web/images}/calendar.gif (100%) rename {images => code/web/images}/calendar1_bg.gif (100%) rename {images => code/web/images}/calendar_add.gif (100%) rename {images => code/web/images}/candidate.gif (100%) rename {images => code/web/images}/candidate_inline.gif (100%) rename {images => code/web/images}/candidate_small.gif (100%) rename {images => code/web/images}/candidate_tiny.gif (100%) rename {images => code/web/images}/careers_apply-o.gif (100%) rename {images => code/web/images}/careers_apply.gif (100%) rename {images => code/web/images}/careers_arrow.gif (100%) rename {images => code/web/images}/careers_cats.gif (100%) rename {images => code/web/images}/careers_populate.gif (100%) rename {images => code/web/images}/careers_powered.gif (100%) rename {images => code/web/images}/careers_return-o.gif (100%) rename {images => code/web/images}/careers_return.gif (100%) rename {images => code/web/images}/careers_rss-o.gif (100%) rename {images => code/web/images}/careers_rss.gif (100%) rename {images => code/web/images}/careers_search-o.gif (100%) rename {images => code/web/images}/careers_search.gif (100%) rename {images => code/web/images}/careers_share-o.gif (100%) rename {images => code/web/images}/careers_share.gif (100%) rename {images => code/web/images}/careers_show-o.gif (100%) rename {images => code/web/images}/careers_show.gif (100%) rename {images => code/web/images}/careers_submit-o.gif (100%) rename {images => code/web/images}/careers_submit.gif (100%) rename {images => code/web/images}/cats_icon.gif (100%) rename {images => code/web/images}/cats_logo.jpg (100%) rename {images => code/web/images}/cats_small_ad.jpg (100%) rename {images => code/web/images}/checkbox.gif (100%) rename {images => code/web/images}/checkbox_blank.gif (100%) rename {images => code/web/images}/cognizo-logo.jpg (100%) rename {images => code/web/images}/companies.gif (100%) rename {images => code/web/images}/consider.gif (100%) rename {images => code/web/images}/contact.gif (100%) rename {images => code/web/images}/contact_small.gif (100%) rename {images => code/web/images}/copyArrow-d.jpg (100%) rename {images => code/web/images}/copyArrow.jpg (100%) rename {images => code/web/images}/copyBg-d.jpg (100%) rename {images => code/web/images}/copyBg.jpg (100%) rename {images => code/web/images}/copyBottom-d.jpg (100%) rename {images => code/web/images}/copyBottom.jpg (100%) rename {images => code/web/images}/copyTemplate.psd (100%) rename {images => code/web/images}/copyTop-d.jpg (100%) rename {images => code/web/images}/copyTop.jpg (100%) rename {images => code/web/images}/cp_add.gif (100%) rename {images => code/web/images}/cp_back.gif (100%) rename {images => code/web/images}/cp_delete.gif (100%) rename {images => code/web/images}/cp_edit.gif (100%) rename {images => code/web/images}/cp_info.jpg (100%) rename {images => code/web/images}/cp_listing.jpg (100%) rename {images => code/web/images}/cp_questionnaire.jpg (100%) rename {images => code/web/images}/cp_resume.jpg (100%) rename {images => code/web/images}/cp_save.gif (100%) rename {images => code/web/images}/cross.gif (100%) rename {images => code/web/images}/customsearch.jpg (100%) rename {images => code/web/images}/customsearch2.jpg (100%) rename {images => code/web/images}/dashboard_preview/activity.png (100%) rename {images => code/web/images}/dashboard_preview/candidates.png (100%) rename {images => code/web/images}/dashboard_preview/image.png (100%) rename {images => code/web/images}/dashboard_preview/joborders.png (100%) rename {images => code/web/images}/dashboard_preview/pipeline.png (100%) rename {images => code/web/images}/dashboard_preview/recent_job_orders.png (100%) rename {images => code/web/images}/dashboard_preview/submissions.png (100%) rename {images => code/web/images}/dashboard_preview/text.png (100%) rename {images => code/web/images}/dashboard_preview/title_bar.png (100%) rename {images => code/web/images}/dashboard_preview/upcoming_events.png (100%) rename {images => code/web/images}/downward.gif (100%) rename {images => code/web/images}/edit.gif (100%) rename {images => code/web/images}/email.gif (100%) rename {images => code/web/images}/email_logo.jpg (100%) rename {images => code/web/images}/favicon.ico (100%) rename {images => code/web/images}/file/avi.gif (100%) rename {images => code/web/images}/file/bmp.gif (100%) rename {images => code/web/images}/file/doc.gif (100%) rename {images => code/web/images}/file/eps.gif (100%) rename {images => code/web/images}/file/gif.gif (100%) rename {images => code/web/images}/file/jpeg.gif (100%) rename {images => code/web/images}/file/jpg.gif (100%) rename {images => code/web/images}/file/pdf.gif (100%) rename {images => code/web/images}/file/png.gif (100%) rename {images => code/web/images}/file/ppt.gif (100%) rename {images => code/web/images}/file/rtf.gif (100%) rename {images => code/web/images}/file/txt.gif (100%) rename {images => code/web/images}/file/wmv.gif (100%) rename {images => code/web/images}/file/xls.gif (100%) rename {images => code/web/images}/file/zip.gif (100%) rename {images => code/web/images}/fileTypeBz2.jpg (100%) rename {images => code/web/images}/fileTypeDoc.jpg (100%) rename {images => code/web/images}/fileTypeGz.jpg (100%) rename {images => code/web/images}/fileTypeHtml.jpg (100%) rename {images => code/web/images}/fileTypePdf.jpg (100%) rename {images => code/web/images}/fileTypeRtf.jpg (100%) rename {images => code/web/images}/fileTypeTar.jpg (100%) rename {images => code/web/images}/fileTypeTxt.jpg (100%) rename {images => code/web/images}/fileTypeZip.jpg (100%) rename {images => code/web/images}/firefox-spread-btn-2.png (100%) rename {images => code/web/images}/folder1_locked.jpg (100%) rename {images => code/web/images}/friendly_error.jpg (100%) rename {images => code/web/images}/google_maps.gif (100%) rename {images => code/web/images}/gradient.gif (100%) rename {images => code/web/images}/graphNoData.jpg (100%) rename {images => code/web/images}/gray_gradient.gif (100%) rename {images => code/web/images}/gray_x.gif (100%) rename {images => code/web/images}/home.gif (100%) rename {images => code/web/images}/i-firefox-small.gif (100%) rename {images => code/web/images}/i-firefox.gif (100%) rename {images => code/web/images}/i-ie.gif (100%) rename {images => code/web/images}/i-opera-grayed.gif (100%) rename {images => code/web/images}/i-outlook.gif (100%) rename {images => code/web/images}/i-safari-grayed.gif (100%) rename {images => code/web/images}/i-thunderbird.gif (100%) rename {images => code/web/images}/icon_clock.gif (100%) rename {images => code/web/images}/indicator.gif (100%) rename {images => code/web/images}/indicator2.gif (100%) rename {images => code/web/images}/indicator_small.gif (100%) rename {images => code/web/images}/information.gif (100%) rename {images => code/web/images}/install_logo.gif (100%) rename {images => code/web/images}/interview.gif (100%) rename {images => code/web/images}/job_orders.gif (100%) rename {images => code/web/images}/joborder.gif (100%) rename {images => code/web/images}/key.png (100%) rename {images => code/web/images}/large_error.gif (100%) rename {images => code/web/images}/lightblue_gradient.jpg (100%) rename {images => code/web/images}/lightblue_gradient_15.jpg (100%) rename {images => code/web/images}/loading.gif (100%) rename {images => code/web/images}/login2.jpg (100%) rename {images => code/web/images}/maskBG.gif (100%) rename {images => code/web/images}/massImport.jpg (100%) rename {images => code/web/images}/massResumeImport.jpg (100%) rename {images => code/web/images}/meeting.gif (100%) rename {images => code/web/images}/moveUp-o.gif (100%) rename {images => code/web/images}/moveUp.gif (100%) rename {images => code/web/images}/mru/blank.gif (100%) rename {images => code/web/images}/mru/candidate.gif (100%) rename {images => code/web/images}/mru/company.gif (100%) rename {images => code/web/images}/mru/contact.gif (100%) rename {images => code/web/images}/mru/job_order.gif (100%) rename {images => code/web/images}/mru_background.gif (100%) rename {images => code/web/images}/mycompany.gif (100%) rename {images => code/web/images}/mycompany_small.gif (100%) rename {images => code/web/images}/new_activity_inline.gif (100%) rename {images => code/web/images}/new_browser_inline.gif (100%) rename {images => code/web/images}/new_window.gif (100%) rename {images => code/web/images}/next.gif (100%) rename {images => code/web/images}/noDataByDisability.png (100%) rename {images => code/web/images}/noDataByGender.png (100%) rename {images => code/web/images}/nodata/activitiesTop.jpg (100%) rename {images => code/web/images}/nodata/addMassImport-o.jpg (100%) rename {images => code/web/images}/nodata/addMassImport.jpg (100%) rename {images => code/web/images}/nodata/candidateButton-o.jpg (100%) rename {images => code/web/images}/nodata/candidatesButton.jpg (100%) rename {images => code/web/images}/nodata/candidatesTop.jpg (100%) rename {images => code/web/images}/nodata/companiesTop.jpg (100%) rename {images => code/web/images}/nodata/contactsButton-o.jpg (100%) rename {images => code/web/images}/nodata/contactsButton.jpg (100%) rename {images => code/web/images}/nodata/contactsTop.jpg (100%) rename {images => code/web/images}/nodata/dashboardNoCandidates.jpg (100%) rename {images => code/web/images}/nodata/dashboardNoCandidatesWhite.jpg (100%) rename {images => code/web/images}/nodata/dashboardNoHires.jpg (100%) rename {images => code/web/images}/nodata/dashboardNoHiresWhite.jpg (100%) rename {images => code/web/images}/nodata/jobOrdersButton-o.jpg (100%) rename {images => code/web/images}/nodata/jobOrdersButton.jpg (100%) rename {images => code/web/images}/nodata/jobOrdersTop.jpg (100%) rename {images => code/web/images}/nodata/joborders.jpg (100%) rename {images => code/web/images}/nodata/listsTop.jpg (100%) rename {images => code/web/images}/nodata/noDataTable.jpg (100%) rename {images => code/web/images}/nosort.gif (100%) rename {images => code/web/images}/orange_gradient.jpg (100%) rename {images => code/web/images}/other.gif (100%) rename {images => code/web/images}/package_editors.gif (100%) rename {images => code/web/images}/paperclip.gif (100%) rename {images => code/web/images}/paperclip_add.gif (100%) rename {images => code/web/images}/parser/ad.gif (100%) rename {images => code/web/images}/parser/arrow.gif (100%) rename {images => code/web/images}/parser/attachment.gif (100%) rename {images => code/web/images}/parser/document.gif (100%) rename {images => code/web/images}/parser/import.gif (100%) rename {images => code/web/images}/parser/manual.gif (100%) rename {images => code/web/images}/parser/new.gif (100%) rename {images => code/web/images}/parser/or.gif (100%) rename {images => code/web/images}/parser/paste.gif (100%) rename {images => code/web/images}/parser/statusBar.jpg (100%) rename {images => code/web/images}/parser/statusBottomLeft.jpg (100%) rename {images => code/web/images}/parser/statusBottomRight.jpg (100%) rename {images => code/web/images}/parser/title.gif (100%) rename {images => code/web/images}/parser/transfer.gif (100%) rename {images => code/web/images}/parser/transfer_grey.gif (100%) rename {images => code/web/images}/personal.gif (100%) rename {images => code/web/images}/phone.gif (100%) rename {images => code/web/images}/popup.gif (100%) rename {images => code/web/images}/poweredByResfly.jpg (100%) rename {images => code/web/images}/prev.gif (100%) rename {images => code/web/images}/profButton-o.jpg (100%) rename {images => code/web/images}/profButton.jpg (100%) rename {images => code/web/images}/professionalLeft.jpg (100%) rename {images => code/web/images}/professional_icon.gif (100%) rename {images => code/web/images}/public.gif (100%) rename {images => code/web/images}/rcf_logo.gif (100%) rename {images => code/web/images}/recruitingEasy.jpg (100%) rename {images => code/web/images}/red_gradient.jpg (100%) rename {images => code/web/images}/report1small.jpg (100%) rename {images => code/web/images}/reports.gif (100%) rename {images => code/web/images}/reportsSmall.gif (100%) rename {images => code/web/images}/resume_preview_inline.gif (100%) rename {images => code/web/images}/scrollBottom.jpg (100%) rename {images => code/web/images}/scrollTop.jpg (100%) rename {images => code/web/images}/search.gif (100%) rename {images => code/web/images}/serverSystem.jpg (100%) rename {images => code/web/images}/settings.gif (100%) rename {images => code/web/images}/settingsAdminProf.jpg (100%) rename {images => code/web/images}/signUp.jpg (100%) rename {images => code/web/images}/sort_table_bg.gif (100%) rename {images => code/web/images}/stars/star0.gif (100%) rename {images => code/web/images}/stars/star1.gif (100%) rename {images => code/web/images}/stars/star2.gif (100%) rename {images => code/web/images}/stars/star3.gif (100%) rename {images => code/web/images}/stars/star4.gif (100%) rename {images => code/web/images}/stars/star5.gif (100%) rename {images => code/web/images}/stars/starneg1.gif (100%) rename {images => code/web/images}/stars/starneg2.gif (100%) rename {images => code/web/images}/stars/starneg3.gif (100%) rename {images => code/web/images}/stars/starneg4.gif (100%) rename {images => code/web/images}/stars/starneg5.gif (100%) rename {images => code/web/images}/stars/starneg6.gif (100%) rename {images => code/web/images}/stars/starsave.gif (100%) rename {images => code/web/images}/submit.gif (100%) rename {images => code/web/images}/superblogo.gif (100%) rename {images => code/web/images}/support.gif (100%) rename {images => code/web/images}/tab1.png (100%) rename {images => code/web/images}/tab2.png (100%) rename {images => code/web/images}/tab3.png (100%) rename {images => code/web/images}/tab_add.gif (100%) rename {images => code/web/images}/tablebg.gif (100%) rename {images => code/web/images}/tabs/active.jpg (100%) rename {images => code/web/images}/tabs/inactive.jpg (100%) rename {images => code/web/images}/tabs/small_account.jpg (100%) rename {images => code/web/images}/tabs/small_logout.jpg (100%) rename {images => code/web/images}/tabs/small_upgrade.jpg (100%) rename {images => code/web/images}/tabs/subtab_active.jpg (100%) rename {images => code/web/images}/tabs/subtab_inactive.jpg (100%) rename {images => code/web/images}/tests.gif (100%) rename {images => code/web/images}/tests_inline.gif (100%) rename {images => code/web/images}/tiled2c.gif (100%) rename {images => code/web/images}/toolbarImport.jpg (100%) rename {images => code/web/images}/toolbarPreview.jpg (100%) rename {images => code/web/images}/unsubmit.gif (100%) rename {images => code/web/images}/upward.gif (100%) rename {images => code/web/images}/vcard.gif (100%) rename {images => code/web/images}/vip_arrow.gif (100%) rename {images => code/web/images}/vip_banner.gif (100%) rename {images => code/web/images}/wf_error.gif (100%) rename {images => code/web/images}/wizard/bottomLeft.jpg (100%) rename {images => code/web/images}/wizard/bottomRight.jpg (100%) rename {images => code/web/images}/wizard/massImport.jpg (100%) rename {images => code/web/images}/wizard/opaqueLogo.jpg (100%) rename {images => code/web/images}/wizard/professional.jpg (100%) rename {images => code/web/images}/wizard/sectionTopLeft.jpg (100%) rename {images => code/web/images}/wizard/sectionTopRight.jpg (100%) rename {images => code/web/images}/wizard/topLeft.jpg (100%) rename {images => code/web/images}/wizard/topRight.jpg (100%) rename {js => code/web/js}/activity.js (100%) rename {modules => code/web/js}/activity/validator.js (100%) rename {js => code/web/js}/addressParser.js (100%) rename {js => code/web/js}/attachment.js (100%) rename {js => code/web/js}/backup.js (100%) rename {modules => code/web/js}/calendar/Calendar.js (100%) rename {modules => code/web/js}/calendar/CalendarUI.js (100%) rename {modules => code/web/js}/calendar/validator.js (100%) rename {js => code/web/js}/calendarDateInput.js (100%) rename {js => code/web/js}/candidate.js (100%) rename {js => code/web/js}/candidateParser.js (100%) rename {modules => code/web/js}/candidates/activityvalidator.js (100%) rename {modules => code/web/js}/candidates/validator.js (100%) rename {js => code/web/js}/careerPortalApply.js (100%) rename {js => code/web/js}/careerportal.js (100%) rename {js => code/web/js}/careersPage.js (97%) rename {modules => code/web/js}/companies/validator.js (100%) rename {js => code/web/js}/company.js (100%) rename {js => code/web/js}/contact.js (100%) rename {modules => code/web/js}/contacts/validator.js (100%) rename {js => code/web/js}/dataGrid.js (100%) rename {js => code/web/js}/dataGridFilters.js (100%) rename {js => code/web/js}/doubleListEditor.js (100%) rename {js => code/web/js}/eeo.js (100%) rename {js => code/web/js}/emailHandler.js (100%) rename {js => code/web/js}/export.js (100%) rename {js => code/web/js}/highlightrows.js (100%) rename {js => code/web/js}/home.js (100%) rename {modules => code/web/js}/import/import.js (100%) rename {js => code/web/js}/index.php (100%) rename {js => code/web/js}/install.js (100%) rename {js => code/web/js}/joborder.js (100%) rename {modules => code/web/js}/joborders/validator.js (100%) rename {js => code/web/js}/jquery-1.3.2.min.js (100%) rename {js => code/web/js}/lib.js (100%) rename {js => code/web/js}/listEditor.js (100%) rename {js => code/web/js}/lists.js (100%) rename {modules => code/web/js}/login/validator.js (100%) rename {js => code/web/js}/massImport.js (100%) rename {js => code/web/js}/match.js (100%) rename {js => code/web/js}/pipeline.js (100%) rename {js => code/web/js}/questionnaire.js (100%) rename {js => code/web/js}/quickAction.js (100%) rename {js => code/web/js}/searchAdvanced.js (100%) rename {js => code/web/js}/searchSaved.js (100%) rename {modules => code/web/js}/settings/Settings.js (100%) rename {modules => code/web/js}/settings/validator.js (100%) rename {js => code/web/js}/sorttable.js (100%) rename {js => code/web/js}/submodal/close.gif (100%) rename {js => code/web/js}/submodal/loading.html (79%) rename {js => code/web/js}/submodal/subModal.js (100%) rename {js => code/web/js}/suggest.js (100%) rename {js => code/web/js}/sweetTitles.js (100%) rename {modules => code/web/js}/tests/validator.js (100%) rename {modules => code/web/js}/toolbar/toolbarlibForLegacy.js (100%) rename {js => code/web/js}/wizardIntro.js (100%) rename {modules => code/web}/login/login.css (98%) diff --git a/QueueCLI.php b/QueueCLI.php index 549b98457..07e01c2d7 100755 --- a/QueueCLI.php +++ b/QueueCLI.php @@ -35,21 +35,21 @@ chdir($CATSHome); -include_once('./config.php'); -include_once('./constants.php'); -include_once('./lib/CATSUtility.php'); -include_once('./lib/DatabaseConnection.php'); -include_once('./lib/DateUtility.php'); -include_once('./lib/Template.php'); -include_once('./lib/Users.php'); -include_once('./lib/MRU.php'); -include_once('./lib/Hooks.php'); -include_once('./lib/Session.php'); /* Depends: MRU, Users, DatabaseConnection. */ -include_once('./lib/UserInterface.php'); /* Depends: Template, Session. */ -include_once('./lib/ModuleUtility.php'); /* Depends: UserInterface */ -include_once('./lib/TemplateUtility.php'); /* Depends: ModuleUtility, Hooks */ -include_once('./lib/QueueProcessor.php'); -include_once('./modules/queue/constants.php'); +include_once(LEGACY_ROOT . '/config.php'); +include_once(LEGACY_ROOT . '/constants.php'); +include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); +include_once(LEGACY_ROOT . '/lib/Template.php'); +include_once(LEGACY_ROOT . '/lib/Users.php'); +include_once(LEGACY_ROOT . '/lib/MRU.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/Session.php'); /* Depends: MRU, Users, DatabaseConnection. */ +include_once(LEGACY_ROOT . '/lib/UserInterface.php'); /* Depends: Template, Session. */ +include_once(LEGACY_ROOT . '/lib/ModuleUtility.php'); /* Depends: UserInterface */ +include_once(LEGACY_ROOT . '/lib/TemplateUtility.php'); /* Depends: ModuleUtility, Hooks */ +include_once(LEGACY_ROOT . '/lib/QueueProcessor.php'); +include_once(LEGACY_ROOT . '/modules/queue/constants.php'); /* Give the session a unique name to avoid conflicts and start the session. */ @session_name(CATS_SESSION_NAME); diff --git a/ajax.php b/ajax.php index 1221b9b7f..05113d71d 100644 --- a/ajax.php +++ b/ajax.php @@ -35,12 +35,12 @@ */ -include_once('./config.php'); -include_once('./constants.php'); -include_once('./lib/DatabaseConnection.php'); -include_once('./lib/Session.php'); /* Depends: MRU, Users, DatabaseConnection. */ -include_once('./lib/AJAXInterface.php'); -include_once('./lib/CATSUtility.php'); +include_once(LEGACY_ROOT . '/config.php'); +include_once(LEGACY_ROOT . '/constants.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); +include_once(LEGACY_ROOT . '/lib/Session.php'); /* Depends: MRU, Users, DatabaseConnection. */ +include_once(LEGACY_ROOT . '/lib/AJAXInterface.php'); +include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); @@ -107,7 +107,7 @@ if (!isset($_REQUEST['nobuffer'])) { - include_once('./lib/Hooks.php'); + include_once(LEGACY_ROOT . '/lib/Hooks.php'); ob_start(); include($filename); diff --git a/ajax/deleteActivity.php b/ajax/deleteActivity.php index 1983a573a..180fc6946 100755 --- a/ajax/deleteActivity.php +++ b/ajax/deleteActivity.php @@ -27,7 +27,7 @@ * $Id: deleteActivity.php 1479 2007-01-17 00:22:21Z will $ */ -include_once('./lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/editActivity.php b/ajax/editActivity.php index e8beb565a..5d1cbed44 100755 --- a/ajax/editActivity.php +++ b/ajax/editActivity.php @@ -28,9 +28,9 @@ */ -include_once('./lib/StringUtility.php'); -include_once('./lib/ActivityEntries.php'); -include_once('./lib/Pipelines.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/Pipelines.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/getAttachmentLocal.php b/ajax/getAttachmentLocal.php index 62cf87f9d..5710b9a15 100755 --- a/ajax/getAttachmentLocal.php +++ b/ajax/getAttachmentLocal.php @@ -30,8 +30,8 @@ $interface = new SecureAJAXInterface(); -include_once('./lib/CommonErrors.php'); -include_once('./lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); @ini_set('memory_limit', '256M'); diff --git a/ajax/getCompanyContacts.php b/ajax/getCompanyContacts.php index f94bbb9c0..01fa82df5 100755 --- a/ajax/getCompanyContacts.php +++ b/ajax/getCompanyContacts.php @@ -27,7 +27,7 @@ * $Id: getCompanyContacts.php 1892 2007-02-20 06:44:04Z will $ */ -include_once('./lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/getCompanyLocation.php b/ajax/getCompanyLocation.php index f308a765d..a0cce48f0 100755 --- a/ajax/getCompanyLocation.php +++ b/ajax/getCompanyLocation.php @@ -27,7 +27,7 @@ * $Id: getCompanyLocation.php 2359 2007-04-21 22:49:17Z will $ */ -include_once('./lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/getCompanyLocationAndDepartments.php b/ajax/getCompanyLocationAndDepartments.php index fa73cb57d..25abb2023 100755 --- a/ajax/getCompanyLocationAndDepartments.php +++ b/ajax/getCompanyLocationAndDepartments.php @@ -27,7 +27,7 @@ * $Id: getCompanyLocationAndDepartments.php 2359 2007-04-21 22:49:17Z will $ */ -include_once('./lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/getCompanyNames.php b/ajax/getCompanyNames.php index eccd8e743..83c3a1eeb 100755 --- a/ajax/getCompanyNames.php +++ b/ajax/getCompanyNames.php @@ -27,8 +27,8 @@ * $Id: getCompanyNames.php 2367 2007-04-23 23:24:05Z will $ */ -include_once('./lib/Companies.php'); -include_once('./lib/Search.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Search.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/getDataGridPager.php b/ajax/getDataGridPager.php index b3a406a13..7e8d3c4bb 100755 --- a/ajax/getDataGridPager.php +++ b/ajax/getDataGridPager.php @@ -27,9 +27,9 @@ * $Id: getDataGridPager.php 3078 2007-09-21 20:25:28Z will $ */ -include_once('./lib/CATSUtility.php'); -include_once('./lib/TemplateUtility.php'); -include_once('./lib/DataGrid.php'); +include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); +include_once(LEGACY_ROOT . '/lib/TemplateUtility.php'); +include_once(LEGACY_ROOT . '/lib/DataGrid.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/getDataItemJobOrders.php b/ajax/getDataItemJobOrders.php index 061d8cb9c..f39ce37ac 100755 --- a/ajax/getDataItemJobOrders.php +++ b/ajax/getDataItemJobOrders.php @@ -49,17 +49,17 @@ switch ($dataItemType) { case DATA_ITEM_CANDIDATE: - include_once('./lib/Candidates.php'); + include_once(LEGACY_ROOT . '/lib/Candidates.php'); $dataItem = new Candidates($siteID); break; case DATA_ITEM_COMPANY: - include_once('./lib/Companies.php'); + include_once(LEGACY_ROOT . '/lib/Companies.php'); $dataItem = new Companies($siteID); break; case DATA_ITEM_CONTACT: - include_once('./lib/Contacts.php'); + include_once(LEGACY_ROOT . '/lib/Contacts.php'); $dataItem = new Contacts($siteID); break; diff --git a/ajax/getParsedAddress.php b/ajax/getParsedAddress.php index 1ab9f112e..aea55ff64 100755 --- a/ajax/getParsedAddress.php +++ b/ajax/getParsedAddress.php @@ -27,9 +27,9 @@ * $Id: getParsedAddress.php 2492 2007-05-25 21:12:47Z will $ */ -include_once('./lib/StringUtility.php'); -include_once('./lib/AddressParser.php'); -include_once('./lib/ResultSetUtility.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/AddressParser.php'); +include_once(LEGACY_ROOT . '/lib/ResultSetUtility.php'); $interface = new AJAXInterface(); diff --git a/ajax/getPipelineDetails.php b/ajax/getPipelineDetails.php index 1636acf1f..2dcaf15d9 100755 --- a/ajax/getPipelineDetails.php +++ b/ajax/getPipelineDetails.php @@ -27,7 +27,7 @@ * $Id: getPipelineDetails.php 2976 2007-08-30 18:18:48Z andrew $ */ -include_once('./lib/Pipelines.php'); +include_once(LEGACY_ROOT . '/lib/Pipelines.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/getPipelineJobOrder.php b/ajax/getPipelineJobOrder.php index f861ea423..594998d76 100755 --- a/ajax/getPipelineJobOrder.php +++ b/ajax/getPipelineJobOrder.php @@ -27,12 +27,12 @@ * $Id: getPipelineJobOrder.php 3814 2007-12-06 17:54:28Z brian $ */ -include_once('./lib/Pipelines.php'); -include_once('./lib/TemplateUtility.php'); -include_once('./lib/StringUtility.php'); -include_once('./lib/CATSUtility.php'); -include_once('./lib/Hooks.php'); -include_once('./lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/Pipelines.php'); +include_once(LEGACY_ROOT . '/lib/TemplateUtility.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/setCandidateJobOrderRating.php b/ajax/setCandidateJobOrderRating.php index 7154fdbf2..d120ca182 100755 --- a/ajax/setCandidateJobOrderRating.php +++ b/ajax/setCandidateJobOrderRating.php @@ -27,7 +27,7 @@ * $Id: setCandidateJobOrderRating.php 1479 2007-01-17 00:22:21Z will $ */ -include_once('./lib/Pipelines.php'); +include_once(LEGACY_ROOT . '/lib/Pipelines.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/testEmailSettings.php b/ajax/testEmailSettings.php index ef3ddb4f1..5845e4b53 100755 --- a/ajax/testEmailSettings.php +++ b/ajax/testEmailSettings.php @@ -27,7 +27,7 @@ * $Id: testEmailSettings.php 2101 2007-03-06 00:20:17Z brian $ */ -include_once('./lib/Mailer.php'); +include_once(LEGACY_ROOT . '/lib/Mailer.php'); $interface = new SecureAJAXInterface(); diff --git a/ajax/zipLookup.php b/ajax/zipLookup.php index e23f4650f..c30aeb79b 100755 --- a/ajax/zipLookup.php +++ b/ajax/zipLookup.php @@ -3,8 +3,8 @@ * OpenCATS * AJAX Street/City/State lookup via Zip Interface */ -include_once('./lib/ZipLookup.php'); -include_once('./lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/ZipLookup.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); $interface = new AJAXInterface(); diff --git a/careers/index.php b/careers/index.php index 50bbc5215..a994b5439 100644 --- a/careers/index.php +++ b/careers/index.php @@ -34,7 +34,7 @@ $careerPage = true; chdir('..'); -include_once('./lib/CATSUtility.php'); +include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); include_once(CATSUtility::getIndexName()); ?> diff --git a/code/src/AppBundle/Controller/LegacyController.php b/code/src/AppBundle/Controller/LegacyController.php index 7cb8c6275..5987ac382 100644 --- a/code/src/AppBundle/Controller/LegacyController.php +++ b/code/src/AppBundle/Controller/LegacyController.php @@ -8,6 +8,7 @@ class LegacyController extends Controller { + /** * @Route("/{fileName}.php", name="_proxy", requirements={"fileName":"\w+"}) */ @@ -16,12 +17,13 @@ public function proxyAction($fileName) ob_start(); if ($fileName == 'index') { + define('LEGACY_ROOT', dirname(dirname($this->get('kernel')->getRootDir()))); // A properly formatted query string will look like this: // /index.php?m=candidates&a=edit&candidateID=55 // Do we need to run the installer? - if (!file_exists('INSTALL_BLOCK') && !isset($_POST['performMaintenence'])) + if (!file_exists(LEGACY_ROOT . '/INSTALL_BLOCK') && !isset($_POST['performMaintenence'])) { - include('modules/install/notinstalled.php'); + include(LEGACY_ROOT . '/modules/install/notinstalled.php'); die(); } @@ -42,23 +44,23 @@ public function proxyAction($fileName) @$_SERVER['REMOTE_ADDR'] !== '::1' && substr(@$_SERVER['REMOTE_ADDR'], 0, 3) !== '10.') { - include_once('modules/asp/lib/ErrorHandler.php'); + include_once(LEGACY_ROOT . '/modules/asp/lib/ErrorHandler.php'); $errorHandler = new ErrorHandler(); } - include_once('./config.php'); - include_once('./constants.php'); - include_once('./lib/CommonErrors.php'); - include_once('./lib/CATSUtility.php'); - include_once('./lib/DatabaseConnection.php'); - include_once('./lib/Template.php'); - include_once('./lib/Users.php'); - include_once('./lib/MRU.php'); - include_once('./lib/Hooks.php'); - include_once('./lib/Session.php'); /* Depends: MRU, Users, DatabaseConnection. */ - include_once('./lib/UserInterface.php'); /* Depends: Template, Session. */ - include_once('./lib/ModuleUtility.php'); /* Depends: UserInterface */ - include_once('./lib/TemplateUtility.php'); /* Depends: ModuleUtility, Hooks */ + include_once(LEGACY_ROOT . '/config.php'); + include_once(LEGACY_ROOT . '/constants.php'); + include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); + include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); + include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); + include_once(LEGACY_ROOT . '/lib/Template.php'); + include_once(LEGACY_ROOT . '/lib/Users.php'); + include_once(LEGACY_ROOT . '/lib/MRU.php'); + include_once(LEGACY_ROOT . '/lib/Hooks.php'); + include_once(LEGACY_ROOT . '/lib/Session.php'); /* Depends: MRU, Users, DatabaseConnection. */ + include_once(LEGACY_ROOT . '/lib/UserInterface.php'); /* Depends: Template, Session. */ + include_once(LEGACY_ROOT . '/lib/ModuleUtility.php'); /* Depends: UserInterface */ + include_once(LEGACY_ROOT . '/lib/TemplateUtility.php'); /* Depends: ModuleUtility, Hooks */ /* Give the session a unique name to avoid conflicts and start the session. */ @@ -87,7 +89,7 @@ function stripslashes_deep($value) } if (get_magic_quotes_gpc()) { - include_once('./lib/ArrayUtility.php'); + include_once(LEGACY_ROOT . '/lib/ArrayUtility.php'); $_GET = array_map('stripslashes_deep', $_GET); $_POST = array_map('stripslashes_deep', $_POST); @@ -96,7 +98,6 @@ function stripslashes_deep($value) $_POST = ArrayUtility::arrayMapKeys('stripslashes_deep', $_POST); $_REQUEST = ArrayUtility::arrayMapKeys('stripslashes_deep', $_REQUEST); } - /* Objects can't be stored in the session if session.auto_start is enabled. */ if (ini_get('session.auto_start') !== '0' && ini_get('session.auto_start') !== 'Off') @@ -113,7 +114,7 @@ function stripslashes_deep($value) /* Make sure we have a Session object stored in the user's session. */ if (!isset($_SESSION['CATS']) || empty($_SESSION['CATS'])) { - $_SESSION['CATS'] = new CATSSession(); + $_SESSION['CATS'] = new \CATSSession(); } /* Start timer for measuring server response time. Displayed in footer. */ @@ -129,10 +130,10 @@ function stripslashes_deep($value) * if ASP module exists (code is running on catsone.com), load the website by default * rather than the login page. */ - if (ModuleUtility::moduleExists("asp") && ModuleUtility::moduleExists("website")) + if (\ModuleUtility::moduleExists("asp") && \ModuleUtility::moduleExists("website")) { // FIXME: Can we optimize this a bit...? - include_once('modules/asp/lib/General.php'); + include_once(LEGACY_ROOT . '/modules/asp/lib/General.php'); if (!(isset($careerPage) && $careerPage) && !(isset($rssPage) && $rssPage) && @@ -140,7 +141,7 @@ function stripslashes_deep($value) (!isset($_GET['m']) || empty($_GET['m'])) && (Asp::getSubDomain() == '' || isset($_GET['a']))) { - ModuleUtility::loadModule('website'); + \ModuleUtility::loadModule('website'); exit(1); } } @@ -152,7 +153,7 @@ function stripslashes_deep($value) // FIXME: This is slow! if ($_SESSION['CATS']->isLoggedIn()) { - $users = new Users($_SESSION['CATS']->getSiteID()); + $users = new \Users($_SESSION['CATS']->getSiteID()); $forceLogoutData = $users->getForceLogoutData($_SESSION['CATS']->getUserID()); if (!empty($forceLogoutData) && ($forceLogoutData['forceLogout'] == 1 || @@ -177,7 +178,7 @@ function stripslashes_deep($value) $URI .= '&s=' . $unixName; } - CATSUtility::transferRelativeURI($URI); + \CATSUtility::transferRelativeURI($URI); die(); } } @@ -187,27 +188,27 @@ function stripslashes_deep($value) if (((isset($careerPage) && $careerPage) || (isset($_GET['showCareerPortal']) && $_GET['showCareerPortal'] == '1'))) { - ModuleUtility::loadModule('careers'); + \ModuleUtility::loadModule('careers'); } /* Check to see if we are supposed to display an rss page. */ else if (isset($rssPage) && $rssPage) { - ModuleUtility::loadModule('rss'); + \ModuleUtility::loadModule('rss'); } else if (isset($xmlPage) && $xmlPage) { - ModuleUtility::loadModule('xml'); + \ModuleUtility::loadModule('xml'); } /* Check to see if the user was forcibly logged out (logged in from another browser). */ else if ($_SESSION['CATS']->isLoggedIn() && - (!isset($_GET['m']) || ModuleUtility::moduleRequiresAuthentication($_GET['m'])) && + (!isset($_GET['m']) || \ModuleUtility::moduleRequiresAuthentication($_GET['m'])) && $_SESSION['CATS']->checkForceLogout()) { // FIXME: Unset session / etc.? - ModuleUtility::loadModule('login'); + \ModuleUtility::loadModule('login'); } /* If user specified a module, load it; otherwise, load the home module. */ @@ -219,11 +220,11 @@ function stripslashes_deep($value) if (!eval(Hooks::get('INDEX_LOAD_HOME'))) return; - ModuleUtility::loadModule('home'); + \ModuleUtility::loadModule('home'); } else { - ModuleUtility::loadModule('login'); + \ModuleUtility::loadModule('login'); } } else @@ -255,32 +256,32 @@ function stripslashes_deep($value) } /* catsone.com demo domain doesn't relogin. */ - if (strpos(CATSUtility::getIndexName(), '://demo.catsone.com') !== false) + if (strpos(\CATSUtility::getIndexName(), '://demo.catsone.com') !== false) { - CATSUtility::transferURL('http://www.catsone.com'); + \CATSUtility::transferURL('http://www.catsone.com'); } else { - CATSUtility::transferRelativeURI($URI); + \CATSUtility::transferRelativeURI($URI); } } - else if (!ModuleUtility::moduleRequiresAuthentication($_GET['m'])) + else if (!\ModuleUtility::moduleRequiresAuthentication($_GET['m'])) { /* No authentication required; load the module. */ - ModuleUtility::loadModule($_GET['m']); + \ModuleUtility::loadModule($_GET['m']); } else if (!$_SESSION['CATS']->isLoggedIn()) { /* User isn't logged in and authentication is required; send the user * to the login page. */ - ModuleUtility::loadModule('login'); + \ModuleUtility::loadModule('login'); } else { /* Everything's good; load the requested module. */ $_SESSION['CATS']->logPageView(); - ModuleUtility::loadModule($_GET['m']); + \ModuleUtility::loadModule($_GET['m']); } } diff --git a/lib/IFrameBlank.html b/code/web/IFrameBlank.html similarity index 100% rename from lib/IFrameBlank.html rename to code/web/IFrameBlank.html diff --git a/modules/calendar/Calendar.css b/code/web/css/Calendar.css similarity index 100% rename from modules/calendar/Calendar.css rename to code/web/css/Calendar.css diff --git a/careersPage.css b/code/web/css/careersPage.css similarity index 97% rename from careersPage.css rename to code/web/css/careersPage.css index 59ed0db37..8e6f2873f 100755 --- a/careersPage.css +++ b/code/web/css/careersPage.css @@ -1,60 +1,60 @@ -@charset "utf-8"; -/* CATS Applicant Tracking System Careers Page -Released: 11.13.2007 -Created By: Sae Vang - */ - -/* COMMON */ -body, html { margin: 0; padding: 0; background: #ffffff; font: normal 12px/14px Arial, Helvetica, sans-serif; color: #000000; } -#container { margin: 0 auto; padding: 0; width: 930px; height: auto; } -#logo { float: left; margin: 0; } - #logo img { width: 424px; height: 103px; } -#actions { float: right; margin: 0; width: 310px; height: 100px; background: #efefef; border: 1px solid #cccccc; } - #actions img { float: left; margin: 2px 6px 2px 15px; width: 130px; height: 25px; } -#footer { clear: both; margin: 20px auto 0 auto; width: 150px; } - #footer img { width: 137px; height: 38px; } - -a:link, a:active { color: #1763b9; } -a:hover { color: #c75a01; } -a:visited { color: #333333; } - -h1 { margin: 0 0 10px 0; font: bold 18px Arial, Helvetica, sans-serif; } -h2 { margin: 8px 0 8px 15px; font: bold 14px Arial, Helvetica, sans-serif; } -h3 { margin: 0; font: bold 14px Arial, Helvetica, sans-serif; } -p { font: normal 12px Arial, Helvetica, sans-serif; } -img { border: none; } -strong { font-weight: bold; } -em { font-style: italics; } - - -/* CONTENTS ON PAGE SPECS */ -#careerContent { clear: both; padding: 15px 0 0 0; } - -/* DISPLAY ALL JOBS PAGE */ -#displayTable { width: 930px; } -#displayTable tr.header { background: #e0e0e0; border: 1px solid #cccccc; border-left: none; border-right: none; } -#displayTable tr.odd { background: #ffffff; } -#displayTable tr.even { background: #ebebeb; } -#displayTable td { padding: 5px; } - -/* DISPLAY JOB DETAILS */ -#detailsTable { width: 400px; } - #detailsTable td.detailsHeader { width: 30%; } -div#discriptive { float: left; width: 585px; } -div#detailsTools { float: right; width: 330px; height: 70px; background: #ffffff; border: 1px solid #cccccc; } - div#detailsTools img { float: left; margin: 2px 6px 5px 15px; } - -/* DISPLAY APPLICATION FORM */ -div.applyBoxLeft, div.applyBoxRight { width: 450px; height: 470px; background: #f9f9f9; border: 1px solid #cccccc; border-top: none; } -div.applyBoxLeft { float: left; margin: 0 10px 30px 0; } -div.applyBoxRight { float: right; margin: 0 0 30px 10px; } - div.applyBoxLeft div, div.applyBoxRight div { margin: 0 0 5px 0; padding: 3px 10px; background: #efefef; border-top: 1px solid #cccccc; border-bottom: 1px solid #cccccc; } - div.applyBoxLeft table, div.applyBoxRight table { margin: 0 auto; width: 420px; } - div.applyBoxLeft table td, div.applyBoxRight table td { padding: 3px; vertical-align: top; } - td.label { text-align: right; width: 110px; } - label { font-weight: bold; } - input#documentFile { width: 342px; } - input.inputbox { width: 285px; height: 15px; } - input.submitbutton { float: right; width: 195px; height: 25px; } - textarea { margin: 8px 0 0 0; width: 410px; height: 170px; } +@charset "utf-8"; +/* CATS Applicant Tracking System Careers Page +Released: 11.13.2007 +Created By: Sae Vang + */ + +/* COMMON */ +body, html { margin: 0; padding: 0; background: #ffffff; font: normal 12px/14px Arial, Helvetica, sans-serif; color: #000000; } +#container { margin: 0 auto; padding: 0; width: 930px; height: auto; } +#logo { float: left; margin: 0; } + #logo img { width: 424px; height: 103px; } +#actions { float: right; margin: 0; width: 310px; height: 100px; background: #efefef; border: 1px solid #cccccc; } + #actions img { float: left; margin: 2px 6px 2px 15px; width: 130px; height: 25px; } +#footer { clear: both; margin: 20px auto 0 auto; width: 150px; } + #footer img { width: 137px; height: 38px; } + +a:link, a:active { color: #1763b9; } +a:hover { color: #c75a01; } +a:visited { color: #333333; } + +h1 { margin: 0 0 10px 0; font: bold 18px Arial, Helvetica, sans-serif; } +h2 { margin: 8px 0 8px 15px; font: bold 14px Arial, Helvetica, sans-serif; } +h3 { margin: 0; font: bold 14px Arial, Helvetica, sans-serif; } +p { font: normal 12px Arial, Helvetica, sans-serif; } +img { border: none; } +strong { font-weight: bold; } +em { font-style: italics; } + + +/* CONTENTS ON PAGE SPECS */ +#careerContent { clear: both; padding: 15px 0 0 0; } + +/* DISPLAY ALL JOBS PAGE */ +#displayTable { width: 930px; } +#displayTable tr.header { background: #e0e0e0; border: 1px solid #cccccc; border-left: none; border-right: none; } +#displayTable tr.odd { background: #ffffff; } +#displayTable tr.even { background: #ebebeb; } +#displayTable td { padding: 5px; } + +/* DISPLAY JOB DETAILS */ +#detailsTable { width: 400px; } + #detailsTable td.detailsHeader { width: 30%; } +div#discriptive { float: left; width: 585px; } +div#detailsTools { float: right; width: 330px; height: 70px; background: #ffffff; border: 1px solid #cccccc; } + div#detailsTools img { float: left; margin: 2px 6px 5px 15px; } + +/* DISPLAY APPLICATION FORM */ +div.applyBoxLeft, div.applyBoxRight { width: 450px; height: 470px; background: #f9f9f9; border: 1px solid #cccccc; border-top: none; } +div.applyBoxLeft { float: left; margin: 0 10px 30px 0; } +div.applyBoxRight { float: right; margin: 0 0 30px 10px; } + div.applyBoxLeft div, div.applyBoxRight div { margin: 0 0 5px 0; padding: 3px 10px; background: #efefef; border-top: 1px solid #cccccc; border-bottom: 1px solid #cccccc; } + div.applyBoxLeft table, div.applyBoxRight table { margin: 0 auto; width: 420px; } + div.applyBoxLeft table td, div.applyBoxRight table td { padding: 3px; vertical-align: top; } + td.label { text-align: right; width: 110px; } + label { font-weight: bold; } + input#documentFile { width: 342px; } + input.inputbox { width: 285px; height: 15px; } + input.submitbutton { float: right; width: 195px; height: 25px; } + textarea { margin: 8px 0 0 0; width: 410px; height: 170px; } textarea.inputboxlarge { width: 285px; height: 70px; } \ No newline at end of file diff --git a/ie.css b/code/web/css/ie.css similarity index 100% rename from ie.css rename to code/web/css/ie.css diff --git a/modules/import/MassImport.css b/code/web/css/import/MassImport.css similarity index 97% rename from modules/import/MassImport.css rename to code/web/css/import/MassImport.css index 81c329f28..5aa31b3ac 100755 --- a/modules/import/MassImport.css +++ b/code/web/css/import/MassImport.css @@ -27,7 +27,7 @@ td.softMiddle { } #statusBar { height: 31px; - background: #6B94F2 url(images/parser/statusBar.jpg); + background: #6B94F2 url(/images/parser/statusBar.jpg); width: 1px; } div.stepContainer { diff --git a/modules/install/install.css b/code/web/css/install/install.css similarity index 98% rename from modules/install/install.css rename to code/web/css/install/install.css index a5877b8d2..e23adc623 100755 --- a/modules/install/install.css +++ b/code/web/css/install/install.css @@ -199,7 +199,7 @@ p.success */ background-color: transparent !important; background-color: #333; - /* background-image\**\: url('images/maskBG.gif') !important; */ + /* background-image\**\: url('/images/maskBG.gif') !important; */ background-image: none; background-repeat: repeat; display: none; diff --git a/main.css b/code/web/css/main.css similarity index 95% rename from main.css rename to code/web/css/main.css index b64a9b1cc..f8ab82ce7 100755 --- a/main.css +++ b/code/web/css/main.css @@ -158,7 +158,7 @@ a:hover /* Inactive Tab */ #header ul#primary a.inactive { - background: #E2E2E2 url(images/tabs/inactive.jpg) no-repeat; + background: #E2E2E2 url(/images/tabs/inactive.jpg) no-repeat; height: 21px; width: 81px; margin: 3px 3px 0px 0px; /* 1px more margin-left than a.active. */ @@ -181,7 +181,7 @@ a:hover /* Active Tab */ #header ul#primary a.active { - background: #E2E2E2 url(images/tabs/active.jpg) no-repeat; + background: #E2E2E2 url(/images/tabs/active.jpg) no-repeat; height: 24px; width: 81px; margin: 1px 2px 0px 0px; @@ -259,7 +259,7 @@ a:hover margin: 0px 0px 0px 0px; padding: 5px 10px 5px 0px; background: #fff; - background-image: url('images/mru_background.gif'); + background-image: url('/images/mru_background.gif'); background-repeat: repeat-x; text-align: right; } @@ -287,7 +287,7 @@ a:hover font: normal normal normal 12px Arial, Tahoma, sans-serif; color: #000; background: #fff; - background-image: url('images/mru_background.gif'); + background-image: url('/images/mru_background.gif'); background-repeat: repeat-x; } @@ -331,7 +331,7 @@ a:hover padding: 0px 0px 0px 0px; float: left; background-color: transparent; - background: url('images/cats_icon.gif') no-repeat center; + background: url('/images/cats_icon.gif') no-repeat center; width: 55px; height: 55px; } @@ -386,7 +386,7 @@ a:hover p.note { - background-image: url('images/bgBlue.gif'); + background-image: url('/images/bgBlue.gif'); background-repeat: repeat-x; padding: 4px; margin-top: 0px; @@ -400,7 +400,7 @@ p.note p.noteUnsized { - background-image: url('images/bgBlue.gif'); + background-image: url('/images/bgBlue.gif'); background-repeat: repeat-x; padding: 4px; margin-top: 0px; @@ -413,7 +413,7 @@ p.noteUnsized .noteUnsizedSpan { - background-image: url('images/bgBlue.gif'); + background-image: url('/images/bgBlue.gif'); background-repeat: repeat-x; padding: 4px; margin-top: 0px; @@ -426,7 +426,7 @@ p.noteUnsized p.warning { - background-image: url('images/orange_gradient.jpg'); + background-image: url('/images/orange_gradient.jpg'); background-repeat: repeat-x; padding: 4px; margin-top: 0px; @@ -440,7 +440,7 @@ p.warning p.perror { - background-image: url('images/red_gradient.jpg'); + background-image: url('/images/red_gradient.jpg'); background-repeat: repeat-x; padding: 4px; margin-top: 0px; @@ -513,7 +513,7 @@ table.notsortable th border-left: none; border-right: none; padding: 2px 4px 2px 4px; - background-image: url('images/sort_table_bg.gif'); + background-image: url('/images/sort_table_bg.gif'); color: #000080; font: normal normal bold 12px Arial, Tahoma, sans-serif; } @@ -579,7 +579,7 @@ table.statisticsTable th border-left: none; border-right: none; padding: 2px 4px 2px 4px; - background-image: url('images/sort_table_bg.gif'); + background-image: url('/images/sort_table_bg.gif'); color: #000080; font: normal normal bold 12px Arial, Tahoma, sans-serif; } @@ -620,7 +620,7 @@ tr.evenTableRow-onmouseover .editTable { - background: url('images/bgGrayForm.gif'); + background: url('/images/bgGrayForm.gif'); background-repeat: repeat-x; background-position: top; background-color: #f4f4f4; @@ -756,7 +756,7 @@ p.freeformbottom font-size: 12px; padding-left: 8px; padding-right: 8px; - background: url('images/button_bg.gif') repeat-x #f0f0f0; + background: url('/images/button_bg.gif') repeat-x #f0f0f0; border: 1px solid #a4a4a4; } @@ -772,7 +772,7 @@ p.freeformbottom font-size: 12px; padding-left: 8px; padding-right: 8px; - background: url('images/button_bg_down.gif') repeat-x #f0f0f0; + background: url('/images/button_bg_down.gif') repeat-x #f0f0f0; border: 1px solid #a4a4a4; } @@ -783,7 +783,7 @@ p.freeformbottom font-size: 12px; padding-left: 8px; padding-right: 8px; - background: url('images/button_bg.gif') repeat-x #f0f0f0; + background: url('/images/button_bg.gif') repeat-x #f0f0f0; border: 1px solid #a4a4a4; } @@ -794,7 +794,7 @@ p.freeformbottom font-size: 12px; padding-left: 8px; padding-right: 8px; - background: url('images/button_bg_down.gif') repeat-x #f0f0f0; + background: url('/images/button_bg_down.gif') repeat-x #f0f0f0; border: 1px solid #a4a4a4; } @@ -944,7 +944,7 @@ span.validationError */ background-color: transparent !important; background-color: #333; - /* background-image\**\: url('images/maskBG.gif') !important; */ + /* background-image\**\: url('/images/maskBG.gif') !important; */ background-image: none; background-repeat: repeat; display: none; @@ -1188,7 +1188,7 @@ input.selectAll line-height: normal; font-size-adjust: none; font-stretch: normal; - background-image: url('images/lightblue_gradient_15.jpg'); + background-image: url('/images/lightblue_gradient_15.jpg'); background-repeat: repeat; background-attachment: scroll; color: white; diff --git a/not-ie.css b/code/web/css/not-ie.css similarity index 100% rename from not-ie.css rename to code/web/css/not-ie.css diff --git a/modules/settings/downloads.css b/code/web/css/settings/downloads.css similarity index 98% rename from modules/settings/downloads.css rename to code/web/css/settings/downloads.css index e68bd8080..597383c81 100755 --- a/modules/settings/downloads.css +++ b/code/web/css/settings/downloads.css @@ -1,9 +1,9 @@ -/* Downloads Supported Types > Settings tab > Downloads */ - -#settingsDownloads { clear: both; width: 600px; } -#settingsDownloads h4 { margin: 15px 0 0 0;font: bold 14px Arial, sans-serif; color: #000; } -table.downloadSupportedGrid { margin: 0 0 15px 0; padding: 0; border: 1px solid #ccc; border-left: none; text-align: left; width: 600px; } -table.downloadSupportedGrid tr.headers { background: #f3e1d2; } -table.downloadSupportedGrid tr.headers span { vertical-align: super; } -table.downloadSupportedGrid td { padding: 0 0 0 10px; border-left: 1px solid #ccc; height: 25px; } +/* Downloads Supported Types > Settings tab > Downloads */ + +#settingsDownloads { clear: both; width: 600px; } +#settingsDownloads h4 { margin: 15px 0 0 0;font: bold 14px Arial, sans-serif; color: #000; } +table.downloadSupportedGrid { margin: 0 0 15px 0; padding: 0; border: 1px solid #ccc; border-left: none; text-align: left; width: 600px; } +table.downloadSupportedGrid tr.headers { background: #f3e1d2; } +table.downloadSupportedGrid tr.headers span { vertical-align: super; } +table.downloadSupportedGrid td { padding: 0 0 0 10px; border-left: 1px solid #ccc; height: 25px; } table.downloadSupportedGrid td.category { width: 125px; font: normal 14px Arial, sans-serif; text-align: left; } \ No newline at end of file diff --git a/modules/tests/tests.css b/code/web/css/tests/tests.css similarity index 100% rename from modules/tests/tests.css rename to code/web/css/tests/tests.css diff --git a/modules/wizard/style.css b/code/web/css/wizard/style.css similarity index 96% rename from modules/wizard/style.css rename to code/web/css/wizard/style.css index f154562d2..6306e5a5e 100755 --- a/modules/wizard/style.css +++ b/code/web/css/wizard/style.css @@ -9,7 +9,7 @@ td.wizardBody { font-size: 14px; background-color: #DDE2FF; color: #ffffff; heig td.sectionTitle { background-color: #FFDE90; padding: 10px; font-size: 12px; font-weight: bold; } td.sectionTitleCurrent { background-color: #FFB400; padding: 10px; font-size: 12px; font-weight: bold; } input.button { height: 20px; color: #333; font-size: 12px; padding-left: 8px; padding-right: 8px; - background: url('images/button_bg.gif') repeat-x #f0f0f0; border: 1px solid #a4a4a4; cursor: pointer; } + background: url('/images/button_bg.gif') repeat-x #f0f0f0; border: 1px solid #a4a4a4; cursor: pointer; } #loadingBar { position: absolute; width: 650px; text-align: center; top: 25%; padding: 10px; left: 18%; border: 5px solid #e0e0e0; background-color: #f0f0f0; font-size: 38px; font-weight: bold; color: #666666; visibility: hidden; } diff --git a/images/CATS-powered.gif b/code/web/images/CATS-powered.gif similarity index 100% rename from images/CATS-powered.gif rename to code/web/images/CATS-powered.gif diff --git a/images/CATS-sig.gif b/code/web/images/CATS-sig.gif similarity index 100% rename from images/CATS-sig.gif rename to code/web/images/CATS-sig.gif diff --git a/images/actions/add.gif b/code/web/images/actions/add.gif similarity index 100% rename from images/actions/add.gif rename to code/web/images/actions/add.gif diff --git a/images/actions/add_contact.gif b/code/web/images/actions/add_contact.gif similarity index 100% rename from images/actions/add_contact.gif rename to code/web/images/actions/add_contact.gif diff --git a/images/actions/add_job_order.gif b/code/web/images/actions/add_job_order.gif similarity index 100% rename from images/actions/add_job_order.gif rename to code/web/images/actions/add_job_order.gif diff --git a/images/actions/add_small.gif b/code/web/images/actions/add_small.gif similarity index 100% rename from images/actions/add_small.gif rename to code/web/images/actions/add_small.gif diff --git a/images/actions/add_to_pipeline.gif b/code/web/images/actions/add_to_pipeline.gif similarity index 100% rename from images/actions/add_to_pipeline.gif rename to code/web/images/actions/add_to_pipeline.gif diff --git a/images/actions/blank.gif b/code/web/images/actions/blank.gif similarity index 100% rename from images/actions/blank.gif rename to code/web/images/actions/blank.gif diff --git a/images/actions/check_all.gif b/code/web/images/actions/check_all.gif similarity index 100% rename from images/actions/check_all.gif rename to code/web/images/actions/check_all.gif diff --git a/images/actions/delete.gif b/code/web/images/actions/delete.gif similarity index 100% rename from images/actions/delete.gif rename to code/web/images/actions/delete.gif diff --git a/images/actions/delete_small.gif b/code/web/images/actions/delete_small.gif similarity index 100% rename from images/actions/delete_small.gif rename to code/web/images/actions/delete_small.gif diff --git a/images/actions/edit.gif b/code/web/images/actions/edit.gif similarity index 100% rename from images/actions/edit.gif rename to code/web/images/actions/edit.gif diff --git a/images/actions/email.gif b/code/web/images/actions/email.gif similarity index 100% rename from images/actions/email.gif rename to code/web/images/actions/email.gif diff --git a/images/actions/email_no.gif b/code/web/images/actions/email_no.gif similarity index 100% rename from images/actions/email_no.gif rename to code/web/images/actions/email_no.gif diff --git a/images/actions/info.gif b/code/web/images/actions/info.gif similarity index 100% rename from images/actions/info.gif rename to code/web/images/actions/info.gif diff --git a/images/actions/job_order.gif b/code/web/images/actions/job_order.gif similarity index 100% rename from images/actions/job_order.gif rename to code/web/images/actions/job_order.gif diff --git a/images/actions/print.gif b/code/web/images/actions/print.gif similarity index 100% rename from images/actions/print.gif rename to code/web/images/actions/print.gif diff --git a/images/actions/screen.gif b/code/web/images/actions/screen.gif similarity index 100% rename from images/actions/screen.gif rename to code/web/images/actions/screen.gif diff --git a/images/actions/screen_grey.gif b/code/web/images/actions/screen_grey.gif similarity index 100% rename from images/actions/screen_grey.gif rename to code/web/images/actions/screen_grey.gif diff --git a/images/actions/uncheck_all.gif b/code/web/images/actions/uncheck_all.gif similarity index 100% rename from images/actions/uncheck_all.gif rename to code/web/images/actions/uncheck_all.gif diff --git a/images/actions/view.gif b/code/web/images/actions/view.gif similarity index 100% rename from images/actions/view.gif rename to code/web/images/actions/view.gif diff --git a/images/active_tab_gradient.gif b/code/web/images/active_tab_gradient.gif similarity index 100% rename from images/active_tab_gradient.gif rename to code/web/images/active_tab_gradient.gif diff --git a/images/activities.gif b/code/web/images/activities.gif similarity index 100% rename from images/activities.gif rename to code/web/images/activities.gif diff --git a/images/add_licenses.jpg b/code/web/images/add_licenses.jpg similarity index 100% rename from images/add_licenses.jpg rename to code/web/images/add_licenses.jpg diff --git a/images/applicationLogo.jpg b/code/web/images/applicationLogo.jpg similarity index 100% rename from images/applicationLogo.jpg rename to code/web/images/applicationLogo.jpg diff --git a/images/arrow_down.gif b/code/web/images/arrow_down.gif similarity index 100% rename from images/arrow_down.gif rename to code/web/images/arrow_down.gif diff --git a/images/arrow_down.png b/code/web/images/arrow_down.png similarity index 100% rename from images/arrow_down.png rename to code/web/images/arrow_down.png diff --git a/images/arrow_left_24.gif b/code/web/images/arrow_left_24.gif similarity index 100% rename from images/arrow_left_24.gif rename to code/web/images/arrow_left_24.gif diff --git a/images/arrow_next.gif b/code/web/images/arrow_next.gif similarity index 100% rename from images/arrow_next.gif rename to code/web/images/arrow_next.gif diff --git a/images/arrow_next.png b/code/web/images/arrow_next.png similarity index 100% rename from images/arrow_next.png rename to code/web/images/arrow_next.png diff --git a/images/arrow_right_24.gif b/code/web/images/arrow_right_24.gif similarity index 100% rename from images/arrow_right_24.gif rename to code/web/images/arrow_right_24.gif diff --git a/images/attachment.gif b/code/web/images/attachment.gif similarity index 100% rename from images/attachment.gif rename to code/web/images/attachment.gif diff --git a/images/bell.gif b/code/web/images/bell.gif similarity index 100% rename from images/bell.gif rename to code/web/images/bell.gif diff --git a/images/bgBlue.gif b/code/web/images/bgBlue.gif similarity index 100% rename from images/bgBlue.gif rename to code/web/images/bgBlue.gif diff --git a/images/bgGrayForm.gif b/code/web/images/bgGrayForm.gif similarity index 100% rename from images/bgGrayForm.gif rename to code/web/images/bgGrayForm.gif diff --git a/images/blue_check.gif b/code/web/images/blue_check.gif similarity index 100% rename from images/blue_check.gif rename to code/web/images/blue_check.gif diff --git a/images/blue_gradient.jpg b/code/web/images/blue_gradient.jpg similarity index 100% rename from images/blue_gradient.jpg rename to code/web/images/blue_gradient.jpg diff --git a/images/bullet_black.gif b/code/web/images/bullet_black.gif similarity index 100% rename from images/bullet_black.gif rename to code/web/images/bullet_black.gif diff --git a/images/button_bg.gif b/code/web/images/button_bg.gif similarity index 100% rename from images/button_bg.gif rename to code/web/images/button_bg.gif diff --git a/images/button_bg_down.gif b/code/web/images/button_bg_down.gif similarity index 100% rename from images/button_bg_down.gif rename to code/web/images/button_bg_down.gif diff --git a/images/calendar.gif b/code/web/images/calendar.gif similarity index 100% rename from images/calendar.gif rename to code/web/images/calendar.gif diff --git a/images/calendar1_bg.gif b/code/web/images/calendar1_bg.gif similarity index 100% rename from images/calendar1_bg.gif rename to code/web/images/calendar1_bg.gif diff --git a/images/calendar_add.gif b/code/web/images/calendar_add.gif similarity index 100% rename from images/calendar_add.gif rename to code/web/images/calendar_add.gif diff --git a/images/candidate.gif b/code/web/images/candidate.gif similarity index 100% rename from images/candidate.gif rename to code/web/images/candidate.gif diff --git a/images/candidate_inline.gif b/code/web/images/candidate_inline.gif similarity index 100% rename from images/candidate_inline.gif rename to code/web/images/candidate_inline.gif diff --git a/images/candidate_small.gif b/code/web/images/candidate_small.gif similarity index 100% rename from images/candidate_small.gif rename to code/web/images/candidate_small.gif diff --git a/images/candidate_tiny.gif b/code/web/images/candidate_tiny.gif similarity index 100% rename from images/candidate_tiny.gif rename to code/web/images/candidate_tiny.gif diff --git a/images/careers_apply-o.gif b/code/web/images/careers_apply-o.gif similarity index 100% rename from images/careers_apply-o.gif rename to code/web/images/careers_apply-o.gif diff --git a/images/careers_apply.gif b/code/web/images/careers_apply.gif similarity index 100% rename from images/careers_apply.gif rename to code/web/images/careers_apply.gif diff --git a/images/careers_arrow.gif b/code/web/images/careers_arrow.gif similarity index 100% rename from images/careers_arrow.gif rename to code/web/images/careers_arrow.gif diff --git a/images/careers_cats.gif b/code/web/images/careers_cats.gif similarity index 100% rename from images/careers_cats.gif rename to code/web/images/careers_cats.gif diff --git a/images/careers_populate.gif b/code/web/images/careers_populate.gif similarity index 100% rename from images/careers_populate.gif rename to code/web/images/careers_populate.gif diff --git a/images/careers_powered.gif b/code/web/images/careers_powered.gif similarity index 100% rename from images/careers_powered.gif rename to code/web/images/careers_powered.gif diff --git a/images/careers_return-o.gif b/code/web/images/careers_return-o.gif similarity index 100% rename from images/careers_return-o.gif rename to code/web/images/careers_return-o.gif diff --git a/images/careers_return.gif b/code/web/images/careers_return.gif similarity index 100% rename from images/careers_return.gif rename to code/web/images/careers_return.gif diff --git a/images/careers_rss-o.gif b/code/web/images/careers_rss-o.gif similarity index 100% rename from images/careers_rss-o.gif rename to code/web/images/careers_rss-o.gif diff --git a/images/careers_rss.gif b/code/web/images/careers_rss.gif similarity index 100% rename from images/careers_rss.gif rename to code/web/images/careers_rss.gif diff --git a/images/careers_search-o.gif b/code/web/images/careers_search-o.gif similarity index 100% rename from images/careers_search-o.gif rename to code/web/images/careers_search-o.gif diff --git a/images/careers_search.gif b/code/web/images/careers_search.gif similarity index 100% rename from images/careers_search.gif rename to code/web/images/careers_search.gif diff --git a/images/careers_share-o.gif b/code/web/images/careers_share-o.gif similarity index 100% rename from images/careers_share-o.gif rename to code/web/images/careers_share-o.gif diff --git a/images/careers_share.gif b/code/web/images/careers_share.gif similarity index 100% rename from images/careers_share.gif rename to code/web/images/careers_share.gif diff --git a/images/careers_show-o.gif b/code/web/images/careers_show-o.gif similarity index 100% rename from images/careers_show-o.gif rename to code/web/images/careers_show-o.gif diff --git a/images/careers_show.gif b/code/web/images/careers_show.gif similarity index 100% rename from images/careers_show.gif rename to code/web/images/careers_show.gif diff --git a/images/careers_submit-o.gif b/code/web/images/careers_submit-o.gif similarity index 100% rename from images/careers_submit-o.gif rename to code/web/images/careers_submit-o.gif diff --git a/images/careers_submit.gif b/code/web/images/careers_submit.gif similarity index 100% rename from images/careers_submit.gif rename to code/web/images/careers_submit.gif diff --git a/images/cats_icon.gif b/code/web/images/cats_icon.gif similarity index 100% rename from images/cats_icon.gif rename to code/web/images/cats_icon.gif diff --git a/images/cats_logo.jpg b/code/web/images/cats_logo.jpg similarity index 100% rename from images/cats_logo.jpg rename to code/web/images/cats_logo.jpg diff --git a/images/cats_small_ad.jpg b/code/web/images/cats_small_ad.jpg similarity index 100% rename from images/cats_small_ad.jpg rename to code/web/images/cats_small_ad.jpg diff --git a/images/checkbox.gif b/code/web/images/checkbox.gif similarity index 100% rename from images/checkbox.gif rename to code/web/images/checkbox.gif diff --git a/images/checkbox_blank.gif b/code/web/images/checkbox_blank.gif similarity index 100% rename from images/checkbox_blank.gif rename to code/web/images/checkbox_blank.gif diff --git a/images/cognizo-logo.jpg b/code/web/images/cognizo-logo.jpg similarity index 100% rename from images/cognizo-logo.jpg rename to code/web/images/cognizo-logo.jpg diff --git a/images/companies.gif b/code/web/images/companies.gif similarity index 100% rename from images/companies.gif rename to code/web/images/companies.gif diff --git a/images/consider.gif b/code/web/images/consider.gif similarity index 100% rename from images/consider.gif rename to code/web/images/consider.gif diff --git a/images/contact.gif b/code/web/images/contact.gif similarity index 100% rename from images/contact.gif rename to code/web/images/contact.gif diff --git a/images/contact_small.gif b/code/web/images/contact_small.gif similarity index 100% rename from images/contact_small.gif rename to code/web/images/contact_small.gif diff --git a/images/copyArrow-d.jpg b/code/web/images/copyArrow-d.jpg similarity index 100% rename from images/copyArrow-d.jpg rename to code/web/images/copyArrow-d.jpg diff --git a/images/copyArrow.jpg b/code/web/images/copyArrow.jpg similarity index 100% rename from images/copyArrow.jpg rename to code/web/images/copyArrow.jpg diff --git a/images/copyBg-d.jpg b/code/web/images/copyBg-d.jpg similarity index 100% rename from images/copyBg-d.jpg rename to code/web/images/copyBg-d.jpg diff --git a/images/copyBg.jpg b/code/web/images/copyBg.jpg similarity index 100% rename from images/copyBg.jpg rename to code/web/images/copyBg.jpg diff --git a/images/copyBottom-d.jpg b/code/web/images/copyBottom-d.jpg similarity index 100% rename from images/copyBottom-d.jpg rename to code/web/images/copyBottom-d.jpg diff --git a/images/copyBottom.jpg b/code/web/images/copyBottom.jpg similarity index 100% rename from images/copyBottom.jpg rename to code/web/images/copyBottom.jpg diff --git a/images/copyTemplate.psd b/code/web/images/copyTemplate.psd similarity index 100% rename from images/copyTemplate.psd rename to code/web/images/copyTemplate.psd diff --git a/images/copyTop-d.jpg b/code/web/images/copyTop-d.jpg similarity index 100% rename from images/copyTop-d.jpg rename to code/web/images/copyTop-d.jpg diff --git a/images/copyTop.jpg b/code/web/images/copyTop.jpg similarity index 100% rename from images/copyTop.jpg rename to code/web/images/copyTop.jpg diff --git a/images/cp_add.gif b/code/web/images/cp_add.gif similarity index 100% rename from images/cp_add.gif rename to code/web/images/cp_add.gif diff --git a/images/cp_back.gif b/code/web/images/cp_back.gif similarity index 100% rename from images/cp_back.gif rename to code/web/images/cp_back.gif diff --git a/images/cp_delete.gif b/code/web/images/cp_delete.gif similarity index 100% rename from images/cp_delete.gif rename to code/web/images/cp_delete.gif diff --git a/images/cp_edit.gif b/code/web/images/cp_edit.gif similarity index 100% rename from images/cp_edit.gif rename to code/web/images/cp_edit.gif diff --git a/images/cp_info.jpg b/code/web/images/cp_info.jpg similarity index 100% rename from images/cp_info.jpg rename to code/web/images/cp_info.jpg diff --git a/images/cp_listing.jpg b/code/web/images/cp_listing.jpg similarity index 100% rename from images/cp_listing.jpg rename to code/web/images/cp_listing.jpg diff --git a/images/cp_questionnaire.jpg b/code/web/images/cp_questionnaire.jpg similarity index 100% rename from images/cp_questionnaire.jpg rename to code/web/images/cp_questionnaire.jpg diff --git a/images/cp_resume.jpg b/code/web/images/cp_resume.jpg similarity index 100% rename from images/cp_resume.jpg rename to code/web/images/cp_resume.jpg diff --git a/images/cp_save.gif b/code/web/images/cp_save.gif similarity index 100% rename from images/cp_save.gif rename to code/web/images/cp_save.gif diff --git a/images/cross.gif b/code/web/images/cross.gif similarity index 100% rename from images/cross.gif rename to code/web/images/cross.gif diff --git a/images/customsearch.jpg b/code/web/images/customsearch.jpg similarity index 100% rename from images/customsearch.jpg rename to code/web/images/customsearch.jpg diff --git a/images/customsearch2.jpg b/code/web/images/customsearch2.jpg similarity index 100% rename from images/customsearch2.jpg rename to code/web/images/customsearch2.jpg diff --git a/images/dashboard_preview/activity.png b/code/web/images/dashboard_preview/activity.png similarity index 100% rename from images/dashboard_preview/activity.png rename to code/web/images/dashboard_preview/activity.png diff --git a/images/dashboard_preview/candidates.png b/code/web/images/dashboard_preview/candidates.png similarity index 100% rename from images/dashboard_preview/candidates.png rename to code/web/images/dashboard_preview/candidates.png diff --git a/images/dashboard_preview/image.png b/code/web/images/dashboard_preview/image.png similarity index 100% rename from images/dashboard_preview/image.png rename to code/web/images/dashboard_preview/image.png diff --git a/images/dashboard_preview/joborders.png b/code/web/images/dashboard_preview/joborders.png similarity index 100% rename from images/dashboard_preview/joborders.png rename to code/web/images/dashboard_preview/joborders.png diff --git a/images/dashboard_preview/pipeline.png b/code/web/images/dashboard_preview/pipeline.png similarity index 100% rename from images/dashboard_preview/pipeline.png rename to code/web/images/dashboard_preview/pipeline.png diff --git a/images/dashboard_preview/recent_job_orders.png b/code/web/images/dashboard_preview/recent_job_orders.png similarity index 100% rename from images/dashboard_preview/recent_job_orders.png rename to code/web/images/dashboard_preview/recent_job_orders.png diff --git a/images/dashboard_preview/submissions.png b/code/web/images/dashboard_preview/submissions.png similarity index 100% rename from images/dashboard_preview/submissions.png rename to code/web/images/dashboard_preview/submissions.png diff --git a/images/dashboard_preview/text.png b/code/web/images/dashboard_preview/text.png similarity index 100% rename from images/dashboard_preview/text.png rename to code/web/images/dashboard_preview/text.png diff --git a/images/dashboard_preview/title_bar.png b/code/web/images/dashboard_preview/title_bar.png similarity index 100% rename from images/dashboard_preview/title_bar.png rename to code/web/images/dashboard_preview/title_bar.png diff --git a/images/dashboard_preview/upcoming_events.png b/code/web/images/dashboard_preview/upcoming_events.png similarity index 100% rename from images/dashboard_preview/upcoming_events.png rename to code/web/images/dashboard_preview/upcoming_events.png diff --git a/images/downward.gif b/code/web/images/downward.gif similarity index 100% rename from images/downward.gif rename to code/web/images/downward.gif diff --git a/images/edit.gif b/code/web/images/edit.gif similarity index 100% rename from images/edit.gif rename to code/web/images/edit.gif diff --git a/images/email.gif b/code/web/images/email.gif similarity index 100% rename from images/email.gif rename to code/web/images/email.gif diff --git a/images/email_logo.jpg b/code/web/images/email_logo.jpg similarity index 100% rename from images/email_logo.jpg rename to code/web/images/email_logo.jpg diff --git a/images/favicon.ico b/code/web/images/favicon.ico similarity index 100% rename from images/favicon.ico rename to code/web/images/favicon.ico diff --git a/images/file/avi.gif b/code/web/images/file/avi.gif similarity index 100% rename from images/file/avi.gif rename to code/web/images/file/avi.gif diff --git a/images/file/bmp.gif b/code/web/images/file/bmp.gif similarity index 100% rename from images/file/bmp.gif rename to code/web/images/file/bmp.gif diff --git a/images/file/doc.gif b/code/web/images/file/doc.gif similarity index 100% rename from images/file/doc.gif rename to code/web/images/file/doc.gif diff --git a/images/file/eps.gif b/code/web/images/file/eps.gif similarity index 100% rename from images/file/eps.gif rename to code/web/images/file/eps.gif diff --git a/images/file/gif.gif b/code/web/images/file/gif.gif similarity index 100% rename from images/file/gif.gif rename to code/web/images/file/gif.gif diff --git a/images/file/jpeg.gif b/code/web/images/file/jpeg.gif similarity index 100% rename from images/file/jpeg.gif rename to code/web/images/file/jpeg.gif diff --git a/images/file/jpg.gif b/code/web/images/file/jpg.gif similarity index 100% rename from images/file/jpg.gif rename to code/web/images/file/jpg.gif diff --git a/images/file/pdf.gif b/code/web/images/file/pdf.gif similarity index 100% rename from images/file/pdf.gif rename to code/web/images/file/pdf.gif diff --git a/images/file/png.gif b/code/web/images/file/png.gif similarity index 100% rename from images/file/png.gif rename to code/web/images/file/png.gif diff --git a/images/file/ppt.gif b/code/web/images/file/ppt.gif similarity index 100% rename from images/file/ppt.gif rename to code/web/images/file/ppt.gif diff --git a/images/file/rtf.gif b/code/web/images/file/rtf.gif similarity index 100% rename from images/file/rtf.gif rename to code/web/images/file/rtf.gif diff --git a/images/file/txt.gif b/code/web/images/file/txt.gif similarity index 100% rename from images/file/txt.gif rename to code/web/images/file/txt.gif diff --git a/images/file/wmv.gif b/code/web/images/file/wmv.gif similarity index 100% rename from images/file/wmv.gif rename to code/web/images/file/wmv.gif diff --git a/images/file/xls.gif b/code/web/images/file/xls.gif similarity index 100% rename from images/file/xls.gif rename to code/web/images/file/xls.gif diff --git a/images/file/zip.gif b/code/web/images/file/zip.gif similarity index 100% rename from images/file/zip.gif rename to code/web/images/file/zip.gif diff --git a/images/fileTypeBz2.jpg b/code/web/images/fileTypeBz2.jpg similarity index 100% rename from images/fileTypeBz2.jpg rename to code/web/images/fileTypeBz2.jpg diff --git a/images/fileTypeDoc.jpg b/code/web/images/fileTypeDoc.jpg similarity index 100% rename from images/fileTypeDoc.jpg rename to code/web/images/fileTypeDoc.jpg diff --git a/images/fileTypeGz.jpg b/code/web/images/fileTypeGz.jpg similarity index 100% rename from images/fileTypeGz.jpg rename to code/web/images/fileTypeGz.jpg diff --git a/images/fileTypeHtml.jpg b/code/web/images/fileTypeHtml.jpg similarity index 100% rename from images/fileTypeHtml.jpg rename to code/web/images/fileTypeHtml.jpg diff --git a/images/fileTypePdf.jpg b/code/web/images/fileTypePdf.jpg similarity index 100% rename from images/fileTypePdf.jpg rename to code/web/images/fileTypePdf.jpg diff --git a/images/fileTypeRtf.jpg b/code/web/images/fileTypeRtf.jpg similarity index 100% rename from images/fileTypeRtf.jpg rename to code/web/images/fileTypeRtf.jpg diff --git a/images/fileTypeTar.jpg b/code/web/images/fileTypeTar.jpg similarity index 100% rename from images/fileTypeTar.jpg rename to code/web/images/fileTypeTar.jpg diff --git a/images/fileTypeTxt.jpg b/code/web/images/fileTypeTxt.jpg similarity index 100% rename from images/fileTypeTxt.jpg rename to code/web/images/fileTypeTxt.jpg diff --git a/images/fileTypeZip.jpg b/code/web/images/fileTypeZip.jpg similarity index 100% rename from images/fileTypeZip.jpg rename to code/web/images/fileTypeZip.jpg diff --git a/images/firefox-spread-btn-2.png b/code/web/images/firefox-spread-btn-2.png similarity index 100% rename from images/firefox-spread-btn-2.png rename to code/web/images/firefox-spread-btn-2.png diff --git a/images/folder1_locked.jpg b/code/web/images/folder1_locked.jpg similarity index 100% rename from images/folder1_locked.jpg rename to code/web/images/folder1_locked.jpg diff --git a/images/friendly_error.jpg b/code/web/images/friendly_error.jpg similarity index 100% rename from images/friendly_error.jpg rename to code/web/images/friendly_error.jpg diff --git a/images/google_maps.gif b/code/web/images/google_maps.gif similarity index 100% rename from images/google_maps.gif rename to code/web/images/google_maps.gif diff --git a/images/gradient.gif b/code/web/images/gradient.gif similarity index 100% rename from images/gradient.gif rename to code/web/images/gradient.gif diff --git a/images/graphNoData.jpg b/code/web/images/graphNoData.jpg similarity index 100% rename from images/graphNoData.jpg rename to code/web/images/graphNoData.jpg diff --git a/images/gray_gradient.gif b/code/web/images/gray_gradient.gif similarity index 100% rename from images/gray_gradient.gif rename to code/web/images/gray_gradient.gif diff --git a/images/gray_x.gif b/code/web/images/gray_x.gif similarity index 100% rename from images/gray_x.gif rename to code/web/images/gray_x.gif diff --git a/images/home.gif b/code/web/images/home.gif similarity index 100% rename from images/home.gif rename to code/web/images/home.gif diff --git a/images/i-firefox-small.gif b/code/web/images/i-firefox-small.gif similarity index 100% rename from images/i-firefox-small.gif rename to code/web/images/i-firefox-small.gif diff --git a/images/i-firefox.gif b/code/web/images/i-firefox.gif similarity index 100% rename from images/i-firefox.gif rename to code/web/images/i-firefox.gif diff --git a/images/i-ie.gif b/code/web/images/i-ie.gif similarity index 100% rename from images/i-ie.gif rename to code/web/images/i-ie.gif diff --git a/images/i-opera-grayed.gif b/code/web/images/i-opera-grayed.gif similarity index 100% rename from images/i-opera-grayed.gif rename to code/web/images/i-opera-grayed.gif diff --git a/images/i-outlook.gif b/code/web/images/i-outlook.gif similarity index 100% rename from images/i-outlook.gif rename to code/web/images/i-outlook.gif diff --git a/images/i-safari-grayed.gif b/code/web/images/i-safari-grayed.gif similarity index 100% rename from images/i-safari-grayed.gif rename to code/web/images/i-safari-grayed.gif diff --git a/images/i-thunderbird.gif b/code/web/images/i-thunderbird.gif similarity index 100% rename from images/i-thunderbird.gif rename to code/web/images/i-thunderbird.gif diff --git a/images/icon_clock.gif b/code/web/images/icon_clock.gif similarity index 100% rename from images/icon_clock.gif rename to code/web/images/icon_clock.gif diff --git a/images/indicator.gif b/code/web/images/indicator.gif similarity index 100% rename from images/indicator.gif rename to code/web/images/indicator.gif diff --git a/images/indicator2.gif b/code/web/images/indicator2.gif similarity index 100% rename from images/indicator2.gif rename to code/web/images/indicator2.gif diff --git a/images/indicator_small.gif b/code/web/images/indicator_small.gif similarity index 100% rename from images/indicator_small.gif rename to code/web/images/indicator_small.gif diff --git a/images/information.gif b/code/web/images/information.gif similarity index 100% rename from images/information.gif rename to code/web/images/information.gif diff --git a/images/install_logo.gif b/code/web/images/install_logo.gif similarity index 100% rename from images/install_logo.gif rename to code/web/images/install_logo.gif diff --git a/images/interview.gif b/code/web/images/interview.gif similarity index 100% rename from images/interview.gif rename to code/web/images/interview.gif diff --git a/images/job_orders.gif b/code/web/images/job_orders.gif similarity index 100% rename from images/job_orders.gif rename to code/web/images/job_orders.gif diff --git a/images/joborder.gif b/code/web/images/joborder.gif similarity index 100% rename from images/joborder.gif rename to code/web/images/joborder.gif diff --git a/images/key.png b/code/web/images/key.png similarity index 100% rename from images/key.png rename to code/web/images/key.png diff --git a/images/large_error.gif b/code/web/images/large_error.gif similarity index 100% rename from images/large_error.gif rename to code/web/images/large_error.gif diff --git a/images/lightblue_gradient.jpg b/code/web/images/lightblue_gradient.jpg similarity index 100% rename from images/lightblue_gradient.jpg rename to code/web/images/lightblue_gradient.jpg diff --git a/images/lightblue_gradient_15.jpg b/code/web/images/lightblue_gradient_15.jpg similarity index 100% rename from images/lightblue_gradient_15.jpg rename to code/web/images/lightblue_gradient_15.jpg diff --git a/images/loading.gif b/code/web/images/loading.gif similarity index 100% rename from images/loading.gif rename to code/web/images/loading.gif diff --git a/images/login2.jpg b/code/web/images/login2.jpg similarity index 100% rename from images/login2.jpg rename to code/web/images/login2.jpg diff --git a/images/maskBG.gif b/code/web/images/maskBG.gif similarity index 100% rename from images/maskBG.gif rename to code/web/images/maskBG.gif diff --git a/images/massImport.jpg b/code/web/images/massImport.jpg similarity index 100% rename from images/massImport.jpg rename to code/web/images/massImport.jpg diff --git a/images/massResumeImport.jpg b/code/web/images/massResumeImport.jpg similarity index 100% rename from images/massResumeImport.jpg rename to code/web/images/massResumeImport.jpg diff --git a/images/meeting.gif b/code/web/images/meeting.gif similarity index 100% rename from images/meeting.gif rename to code/web/images/meeting.gif diff --git a/images/moveUp-o.gif b/code/web/images/moveUp-o.gif similarity index 100% rename from images/moveUp-o.gif rename to code/web/images/moveUp-o.gif diff --git a/images/moveUp.gif b/code/web/images/moveUp.gif similarity index 100% rename from images/moveUp.gif rename to code/web/images/moveUp.gif diff --git a/images/mru/blank.gif b/code/web/images/mru/blank.gif similarity index 100% rename from images/mru/blank.gif rename to code/web/images/mru/blank.gif diff --git a/images/mru/candidate.gif b/code/web/images/mru/candidate.gif similarity index 100% rename from images/mru/candidate.gif rename to code/web/images/mru/candidate.gif diff --git a/images/mru/company.gif b/code/web/images/mru/company.gif similarity index 100% rename from images/mru/company.gif rename to code/web/images/mru/company.gif diff --git a/images/mru/contact.gif b/code/web/images/mru/contact.gif similarity index 100% rename from images/mru/contact.gif rename to code/web/images/mru/contact.gif diff --git a/images/mru/job_order.gif b/code/web/images/mru/job_order.gif similarity index 100% rename from images/mru/job_order.gif rename to code/web/images/mru/job_order.gif diff --git a/images/mru_background.gif b/code/web/images/mru_background.gif similarity index 100% rename from images/mru_background.gif rename to code/web/images/mru_background.gif diff --git a/images/mycompany.gif b/code/web/images/mycompany.gif similarity index 100% rename from images/mycompany.gif rename to code/web/images/mycompany.gif diff --git a/images/mycompany_small.gif b/code/web/images/mycompany_small.gif similarity index 100% rename from images/mycompany_small.gif rename to code/web/images/mycompany_small.gif diff --git a/images/new_activity_inline.gif b/code/web/images/new_activity_inline.gif similarity index 100% rename from images/new_activity_inline.gif rename to code/web/images/new_activity_inline.gif diff --git a/images/new_browser_inline.gif b/code/web/images/new_browser_inline.gif similarity index 100% rename from images/new_browser_inline.gif rename to code/web/images/new_browser_inline.gif diff --git a/images/new_window.gif b/code/web/images/new_window.gif similarity index 100% rename from images/new_window.gif rename to code/web/images/new_window.gif diff --git a/images/next.gif b/code/web/images/next.gif similarity index 100% rename from images/next.gif rename to code/web/images/next.gif diff --git a/images/noDataByDisability.png b/code/web/images/noDataByDisability.png similarity index 100% rename from images/noDataByDisability.png rename to code/web/images/noDataByDisability.png diff --git a/images/noDataByGender.png b/code/web/images/noDataByGender.png similarity index 100% rename from images/noDataByGender.png rename to code/web/images/noDataByGender.png diff --git a/images/nodata/activitiesTop.jpg b/code/web/images/nodata/activitiesTop.jpg similarity index 100% rename from images/nodata/activitiesTop.jpg rename to code/web/images/nodata/activitiesTop.jpg diff --git a/images/nodata/addMassImport-o.jpg b/code/web/images/nodata/addMassImport-o.jpg similarity index 100% rename from images/nodata/addMassImport-o.jpg rename to code/web/images/nodata/addMassImport-o.jpg diff --git a/images/nodata/addMassImport.jpg b/code/web/images/nodata/addMassImport.jpg similarity index 100% rename from images/nodata/addMassImport.jpg rename to code/web/images/nodata/addMassImport.jpg diff --git a/images/nodata/candidateButton-o.jpg b/code/web/images/nodata/candidateButton-o.jpg similarity index 100% rename from images/nodata/candidateButton-o.jpg rename to code/web/images/nodata/candidateButton-o.jpg diff --git a/images/nodata/candidatesButton.jpg b/code/web/images/nodata/candidatesButton.jpg similarity index 100% rename from images/nodata/candidatesButton.jpg rename to code/web/images/nodata/candidatesButton.jpg diff --git a/images/nodata/candidatesTop.jpg b/code/web/images/nodata/candidatesTop.jpg similarity index 100% rename from images/nodata/candidatesTop.jpg rename to code/web/images/nodata/candidatesTop.jpg diff --git a/images/nodata/companiesTop.jpg b/code/web/images/nodata/companiesTop.jpg similarity index 100% rename from images/nodata/companiesTop.jpg rename to code/web/images/nodata/companiesTop.jpg diff --git a/images/nodata/contactsButton-o.jpg b/code/web/images/nodata/contactsButton-o.jpg similarity index 100% rename from images/nodata/contactsButton-o.jpg rename to code/web/images/nodata/contactsButton-o.jpg diff --git a/images/nodata/contactsButton.jpg b/code/web/images/nodata/contactsButton.jpg similarity index 100% rename from images/nodata/contactsButton.jpg rename to code/web/images/nodata/contactsButton.jpg diff --git a/images/nodata/contactsTop.jpg b/code/web/images/nodata/contactsTop.jpg similarity index 100% rename from images/nodata/contactsTop.jpg rename to code/web/images/nodata/contactsTop.jpg diff --git a/images/nodata/dashboardNoCandidates.jpg b/code/web/images/nodata/dashboardNoCandidates.jpg similarity index 100% rename from images/nodata/dashboardNoCandidates.jpg rename to code/web/images/nodata/dashboardNoCandidates.jpg diff --git a/images/nodata/dashboardNoCandidatesWhite.jpg b/code/web/images/nodata/dashboardNoCandidatesWhite.jpg similarity index 100% rename from images/nodata/dashboardNoCandidatesWhite.jpg rename to code/web/images/nodata/dashboardNoCandidatesWhite.jpg diff --git a/images/nodata/dashboardNoHires.jpg b/code/web/images/nodata/dashboardNoHires.jpg similarity index 100% rename from images/nodata/dashboardNoHires.jpg rename to code/web/images/nodata/dashboardNoHires.jpg diff --git a/images/nodata/dashboardNoHiresWhite.jpg b/code/web/images/nodata/dashboardNoHiresWhite.jpg similarity index 100% rename from images/nodata/dashboardNoHiresWhite.jpg rename to code/web/images/nodata/dashboardNoHiresWhite.jpg diff --git a/images/nodata/jobOrdersButton-o.jpg b/code/web/images/nodata/jobOrdersButton-o.jpg similarity index 100% rename from images/nodata/jobOrdersButton-o.jpg rename to code/web/images/nodata/jobOrdersButton-o.jpg diff --git a/images/nodata/jobOrdersButton.jpg b/code/web/images/nodata/jobOrdersButton.jpg similarity index 100% rename from images/nodata/jobOrdersButton.jpg rename to code/web/images/nodata/jobOrdersButton.jpg diff --git a/images/nodata/jobOrdersTop.jpg b/code/web/images/nodata/jobOrdersTop.jpg similarity index 100% rename from images/nodata/jobOrdersTop.jpg rename to code/web/images/nodata/jobOrdersTop.jpg diff --git a/images/nodata/joborders.jpg b/code/web/images/nodata/joborders.jpg similarity index 100% rename from images/nodata/joborders.jpg rename to code/web/images/nodata/joborders.jpg diff --git a/images/nodata/listsTop.jpg b/code/web/images/nodata/listsTop.jpg similarity index 100% rename from images/nodata/listsTop.jpg rename to code/web/images/nodata/listsTop.jpg diff --git a/images/nodata/noDataTable.jpg b/code/web/images/nodata/noDataTable.jpg similarity index 100% rename from images/nodata/noDataTable.jpg rename to code/web/images/nodata/noDataTable.jpg diff --git a/images/nosort.gif b/code/web/images/nosort.gif similarity index 100% rename from images/nosort.gif rename to code/web/images/nosort.gif diff --git a/images/orange_gradient.jpg b/code/web/images/orange_gradient.jpg similarity index 100% rename from images/orange_gradient.jpg rename to code/web/images/orange_gradient.jpg diff --git a/images/other.gif b/code/web/images/other.gif similarity index 100% rename from images/other.gif rename to code/web/images/other.gif diff --git a/images/package_editors.gif b/code/web/images/package_editors.gif similarity index 100% rename from images/package_editors.gif rename to code/web/images/package_editors.gif diff --git a/images/paperclip.gif b/code/web/images/paperclip.gif similarity index 100% rename from images/paperclip.gif rename to code/web/images/paperclip.gif diff --git a/images/paperclip_add.gif b/code/web/images/paperclip_add.gif similarity index 100% rename from images/paperclip_add.gif rename to code/web/images/paperclip_add.gif diff --git a/images/parser/ad.gif b/code/web/images/parser/ad.gif similarity index 100% rename from images/parser/ad.gif rename to code/web/images/parser/ad.gif diff --git a/images/parser/arrow.gif b/code/web/images/parser/arrow.gif similarity index 100% rename from images/parser/arrow.gif rename to code/web/images/parser/arrow.gif diff --git a/images/parser/attachment.gif b/code/web/images/parser/attachment.gif similarity index 100% rename from images/parser/attachment.gif rename to code/web/images/parser/attachment.gif diff --git a/images/parser/document.gif b/code/web/images/parser/document.gif similarity index 100% rename from images/parser/document.gif rename to code/web/images/parser/document.gif diff --git a/images/parser/import.gif b/code/web/images/parser/import.gif similarity index 100% rename from images/parser/import.gif rename to code/web/images/parser/import.gif diff --git a/images/parser/manual.gif b/code/web/images/parser/manual.gif similarity index 100% rename from images/parser/manual.gif rename to code/web/images/parser/manual.gif diff --git a/images/parser/new.gif b/code/web/images/parser/new.gif similarity index 100% rename from images/parser/new.gif rename to code/web/images/parser/new.gif diff --git a/images/parser/or.gif b/code/web/images/parser/or.gif similarity index 100% rename from images/parser/or.gif rename to code/web/images/parser/or.gif diff --git a/images/parser/paste.gif b/code/web/images/parser/paste.gif similarity index 100% rename from images/parser/paste.gif rename to code/web/images/parser/paste.gif diff --git a/images/parser/statusBar.jpg b/code/web/images/parser/statusBar.jpg similarity index 100% rename from images/parser/statusBar.jpg rename to code/web/images/parser/statusBar.jpg diff --git a/images/parser/statusBottomLeft.jpg b/code/web/images/parser/statusBottomLeft.jpg similarity index 100% rename from images/parser/statusBottomLeft.jpg rename to code/web/images/parser/statusBottomLeft.jpg diff --git a/images/parser/statusBottomRight.jpg b/code/web/images/parser/statusBottomRight.jpg similarity index 100% rename from images/parser/statusBottomRight.jpg rename to code/web/images/parser/statusBottomRight.jpg diff --git a/images/parser/title.gif b/code/web/images/parser/title.gif similarity index 100% rename from images/parser/title.gif rename to code/web/images/parser/title.gif diff --git a/images/parser/transfer.gif b/code/web/images/parser/transfer.gif similarity index 100% rename from images/parser/transfer.gif rename to code/web/images/parser/transfer.gif diff --git a/images/parser/transfer_grey.gif b/code/web/images/parser/transfer_grey.gif similarity index 100% rename from images/parser/transfer_grey.gif rename to code/web/images/parser/transfer_grey.gif diff --git a/images/personal.gif b/code/web/images/personal.gif similarity index 100% rename from images/personal.gif rename to code/web/images/personal.gif diff --git a/images/phone.gif b/code/web/images/phone.gif similarity index 100% rename from images/phone.gif rename to code/web/images/phone.gif diff --git a/images/popup.gif b/code/web/images/popup.gif similarity index 100% rename from images/popup.gif rename to code/web/images/popup.gif diff --git a/images/poweredByResfly.jpg b/code/web/images/poweredByResfly.jpg similarity index 100% rename from images/poweredByResfly.jpg rename to code/web/images/poweredByResfly.jpg diff --git a/images/prev.gif b/code/web/images/prev.gif similarity index 100% rename from images/prev.gif rename to code/web/images/prev.gif diff --git a/images/profButton-o.jpg b/code/web/images/profButton-o.jpg similarity index 100% rename from images/profButton-o.jpg rename to code/web/images/profButton-o.jpg diff --git a/images/profButton.jpg b/code/web/images/profButton.jpg similarity index 100% rename from images/profButton.jpg rename to code/web/images/profButton.jpg diff --git a/images/professionalLeft.jpg b/code/web/images/professionalLeft.jpg similarity index 100% rename from images/professionalLeft.jpg rename to code/web/images/professionalLeft.jpg diff --git a/images/professional_icon.gif b/code/web/images/professional_icon.gif similarity index 100% rename from images/professional_icon.gif rename to code/web/images/professional_icon.gif diff --git a/images/public.gif b/code/web/images/public.gif similarity index 100% rename from images/public.gif rename to code/web/images/public.gif diff --git a/images/rcf_logo.gif b/code/web/images/rcf_logo.gif similarity index 100% rename from images/rcf_logo.gif rename to code/web/images/rcf_logo.gif diff --git a/images/recruitingEasy.jpg b/code/web/images/recruitingEasy.jpg similarity index 100% rename from images/recruitingEasy.jpg rename to code/web/images/recruitingEasy.jpg diff --git a/images/red_gradient.jpg b/code/web/images/red_gradient.jpg similarity index 100% rename from images/red_gradient.jpg rename to code/web/images/red_gradient.jpg diff --git a/images/report1small.jpg b/code/web/images/report1small.jpg similarity index 100% rename from images/report1small.jpg rename to code/web/images/report1small.jpg diff --git a/images/reports.gif b/code/web/images/reports.gif similarity index 100% rename from images/reports.gif rename to code/web/images/reports.gif diff --git a/images/reportsSmall.gif b/code/web/images/reportsSmall.gif similarity index 100% rename from images/reportsSmall.gif rename to code/web/images/reportsSmall.gif diff --git a/images/resume_preview_inline.gif b/code/web/images/resume_preview_inline.gif similarity index 100% rename from images/resume_preview_inline.gif rename to code/web/images/resume_preview_inline.gif diff --git a/images/scrollBottom.jpg b/code/web/images/scrollBottom.jpg similarity index 100% rename from images/scrollBottom.jpg rename to code/web/images/scrollBottom.jpg diff --git a/images/scrollTop.jpg b/code/web/images/scrollTop.jpg similarity index 100% rename from images/scrollTop.jpg rename to code/web/images/scrollTop.jpg diff --git a/images/search.gif b/code/web/images/search.gif similarity index 100% rename from images/search.gif rename to code/web/images/search.gif diff --git a/images/serverSystem.jpg b/code/web/images/serverSystem.jpg similarity index 100% rename from images/serverSystem.jpg rename to code/web/images/serverSystem.jpg diff --git a/images/settings.gif b/code/web/images/settings.gif similarity index 100% rename from images/settings.gif rename to code/web/images/settings.gif diff --git a/images/settingsAdminProf.jpg b/code/web/images/settingsAdminProf.jpg similarity index 100% rename from images/settingsAdminProf.jpg rename to code/web/images/settingsAdminProf.jpg diff --git a/images/signUp.jpg b/code/web/images/signUp.jpg similarity index 100% rename from images/signUp.jpg rename to code/web/images/signUp.jpg diff --git a/images/sort_table_bg.gif b/code/web/images/sort_table_bg.gif similarity index 100% rename from images/sort_table_bg.gif rename to code/web/images/sort_table_bg.gif diff --git a/images/stars/star0.gif b/code/web/images/stars/star0.gif similarity index 100% rename from images/stars/star0.gif rename to code/web/images/stars/star0.gif diff --git a/images/stars/star1.gif b/code/web/images/stars/star1.gif similarity index 100% rename from images/stars/star1.gif rename to code/web/images/stars/star1.gif diff --git a/images/stars/star2.gif b/code/web/images/stars/star2.gif similarity index 100% rename from images/stars/star2.gif rename to code/web/images/stars/star2.gif diff --git a/images/stars/star3.gif b/code/web/images/stars/star3.gif similarity index 100% rename from images/stars/star3.gif rename to code/web/images/stars/star3.gif diff --git a/images/stars/star4.gif b/code/web/images/stars/star4.gif similarity index 100% rename from images/stars/star4.gif rename to code/web/images/stars/star4.gif diff --git a/images/stars/star5.gif b/code/web/images/stars/star5.gif similarity index 100% rename from images/stars/star5.gif rename to code/web/images/stars/star5.gif diff --git a/images/stars/starneg1.gif b/code/web/images/stars/starneg1.gif similarity index 100% rename from images/stars/starneg1.gif rename to code/web/images/stars/starneg1.gif diff --git a/images/stars/starneg2.gif b/code/web/images/stars/starneg2.gif similarity index 100% rename from images/stars/starneg2.gif rename to code/web/images/stars/starneg2.gif diff --git a/images/stars/starneg3.gif b/code/web/images/stars/starneg3.gif similarity index 100% rename from images/stars/starneg3.gif rename to code/web/images/stars/starneg3.gif diff --git a/images/stars/starneg4.gif b/code/web/images/stars/starneg4.gif similarity index 100% rename from images/stars/starneg4.gif rename to code/web/images/stars/starneg4.gif diff --git a/images/stars/starneg5.gif b/code/web/images/stars/starneg5.gif similarity index 100% rename from images/stars/starneg5.gif rename to code/web/images/stars/starneg5.gif diff --git a/images/stars/starneg6.gif b/code/web/images/stars/starneg6.gif similarity index 100% rename from images/stars/starneg6.gif rename to code/web/images/stars/starneg6.gif diff --git a/images/stars/starsave.gif b/code/web/images/stars/starsave.gif similarity index 100% rename from images/stars/starsave.gif rename to code/web/images/stars/starsave.gif diff --git a/images/submit.gif b/code/web/images/submit.gif similarity index 100% rename from images/submit.gif rename to code/web/images/submit.gif diff --git a/images/superblogo.gif b/code/web/images/superblogo.gif similarity index 100% rename from images/superblogo.gif rename to code/web/images/superblogo.gif diff --git a/images/support.gif b/code/web/images/support.gif similarity index 100% rename from images/support.gif rename to code/web/images/support.gif diff --git a/images/tab1.png b/code/web/images/tab1.png similarity index 100% rename from images/tab1.png rename to code/web/images/tab1.png diff --git a/images/tab2.png b/code/web/images/tab2.png similarity index 100% rename from images/tab2.png rename to code/web/images/tab2.png diff --git a/images/tab3.png b/code/web/images/tab3.png similarity index 100% rename from images/tab3.png rename to code/web/images/tab3.png diff --git a/images/tab_add.gif b/code/web/images/tab_add.gif similarity index 100% rename from images/tab_add.gif rename to code/web/images/tab_add.gif diff --git a/images/tablebg.gif b/code/web/images/tablebg.gif similarity index 100% rename from images/tablebg.gif rename to code/web/images/tablebg.gif diff --git a/images/tabs/active.jpg b/code/web/images/tabs/active.jpg similarity index 100% rename from images/tabs/active.jpg rename to code/web/images/tabs/active.jpg diff --git a/images/tabs/inactive.jpg b/code/web/images/tabs/inactive.jpg similarity index 100% rename from images/tabs/inactive.jpg rename to code/web/images/tabs/inactive.jpg diff --git a/images/tabs/small_account.jpg b/code/web/images/tabs/small_account.jpg similarity index 100% rename from images/tabs/small_account.jpg rename to code/web/images/tabs/small_account.jpg diff --git a/images/tabs/small_logout.jpg b/code/web/images/tabs/small_logout.jpg similarity index 100% rename from images/tabs/small_logout.jpg rename to code/web/images/tabs/small_logout.jpg diff --git a/images/tabs/small_upgrade.jpg b/code/web/images/tabs/small_upgrade.jpg similarity index 100% rename from images/tabs/small_upgrade.jpg rename to code/web/images/tabs/small_upgrade.jpg diff --git a/images/tabs/subtab_active.jpg b/code/web/images/tabs/subtab_active.jpg similarity index 100% rename from images/tabs/subtab_active.jpg rename to code/web/images/tabs/subtab_active.jpg diff --git a/images/tabs/subtab_inactive.jpg b/code/web/images/tabs/subtab_inactive.jpg similarity index 100% rename from images/tabs/subtab_inactive.jpg rename to code/web/images/tabs/subtab_inactive.jpg diff --git a/images/tests.gif b/code/web/images/tests.gif similarity index 100% rename from images/tests.gif rename to code/web/images/tests.gif diff --git a/images/tests_inline.gif b/code/web/images/tests_inline.gif similarity index 100% rename from images/tests_inline.gif rename to code/web/images/tests_inline.gif diff --git a/images/tiled2c.gif b/code/web/images/tiled2c.gif similarity index 100% rename from images/tiled2c.gif rename to code/web/images/tiled2c.gif diff --git a/images/toolbarImport.jpg b/code/web/images/toolbarImport.jpg similarity index 100% rename from images/toolbarImport.jpg rename to code/web/images/toolbarImport.jpg diff --git a/images/toolbarPreview.jpg b/code/web/images/toolbarPreview.jpg similarity index 100% rename from images/toolbarPreview.jpg rename to code/web/images/toolbarPreview.jpg diff --git a/images/unsubmit.gif b/code/web/images/unsubmit.gif similarity index 100% rename from images/unsubmit.gif rename to code/web/images/unsubmit.gif diff --git a/images/upward.gif b/code/web/images/upward.gif similarity index 100% rename from images/upward.gif rename to code/web/images/upward.gif diff --git a/images/vcard.gif b/code/web/images/vcard.gif similarity index 100% rename from images/vcard.gif rename to code/web/images/vcard.gif diff --git a/images/vip_arrow.gif b/code/web/images/vip_arrow.gif similarity index 100% rename from images/vip_arrow.gif rename to code/web/images/vip_arrow.gif diff --git a/images/vip_banner.gif b/code/web/images/vip_banner.gif similarity index 100% rename from images/vip_banner.gif rename to code/web/images/vip_banner.gif diff --git a/images/wf_error.gif b/code/web/images/wf_error.gif similarity index 100% rename from images/wf_error.gif rename to code/web/images/wf_error.gif diff --git a/images/wizard/bottomLeft.jpg b/code/web/images/wizard/bottomLeft.jpg similarity index 100% rename from images/wizard/bottomLeft.jpg rename to code/web/images/wizard/bottomLeft.jpg diff --git a/images/wizard/bottomRight.jpg b/code/web/images/wizard/bottomRight.jpg similarity index 100% rename from images/wizard/bottomRight.jpg rename to code/web/images/wizard/bottomRight.jpg diff --git a/images/wizard/massImport.jpg b/code/web/images/wizard/massImport.jpg similarity index 100% rename from images/wizard/massImport.jpg rename to code/web/images/wizard/massImport.jpg diff --git a/images/wizard/opaqueLogo.jpg b/code/web/images/wizard/opaqueLogo.jpg similarity index 100% rename from images/wizard/opaqueLogo.jpg rename to code/web/images/wizard/opaqueLogo.jpg diff --git a/images/wizard/professional.jpg b/code/web/images/wizard/professional.jpg similarity index 100% rename from images/wizard/professional.jpg rename to code/web/images/wizard/professional.jpg diff --git a/images/wizard/sectionTopLeft.jpg b/code/web/images/wizard/sectionTopLeft.jpg similarity index 100% rename from images/wizard/sectionTopLeft.jpg rename to code/web/images/wizard/sectionTopLeft.jpg diff --git a/images/wizard/sectionTopRight.jpg b/code/web/images/wizard/sectionTopRight.jpg similarity index 100% rename from images/wizard/sectionTopRight.jpg rename to code/web/images/wizard/sectionTopRight.jpg diff --git a/images/wizard/topLeft.jpg b/code/web/images/wizard/topLeft.jpg similarity index 100% rename from images/wizard/topLeft.jpg rename to code/web/images/wizard/topLeft.jpg diff --git a/images/wizard/topRight.jpg b/code/web/images/wizard/topRight.jpg similarity index 100% rename from images/wizard/topRight.jpg rename to code/web/images/wizard/topRight.jpg diff --git a/js/activity.js b/code/web/js/activity.js similarity index 100% rename from js/activity.js rename to code/web/js/activity.js diff --git a/modules/activity/validator.js b/code/web/js/activity/validator.js similarity index 100% rename from modules/activity/validator.js rename to code/web/js/activity/validator.js diff --git a/js/addressParser.js b/code/web/js/addressParser.js similarity index 100% rename from js/addressParser.js rename to code/web/js/addressParser.js diff --git a/js/attachment.js b/code/web/js/attachment.js similarity index 100% rename from js/attachment.js rename to code/web/js/attachment.js diff --git a/js/backup.js b/code/web/js/backup.js similarity index 100% rename from js/backup.js rename to code/web/js/backup.js diff --git a/modules/calendar/Calendar.js b/code/web/js/calendar/Calendar.js similarity index 100% rename from modules/calendar/Calendar.js rename to code/web/js/calendar/Calendar.js diff --git a/modules/calendar/CalendarUI.js b/code/web/js/calendar/CalendarUI.js similarity index 100% rename from modules/calendar/CalendarUI.js rename to code/web/js/calendar/CalendarUI.js diff --git a/modules/calendar/validator.js b/code/web/js/calendar/validator.js similarity index 100% rename from modules/calendar/validator.js rename to code/web/js/calendar/validator.js diff --git a/js/calendarDateInput.js b/code/web/js/calendarDateInput.js similarity index 100% rename from js/calendarDateInput.js rename to code/web/js/calendarDateInput.js diff --git a/js/candidate.js b/code/web/js/candidate.js similarity index 100% rename from js/candidate.js rename to code/web/js/candidate.js diff --git a/js/candidateParser.js b/code/web/js/candidateParser.js similarity index 100% rename from js/candidateParser.js rename to code/web/js/candidateParser.js diff --git a/modules/candidates/activityvalidator.js b/code/web/js/candidates/activityvalidator.js similarity index 100% rename from modules/candidates/activityvalidator.js rename to code/web/js/candidates/activityvalidator.js diff --git a/modules/candidates/validator.js b/code/web/js/candidates/validator.js similarity index 100% rename from modules/candidates/validator.js rename to code/web/js/candidates/validator.js diff --git a/js/careerPortalApply.js b/code/web/js/careerPortalApply.js similarity index 100% rename from js/careerPortalApply.js rename to code/web/js/careerPortalApply.js diff --git a/js/careerportal.js b/code/web/js/careerportal.js similarity index 100% rename from js/careerportal.js rename to code/web/js/careerportal.js diff --git a/js/careersPage.js b/code/web/js/careersPage.js similarity index 97% rename from js/careersPage.js rename to code/web/js/careersPage.js index 58cb2d01a..c0c8f60d8 100755 --- a/js/careersPage.js +++ b/code/web/js/careersPage.js @@ -1,48 +1,48 @@ -// JavaScript Document -- CATS Careers Page -var returnToMainOn = new Image(130, 25); -returnToMainOn.src = 'images/careers_return-o.gif'; -var returnToMainOff = new Image(130, 25); -returnToMainOff.src = 'images/careers_return.gif'; -var showAllJobsOn = new Image(130, 25); -showAllJobsOn.src = 'images/careers_show-o.gif'; -var showAllJobsOff = new Image(130, 25); -showAllJobsOff.src = 'images/careers_show.gif'; -var searchJobsOn = new Image(130, 25); -searchJobsOn.src = 'images/careers_search-o.gif'; -var searchJobsOff = new Image(130, 25); -searchJobsOff.src = 'images/careers_search.gif'; -var rssFeedOn = new Image(130, 25); -rssFeedOn.src = 'images/careers_rss-o.gif'; -var rssFeedOff = new Image(130, 25); -rssFeedOff.src = 'images/careers_rss.gif'; -var applyToPositionOn = new Image(130, 25); -applyToPositionOn.src = 'images/careers_apply-o.gif'; -var applyToPositionOff = new Image(130, 25); -applyToPositionOff.src = 'images/careers_apply.gif'; -var shareWithFriendOn = new Image(130, 25); -shareWithFriendOn.src = 'images/careers_share-o.gif'; -var shareWithFriendOff = new Image(130, 25); -shareWithFriendOff.src = 'images/careers_share.gif'; -var submitApplicationNowOn = new Image(195, 25); -submitApplicationNowOn.src = 'images/careers_submit-o.gif'; -var submitApplicationNowOff = new Image(195, 25); -submitApplicationNowOff.src = 'images/careers_submit.gif'; - -function buttonMouseOver(txt, tf) -{ -var newImage; -var obj = document.getElementById(txt); -var helpObj = document.getElementById('buttonHelpText'); -if (tf) newImage = eval(txt + 'On'); -else newImage = eval(txt + 'Off'); -if (obj) -{ -obj.src = newImage.src; -if (obj = document.getElementById(txt + 'Text')) -{ -if (tf) helpObj.innerHTML = obj.innerHTML; -else helpObj.innerHTML = ' '; -} -} -return false; +// JavaScript Document -- CATS Careers Page +var returnToMainOn = new Image(130, 25); +returnToMainOn.src = 'images/careers_return-o.gif'; +var returnToMainOff = new Image(130, 25); +returnToMainOff.src = 'images/careers_return.gif'; +var showAllJobsOn = new Image(130, 25); +showAllJobsOn.src = 'images/careers_show-o.gif'; +var showAllJobsOff = new Image(130, 25); +showAllJobsOff.src = 'images/careers_show.gif'; +var searchJobsOn = new Image(130, 25); +searchJobsOn.src = 'images/careers_search-o.gif'; +var searchJobsOff = new Image(130, 25); +searchJobsOff.src = 'images/careers_search.gif'; +var rssFeedOn = new Image(130, 25); +rssFeedOn.src = 'images/careers_rss-o.gif'; +var rssFeedOff = new Image(130, 25); +rssFeedOff.src = 'images/careers_rss.gif'; +var applyToPositionOn = new Image(130, 25); +applyToPositionOn.src = 'images/careers_apply-o.gif'; +var applyToPositionOff = new Image(130, 25); +applyToPositionOff.src = 'images/careers_apply.gif'; +var shareWithFriendOn = new Image(130, 25); +shareWithFriendOn.src = 'images/careers_share-o.gif'; +var shareWithFriendOff = new Image(130, 25); +shareWithFriendOff.src = 'images/careers_share.gif'; +var submitApplicationNowOn = new Image(195, 25); +submitApplicationNowOn.src = 'images/careers_submit-o.gif'; +var submitApplicationNowOff = new Image(195, 25); +submitApplicationNowOff.src = 'images/careers_submit.gif'; + +function buttonMouseOver(txt, tf) +{ +var newImage; +var obj = document.getElementById(txt); +var helpObj = document.getElementById('buttonHelpText'); +if (tf) newImage = eval(txt + 'On'); +else newImage = eval(txt + 'Off'); +if (obj) +{ +obj.src = newImage.src; +if (obj = document.getElementById(txt + 'Text')) +{ +if (tf) helpObj.innerHTML = obj.innerHTML; +else helpObj.innerHTML = ' '; +} +} +return false; } \ No newline at end of file diff --git a/modules/companies/validator.js b/code/web/js/companies/validator.js similarity index 100% rename from modules/companies/validator.js rename to code/web/js/companies/validator.js diff --git a/js/company.js b/code/web/js/company.js similarity index 100% rename from js/company.js rename to code/web/js/company.js diff --git a/js/contact.js b/code/web/js/contact.js similarity index 100% rename from js/contact.js rename to code/web/js/contact.js diff --git a/modules/contacts/validator.js b/code/web/js/contacts/validator.js similarity index 100% rename from modules/contacts/validator.js rename to code/web/js/contacts/validator.js diff --git a/js/dataGrid.js b/code/web/js/dataGrid.js similarity index 100% rename from js/dataGrid.js rename to code/web/js/dataGrid.js diff --git a/js/dataGridFilters.js b/code/web/js/dataGridFilters.js similarity index 100% rename from js/dataGridFilters.js rename to code/web/js/dataGridFilters.js diff --git a/js/doubleListEditor.js b/code/web/js/doubleListEditor.js similarity index 100% rename from js/doubleListEditor.js rename to code/web/js/doubleListEditor.js diff --git a/js/eeo.js b/code/web/js/eeo.js similarity index 100% rename from js/eeo.js rename to code/web/js/eeo.js diff --git a/js/emailHandler.js b/code/web/js/emailHandler.js similarity index 100% rename from js/emailHandler.js rename to code/web/js/emailHandler.js diff --git a/js/export.js b/code/web/js/export.js similarity index 100% rename from js/export.js rename to code/web/js/export.js diff --git a/js/highlightrows.js b/code/web/js/highlightrows.js similarity index 100% rename from js/highlightrows.js rename to code/web/js/highlightrows.js diff --git a/js/home.js b/code/web/js/home.js similarity index 100% rename from js/home.js rename to code/web/js/home.js diff --git a/modules/import/import.js b/code/web/js/import/import.js similarity index 100% rename from modules/import/import.js rename to code/web/js/import/import.js diff --git a/js/index.php b/code/web/js/index.php similarity index 100% rename from js/index.php rename to code/web/js/index.php diff --git a/js/install.js b/code/web/js/install.js similarity index 100% rename from js/install.js rename to code/web/js/install.js diff --git a/js/joborder.js b/code/web/js/joborder.js similarity index 100% rename from js/joborder.js rename to code/web/js/joborder.js diff --git a/modules/joborders/validator.js b/code/web/js/joborders/validator.js similarity index 100% rename from modules/joborders/validator.js rename to code/web/js/joborders/validator.js diff --git a/js/jquery-1.3.2.min.js b/code/web/js/jquery-1.3.2.min.js similarity index 100% rename from js/jquery-1.3.2.min.js rename to code/web/js/jquery-1.3.2.min.js diff --git a/js/lib.js b/code/web/js/lib.js similarity index 100% rename from js/lib.js rename to code/web/js/lib.js diff --git a/js/listEditor.js b/code/web/js/listEditor.js similarity index 100% rename from js/listEditor.js rename to code/web/js/listEditor.js diff --git a/js/lists.js b/code/web/js/lists.js similarity index 100% rename from js/lists.js rename to code/web/js/lists.js diff --git a/modules/login/validator.js b/code/web/js/login/validator.js similarity index 100% rename from modules/login/validator.js rename to code/web/js/login/validator.js diff --git a/js/massImport.js b/code/web/js/massImport.js similarity index 100% rename from js/massImport.js rename to code/web/js/massImport.js diff --git a/js/match.js b/code/web/js/match.js similarity index 100% rename from js/match.js rename to code/web/js/match.js diff --git a/js/pipeline.js b/code/web/js/pipeline.js similarity index 100% rename from js/pipeline.js rename to code/web/js/pipeline.js diff --git a/js/questionnaire.js b/code/web/js/questionnaire.js similarity index 100% rename from js/questionnaire.js rename to code/web/js/questionnaire.js diff --git a/js/quickAction.js b/code/web/js/quickAction.js similarity index 100% rename from js/quickAction.js rename to code/web/js/quickAction.js diff --git a/js/searchAdvanced.js b/code/web/js/searchAdvanced.js similarity index 100% rename from js/searchAdvanced.js rename to code/web/js/searchAdvanced.js diff --git a/js/searchSaved.js b/code/web/js/searchSaved.js similarity index 100% rename from js/searchSaved.js rename to code/web/js/searchSaved.js diff --git a/modules/settings/Settings.js b/code/web/js/settings/Settings.js similarity index 100% rename from modules/settings/Settings.js rename to code/web/js/settings/Settings.js diff --git a/modules/settings/validator.js b/code/web/js/settings/validator.js similarity index 100% rename from modules/settings/validator.js rename to code/web/js/settings/validator.js diff --git a/js/sorttable.js b/code/web/js/sorttable.js similarity index 100% rename from js/sorttable.js rename to code/web/js/sorttable.js diff --git a/js/submodal/close.gif b/code/web/js/submodal/close.gif similarity index 100% rename from js/submodal/close.gif rename to code/web/js/submodal/close.gif diff --git a/js/submodal/loading.html b/code/web/js/submodal/loading.html similarity index 79% rename from js/submodal/loading.html rename to code/web/js/submodal/loading.html index 5871fbce4..28ae5801f 100755 --- a/js/submodal/loading.html +++ b/code/web/js/submodal/loading.html @@ -4,7 +4,7 @@ Loading... - + diff --git a/js/submodal/subModal.js b/code/web/js/submodal/subModal.js similarity index 100% rename from js/submodal/subModal.js rename to code/web/js/submodal/subModal.js diff --git a/js/suggest.js b/code/web/js/suggest.js similarity index 100% rename from js/suggest.js rename to code/web/js/suggest.js diff --git a/js/sweetTitles.js b/code/web/js/sweetTitles.js similarity index 100% rename from js/sweetTitles.js rename to code/web/js/sweetTitles.js diff --git a/modules/tests/validator.js b/code/web/js/tests/validator.js similarity index 100% rename from modules/tests/validator.js rename to code/web/js/tests/validator.js diff --git a/modules/toolbar/toolbarlibForLegacy.js b/code/web/js/toolbar/toolbarlibForLegacy.js similarity index 100% rename from modules/toolbar/toolbarlibForLegacy.js rename to code/web/js/toolbar/toolbarlibForLegacy.js diff --git a/js/wizardIntro.js b/code/web/js/wizardIntro.js similarity index 100% rename from js/wizardIntro.js rename to code/web/js/wizardIntro.js diff --git a/modules/login/login.css b/code/web/login/login.css similarity index 98% rename from modules/login/login.css rename to code/web/login/login.css index bde9da055..3510a3781 100755 --- a/modules/login/login.css +++ b/code/web/login/login.css @@ -229,7 +229,7 @@ div.clear */ background-color: transparent !important; background-color: #333; - /* background-image\**\: url('images/maskBG.gif') !important; */ + /* background-image\**\: url('/images/maskBG.gif') !important; */ background-image: none; background-repeat: repeat; display: none; diff --git a/config.php b/config.php index efe6c2826..af548c095 100755 --- a/config.php +++ b/config.php @@ -138,7 +138,7 @@ define('INSERT_BOM_CSV_4', ''); /* Path to modules. */ -define('MODULES_PATH', './modules/'); +define('MODULES_PATH', LEGACY_ROOT . '/modules/'); /* Unique session name. The only reason you might want to modify this is * for multiple CATS installations on one server. A-Z, 0-9 only! */ diff --git a/constants.php b/constants.php index ceb743ee9..227e00767 100644 --- a/constants.php +++ b/constants.php @@ -26,7 +26,7 @@ * * $Id: constants.php 3785 2007-12-03 21:59:23Z brian $ */ - +global $coreModules; $coreModules = array( 'home' => '1', 'activity' => '2', diff --git a/docker/docker-compose-test.yml b/docker/docker-compose-test.yml index 79c72f209..5c83da072 100644 --- a/docker/docker-compose-test.yml +++ b/docker/docker-compose-test.yml @@ -23,9 +23,9 @@ services: image: busybox volumes: - ./mysite.template:/etc/nginx/conf.d/default.conf - - ../code:/var/www/ - - ../test/config.php:/var/www/public/config.php - - ../test/INSTALL_BLOCK:/var/www/public/INSTALL_BLOCK + - ..:/var/www/ + - ../test/config.php:/var/www/config.php + - ../test/INSTALL_BLOCK:/var/www/INSTALL_BLOCK command: "true" opencatsdb: diff --git a/docker/mysite.template b/docker/mysite.template index 92ffc952e..a40abacd3 100644 --- a/docker/mysite.template +++ b/docker/mysite.template @@ -5,7 +5,7 @@ server { listen 80; server_name opencats; - root /var/www/web; + root /var/www/code/web; error_log /var/log/nginx/symfony2.error.log; access_log /var/log/nginx/symfony2.access.log; @@ -38,7 +38,7 @@ server { listen 443; server_name opencats; - root /var/www/web; + root /var/www/code/web; #ssl on; #ssl_certificate /etc/ssl/certs/symfony2.crt; diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile index 95b04a162..7a88848d1 100644 --- a/docker/php/Dockerfile +++ b/docker/php/Dockerfile @@ -29,5 +29,7 @@ RUN dos2unix /opt/install-composer.sh && \ ENV DOCKERIZE_VERSION v0.2.0 RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \ && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz -RUN echo "date.timezone='UTC'" > /usr/local/etc/php/conf.d/timezone.ini +RUN echo "date.timezone='UTC'" > /usr/local/etc/php/conf.d/timezone.ini && \ + echo "realpath_cache_size = 4096k" >> /usr/local/etc/php/conf.d/cache.ini && \ + echo "realpath_cache_ttl = 7200" >> /usr/local/etc/php/conf.d/cache.ini WORKDIR /var/www diff --git a/index.php b/index.php index dd2ef158a..385de12f3 100644 --- a/index.php +++ b/index.php @@ -61,23 +61,23 @@ @$_SERVER['REMOTE_ADDR'] !== '::1' && substr(@$_SERVER['REMOTE_ADDR'], 0, 3) !== '10.') { - include_once('modules/asp/lib/ErrorHandler.php'); + include_once(LEGACY_ROOT . '/modules/asp/lib/ErrorHandler.php'); $errorHandler = new ErrorHandler(); } -include_once('./config.php'); -include_once('./constants.php'); -include_once('./lib/CommonErrors.php'); -include_once('./lib/CATSUtility.php'); -include_once('./lib/DatabaseConnection.php'); -include_once('./lib/Template.php'); -include_once('./lib/Users.php'); -include_once('./lib/MRU.php'); -include_once('./lib/Hooks.php'); -include_once('./lib/Session.php'); /* Depends: MRU, Users, DatabaseConnection. */ -include_once('./lib/UserInterface.php'); /* Depends: Template, Session. */ -include_once('./lib/ModuleUtility.php'); /* Depends: UserInterface */ -include_once('./lib/TemplateUtility.php'); /* Depends: ModuleUtility, Hooks */ +include_once(LEGACY_ROOT . '/config.php'); +include_once(LEGACY_ROOT . '/constants.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); +include_once(LEGACY_ROOT . '/lib/Template.php'); +include_once(LEGACY_ROOT . '/lib/Users.php'); +include_once(LEGACY_ROOT . '/lib/MRU.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/Session.php'); /* Depends: MRU, Users, DatabaseConnection. */ +include_once(LEGACY_ROOT . '/lib/UserInterface.php'); /* Depends: Template, Session. */ +include_once(LEGACY_ROOT . '/lib/ModuleUtility.php'); /* Depends: UserInterface */ +include_once(LEGACY_ROOT . '/lib/TemplateUtility.php'); /* Depends: ModuleUtility, Hooks */ /* Give the session a unique name to avoid conflicts and start the session. */ @@ -106,7 +106,7 @@ function stripslashes_deep($value) } if (get_magic_quotes_gpc()) { - include_once('./lib/ArrayUtility.php'); + include_once(LEGACY_ROOT . '/lib/ArrayUtility.php'); $_GET = array_map('stripslashes_deep', $_GET); $_POST = array_map('stripslashes_deep', $_POST); @@ -151,7 +151,7 @@ function stripslashes_deep($value) if (ModuleUtility::moduleExists("asp") && ModuleUtility::moduleExists("website")) { // FIXME: Can we optimize this a bit...? - include_once('modules/asp/lib/General.php'); + include_once(LEGACY_ROOT . '/modules/asp/lib/General.php'); if (!(isset($careerPage) && $careerPage) && !(isset($rssPage) && $rssPage) && diff --git a/installtest.php b/installtest.php index 6d94c7073..8ae3d6b72 100755 --- a/installtest.php +++ b/installtest.php @@ -29,9 +29,9 @@ // FIXME: Test config readable. -include_once('./config.php'); -include_once('./constants.php'); -include_once('./lib/InstallationTests.php'); +include_once(LEGACY_ROOT . '/config.php'); +include_once(LEGACY_ROOT . '/constants.php'); +include_once(LEGACY_ROOT . '/lib/InstallationTests.php'); define('REQUIRED_SCHEMA_VERSION', '1200'); @@ -45,7 +45,7 @@ CATS - Installation Test Script - + + diff --git a/lib/ActivityEntries.php b/lib/ActivityEntries.php index 5c342d624..24c8c5db0 100755 --- a/lib/ActivityEntries.php +++ b/lib/ActivityEntries.php @@ -41,17 +41,17 @@ /** * Candidates library. */ -include_once('./lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/Candidates.php'); /** * Contacts library. */ -include_once('./lib/Contacts.php'); +include_once(LEGACY_ROOT . '/lib/Contacts.php'); /** * Job Orders library. */ -include_once('./lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); /** diff --git a/lib/AddressParser.php b/lib/AddressParser.php index 944ccb52c..dab606023 100755 --- a/lib/AddressParser.php +++ b/lib/AddressParser.php @@ -38,12 +38,12 @@ /** * Aray Utility library. */ -include_once('./lib/ArrayUtility.php'); +include_once(LEGACY_ROOT . '/lib/ArrayUtility.php'); /** * Result Set Utility library. */ -include_once('./lib/ResultSetUtility.php'); +include_once(LEGACY_ROOT . '/lib/ResultSetUtility.php'); /** diff --git a/lib/Attachments.php b/lib/Attachments.php index f05ef9f8a..f7a90614a 100755 --- a/lib/Attachments.php +++ b/lib/Attachments.php @@ -31,10 +31,10 @@ */ -include_once('./lib/FileUtility.php'); -include_once('./lib/DocumentToText.php'); -include_once('./lib/DatabaseSearch.php'); -include_once('./lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseSearch.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); /** * Attachments Library diff --git a/lib/CATSUtility.php b/lib/CATSUtility.php index 2feb4ffe5..a853c495f 100755 --- a/lib/CATSUtility.php +++ b/lib/CATSUtility.php @@ -31,8 +31,8 @@ */ // FIXME: Why is this being reincluded here? -include_once('./config.php'); -include_once('./lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/config.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); /** * General Utility Library @@ -308,8 +308,8 @@ public static function getIndexName() { return 'index.php'; } - - $parts = explode('/', $_SERVER['PHP_SELF']); + $sections = explode('?', $_SERVER['REQUEST_URI']); + $parts = explode('/', $sections[0]); $index = end($parts); /* Handle ajax.php. */ diff --git a/lib/CBFUtility.php b/lib/CBFUtility.php index 63ce25aac..d69bf180a 100755 --- a/lib/CBFUtility.php +++ b/lib/CBFUtility.php @@ -1,5 +1,5 @@ assign('errorTitle', $errorTitle); $template->assign('errorMessage', $errorMessage); $template->assign('modal', $modal); - $template->display('./modules/home/FriendlyError.tpl'); + $template->display(LEGACY_ROOT . '/modules/home/FriendlyError.tpl'); die(); } diff --git a/lib/Companies.php b/lib/Companies.php index b95f17515..a34880a39 100755 --- a/lib/Companies.php +++ b/lib/Companies.php @@ -1,5 +1,5 @@ getSiteID(), $parameters, $misc); @@ -1585,7 +1585,7 @@ public function draw($noOverflow = false) } /* IE fix for floating dialog boxes not floating over controls like dropdown lists. */ - echo '', "\n"; + echo '', "\n"; /* Definition for the cell which appears to be showing when dragging a column into a new position (not resizing). */ echo ('' . "\n"); diff --git a/lib/DefaultQuestionnaires.php b/lib/DefaultQuestionnaires.php index e7a5af77d..c98dd66ea 100755 --- a/lib/DefaultQuestionnaires.php +++ b/lib/DefaultQuestionnaires.php @@ -27,7 +27,7 @@ * $Id: DefaultQuestionnaires.php 3713 2007-11-27 18:52:42Z andrew $ */ -include_once('./lib/Questionnaire.php'); +include_once(LEGACY_ROOT . '/lib/Questionnaire.php'); class DefaultQuestionnaireUtility { private $_defaultQuestionnaires; diff --git a/lib/Display.php b/lib/Display.php index 70b8551fc..6cea272db 100755 --- a/lib/Display.php +++ b/lib/Display.php @@ -30,7 +30,7 @@ * @version $Id: Display.php 3831 2007-12-11 23:14:32Z brian $ */ -include_once('./lib/Profile.php'); +include_once(LEGACY_ROOT . '/lib/Profile.php'); // Global variable defining profile stylesheet (to prevent double inclusion) $profileStylesheet = false; diff --git a/lib/DocumentToText.php b/lib/DocumentToText.php index 150e5a223..7410dfe7f 100755 --- a/lib/DocumentToText.php +++ b/lib/DocumentToText.php @@ -30,8 +30,8 @@ * @version $Id: DocumentToText.php 3587 2007-11-13 03:55:57Z will $ */ -include_once('./lib/SystemUtility.php'); -include_once('./lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/lib/SystemUtility.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); /** * Document to Text Conversion Library diff --git a/lib/EmailTemplates.php b/lib/EmailTemplates.php index 217c51fda..50a7846e3 100755 --- a/lib/EmailTemplates.php +++ b/lib/EmailTemplates.php @@ -30,8 +30,8 @@ * @version $Id: EmailTemplates.php 3694 2007-11-26 21:11:00Z brian $ */ -include_once('./lib/Mailer.php'); -include_once('./lib/Site.php'); +include_once(LEGACY_ROOT . '/lib/Mailer.php'); +include_once(LEGACY_ROOT . '/lib/Site.php'); /** * E-Mail Templates Library diff --git a/lib/Export.php b/lib/Export.php index f4f227cdd..cd96b1242 100755 --- a/lib/Export.php +++ b/lib/Export.php @@ -30,10 +30,10 @@ * @version $Id: Export.php 3813 2007-12-05 23:16:22Z brian $ */ -include_once('./lib/Candidates.php'); -include_once('./lib/Contacts.php'); -include_once('./lib/Companies.php'); -include_once('./lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/Contacts.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); /** * Data Export Utility Library diff --git a/lib/ExtraFields.php b/lib/ExtraFields.php index 0ed550084..33900a2c6 100755 --- a/lib/ExtraFields.php +++ b/lib/ExtraFields.php @@ -27,7 +27,7 @@ * $Id: ExtraFields.php 3767 2007-11-29 16:49:10Z brian $ */ -include_once('lib/Site.php'); +include_once(LEGACY_ROOT . '/lib/Site.php'); /** * Extra Fields Library diff --git a/lib/FileCompressor.php b/lib/FileCompressor.php index 3794bfde3..f8ce795c0 100755 --- a/lib/FileCompressor.php +++ b/lib/FileCompressor.php @@ -39,7 +39,7 @@ * @subpackage Library */ -include_once('./lib/HashUtility.php'); +include_once(LEGACY_ROOT . '/lib/HashUtility.php'); define('START_FILE_RECORD', 0x04034b50); define('START_DATA_DESCRIPTOR', 0x08074b50); @@ -980,7 +980,7 @@ public function __construct($filename) $this->_filename = $filename; } - private function getErrorMessage() + public function getErrorMessage() { return $this->_errorMessage; } diff --git a/lib/GraphGenerator.php b/lib/GraphGenerator.php index 32393ab43..7febba544 100755 --- a/lib/GraphGenerator.php +++ b/lib/GraphGenerator.php @@ -35,13 +35,13 @@ /* Is GD2 installed? */ if (function_exists('ImageCreateFromJpeg')) { - include_once('./lib/artichow/LinePlot.class.php'); - include_once('./lib/artichow/BarPlot.class.php'); - include_once('./lib/artichow/inc/Label.class.php'); - include_once('./lib/artichow/BarPlotPipeline.class.php'); - include_once('./lib/artichow/BarPlotDashboard.class.php'); - include_once('./lib/artichow/AntiSpam.class.php'); - include_once('./lib/artichow/Pie.class.php'); + include_once(LEGACY_ROOT . '/lib/artichow/LinePlot.class.php'); + include_once(LEGACY_ROOT . '/lib/artichow/BarPlot.class.php'); + include_once(LEGACY_ROOT . '/lib/artichow/inc/Label.class.php'); + include_once(LEGACY_ROOT . '/lib/artichow/BarPlotPipeline.class.php'); + include_once(LEGACY_ROOT . '/lib/artichow/BarPlotDashboard.class.php'); + include_once(LEGACY_ROOT . '/lib/artichow/AntiSpam.class.php'); + include_once(LEGACY_ROOT . '/lib/artichow/Pie.class.php'); } /** diff --git a/lib/Graphs.php b/lib/Graphs.php index f55300fb5..a087ffa91 100755 --- a/lib/Graphs.php +++ b/lib/Graphs.php @@ -33,7 +33,7 @@ /** * Statistics library. */ -include_once('./lib/Statistics.php'); +include_once(LEGACY_ROOT . '/lib/Statistics.php'); /** * Graph Interface Library diff --git a/lib/InstallationTests.php b/lib/InstallationTests.php index 06654de66..5b86bd2f0 100755 --- a/lib/InstallationTests.php +++ b/lib/InstallationTests.php @@ -32,7 +32,7 @@ //FIXME: Test for zlib! -include_once('./lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); /** * Installation Tests Library @@ -540,7 +540,7 @@ public static function checkAntiword() return false; } - include_once('lib/DocumentToText.php'); + include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); $documentToText = new DocumentToText(); if ($documentToText->convert('modules/install/testdocs/test.doc', DOCUMENT_TYPE_DOC)) { @@ -590,7 +590,7 @@ public static function checkPdftotext() return false; } - include_once('lib/DocumentToText.php'); + include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); $documentToText = new DocumentToText(); if ($documentToText->convert('modules/install/testdocs/test.pdf', DOCUMENT_TYPE_PDF)) { @@ -640,7 +640,7 @@ public static function checkHtml2text() return false; } - include_once('lib/DocumentToText.php'); + include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); $documentToText = new DocumentToText(); if ($documentToText->convert('modules/install/testdocs/test.html', DOCUMENT_TYPE_HTML)) { @@ -690,7 +690,7 @@ public static function checkUnrtf() return false; } - include_once('lib/DocumentToText.php'); + include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); $documentToText = new DocumentToText(); if ($documentToText->convert('modules/install/testdocs/test.rtf', DOCUMENT_TYPE_RTF)) { diff --git a/lib/JavaScriptCompressor.php b/lib/JavaScriptCompressor.php index 9cc14ef83..d99b62767 100755 --- a/lib/JavaScriptCompressor.php +++ b/lib/JavaScriptCompressor.php @@ -30,7 +30,7 @@ * @version $Id: JavaScriptCompressor.php 3587 2007-11-13 03:55:57Z will $ */ -include_once('./lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); /** * JavaScript Compression Library diff --git a/lib/JobOrders.php b/lib/JobOrders.php index a2ec50634..74ae08abf 100755 --- a/lib/JobOrders.php +++ b/lib/JobOrders.php @@ -1,5 +1,5 @@ assign('errorMessage', $error); - $template->display('./Error.tpl'); - - echo ''; - - die(); + $template->display('Error.tpl'); + throw new Exception(str_replace("\n", " ", 'Fatal Error raised: ' . $error)); } /** diff --git a/lib/NewVersionCheck.php b/lib/NewVersionCheck.php index adf6e1ced..275403c4f 100755 --- a/lib/NewVersionCheck.php +++ b/lib/NewVersionCheck.php @@ -30,8 +30,8 @@ * @version $Id: NewVersionCheck.php 3634 2007-11-16 16:41:47Z brian $ */ -include_once('./lib/SystemInfo.php'); -include_once('./lib/Users.php'); +include_once(LEGACY_ROOT . '/lib/SystemInfo.php'); +include_once(LEGACY_ROOT . '/lib/Users.php'); /** * New Version Check Library diff --git a/lib/Pipelines.php b/lib/Pipelines.php index 15305b2c4..8d4eb9cd9 100755 --- a/lib/Pipelines.php +++ b/lib/Pipelines.php @@ -30,7 +30,7 @@ * @version $Id: Pipelines.php 3593 2007-11-13 17:36:57Z andrew $ */ -include_once('./lib/History.php'); +include_once(LEGACY_ROOT . '/lib/History.php'); /** * Pipelines Library diff --git a/lib/Profile.php b/lib/Profile.php index c443ba175..9fb3881ff 100755 --- a/lib/Profile.php +++ b/lib/Profile.php @@ -30,8 +30,8 @@ * @version $Id: Profile.php 3831 2007-12-11 23:14:32Z brian $ */ -include_once('./lib/DatabaseConnection.php'); -include_once('./lib/Site.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); +include_once(LEGACY_ROOT . '/lib/Site.php'); class Profile { diff --git a/lib/Questionnaire.php b/lib/Questionnaire.php index 9253143e3..8a5cf6854 100755 --- a/lib/Questionnaire.php +++ b/lib/Questionnaire.php @@ -30,8 +30,8 @@ * @version $Id: Questionnaire.php 3745 2007-11-28 18:37:56Z andrew $ */ -include_once('./lib/DatabaseConnection.php'); -include_once('./lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); +include_once(LEGACY_ROOT . '/lib/Candidates.php'); define('QUESTIONNAIRE_QUESTION_TYPE_TEXT', 1); define('QUESTIONNAIRE_QUESTION_TYPE_SELECT', 2); diff --git a/lib/QueueProcessor.php b/lib/QueueProcessor.php index e5e6d3893..aed2634e9 100755 --- a/lib/QueueProcessor.php +++ b/lib/QueueProcessor.php @@ -37,8 +37,8 @@ * @version $Id: QueueProcessor.php 3639 2007-11-16 18:02:56Z andrew $ */ -include_once('./modules/queue/constants.php'); -include_once('./lib/Mailer.php'); +include_once(LEGACY_ROOT . '/modules/queue/constants.php'); +include_once(LEGACY_ROOT . '/lib/Mailer.php'); /** * Asynchroneous Queue Processor Library diff --git a/lib/Search.php b/lib/Search.php index 9f6a177d4..4354077e8 100755 --- a/lib/Search.php +++ b/lib/Search.php @@ -30,8 +30,8 @@ * @version $Id: Search.php 3587 2007-11-13 03:55:57Z will $ */ -include_once('./lib/Pager.php'); -include_once('./lib/DatabaseSearch.php'); +include_once(LEGACY_ROOT . '/lib/Pager.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseSearch.php'); if (ENABLE_SPHINX) { @@ -2018,7 +2018,7 @@ protected function fatal($error) { $template = new Template(); $template->assign('errorMessage', $error); - $template->display('./Error.tpl'); + $template->display('Error.tpl'); die(); } } diff --git a/lib/Statistics.php b/lib/Statistics.php index 9cd6856b8..7b1bc7cd7 100755 --- a/lib/Statistics.php +++ b/lib/Statistics.php @@ -30,7 +30,7 @@ * @version $Id: Statistics.php 3587 2007-11-13 03:55:57Z will $ */ -include_once('./lib/Pipelines.php'); +include_once(LEGACY_ROOT . '/lib/Pipelines.php'); /** * Statistics Library diff --git a/lib/SystemUtility.php b/lib/SystemUtility.php index 49e99d350..b29daecc7 100755 --- a/lib/SystemUtility.php +++ b/lib/SystemUtility.php @@ -30,7 +30,7 @@ * @version $Id: SystemUtility.php 3593 2007-11-13 17:36:57Z andrew $ */ -include_once('./lib/QueueProcessor.php'); +include_once(LEGACY_ROOT . '/lib/QueueProcessor.php'); /** * System Utility Library diff --git a/lib/Tags.php b/lib/Tags.php index 50c9534a0..82e3cd9a6 100644 --- a/lib/Tags.php +++ b/lib/Tags.php @@ -30,7 +30,7 @@ * @version $Id: EmailTemplates.php 3694 2007-11-26 21:11:00Z Veaceslav Vasilache $ */ -include_once('./lib/Site.php'); +include_once(LEGACY_ROOT . '/lib/Site.php'); /** * E-Mail Templates Library diff --git a/lib/Template.php b/lib/Template.php index 34a0de175..97369ead2 100755 --- a/lib/Template.php +++ b/lib/Template.php @@ -98,7 +98,7 @@ public function addFilter($code) public function display($template) { /* File existence checking. */ - $file = realpath('./' . $template); + $file = realpath(LEGACY_ROOT . '/' . $template); if (!$file) { echo 'Template error: File \'', $template, '\' not found.', "\n\n"; diff --git a/lib/TemplateUtility.php b/lib/TemplateUtility.php index a37dd1f1f..95e23fc52 100755 --- a/lib/TemplateUtility.php +++ b/lib/TemplateUtility.php @@ -35,9 +35,9 @@ * @version $Id: TemplateUtility.php 3835 2007-12-12 19:08:38Z brian $ */ -include_once('Candidates.php'); -include_once('DateUtility.php'); -include_once('SystemInfo.php'); +include_once(LEGACY_ROOT . '/lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); +include_once(LEGACY_ROOT . '/lib/SystemInfo.php'); /** * Template Utility Library @@ -731,7 +731,7 @@ public static function printTabs($active, $subActive = '', $forceHighlight = '') else if (strpos($link, 'a=internalPostings') !== false) { /* Default company subtab. */ - include_once('./lib/Companies.php'); + include_once(LEGACY_ROOT . '/lib/Companies.php'); $companies = new Companies($_SESSION['CATS']->getSiteID()); $defaultCompanyID = $companies->getDefaultCompany(); @@ -1180,7 +1180,7 @@ private static function _printCommonHeader($pageTitle, $headIncludes = array()) echo '', "\n"; echo '', "\n"; - $headIncludes[] = 'main.css'; + $headIncludes[] = 'css/main.css'; foreach ($headIncludes as $key => $filename) { @@ -1231,8 +1231,8 @@ private static function _printCommonHeader($pageTitle, $headIncludes = array()) } } - echo '', "\n"; - echo '', "\n"; + echo '', "\n"; + echo '', "\n"; echo '', "\n\n"; } diff --git a/lib/UserInterface.php b/lib/UserInterface.php index 601cecba1..72f8f0ef7 100755 --- a/lib/UserInterface.php +++ b/lib/UserInterface.php @@ -260,7 +260,7 @@ protected function fatal($error, $directoryOverride = '') $this->_template->assign('active', $this); $this->_template->assign('errorMessage', $error); $this->_template->display( - './modules/' . $moduleDirectory . '/Error.tpl' + 'modules/' . $moduleDirectory . '/Error.tpl' ); $getArray = array(); diff --git a/lib/Users.php b/lib/Users.php index bc9111142..6f70e1730 100755 --- a/lib/Users.php +++ b/lib/Users.php @@ -30,7 +30,7 @@ * @version $Id: Users.php 3593 2007-11-13 17:36:57Z andrew $ */ -include_once('./lib/License.php'); +include_once(LEGACY_ROOT . '/lib/License.php'); if (AUTH_MODE == "ldap" || AUTH_MODE == "sql+ldap") { @@ -44,6 +44,7 @@ define('LOGIN_DISABLED', -3); define('LOGIN_CANT_CHANGE_PASSWORD', -4); define('LOGIN_ROOT_ONLY', -5); +define('LOGIN_PENDING_APPROVAL', -6); /* Add User status flags. */ define('ADD_USER_SUCCESS', 1); diff --git a/lib/WebForm.php b/lib/WebForm.php index 9b3259563..91dcdb129 100755 --- a/lib/WebForm.php +++ b/lib/WebForm.php @@ -30,7 +30,7 @@ * @version $Id: WebForm.php 3705 2007-11-26 23:34:51Z will $ */ -include_once('./lib/Graphs.php'); +include_once(LEGACY_ROOT . '/lib/Graphs.php'); define('WFT_TEXT', 1); define('WFT_PASSWORD', 2); diff --git a/lib/Wizard.php b/lib/Wizard.php index 64791a71e..ca4112563 100755 --- a/lib/Wizard.php +++ b/lib/Wizard.php @@ -31,7 +31,7 @@ */ // FIXME: This is globally included... -include_once('./lib/CATSUtility.php'); +include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); /** * Form Wizard Library diff --git a/modules/activity/ActivityDataGrid.tpl b/modules/activity/ActivityDataGrid.tpl index 020e3cac8..4111575c1 100755 --- a/modules/activity/ActivityDataGrid.tpl +++ b/modules/activity/ActivityDataGrid.tpl @@ -41,7 +41,7 @@



-
+
 


diff --git a/modules/activity/ActivityUI.php b/modules/activity/ActivityUI.php index 21b5d44da..e5c1bd06b 100755 --- a/modules/activity/ActivityUI.php +++ b/modules/activity/ActivityUI.php @@ -25,12 +25,12 @@ * */ -include_once('./lib/ActivityEntries.php'); -include_once('./lib/StringUtility.php'); -include_once('./lib/Contacts.php'); -include_once('./lib/Candidates.php'); -include_once('./lib/DateUtility.php'); -include_once('./lib/InfoString.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/Contacts.php'); +include_once(LEGACY_ROOT . '/lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); +include_once(LEGACY_ROOT . '/lib/InfoString.php'); class ActivityUI extends UserInterface diff --git a/modules/activity/Search.tpl b/modules/activity/Search.tpl index 00cdc2aad..77688aa50 100755 --- a/modules/activity/Search.tpl +++ b/modules/activity/Search.tpl @@ -1,5 +1,5 @@ - + active); ?>
diff --git a/modules/activity/dataGrids.php b/modules/activity/dataGrids.php index c863a797a..6309a8af1 100644 --- a/modules/activity/dataGrids.php +++ b/modules/activity/dataGrids.php @@ -31,10 +31,10 @@ * $Id: dataGrids.php 3566 2007-11-12 09:46:35Z will $ */ -include_once('./lib/ActivityEntries.php'); -include_once('./lib/Hooks.php'); -include_once('./lib/InfoString.php'); -include_once('./lib/Width.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/InfoString.php'); +include_once(LEGACY_ROOT . '/lib/Width.php'); class ActivityDataGrid extends DataGrid { diff --git a/modules/attachments/AttachmentsUI.php b/modules/attachments/AttachmentsUI.php index 8f1829f29..7e3d1079b 100755 --- a/modules/attachments/AttachmentsUI.php +++ b/modules/attachments/AttachmentsUI.php @@ -27,8 +27,8 @@ * $Id: HomeUI.php 2969 2007-08-29 23:33:39Z brian $ */ -include_once('./lib/CommonErrors.php'); -include_once('./lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); class AttachmentsUI extends UserInterface { diff --git a/modules/calendar/Calendar.tpl b/modules/calendar/Calendar.tpl index fe562cef4..1a44b6892 100755 --- a/modules/calendar/Calendar.tpl +++ b/modules/calendar/Calendar.tpl @@ -1,5 +1,5 @@ - + active); ?>
diff --git a/modules/calendar/CalendarUI.php b/modules/calendar/CalendarUI.php index 67aa7d214..353a94e9c 100755 --- a/modules/calendar/CalendarUI.php +++ b/modules/calendar/CalendarUI.php @@ -27,9 +27,9 @@ * $Id: CalendarUI.php 3807 2007-12-05 01:47:41Z will $ */ -include_once('./lib/Calendar.php'); -include_once('./lib/DateUtility.php'); -include_once('./lib/SystemUtility.php'); +include_once(LEGACY_ROOT . '/lib/Calendar.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); +include_once(LEGACY_ROOT . '/lib/SystemUtility.php'); class CalendarUI extends UserInterface diff --git a/modules/calendar/tasks/Reminders.php b/modules/calendar/tasks/Reminders.php index 47e61fbd6..2f6ec429a 100755 --- a/modules/calendar/tasks/Reminders.php +++ b/modules/calendar/tasks/Reminders.php @@ -25,10 +25,10 @@ * $Id: Reminders.php 3558 2007-11-11 22:44:14Z will $ */ -include_once('./modules/queue/lib/Task.php'); -include_once('./lib/Calendar.php'); -include_once('./lib/DateUtility.php'); -include_once('./lib/SystemUtility.php'); +include_once(LEGACY_ROOT . '/modules/queue/lib/Task.php'); +include_once(LEGACY_ROOT . '/lib/Calendar.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); +include_once(LEGACY_ROOT . '/lib/SystemUtility.php'); class Reminders extends Task { diff --git a/modules/candidates/Add.tpl b/modules/candidates/Add.tpl index d67678bda..5c743d83d 100755 --- a/modules/candidates/Add.tpl +++ b/modules/candidates/Add.tpl @@ -1,8 +1,8 @@ isModal): ?> - + - + active, $this->subActive); ?> diff --git a/modules/candidates/AddActivityChangeStatusModal.tpl b/modules/candidates/AddActivityChangeStatusModal.tpl index 804d55d20..1dd4a9776 100755 --- a/modules/candidates/AddActivityChangeStatusModal.tpl +++ b/modules/candidates/AddActivityChangeStatusModal.tpl @@ -1,10 +1,10 @@ isJobOrdersMode): ?> - + onlyScheduleEvent): ?> - + - + isFinishedMode): ?> diff --git a/modules/candidates/Candidates.tpl b/modules/candidates/Candidates.tpl index 42964c9a2..8ca67b79d 100755 --- a/modules/candidates/Candidates.tpl +++ b/modules/candidates/Candidates.tpl @@ -4,10 +4,10 @@ active); ?> dataGrid->getInstanceName());?>
@@ -133,7 +133,7 @@



-
+
 


diff --git a/modules/candidates/CandidatesUI.php b/modules/candidates/CandidatesUI.php index 24a469843..e44a8eed8 100755 --- a/modules/candidates/CandidatesUI.php +++ b/modules/candidates/CandidatesUI.php @@ -27,27 +27,27 @@ * $Id: CandidatesUI.php 3810 2007-12-05 19:13:25Z brian $ */ -include_once('./lib/FileUtility.php'); -include_once('./lib/StringUtility.php'); -include_once('./lib/ResultSetUtility.php'); -include_once('./lib/DateUtility.php'); /* Depends on StringUtility. */ -include_once('./lib/Candidates.php'); -include_once('./lib/Pipelines.php'); -include_once('./lib/Attachments.php'); -include_once('./lib/ActivityEntries.php'); -include_once('./lib/JobOrders.php'); -include_once('./lib/Export.php'); -include_once('./lib/ExtraFields.php'); -include_once('./lib/Calendar.php'); -include_once('./lib/SavedLists.php'); -include_once('./lib/EmailTemplates.php'); -include_once('./lib/DocumentToText.php'); -include_once('./lib/DatabaseSearch.php'); -include_once('./lib/CommonErrors.php'); -include_once('./lib/License.php'); -include_once('./lib/ParseUtility.php'); -include_once('./lib/Questionnaire.php'); -include_once('./lib/Tags.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/ResultSetUtility.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); /* Depends on StringUtility. */ +include_once(LEGACY_ROOT . '/lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/Pipelines.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/Export.php'); +include_once(LEGACY_ROOT . '/lib/ExtraFields.php'); +include_once(LEGACY_ROOT . '/lib/Calendar.php'); +include_once(LEGACY_ROOT . '/lib/SavedLists.php'); +include_once(LEGACY_ROOT . '/lib/EmailTemplates.php'); +include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseSearch.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/License.php'); +include_once(LEGACY_ROOT . '/lib/ParseUtility.php'); +include_once(LEGACY_ROOT . '/lib/Questionnaire.php'); +include_once(LEGACY_ROOT . '/lib/Tags.php'); class CandidatesUI extends UserInterface { @@ -117,7 +117,7 @@ public function handleRequest() break; case 'search': - include_once('./lib/Search.php'); + include_once(LEGACY_ROOT . '/lib/Search.php'); if ($this->isGetBack()) { @@ -131,7 +131,7 @@ public function handleRequest() break; case 'viewResume': - include_once('./lib/Search.php'); + include_once(LEGACY_ROOT . '/lib/Search.php'); $this->viewResume(); break; @@ -141,7 +141,7 @@ public function handleRequest() * consider a candidate. */ case 'considerForJobSearch': - include_once('./lib/Search.php'); + include_once(LEGACY_ROOT . '/lib/Search.php'); $this->considerForJobSearch(); @@ -198,7 +198,7 @@ public function handleRequest() /* Add an attachment to the candidate. */ case 'createAttachment': - include_once('./lib/DocumentToText.php'); + include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); if ($this->isPostBack()) { diff --git a/modules/candidates/CreateAttachmentModal.tpl b/modules/candidates/CreateAttachmentModal.tpl index 0ea1c49ac..4b01e84d7 100755 --- a/modules/candidates/CreateAttachmentModal.tpl +++ b/modules/candidates/CreateAttachmentModal.tpl @@ -1,5 +1,5 @@ - + isFinishedMode){ ?>
diff --git a/modules/candidates/CreateImageAttachmentModal.tpl b/modules/candidates/CreateImageAttachmentModal.tpl index 5dc6b6853..fb9c0c737 100755 --- a/modules/candidates/CreateImageAttachmentModal.tpl +++ b/modules/candidates/CreateImageAttachmentModal.tpl @@ -1,5 +1,5 @@ - +

Edit Profile Image

isFinishedMode): ?> diff --git a/modules/candidates/Edit.tpl b/modules/candidates/Edit.tpl index e71fbae8a..baf3eb380 100755 --- a/modules/candidates/Edit.tpl +++ b/modules/candidates/Edit.tpl @@ -1,5 +1,5 @@ - + active); ?>
diff --git a/modules/candidates/Search.tpl b/modules/candidates/Search.tpl index 0efbc6e58..522012575 100755 --- a/modules/candidates/Search.tpl +++ b/modules/candidates/Search.tpl @@ -1,5 +1,5 @@ - + active); ?>
diff --git a/modules/candidates/dataGrids.php b/modules/candidates/dataGrids.php index f6d34a11c..40ce12592 100755 --- a/modules/candidates/dataGrids.php +++ b/modules/candidates/dataGrids.php @@ -2,8 +2,8 @@ //TODO: License -include_once('lib/Candidates.php'); -include_once('./lib/Width.php'); +include_once(LEGACY_ROOT . '/lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/Width.php'); class candidatesListByViewDataGrid extends CandidatesDataGrid { diff --git a/modules/careers/CareersUI.php b/modules/careers/CareersUI.php index 4c155a109..6faf45210 100755 --- a/modules/careers/CareersUI.php +++ b/modules/careers/CareersUI.php @@ -26,23 +26,23 @@ * $Id: CareersUI.php 3812 2007-12-05 21:33:28Z andrew $ */ -include_once('./lib/CareerPortal.php'); -include_once('./lib/JobOrders.php'); -include_once('./lib/Candidates.php'); -include_once('./lib/Site.php'); -include_once('./lib/Companies.php'); -include_once('./lib/Contacts.php'); -include_once('./lib/Users.php'); -include_once('./lib/FileUtility.php'); -include_once('./lib/ActivityEntries.php'); -include_once('./lib/DocumentToText.php'); -include_once('./lib/DatabaseConnection.php'); -include_once('./lib/DatabaseSearch.php'); -include_once('./lib/CommonErrors.php'); -include_once('./lib/Questionnaire.php'); -include_once('./lib/DocumentToText.php'); -include_once('./lib/FileUtility.php'); -include_once('./lib/ParseUtility.php'); +include_once(LEGACY_ROOT . '/lib/CareerPortal.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/Site.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Contacts.php'); +include_once(LEGACY_ROOT . '/lib/Users.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseSearch.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/Questionnaire.php'); +include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/lib/ParseUtility.php'); class CareersUI extends UserInterface { diff --git a/modules/companies/Add.tpl b/modules/companies/Add.tpl index 9487743af..689a8f283 100755 --- a/modules/companies/Add.tpl +++ b/modules/companies/Add.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/companies/Companies.tpl b/modules/companies/Companies.tpl index 5374ac111..4191b53d8 100755 --- a/modules/companies/Companies.tpl +++ b/modules/companies/Companies.tpl @@ -3,8 +3,8 @@ active); ?>
diff --git a/modules/companies/CompaniesUI.php b/modules/companies/CompaniesUI.php index 6dd0e7c67..087b4770e 100755 --- a/modules/companies/CompaniesUI.php +++ b/modules/companies/CompaniesUI.php @@ -27,18 +27,18 @@ * $Id: CompaniesUI.php 3460 2007-11-07 03:50:34Z brian $ */ -include_once('./lib/StringUtility.php'); -include_once('./lib/DateUtility.php'); /* Depends on StringUtility. */ -include_once('./lib/ResultSetUtility.php'); -include_once('./lib/Companies.php'); -include_once('./lib/Contacts.php'); -include_once('./lib/JobOrders.php'); -include_once('./lib/Attachments.php'); -include_once('./lib/Export.php'); -include_once('./lib/ListEditor.php'); -include_once('./lib/FileUtility.php'); -include_once('./lib/ExtraFields.php'); -include_once('./lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); /* Depends on StringUtility. */ +include_once(LEGACY_ROOT . '/lib/ResultSetUtility.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Contacts.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/Export.php'); +include_once(LEGACY_ROOT . '/lib/ListEditor.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/lib/ExtraFields.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); class CompaniesUI extends UserInterface { @@ -109,7 +109,7 @@ public function handleRequest() break; case 'search': - include_once('./lib/Search.php'); + include_once(LEGACY_ROOT . '/lib/Search.php'); if ($this->isGetBack()) { @@ -124,7 +124,7 @@ public function handleRequest() /* Add an attachment */ case 'createAttachment': - include_once('./lib/DocumentToText.php'); + include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); if ($this->isPostBack()) { diff --git a/modules/companies/CreateAttachmentModal.tpl b/modules/companies/CreateAttachmentModal.tpl index 12683b2df..1c71d750f 100755 --- a/modules/companies/CreateAttachmentModal.tpl +++ b/modules/companies/CreateAttachmentModal.tpl @@ -1,5 +1,5 @@ - + isFinishedMode): ?> diff --git a/modules/companies/Edit.tpl b/modules/companies/Edit.tpl index 8ca6aba16..16e5f5d69 100755 --- a/modules/companies/Edit.tpl +++ b/modules/companies/Edit.tpl @@ -1,5 +1,5 @@ - + active); ?>
diff --git a/modules/companies/Search.tpl b/modules/companies/Search.tpl index fe2af598c..f00695053 100755 --- a/modules/companies/Search.tpl +++ b/modules/companies/Search.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/companies/dataGrids.php b/modules/companies/dataGrids.php index d1fad12e8..c1f937cd8 100644 --- a/modules/companies/dataGrids.php +++ b/modules/companies/dataGrids.php @@ -31,9 +31,9 @@ * $Id: dataGrids.php 3096 2007-09-25 19:27:04Z brian $ */ -include_once('./lib/Companies.php'); -include_once('./lib/Hooks.php'); -include_once('./lib/Width.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/Width.php'); class CompaniesListByViewDataGrid extends CompaniesDataGrid { diff --git a/modules/contacts/Add.tpl b/modules/contacts/Add.tpl index 6ca978ded..93cafef6c 100755 --- a/modules/contacts/Add.tpl +++ b/modules/contacts/Add.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/contacts/Contacts.tpl b/modules/contacts/Contacts.tpl index 926fa26dd..7b461ce49 100755 --- a/modules/contacts/Contacts.tpl +++ b/modules/contacts/Contacts.tpl @@ -3,8 +3,8 @@ active); ?>
@@ -86,7 +86,7 @@



-
+
 


diff --git a/modules/contacts/ContactsUI.php b/modules/contacts/ContactsUI.php index 51ce2c2e3..d598bc1d2 100755 --- a/modules/contacts/ContactsUI.php +++ b/modules/contacts/ContactsUI.php @@ -27,17 +27,17 @@ * $Id: ContactsUI.php 3444 2007-11-06 23:16:27Z will $ */ -include_once('./lib/StringUtility.php'); -include_once('./lib/ResultSetUtility.php'); -include_once('./lib/DateUtility.php'); -include_once('./lib/Contacts.php'); -include_once('./lib/Companies.php'); -include_once('./lib/JobOrders.php'); -include_once('./lib/ActivityEntries.php'); -include_once('./lib/Export.php'); -include_once('./lib/ExtraFields.php'); -include_once('./lib/Calendar.php'); -include_once('./lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/ResultSetUtility.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); +include_once(LEGACY_ROOT . '/lib/Contacts.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/Export.php'); +include_once(LEGACY_ROOT . '/lib/ExtraFields.php'); +include_once(LEGACY_ROOT . '/lib/Calendar.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); class ContactsUI extends UserInterface @@ -115,7 +115,7 @@ public function handleRequest() break; case 'search': - include_once('./lib/Search.php'); + include_once(LEGACY_ROOT . '/lib/Search.php'); if ($this->isGetBack()) { @@ -145,7 +145,7 @@ public function handleRequest() break; case 'downloadVCard': - include_once('./lib/VCard.php'); + include_once(LEGACY_ROOT . '/lib/VCard.php'); $this->downloadVCard(); break; diff --git a/modules/contacts/Edit.tpl b/modules/contacts/Edit.tpl index 4e3963571..a05b46a7f 100755 --- a/modules/contacts/Edit.tpl +++ b/modules/contacts/Edit.tpl @@ -1,5 +1,5 @@ - + active); ?>
diff --git a/modules/contacts/Search.tpl b/modules/contacts/Search.tpl index 07500ea88..b2f29b9af 100755 --- a/modules/contacts/Search.tpl +++ b/modules/contacts/Search.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/contacts/dataGrids.php b/modules/contacts/dataGrids.php index f133d615b..e4695ab54 100644 --- a/modules/contacts/dataGrids.php +++ b/modules/contacts/dataGrids.php @@ -31,9 +31,9 @@ * $Id: dataGrids.php 3096 2007-09-25 19:27:04Z brian $ */ -include_once('./lib/Contacts.php'); -include_once('./lib/Hooks.php'); -include_once('./lib/Width.php'); +include_once(LEGACY_ROOT . '/lib/Contacts.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/Width.php'); class ContactsListByViewDataGrid extends ContactsDataGrid { diff --git a/modules/export/ExportUI.php b/modules/export/ExportUI.php index 35b3d1db6..a6a6ad99d 100755 --- a/modules/export/ExportUI.php +++ b/modules/export/ExportUI.php @@ -34,8 +34,8 @@ * $Id: ExportUI.php 2996 2007-09-06 21:41:18Z brian $ */ -include_once('./lib/Export.php'); -include_once('./lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/Export.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); class ExportUI extends UserInterface diff --git a/modules/graphs/GraphsUI.php b/modules/graphs/GraphsUI.php index efd77d37e..2b056c50a 100755 --- a/modules/graphs/GraphsUI.php +++ b/modules/graphs/GraphsUI.php @@ -27,12 +27,12 @@ * $Id: GraphsUI.php 3710 2007-11-27 16:41:19Z brian $ */ -include_once('./lib/Statistics.php'); -include_once('./lib/Graphs.php'); -include_once('./lib/GraphGenerator.php'); -include_once('./lib/DateUtility.php'); -include_once('./lib/CommonErrors.php'); -include_once('./lib/Dashboard.php'); +include_once(LEGACY_ROOT . '/lib/Statistics.php'); +include_once(LEGACY_ROOT . '/lib/Graphs.php'); +include_once(LEGACY_ROOT . '/lib/GraphGenerator.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/Dashboard.php'); class GraphsUI extends UserInterface diff --git a/modules/home/Home.tpl b/modules/home/Home.tpl index c58417af5..b1097f581 100755 --- a/modules/home/Home.tpl +++ b/modules/home/Home.tpl @@ -47,7 +47,7 @@ placedRS)): ?> -
+
 
@@ -76,7 +76,7 @@
dataGrid->printNavigation(false); ?>    dataGrid->printShowAll(); ?>       
dataGrid->getNumberOfRows()): ?> -
+
 
diff --git a/modules/home/HomeUI.php b/modules/home/HomeUI.php index a495bf4c9..d544fc66f 100755 --- a/modules/home/HomeUI.php +++ b/modules/home/HomeUI.php @@ -27,9 +27,9 @@ * $Id: HomeUI.php 3810 2007-12-05 19:13:25Z brian $ */ -include_once('./lib/NewVersionCheck.php'); -include_once('./lib/CommonErrors.php'); -include_once('./lib/Dashboard.php'); +include_once(LEGACY_ROOT . '/lib/NewVersionCheck.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/Dashboard.php'); class HomeUI extends UserInterface { @@ -54,27 +54,27 @@ public function handleRequest() switch ($action) { case 'quickSearch': - include_once('./lib/Search.php'); - include_once('./lib/StringUtility.php'); + include_once(LEGACY_ROOT . '/lib/Search.php'); + include_once(LEGACY_ROOT . '/lib/StringUtility.php'); $this->quickSearch(); break; case 'deleteSavedSearch': - include_once('./lib/Search.php'); + include_once(LEGACY_ROOT . '/lib/Search.php'); $this->deleteSavedSearch(); break; case 'addSavedSearch': - include_once('./lib/Search.php'); + include_once(LEGACY_ROOT . '/lib/Search.php'); $this->addSavedSearch(); break; /* FIXME: undefined function getAttachment() case 'getAttachment': - include_once('./lib/Attachments.php'); + include_once(LEGACY_ROOT . '/lib/Attachments.php'); $this->getAttachment(); break; diff --git a/modules/home/dataGrids.php b/modules/home/dataGrids.php index bf5e83a30..81af9808d 100644 --- a/modules/home/dataGrids.php +++ b/modules/home/dataGrids.php @@ -31,10 +31,10 @@ * $Id: dataGrids.php 3583 2007-11-12 23:04:42Z brian $ */ -include_once('./lib/Hooks.php'); -include_once('./lib/InfoString.php'); -include_once('./lib/Pipelines.php'); -include_once('./lib/Width.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/InfoString.php'); +include_once(LEGACY_ROOT . '/lib/Pipelines.php'); +include_once(LEGACY_ROOT . '/lib/Width.php'); class ImportantPipelineDashboard extends DataGrid @@ -199,9 +199,9 @@ public function getSQL($selectSQL, $joinSQL, $whereSQL, $havingSQL, $orderSQL, $ // FIXME: Includes in the middle of the file = bad. // FIXME: Multiple classes per file probably also bad. -include_once('./lib/ActivityEntries.php'); -include_once('./lib/Hooks.php'); -include_once('./lib/InfoString.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/InfoString.php'); class CallsDataGrid extends DataGrid { diff --git a/modules/import/BulkResumesHelp.tpl b/modules/import/BulkResumesHelp.tpl index 9fb33383a..cdace9711 100755 --- a/modules/import/BulkResumesHelp.tpl +++ b/modules/import/BulkResumesHelp.tpl @@ -1,7 +1,7 @@
-

+

Bulk Resumes


diff --git a/modules/import/Import.tpl b/modules/import/Import.tpl index 2f11668e1..116e1614b 100755 --- a/modules/import/Import.tpl +++ b/modules/import/Import.tpl @@ -1,5 +1,5 @@ - + active, '', 'settings'); ?>
diff --git a/modules/import/Import1.tpl b/modules/import/Import1.tpl index 21aa74aad..98ccb43e7 100755 --- a/modules/import/Import1.tpl +++ b/modules/import/Import1.tpl @@ -1,5 +1,5 @@ - + active, '', 'settings'); ?>
diff --git a/modules/import/Import2.tpl b/modules/import/Import2.tpl index ec3203cd8..ed431aaba 100755 --- a/modules/import/Import2.tpl +++ b/modules/import/Import2.tpl @@ -1,5 +1,5 @@ - + active, '', 'settings'); ?>
diff --git a/modules/import/ImportCommits.tpl b/modules/import/ImportCommits.tpl index a3121dda9..9fc17545d 100755 --- a/modules/import/ImportCommits.tpl +++ b/modules/import/ImportCommits.tpl @@ -1,5 +1,5 @@ - + active); ?>
diff --git a/modules/import/ImportRecent.tpl b/modules/import/ImportRecent.tpl index 24b1ab345..ae3548310 100755 --- a/modules/import/ImportRecent.tpl +++ b/modules/import/ImportRecent.tpl @@ -1,5 +1,5 @@ - + active); ?>
diff --git a/modules/import/ImportResumes.tpl b/modules/import/ImportResumes.tpl index 2813ac6de..ed0a645f8 100755 --- a/modules/import/ImportResumes.tpl +++ b/modules/import/ImportResumes.tpl @@ -1,5 +1,5 @@ - + active, ''); ?>
diff --git a/modules/import/ImportResumesBulk.tpl b/modules/import/ImportResumesBulk.tpl index 516069edf..258b26d35 100755 --- a/modules/import/ImportResumesBulk.tpl +++ b/modules/import/ImportResumesBulk.tpl @@ -1,5 +1,5 @@ - + active, ''); ?>
diff --git a/modules/import/ImportUI.php b/modules/import/ImportUI.php index 7879feb88..3eac2caac 100755 --- a/modules/import/ImportUI.php +++ b/modules/import/ImportUI.php @@ -27,18 +27,18 @@ * $Id: ImportUI.php 3833 2007-12-12 18:18:09Z brian $ */ -include_once('./lib/Statistics.php'); -include_once('./lib/StringUtility.php'); -include_once('./modules/import/Import.php'); -include_once('./lib/Companies.php'); -include_once('./lib/Contacts.php'); -include_once('./lib/Candidates.php'); -include_once('./lib/DatabaseSearch.php'); -include_once('./lib/FileUtility.php'); -include_once('./lib/ExtraFields.php'); -include_once('./lib/Attachments.php'); -include_once('./lib/ParseUtility.php'); -include_once('./lib/Import.php'); +include_once(LEGACY_ROOT . '/lib/Statistics.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/modules/import/Import.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Contacts.php'); +include_once(LEGACY_ROOT . '/lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseSearch.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/lib/ExtraFields.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/ParseUtility.php'); +include_once(LEGACY_ROOT . '/lib/Import.php'); class ImportUI extends UserInterface diff --git a/modules/import/MassImport.tpl b/modules/import/MassImport.tpl index 583dc4d36..0caf85870 100755 --- a/modules/import/MassImport.tpl +++ b/modules/import/MassImport.tpl @@ -2,7 +2,7 @@ active, '', 'settings'); ?> - +
diff --git a/modules/import/MassImportEdit.tpl b/modules/import/MassImportEdit.tpl index 6d447ef1c..b539481eb 100755 --- a/modules/import/MassImportEdit.tpl +++ b/modules/import/MassImportEdit.tpl @@ -3,7 +3,7 @@ active); ?> - +
@@ -249,9 +249,9 @@ @@ -259,9 +259,9 @@ diff --git a/modules/import/ajax/processMassImportItem.php b/modules/import/ajax/processMassImportItem.php index df8f7adcc..7d2fb6f79 100755 --- a/modules/import/ajax/processMassImportItem.php +++ b/modules/import/ajax/processMassImportItem.php @@ -28,7 +28,7 @@ */ -include_once('lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); $interface = new SecureAJAXInterface(); diff --git a/modules/install/CATSUI.php b/modules/install/CATSUI.php index 2b4ed9abe..a1fdd2380 100755 --- a/modules/install/CATSUI.php +++ b/modules/install/CATSUI.php @@ -25,7 +25,7 @@ * $Id: CATSUI.php 1479 2007-01-17 00:22:21Z will $ */ -include_once('./modules/install/Schema.php'); +include_once(LEGACY_ROOT . '/modules/install/Schema.php'); class CATSUI extends UserInterface { diff --git a/modules/install/ajax/attachmentsReindex.php b/modules/install/ajax/attachmentsReindex.php index cb47a0823..41a44bd1d 100755 --- a/modules/install/ajax/attachmentsReindex.php +++ b/modules/install/ajax/attachmentsReindex.php @@ -25,9 +25,9 @@ * */ -include_once('./config.php'); -include_once('./lib/DatabaseConnection.php'); -include_once('./lib/ModuleUtility.php'); +include_once(LEGACY_ROOT . '/config.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); +include_once(LEGACY_ROOT . '/lib/ModuleUtility.php'); if (file_exists('INSTALL_BLOCK')) { @@ -39,7 +39,7 @@ $reindexed = 0; -include_once('lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); if (file_exists('INSTALL_BLOCK') && ($_SESSION['CATS']->getAccessLevel() < ACCESS_LEVEL_SA || ModuleUtility::moduleExists('asp'))) { diff --git a/modules/install/ajax/attachmentsToThreeDirectory.php b/modules/install/ajax/attachmentsToThreeDirectory.php index 806dfb7f2..892a2e7ec 100755 --- a/modules/install/ajax/attachmentsToThreeDirectory.php +++ b/modules/install/ajax/attachmentsToThreeDirectory.php @@ -27,8 +27,8 @@ * $Id: attachmentsToThreeDirectory.php 2336 2007-04-14 22:01:51Z will $ */ -include_once('./config.php'); -include_once('./lib/DatabaseConnection.php'); +include_once(LEGACY_ROOT . '/config.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); $interface = new SecureAJAXInterface(); @@ -40,11 +40,11 @@ set_time_limit(0); @ini_set('memory_limit', '256M'); -include_once('lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); $db = DatabaseConnection::getInstance(); -include_once('lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); $db->query('ALTER IGNORE TABLE `attachment` CHANGE `directory_name` `directory_name` VARCHAR(64);'); diff --git a/modules/install/ajax/maint.php b/modules/install/ajax/maint.php index 020d99e6b..44b16a7fe 100755 --- a/modules/install/ajax/maint.php +++ b/modules/install/ajax/maint.php @@ -34,4 +34,4 @@ $maintPage = true; -include_once('index.php'); +include_once(LEGACY_ROOT . '/index.php'); diff --git a/modules/install/ajax/ui.php b/modules/install/ajax/ui.php index 435bcd837..c7a178e62 100755 --- a/modules/install/ajax/ui.php +++ b/modules/install/ajax/ui.php @@ -27,9 +27,9 @@ * $Id: ui.php 3807 2007-12-05 01:47:41Z will $ */ -include_once('./config.php'); -include_once('./lib/InstallationTests.php'); -include_once('./lib/CATSUtility.php'); +include_once(LEGACY_ROOT . '/config.php'); +include_once(LEGACY_ROOT . '/lib/InstallationTests.php'); +include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); set_time_limit(300); @ini_set('memory_limit', '192M'); @@ -493,7 +493,7 @@ foreach ($optionalComponents as $index => $component) { echo ''; - echo '' . htmlspecialchars($component['name']) . '   '; + echo '' . htmlspecialchars($component['name']) . '   '; echo ''; echo ''; echo ''; @@ -681,7 +681,7 @@ break; case 'restoreFromBackup': - include_once('lib/FileCompressor.php'); + include_once(LEGACY_ROOT . '/lib/FileCompressor.php'); MySQLConnect(); $extractor = new ZipFileExtractor('./restore/catsbackup.bak'); @@ -773,7 +773,7 @@ case 'onLoadDemoData': CATSUtility::changeConfigSetting('ENABLE_DEMO_MODE', 'true'); - include_once('lib/FileCompressor.php'); + include_once(LEGACY_ROOT . '/lib/FileCompressor.php'); MySQLConnect(); $extractor = new ZipFileExtractor('./db/cats_testdata.bak'); @@ -940,7 +940,7 @@ break; case 'onReindexResumes': - include_once('modules/install/ajax/attachmentsReindex.php'); + include_once(LEGACY_ROOT . '/modules/install/ajax/attachmentsReindex.php'); echo ' - + diff --git a/modules/install/phpVersion.php b/modules/install/phpVersion.php index 7c17273ca..bef901fd4 100755 --- a/modules/install/phpVersion.php +++ b/modules/install/phpVersion.php @@ -1,12 +1,12 @@ - + CATS - Installation Wizard Script - + diff --git a/modules/joborders/Add.tpl b/modules/joborders/Add.tpl index df938275e..a9ea2c862 100755 --- a/modules/joborders/Add.tpl +++ b/modules/joborders/Add.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/joborders/AddModalPopup.tpl b/modules/joborders/AddModalPopup.tpl index 01cb43877..940cc97e0 100755 --- a/modules/joborders/AddModalPopup.tpl +++ b/modules/joborders/AddModalPopup.tpl @@ -1,5 +1,5 @@ - + '; - }, - - addItem : function(icon, title, command, value, disabled) { - if (title.charAt(0) == '$') - title = tinyMCE.getLang(title.substring(1)); - - var onMouseDown = ''; - var html = ''; - - if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0) - onMouseDown = 'contextMenu.execCommand(\'' + command + '\', \'' + value + '\');return false;'; - else - onMouseDown = this.settings['commandhandler'] + '(\'' + command + '\', \'' + value + '\');return false;'; - - if (icon == "") - icon = this.settings['spacer_image']; - - if (!disabled) - html += ''; - else - html += ''; - - html += ''; - html += ''; - html += ''; - - // Add to main - this.html += html; - }, - - show : function(x, y) { - var vp, width, height, yo; - - if (this.html == "") - return; - - var html = ''; - - html += '
diff --git a/modules/joborders/CreateAttachmentModal.tpl b/modules/joborders/CreateAttachmentModal.tpl index 553274868..7328565ca 100755 --- a/modules/joborders/CreateAttachmentModal.tpl +++ b/modules/joborders/CreateAttachmentModal.tpl @@ -1,5 +1,5 @@ - + isFinishedMode): ?> diff --git a/modules/joborders/JobOrders.tpl b/modules/joborders/JobOrders.tpl index 47651197e..e978236d9 100755 --- a/modules/joborders/JobOrders.tpl +++ b/modules/joborders/JobOrders.tpl @@ -3,8 +3,8 @@ active); ?>
@@ -100,7 +100,7 @@



-
+
 


diff --git a/modules/joborders/JobOrdersUI.php b/modules/joborders/JobOrdersUI.php index f135a8d3c..9d0cbe2b2 100755 --- a/modules/joborders/JobOrdersUI.php +++ b/modules/joborders/JobOrdersUI.php @@ -27,25 +27,25 @@ * $Id: JobOrdersUI.php 3810 2007-12-05 19:13:25Z brian $ */ -include_once('./lib/StringUtility.php'); -include_once('./lib/ResultSetUtility.php'); -include_once('./lib/DateUtility.php'); /* Depends on StringUtility. */ -include_once('./lib/JobOrders.php'); -include_once('./lib/Pipelines.php'); -include_once('./lib/Attachments.php'); -include_once('./lib/Companies.php'); -include_once('./lib/Candidates.php'); -include_once('./lib/ActivityEntries.php'); -include_once('./lib/Export.php'); -include_once('./lib/InfoString.php'); -include_once('./lib/EmailTemplates.php'); -include_once('./lib/FileUtility.php'); -include_once('./lib/CareerPortal.php'); -include_once('./lib/ExtraFields.php'); -include_once('./lib/Graphs.php'); -include_once('./lib/Questionnaire.php'); -include_once('./lib/CommonErrors.php'); -include_once('./lib/JobOrderTypes.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/ResultSetUtility.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); /* Depends on StringUtility. */ +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/Pipelines.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/Export.php'); +include_once(LEGACY_ROOT . '/lib/InfoString.php'); +include_once(LEGACY_ROOT . '/lib/EmailTemplates.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/lib/CareerPortal.php'); +include_once(LEGACY_ROOT . '/lib/ExtraFields.php'); +include_once(LEGACY_ROOT . '/lib/Graphs.php'); +include_once(LEGACY_ROOT . '/lib/Questionnaire.php'); +include_once(LEGACY_ROOT . '/lib/CommonErrors.php'); +include_once(LEGACY_ROOT . '/lib/JobOrderTypes.php'); class JobOrdersUI extends UserInterface @@ -133,7 +133,7 @@ public function handleRequest() break; case 'search': - include_once('./lib/Search.php'); + include_once(LEGACY_ROOT . '/lib/Search.php'); if ($this->isGetBack()) { @@ -164,7 +164,7 @@ public function handleRequest() * consider for this job order. */ case 'considerCandidateSearch': - include_once('./lib/Search.php'); + include_once(LEGACY_ROOT . '/lib/Search.php'); if ($this->isPostBack()) { @@ -207,7 +207,7 @@ public function handleRequest() /* Add an attachment */ case 'createAttachment': - include_once('./lib/DocumentToText.php'); + include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); if ($this->isPostBack()) { @@ -1388,7 +1388,7 @@ private function onAddCandidateModal() if (!eval(Hooks::get('JO_ON_ADD_CANDIDATE_MODAL'))) return; - include_once('./modules/candidates/CandidatesUI.php'); + include_once(LEGACY_ROOT . '/modules/candidates/CandidatesUI.php'); $candidatesUI = new CandidatesUI(); if (is_array($mp = $candidatesUI->checkParsingFunctions())) @@ -1542,7 +1542,7 @@ private function onAddActivityChangeStatus() if (!eval(Hooks::get('JO_ON_ADD_ACTIVITY_CHANGE_STATUS'))) return; - include_once('./modules/candidates/CandidatesUI.php'); + include_once(LEGACY_ROOT . '/modules/candidates/CandidatesUI.php'); $candidatesUI = new CandidatesUI(); $candidatesUI->publicAddActivityChangeStatus( true, $regardingID, $this->_moduleDirectory diff --git a/modules/joborders/Search.tpl b/modules/joborders/Search.tpl index 1af97de07..b33c2583b 100755 --- a/modules/joborders/Search.tpl +++ b/modules/joborders/Search.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/joborders/dataGrids.php b/modules/joborders/dataGrids.php index 8bcb4b895..a337dc6be 100644 --- a/modules/joborders/dataGrids.php +++ b/modules/joborders/dataGrids.php @@ -31,9 +31,9 @@ * $Id: dataGrids.php 3096 2007-09-25 19:27:04Z brian $ */ -include_once('lib/JobOrders.php'); -include_once('./lib/Hooks.php'); -include_once('./lib/Width.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/Width.php'); class JobOrdersListByViewDataGrid extends JobOrdersDataGrid { diff --git a/modules/lists/Lists.tpl b/modules/lists/Lists.tpl index ed8a51f79..ef2e5852f 100755 --- a/modules/lists/Lists.tpl +++ b/modules/lists/Lists.tpl @@ -52,7 +52,7 @@



-
+
 


diff --git a/modules/lists/ListsUI.php b/modules/lists/ListsUI.php index 45389a173..3781db568 100755 --- a/modules/lists/ListsUI.php +++ b/modules/lists/ListsUI.php @@ -27,18 +27,18 @@ * $Id: ListsUI.php 3807 2007-12-05 01:47:41Z will $ */ -include_once('./lib/StringUtility.php'); -include_once('./lib/DateUtility.php'); /* Depends on StringUtility. */ -include_once('./lib/ResultSetUtility.php'); -include_once('./lib/Companies.php'); -include_once('./lib/Contacts.php'); -include_once('./lib/JobOrders.php'); -include_once('./lib/Attachments.php'); -include_once('./lib/Export.php'); -include_once('./lib/ListEditor.php'); -include_once('./lib/FileUtility.php'); -include_once('./lib/SavedLists.php'); -include_once('./lib/ExtraFields.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); /* Depends on StringUtility. */ +include_once(LEGACY_ROOT . '/lib/ResultSetUtility.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Contacts.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/Attachments.php'); +include_once(LEGACY_ROOT . '/lib/Export.php'); +include_once(LEGACY_ROOT . '/lib/ListEditor.php'); +include_once(LEGACY_ROOT . '/lib/FileUtility.php'); +include_once(LEGACY_ROOT . '/lib/SavedLists.php'); +include_once(LEGACY_ROOT . '/lib/ExtraFields.php'); class ListsUI extends UserInterface diff --git a/modules/lists/ajax/addToLists.php b/modules/lists/ajax/addToLists.php index 1ece12b6c..0e4396c0c 100755 --- a/modules/lists/ajax/addToLists.php +++ b/modules/lists/ajax/addToLists.php @@ -27,9 +27,9 @@ * $Id: addToLists.php 3198 2007-10-14 23:36:43Z will $ */ -include_once('./lib/StringUtility.php'); -include_once('./lib/ActivityEntries.php'); -include_once('./lib/SavedLists.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/SavedLists.php'); function isRequiredValueValid($value) { diff --git a/modules/lists/ajax/deleteList.php b/modules/lists/ajax/deleteList.php index affb95528..e3a55757b 100755 --- a/modules/lists/ajax/deleteList.php +++ b/modules/lists/ajax/deleteList.php @@ -28,9 +28,9 @@ */ -include_once('./lib/StringUtility.php'); -include_once('./lib/ActivityEntries.php'); -include_once('./lib/SavedLists.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/SavedLists.php'); $interface = new SecureAJAXInterface(); diff --git a/modules/lists/ajax/editListName.php b/modules/lists/ajax/editListName.php index 13809b6f6..36014659f 100755 --- a/modules/lists/ajax/editListName.php +++ b/modules/lists/ajax/editListName.php @@ -28,9 +28,9 @@ */ -include_once('./lib/StringUtility.php'); -include_once('./lib/ActivityEntries.php'); -include_once('./lib/SavedLists.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/SavedLists.php'); $interface = new SecureAJAXInterface(); diff --git a/modules/lists/ajax/newList.php b/modules/lists/ajax/newList.php index 9e6892ae2..006b07ea0 100755 --- a/modules/lists/ajax/newList.php +++ b/modules/lists/ajax/newList.php @@ -28,9 +28,9 @@ */ -include_once('./lib/StringUtility.php'); -include_once('./lib/ActivityEntries.php'); -include_once('./lib/SavedLists.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/SavedLists.php'); $interface = new SecureAJAXInterface(); diff --git a/modules/lists/dataGrids.php b/modules/lists/dataGrids.php index 367b6b5fe..e9da60215 100644 --- a/modules/lists/dataGrids.php +++ b/modules/lists/dataGrids.php @@ -31,9 +31,9 @@ * $Id: dataGrids.php 3566 2007-11-12 09:46:35Z will $ */ -include_once('./lib/Companies.php'); -include_once('./lib/Hooks.php'); -include_once('./lib/Width.php'); +include_once(LEGACY_ROOT . '/lib/Companies.php'); +include_once(LEGACY_ROOT . '/lib/Hooks.php'); +include_once(LEGACY_ROOT . '/lib/Width.php'); class ListsDataGrid extends DataGrid { diff --git a/modules/login/ForgotPassword.tpl b/modules/login/ForgotPassword.tpl index 72ab65706..eced7badd 100755 --- a/modules/login/ForgotPassword.tpl +++ b/modules/login/ForgotPassword.tpl @@ -7,7 +7,7 @@ - + diff --git a/modules/login/Login.tpl b/modules/login/Login.tpl index 71b2155c8..2c3eab056 100755 --- a/modules/login/Login.tpl +++ b/modules/login/Login.tpl @@ -5,9 +5,9 @@ opencats - Login - + - + diff --git a/modules/login/LoginUI.php b/modules/login/LoginUI.php index ea8ef71e3..4bc2c1773 100755 --- a/modules/login/LoginUI.php +++ b/modules/login/LoginUI.php @@ -27,12 +27,12 @@ * $Id: LoginUI.php 3720 2007-11-27 21:06:13Z andrew $ */ -include_once('./lib/SystemInfo.php'); -include_once('./lib/Mailer.php'); -include_once('./lib/Site.php'); -include_once('./lib/NewVersionCheck.php'); -include_once('./lib/Wizard.php'); -include_once('./lib/License.php'); +include_once(LEGACY_ROOT . '/lib/SystemInfo.php'); +include_once(LEGACY_ROOT . '/lib/Mailer.php'); +include_once(LEGACY_ROOT . '/lib/Site.php'); +include_once(LEGACY_ROOT . '/lib/NewVersionCheck.php'); +include_once(LEGACY_ROOT . '/lib/Wizard.php'); +include_once(LEGACY_ROOT . '/lib/License.php'); class LoginUI extends UserInterface { diff --git a/modules/login/NoCookiesModal.tpl b/modules/login/NoCookiesModal.tpl index e6d2756c5..7f48ae68d 100755 --- a/modules/login/NoCookiesModal.tpl +++ b/modules/login/NoCookiesModal.tpl @@ -1,7 +1,7 @@
-

+

CATS Warning


diff --git a/modules/queue/tasks.php b/modules/queue/tasks.php index 2e6d80359..46dd08be9 100755 --- a/modules/queue/tasks.php +++ b/modules/queue/tasks.php @@ -36,8 +36,8 @@ /*************** ADD NEW TASKS HERE (scheduling is set inside the task) ****************/ -include_once('config.php'); -include_once('./modules/asp/lib/ASPUtility.php'); +include_once(LEGACY_ROOT . '/config.php'); +include_once(LEGACY_ROOT . '/modules/asp/lib/ASPUtility.php'); QueueProcessor::registerRecurringTask('CleanExceptions'); diff --git a/modules/queue/tasks/CleanExceptions.php b/modules/queue/tasks/CleanExceptions.php index dcfda08cc..b1b1835a1 100755 --- a/modules/queue/tasks/CleanExceptions.php +++ b/modules/queue/tasks/CleanExceptions.php @@ -31,7 +31,7 @@ * $Id: CleanExceptions.php 3539 2007-11-09 23:03:11Z andrew $ */ -include_once('./modules/queue/lib/Task.php'); +include_once(LEGACY_ROOT . '/modules/queue/lib/Task.php'); // The number of days a logged exception should be saved before it is deleted. define('EXCEPTIONS_TTL_DAYS', 7); diff --git a/modules/queue/tasks/SampleRecurring.php b/modules/queue/tasks/SampleRecurring.php index 46b422d1b..750302c72 100755 --- a/modules/queue/tasks/SampleRecurring.php +++ b/modules/queue/tasks/SampleRecurring.php @@ -26,7 +26,7 @@ * $Id: SampleRecurring.php 3539 2007-11-09 23:03:11Z andrew $ */ -include_once('./modules/queue/lib/Task.php'); +include_once(LEGACY_ROOT . '/modules/queue/lib/Task.php'); /** * This is a SAMPLE file for setting up a recurring task with the CATS diff --git a/modules/queue/tasks/SampleTask.php b/modules/queue/tasks/SampleTask.php index 8e6e3478b..1add830c6 100755 --- a/modules/queue/tasks/SampleTask.php +++ b/modules/queue/tasks/SampleTask.php @@ -31,7 +31,7 @@ * $Id: SampleTask.php 3539 2007-11-09 23:03:11Z andrew $ */ -include_once('./modules/queue/lib/Task.php'); +include_once(LEGACY_ROOT . '/modules/queue/lib/Task.php'); /** * This is a SAMPLE file for setting up a NON-recurring task with the CATS diff --git a/modules/queue/tasks/Sphinx.php b/modules/queue/tasks/Sphinx.php index f939addde..86dcad099 100755 --- a/modules/queue/tasks/Sphinx.php +++ b/modules/queue/tasks/Sphinx.php @@ -31,8 +31,8 @@ * $Id: Sphinx.php 3539 2007-11-09 23:03:11Z andrew $ */ -include_once('./modules/queue/lib/Task.php'); -include_once('./modules/asp/lib/ASPUtility.php'); +include_once(LEGACY_ROOT . '/modules/queue/lib/Task.php'); +include_once(LEGACY_ROOT . '/modules/asp/lib/ASPUtility.php'); class Sphinx extends Task { diff --git a/modules/reports/EEOReport.tpl b/modules/reports/EEOReport.tpl index 4391920bd..a90bb84b2 100755 --- a/modules/reports/EEOReport.tpl +++ b/modules/reports/EEOReport.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/reports/GraphView.tpl b/modules/reports/GraphView.tpl index 6fce1fc2b..fc41c36a3 100755 --- a/modules/reports/GraphView.tpl +++ b/modules/reports/GraphView.tpl @@ -8,7 +8,7 @@ - + active, $this->subActive); ?> diff --git a/modules/settings/AspDownloads.tpl b/modules/settings/AspDownloads.tpl index 4160e749f..2988628dd 100755 --- a/modules/settings/AspDownloads.tpl +++ b/modules/settings/AspDownloads.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?> @@ -47,7 +47,7 @@ if (isset($_GET['sendDevEmail']) && !strcmp($_GET['sendDevEmail'], 'true') && fi { if (isset($_COOKIE['CATS_firefoxToolbar']) && !strcmp($_COOKIE['CATS_firefoxToolbar'], 'true')) exit(0); - include_once('./modules/asp/lib/ASPUtility.php'); + include_once(LEGACY_ROOT . '/modules/asp/lib/ASPUtility.php'); ASPUtility::sendDevEmail( 'Firefox Download', sprintf( diff --git a/modules/settings/CareerPortalSettings.tpl b/modules/settings/CareerPortalSettings.tpl index 13f09c22d..bc4e4cb96 100755 --- a/modules/settings/CareerPortalSettings.tpl +++ b/modules/settings/CareerPortalSettings.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?> diff --git a/modules/settings/CareerPortalTemplateEdit.tpl b/modules/settings/CareerPortalTemplateEdit.tpl index e12c27032..7e1ab01e0 100755 --- a/modules/settings/CareerPortalTemplateEdit.tpl +++ b/modules/settings/CareerPortalTemplateEdit.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/ChangePassword.tpl b/modules/settings/ChangePassword.tpl index 95a2619d9..596b65bb1 100755 --- a/modules/settings/ChangePassword.tpl +++ b/modules/settings/ChangePassword.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/CustomizeCalendar.tpl b/modules/settings/CustomizeCalendar.tpl index 4a16b94c3..c38fe63b3 100755 --- a/modules/settings/CustomizeCalendar.tpl +++ b/modules/settings/CustomizeCalendar.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/CustomizeExtraFields.tpl b/modules/settings/CustomizeExtraFields.tpl index ba6307472..443caa846 100755 --- a/modules/settings/CustomizeExtraFields.tpl +++ b/modules/settings/CustomizeExtraFields.tpl @@ -1,5 +1,5 @@ - + active, ''); ?>
diff --git a/modules/settings/CustomizeReports.tpl b/modules/settings/CustomizeReports.tpl index d2f5f75d3..87eea28d8 100755 --- a/modules/settings/CustomizeReports.tpl +++ b/modules/settings/CustomizeReports.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/EEOEOCSettings.tpl b/modules/settings/EEOEOCSettings.tpl index 11c61f2f5..78526f0af 100755 --- a/modules/settings/EEOEOCSettings.tpl +++ b/modules/settings/EEOEOCSettings.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/EditUser.tpl b/modules/settings/EditUser.tpl index 6ac20f8bc..aec941560 100755 --- a/modules/settings/EditUser.tpl +++ b/modules/settings/EditUser.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/EmailSettings.tpl b/modules/settings/EmailSettings.tpl index 9b12b4f11..06cbf10fa 100755 --- a/modules/settings/EmailSettings.tpl +++ b/modules/settings/EmailSettings.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/ItemHistory.tpl b/modules/settings/ItemHistory.tpl index 07b912e98..bdf748c24 100755 --- a/modules/settings/ItemHistory.tpl +++ b/modules/settings/ItemHistory.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?> diff --git a/modules/settings/Localization.tpl b/modules/settings/Localization.tpl index 19456818a..c4d81bc6b 100755 --- a/modules/settings/Localization.tpl +++ b/modules/settings/Localization.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/MyProfile.tpl b/modules/settings/MyProfile.tpl index cb1771d0d..b777f0fba 100755 --- a/modules/settings/MyProfile.tpl +++ b/modules/settings/MyProfile.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/NewInstallWizard.tpl b/modules/settings/NewInstallWizard.tpl index cfe3b87c0..9063e71b2 100755 --- a/modules/settings/NewInstallWizard.tpl +++ b/modules/settings/NewInstallWizard.tpl @@ -5,9 +5,9 @@ CATS - Initial Configuration Wizard - + - + diff --git a/modules/settings/NewVersionCheck.tpl b/modules/settings/NewVersionCheck.tpl index 8f850db08..dbe85b369 100755 --- a/modules/settings/NewVersionCheck.tpl +++ b/modules/settings/NewVersionCheck.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/Passwords.tpl b/modules/settings/Passwords.tpl index ad8b8e535..e877bca99 100755 --- a/modules/settings/Passwords.tpl +++ b/modules/settings/Passwords.tpl @@ -1,5 +1,5 @@ - + active, $this->subActive); ?>
diff --git a/modules/settings/PreviewPageTop.tpl b/modules/settings/PreviewPageTop.tpl index c7c6e6a0d..613f6cab9 100755 --- a/modules/settings/PreviewPageTop.tpl +++ b/modules/settings/PreviewPageTop.tpl @@ -3,7 +3,7 @@ - + ', "\n"; + echo ' ', "\n"; foreach ($headIncludes as $key => $value) { diff --git a/modules/tests/Tests.tpl b/modules/tests/Tests.tpl index 289ae14b9..1735d5b2c 100755 --- a/modules/tests/Tests.tpl +++ b/modules/tests/Tests.tpl @@ -1,5 +1,5 @@ -reporter->printHeader(array('modules/tests/validator.js')); ?> +reporter->printHeader(array('js/tests/validator.js')); ?> reporter->printHeaderBlock(); ?>
diff --git a/modules/tests/TestsUI.php b/modules/tests/TestsUI.php index ba34aebd8..6eb53bdbc 100755 --- a/modules/tests/TestsUI.php +++ b/modules/tests/TestsUI.php @@ -32,16 +32,16 @@ /* SimpleTest */ error_reporting(E_ALL); /* Simpletest doesn't work with E_STRICT. */ -require_once('lib/simpletest/web_tester.php'); -require_once('lib/simpletest/unit_tester.php'); -require_once('lib/simpletest/reporter.php'); -require_once('lib/simpletest/form.php'); +require_once(LEGACY_ROOT . '/lib/simpletest/web_tester.php'); +require_once(LEGACY_ROOT . '/lib/simpletest/unit_tester.php'); +require_once(LEGACY_ROOT . '/lib/simpletest/reporter.php'); +require_once(LEGACY_ROOT . '/lib/simpletest/form.php'); /* CATS Test Framework. */ -include_once('./modules/tests/CATSTestReporter.php'); -include_once('./modules/tests/CATSWebTestCase.php'); -include_once('./modules/tests/CATSAJAXTestCase.php'); -include_once('./modules/tests/TestCaseList.php'); +include_once(LEGACY_ROOT . '/modules/tests/CATSTestReporter.php'); +include_once(LEGACY_ROOT . '/modules/tests/CATSWebTestCase.php'); +include_once(LEGACY_ROOT . '/modules/tests/CATSAJAXTestCase.php'); +include_once(LEGACY_ROOT . '/modules/tests/TestCaseList.php'); class TestsUI extends UserInterface diff --git a/modules/tests/ajax/getCandidateJobOrderID.php b/modules/tests/ajax/getCandidateJobOrderID.php index 7b068383c..6785dbfda 100755 --- a/modules/tests/ajax/getCandidateJobOrderID.php +++ b/modules/tests/ajax/getCandidateJobOrderID.php @@ -27,7 +27,7 @@ * $Id: getCandidateJobOrderID.php 1479 2007-01-17 00:22:21Z will $ */ -include_once('./lib/Pipelines.php'); +include_once(LEGACY_ROOT . '/lib/Pipelines.php'); $interface = new SecureAJAXInterface(); diff --git a/modules/tests/testcases/AJAXTests.php b/modules/tests/testcases/AJAXTests.php index f70b1641e..777260bf6 100755 --- a/modules/tests/testcases/AJAXTests.php +++ b/modules/tests/testcases/AJAXTests.php @@ -9,7 +9,7 @@ * $Id: AJAXTests.php 2380 2007-04-25 21:01:23Z will $ */ -include_once('./lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); class ActivityTest extends CATSAJAXTestCase diff --git a/modules/tests/waitForDb.php b/modules/tests/waitForDb.php index 4e4bcc5e0..c93bb0967 100644 --- a/modules/tests/waitForDb.php +++ b/modules/tests/waitForDb.php @@ -1,7 +1,7 @@ 0) diff --git a/modules/toolbar/ToolbarUI.php b/modules/toolbar/ToolbarUI.php index a0e1e4fe9..26fd7d250 100755 --- a/modules/toolbar/ToolbarUI.php +++ b/modules/toolbar/ToolbarUI.php @@ -27,12 +27,12 @@ * $Id: ToolbarUI.php 3691 2007-11-26 18:12:48Z brian $ */ -include_once('./lib/SystemInfo.php'); -include_once('./lib/Mailer.php'); -include_once('./lib/Site.php'); -include_once('./lib/Candidates.php'); -include_once('./lib/DocumentToText.php'); -include_once('./lib/License.php'); +include_once(LEGACY_ROOT . '/lib/SystemInfo.php'); +include_once(LEGACY_ROOT . '/lib/Mailer.php'); +include_once(LEGACY_ROOT . '/lib/Site.php'); +include_once(LEGACY_ROOT . '/lib/Candidates.php'); +include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); +include_once(LEGACY_ROOT . '/lib/License.php'); /* Toolbar library version. Increment to notify toolbars of an update. */ define('TOOLBAR_LIB_VERSION', 32); @@ -154,7 +154,7 @@ private function getJavaScriptLibLegacy() // FIXME: Send a JS library that just makes a button indicating that their version // is out of date. - $toolbarLibrary = @file_get_contents('./modules/toolbar/toolbarlibForLegacy.js'); + $toolbarLibrary = @file_get_contents('./js/toolbar/toolbarlibForLegacy.js'); echo $toolbarLibrary; return; } diff --git a/modules/wizard/Show.tpl b/modules/wizard/Show.tpl index 068521df5..68641b165 100755 --- a/modules/wizard/Show.tpl +++ b/modules/wizard/Show.tpl @@ -6,7 +6,7 @@ - + jsInclude != ''): ?> diff --git a/modules/wizard/WizardUI.php b/modules/wizard/WizardUI.php index 9734e9798..babf65a92 100755 --- a/modules/wizard/WizardUI.php +++ b/modules/wizard/WizardUI.php @@ -30,12 +30,12 @@ * $Id: WizardUI.php 3569 2007-11-12 15:54:44Z andrew $ */ -include_once('./lib/ActivityEntries.php'); -include_once('./lib/StringUtility.php'); -include_once('./lib/DateUtility.php'); -include_once('./lib/JobOrders.php'); -include_once('./lib/Site.php'); -include_once('./lib/CareerPortal.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/Site.php'); +include_once(LEGACY_ROOT . '/lib/CareerPortal.php'); class WizardUI extends UserInterface { diff --git a/modules/xml/XmlUI.php b/modules/xml/XmlUI.php index f50ca3499..490536a94 100755 --- a/modules/xml/XmlUI.php +++ b/modules/xml/XmlUI.php @@ -32,14 +32,14 @@ * $Id: XmlUI.php 3565 2007-11-12 09:09:22Z will $ */ -include_once('./lib/ActivityEntries.php'); -include_once('./lib/StringUtility.php'); -include_once('./lib/DateUtility.php'); -include_once('./lib/JobOrders.php'); -include_once('./lib/Site.php'); -include_once('./lib/XmlJobExport.php'); -include_once('./lib/HttpLogger.php'); -include_once('./lib/CareerPortal.php'); +include_once(LEGACY_ROOT . '/lib/ActivityEntries.php'); +include_once(LEGACY_ROOT . '/lib/StringUtility.php'); +include_once(LEGACY_ROOT . '/lib/DateUtility.php'); +include_once(LEGACY_ROOT . '/lib/JobOrders.php'); +include_once(LEGACY_ROOT . '/lib/Site.php'); +include_once(LEGACY_ROOT . '/lib/XmlJobExport.php'); +include_once(LEGACY_ROOT . '/lib/HttpLogger.php'); +include_once(LEGACY_ROOT . '/lib/CareerPortal.php'); define('XTPL_HEADER_STRING', 'header'); define('XTPL_FOOTER_STRING', 'footer'); diff --git a/optional-updates/latest-sphinx-search/Search.php b/optional-updates/latest-sphinx-search/Search.php index 2a1e794d8..6a2b48948 100644 --- a/optional-updates/latest-sphinx-search/Search.php +++ b/optional-updates/latest-sphinx-search/Search.php @@ -30,8 +30,8 @@ * @version $Id: Search.php 3587 2007-11-13 03:55:57Z will $ */ -include_once('./lib/Pager.php'); -include_once('./lib/DatabaseSearch.php'); +include_once(LEGACY_ROOT . '/lib/Pager.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseSearch.php'); if (ENABLE_SPHINX) { @@ -2437,7 +2437,7 @@ protected function fatal($error) { $template = new Template(); $template->assign('errorMessage', $error); - $template->display('./Error.tpl'); + $template->display('Error.tpl'); die(); } } diff --git a/rebuild_old_docs.php b/rebuild_old_docs.php index bb6973ce1..2cba2ec3e 100644 --- a/rebuild_old_docs.php +++ b/rebuild_old_docs.php @@ -17,7 +17,7 @@ function rebuild_old_docs() { $result = mysql_query('SELECT * FROM `attachment` WHERE `text` IS NULL'); - include_once('./lib/DocumentToText.php'); + include_once(LEGACY_ROOT . '/lib/DocumentToText.php'); $countOK = 0; $countError = 0; diff --git a/rss/index.php b/rss/index.php index d26c377f1..e72ab738f 100644 --- a/rss/index.php +++ b/rss/index.php @@ -34,7 +34,7 @@ $rssPage = true; chdir('..'); -include_once('./lib/CATSUtility.php'); +include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); include_once(CATSUtility::getIndexName()); ?> diff --git a/scripts/makeBackup.php b/scripts/makeBackup.php index d10089b38..e6a70579f 100755 --- a/scripts/makeBackup.php +++ b/scripts/makeBackup.php @@ -54,10 +54,10 @@ $CATSHome = realpath(dirname(__FILE__) . '/../'); chdir($CATSHome); - include_once('./config.php'); - include_once('./constants.php'); - include_once('./lib/DatabaseConnection.php'); - include_once('modules/install/backupDB.php'); + include_once(LEGACY_ROOT . '/config.php'); + include_once(LEGACY_ROOT . '/constants.php'); + include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); + include_once(LEGACY_ROOT . '/modules/install/backupDB.php'); makeBackup((int) $_SERVER['argv'][1], BACKUP_CATS); } @@ -67,10 +67,10 @@ fwrite($stderr, "Site ID is usually 1.\n"); } -include_once('./config.php'); -include_once('./constants.php'); -include_once('./lib/DatabaseConnection.php'); -include_once('modules/install/backupDB.php'); +include_once(LEGACY_ROOT . '/config.php'); +include_once(LEGACY_ROOT . '/constants.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); +include_once(LEGACY_ROOT . '/modules/install/backupDB.php'); function makeBackup($siteID, $backupType = BACKUP_TAR, $logFile = null) { @@ -274,7 +274,7 @@ function dumpAttachments($db, $directory, $siteID) if (file_exists('modules/s3storage')) { - include_once('modules/s3storage/lib.php'); + include_once(LEGACY_ROOT . '/modules/s3storage/lib.php'); $s3storage = new S3Storage(); $s3storage->getTemporarilyFromS3Storage($row['attachment_id']); diff --git a/src/OpenCATS/Entity/CompanyRepository.php b/src/OpenCATS/Entity/CompanyRepository.php index 1642dd571..cc87a0ded 100644 --- a/src/OpenCATS/Entity/CompanyRepository.php +++ b/src/OpenCATS/Entity/CompanyRepository.php @@ -2,7 +2,7 @@ namespace OpenCATS\Entity; use OpenCATS\Entity\Company; -include_once('./lib/History.php'); +include_once(LEGACY_ROOT . '/lib/History.php'); class CompanyRepository { diff --git a/src/OpenCATS/Entity/JobOrderRepository.php b/src/OpenCATS/Entity/JobOrderRepository.php index 5ab98878e..d26611794 100644 --- a/src/OpenCATS/Entity/JobOrderRepository.php +++ b/src/OpenCATS/Entity/JobOrderRepository.php @@ -3,7 +3,7 @@ use OpenCATS\Entity\JobOrder; use OpenCATS\Entity\JobOrderRepositoryException; -include_once('./lib/History.php'); +include_once(LEGACY_ROOT . '/lib/History.php'); // FIXME: It's way too similar to CompanyRepository // Remove duplicated code diff --git a/src/OpenCATS/Tests/IntegrationTests/DatabaseSearchTest.php b/src/OpenCATS/Tests/IntegrationTests/DatabaseSearchTest.php index 288977df1..f9c905124 100644 --- a/src/OpenCATS/Tests/IntegrationTests/DatabaseSearchTest.php +++ b/src/OpenCATS/Tests/IntegrationTests/DatabaseSearchTest.php @@ -5,7 +5,7 @@ use DatabaseConnection; use DatabaseSearch; -include_once('./lib/DatabaseSearch.php'); +include_once(LEGACY_ROOT . '/lib/DatabaseSearch.php'); class DatabaseSearchTest extends DatabaseTestCase { diff --git a/src/OpenCATS/Tests/IntegrationTests/DatabaseTestCase.php b/src/OpenCATS/Tests/IntegrationTests/DatabaseTestCase.php index 2f71d5295..b08df2c2f 100644 --- a/src/OpenCATS/Tests/IntegrationTests/DatabaseTestCase.php +++ b/src/OpenCATS/Tests/IntegrationTests/DatabaseTestCase.php @@ -11,12 +11,12 @@ function setUp() { global $mySQLConnection; parent::setUp(); - include_once('./constants.php'); + include_once(LEGACY_ROOT . '/constants.php'); define('DATABASE_NAME', 'cats_integrationtest'); define('DATABASE_HOST', 'integrationtestdb'); - include_once('./config.php'); - include_once('./lib/DatabaseConnection.php'); + include_once(LEGACY_ROOT . '/config.php'); + include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); $mySQLConnection = @mysql_connect( DATABASE_HOST, DATABASE_USER, DATABASE_PASS ); diff --git a/src/OpenCATS/Tests/UnitTests/AJAXInterfaceTest.php b/src/OpenCATS/Tests/UnitTests/AJAXInterfaceTest.php index 56dab4958..d3325c0fc 100644 --- a/src/OpenCATS/Tests/UnitTests/AJAXInterfaceTest.php +++ b/src/OpenCATS/Tests/UnitTests/AJAXInterfaceTest.php @@ -1,7 +1,7 @@ From 0929119a58b9a2dc7bf7a6d305ab19570a0a0160 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Wed, 7 Dec 2016 08:22:22 -0300 Subject: [PATCH 005/178] Include and enable opcache --- docker/php/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile index 7a88848d1..55f8d521b 100644 --- a/docker/php/Dockerfile +++ b/docker/php/Dockerfile @@ -20,7 +20,7 @@ RUN cd ~ && \ ./configure && \ make && \ make install -RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install -j5 mysql gd ldap soap zip +RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install -j5 mysql gd ldap soap zip opcache ADD scripts/install-composer.sh /opt/install-composer.sh RUN dos2unix /opt/install-composer.sh && \ chmod +x /opt/install-composer.sh && \ From 1369407ddf366b601c80f166db4a3b82981f33c3 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Wed, 7 Dec 2016 08:23:04 -0300 Subject: [PATCH 006/178] Some fixes to make the legacy code run wrapped by Symfony --- .../AppBundle/Controller/LegacyController.php | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/code/src/AppBundle/Controller/LegacyController.php b/code/src/AppBundle/Controller/LegacyController.php index 5987ac382..120cf559c 100644 --- a/code/src/AppBundle/Controller/LegacyController.php +++ b/code/src/AppBundle/Controller/LegacyController.php @@ -9,6 +9,14 @@ class LegacyController extends Controller { + /** + * @Route("/", name="_proxyIndex") + */ + public function proxyIndexAction() + { + return $this->proxyAction('index'); + } + /** * @Route("/{fileName}.php", name="_proxy", requirements={"fileName":"\w+"}) */ @@ -71,8 +79,8 @@ public function proxyAction($fileName) header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); -// This function assures to strip the values from -// request arrays even if as values are arrays not only values + // This function assures to strip the values from + // request arrays even if as values are arrays not only values function stripslashes_deep($value) { $value = is_array($value) ? @@ -94,9 +102,9 @@ function stripslashes_deep($value) $_GET = array_map('stripslashes_deep', $_GET); $_POST = array_map('stripslashes_deep', $_POST); $_REQUEST = array_map('stripslashes_deep', $_REQUEST); - $_GET = ArrayUtility::arrayMapKeys('stripslashes_deep', $_GET); - $_POST = ArrayUtility::arrayMapKeys('stripslashes_deep', $_POST); - $_REQUEST = ArrayUtility::arrayMapKeys('stripslashes_deep', $_REQUEST); + $_GET = \ArrayUtility::arrayMapKeys('stripslashes_deep', $_GET); + $_POST = \ArrayUtility::arrayMapKeys('stripslashes_deep', $_POST); + $_REQUEST = \ArrayUtility::arrayMapKeys('stripslashes_deep', $_REQUEST); } /* Objects can't be stored in the session if session.auto_start is enabled. */ if (ini_get('session.auto_start') !== '0' && @@ -139,7 +147,7 @@ function stripslashes_deep($value) !(isset($rssPage) && $rssPage) && !(isset($xmlPage) && $xmlPage) && (!isset($_GET['m']) || empty($_GET['m'])) && - (Asp::getSubDomain() == '' || isset($_GET['a']))) + (\Asp::getSubDomain() == '' || isset($_GET['a']))) { \ModuleUtility::loadModule('website'); exit(1); @@ -218,7 +226,7 @@ function stripslashes_deep($value) { $_SESSION['CATS']->logPageView(); - if (!eval(Hooks::get('INDEX_LOAD_HOME'))) return; + if (!eval(\Hooks::get('INDEX_LOAD_HOME'))) return; \ModuleUtility::loadModule('home'); } From 6873a298a85cdd98455424827ec5850c5624ed8a Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Wed, 7 Dec 2016 08:23:24 -0300 Subject: [PATCH 007/178] Make legacy session usage compatible with Symfony --- code/app/config/config.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/app/config/config.yml b/code/app/config/config.yml index 48b4022fd..723feaf99 100644 --- a/code/app/config/config.yml +++ b/code/app/config/config.yml @@ -26,15 +26,17 @@ framework: trusted_proxies: ~ session: # http://symfony.com/doc/current/reference/configuration/framework.html#handler-id - handler_id: session.handler.native_file - save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" + # handler_id: session.handler.native_file + # save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" + storage_id: session.storage.php_bridge + handler_id: session.handler.native_file + fragments: ~ http_method_override: true assets: ~ php_errors: log: true - # Twig Configuration twig: debug: "%kernel.debug%" From a4900985addec93641ecf57f1e743d1fa7bce1d4 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Wed, 7 Dec 2016 08:33:44 -0300 Subject: [PATCH 008/178] Move ckeditor to public web folder --- ckeditor/skins/moono/dialog.css | 5 - ckeditor/skins/moono/dialog_ie.css | 5 - ckeditor/skins/moono/dialog_ie7.css | 5 - ckeditor/skins/moono/dialog_ie8.css | 5 - ckeditor/skins/moono/dialog_iequirks.css | 5 - ckeditor/skins/moono/editor.css | 5 - ckeditor/skins/moono/editor_ie.css | 5 - ckeditor/skins/moono/editor_ie7.css | 5 - ckeditor/skins/moono/editor_ie8.css | 5 - ckeditor/skins/moono/editor_iequirks.css | 5 - {ckeditor => code/web/ckeditor}/.htaccess | 48 +- {ckeditor => code/web/ckeditor}/CHANGES.html | 1076 +++--- {ckeditor => code/web/ckeditor}/CHANGES.md | 2236 +++++------ {ckeditor => code/web/ckeditor}/INSTALL.html | 184 +- {ckeditor => code/web/ckeditor}/LICENSE.html | 2668 +++++++------- {ckeditor => code/web/ckeditor}/LICENSE.md | 2840 +++++++------- {ckeditor => code/web/ckeditor}/README.md | 0 .../web/ckeditor}/adapters/jquery.js | 0 .../web/ckeditor}/build-config.js | 102 +- {ckeditor => code/web/ckeditor}/ckeditor.js | 0 {ckeditor => code/web/ckeditor}/ckeditor.pack | 410 +-- {ckeditor => code/web/ckeditor}/ckeditor.php | 58 +- .../web/ckeditor}/ckeditor_basic.js | 16 +- .../web/ckeditor}/ckeditor_basic_source.js | 40 +- .../web/ckeditor}/ckeditor_php4.php | 1186 +++--- .../web/ckeditor}/ckeditor_php5.php | 1166 +++--- .../web/ckeditor}/ckeditor_source.js | 50 +- {ckeditor => code/web/ckeditor}/config.js | 0 {ckeditor => code/web/ckeditor}/contents.css | 270 +- {ckeditor => code/web/ckeditor}/lang/af.js | 6 +- {ckeditor => code/web/ckeditor}/lang/ar.js | 6 +- {ckeditor => code/web/ckeditor}/lang/bg.js | 6 +- {ckeditor => code/web/ckeditor}/lang/bn.js | 6 +- {ckeditor => code/web/ckeditor}/lang/bs.js | 6 +- {ckeditor => code/web/ckeditor}/lang/ca.js | 6 +- {ckeditor => code/web/ckeditor}/lang/cs.js | 6 +- {ckeditor => code/web/ckeditor}/lang/cy.js | 6 +- {ckeditor => code/web/ckeditor}/lang/da.js | 6 +- {ckeditor => code/web/ckeditor}/lang/de-ch.js | 6 +- {ckeditor => code/web/ckeditor}/lang/de.js | 6 +- {ckeditor => code/web/ckeditor}/lang/el.js | 6 +- {ckeditor => code/web/ckeditor}/lang/en-au.js | 6 +- {ckeditor => code/web/ckeditor}/lang/en-ca.js | 6 +- {ckeditor => code/web/ckeditor}/lang/en-gb.js | 6 +- {ckeditor => code/web/ckeditor}/lang/en.js | 6 +- {ckeditor => code/web/ckeditor}/lang/eo.js | 6 +- {ckeditor => code/web/ckeditor}/lang/es.js | 6 +- {ckeditor => code/web/ckeditor}/lang/et.js | 6 +- {ckeditor => code/web/ckeditor}/lang/eu.js | 6 +- {ckeditor => code/web/ckeditor}/lang/fa.js | 6 +- {ckeditor => code/web/ckeditor}/lang/fi.js | 6 +- {ckeditor => code/web/ckeditor}/lang/fo.js | 6 +- {ckeditor => code/web/ckeditor}/lang/fr-ca.js | 6 +- {ckeditor => code/web/ckeditor}/lang/fr.js | 6 +- {ckeditor => code/web/ckeditor}/lang/gl.js | 6 +- {ckeditor => code/web/ckeditor}/lang/gu.js | 6 +- {ckeditor => code/web/ckeditor}/lang/he.js | 6 +- {ckeditor => code/web/ckeditor}/lang/hi.js | 6 +- {ckeditor => code/web/ckeditor}/lang/hr.js | 6 +- {ckeditor => code/web/ckeditor}/lang/hu.js | 6 +- {ckeditor => code/web/ckeditor}/lang/id.js | 6 +- {ckeditor => code/web/ckeditor}/lang/is.js | 6 +- {ckeditor => code/web/ckeditor}/lang/it.js | 6 +- {ckeditor => code/web/ckeditor}/lang/ja.js | 6 +- {ckeditor => code/web/ckeditor}/lang/ka.js | 6 +- {ckeditor => code/web/ckeditor}/lang/km.js | 6 +- {ckeditor => code/web/ckeditor}/lang/ko.js | 6 +- {ckeditor => code/web/ckeditor}/lang/ku.js | 6 +- {ckeditor => code/web/ckeditor}/lang/lt.js | 6 +- {ckeditor => code/web/ckeditor}/lang/lv.js | 6 +- {ckeditor => code/web/ckeditor}/lang/mk.js | 6 +- {ckeditor => code/web/ckeditor}/lang/mn.js | 6 +- {ckeditor => code/web/ckeditor}/lang/ms.js | 6 +- {ckeditor => code/web/ckeditor}/lang/nb.js | 6 +- {ckeditor => code/web/ckeditor}/lang/nl.js | 6 +- {ckeditor => code/web/ckeditor}/lang/no.js | 6 +- {ckeditor => code/web/ckeditor}/lang/pl.js | 6 +- {ckeditor => code/web/ckeditor}/lang/pt-br.js | 6 +- {ckeditor => code/web/ckeditor}/lang/pt.js | 6 +- {ckeditor => code/web/ckeditor}/lang/ro.js | 6 +- {ckeditor => code/web/ckeditor}/lang/ru.js | 6 +- {ckeditor => code/web/ckeditor}/lang/si.js | 6 +- {ckeditor => code/web/ckeditor}/lang/sk.js | 6 +- {ckeditor => code/web/ckeditor}/lang/sl.js | 6 +- {ckeditor => code/web/ckeditor}/lang/sq.js | 6 +- .../web/ckeditor}/lang/sr-latn.js | 6 +- {ckeditor => code/web/ckeditor}/lang/sr.js | 6 +- {ckeditor => code/web/ckeditor}/lang/sv.js | 6 +- {ckeditor => code/web/ckeditor}/lang/th.js | 6 +- {ckeditor => code/web/ckeditor}/lang/tr.js | 6 +- {ckeditor => code/web/ckeditor}/lang/tt.js | 6 +- {ckeditor => code/web/ckeditor}/lang/ug.js | 6 +- {ckeditor => code/web/ckeditor}/lang/uk.js | 6 +- {ckeditor => code/web/ckeditor}/lang/vi.js | 6 +- {ckeditor => code/web/ckeditor}/lang/zh-cn.js | 6 +- {ckeditor => code/web/ckeditor}/lang/zh.js | 6 +- .../plugins/a11yhelp/dialogs/a11yhelp.js | 0 .../dialogs/lang/_translationstatus.txt | 50 +- .../plugins/a11yhelp/dialogs/lang/af.js | 0 .../plugins/a11yhelp/dialogs/lang/ar.js | 0 .../plugins/a11yhelp/dialogs/lang/bg.js | 0 .../plugins/a11yhelp/dialogs/lang/ca.js | 0 .../plugins/a11yhelp/dialogs/lang/cs.js | 0 .../plugins/a11yhelp/dialogs/lang/cy.js | 0 .../plugins/a11yhelp/dialogs/lang/da.js | 0 .../plugins/a11yhelp/dialogs/lang/de-ch.js | 0 .../plugins/a11yhelp/dialogs/lang/de.js | 0 .../plugins/a11yhelp/dialogs/lang/el.js | 0 .../plugins/a11yhelp/dialogs/lang/en-gb.js | 0 .../plugins/a11yhelp/dialogs/lang/en.js | 0 .../plugins/a11yhelp/dialogs/lang/eo.js | 0 .../plugins/a11yhelp/dialogs/lang/es.js | 0 .../plugins/a11yhelp/dialogs/lang/et.js | 0 .../plugins/a11yhelp/dialogs/lang/eu.js | 0 .../plugins/a11yhelp/dialogs/lang/fa.js | 0 .../plugins/a11yhelp/dialogs/lang/fi.js | 0 .../plugins/a11yhelp/dialogs/lang/fo.js | 0 .../plugins/a11yhelp/dialogs/lang/fr-ca.js | 0 .../plugins/a11yhelp/dialogs/lang/fr.js | 0 .../plugins/a11yhelp/dialogs/lang/gl.js | 0 .../plugins/a11yhelp/dialogs/lang/gu.js | 0 .../plugins/a11yhelp/dialogs/lang/he.js | 0 .../plugins/a11yhelp/dialogs/lang/hi.js | 0 .../plugins/a11yhelp/dialogs/lang/hr.js | 0 .../plugins/a11yhelp/dialogs/lang/hu.js | 0 .../plugins/a11yhelp/dialogs/lang/id.js | 0 .../plugins/a11yhelp/dialogs/lang/it.js | 0 .../plugins/a11yhelp/dialogs/lang/ja.js | 0 .../plugins/a11yhelp/dialogs/lang/km.js | 0 .../plugins/a11yhelp/dialogs/lang/ko.js | 0 .../plugins/a11yhelp/dialogs/lang/ku.js | 0 .../plugins/a11yhelp/dialogs/lang/lt.js | 0 .../plugins/a11yhelp/dialogs/lang/lv.js | 0 .../plugins/a11yhelp/dialogs/lang/mk.js | 0 .../plugins/a11yhelp/dialogs/lang/mn.js | 0 .../plugins/a11yhelp/dialogs/lang/nb.js | 0 .../plugins/a11yhelp/dialogs/lang/nl.js | 0 .../plugins/a11yhelp/dialogs/lang/no.js | 0 .../plugins/a11yhelp/dialogs/lang/pl.js | 0 .../plugins/a11yhelp/dialogs/lang/pt-br.js | 0 .../plugins/a11yhelp/dialogs/lang/pt.js | 0 .../plugins/a11yhelp/dialogs/lang/ro.js | 0 .../plugins/a11yhelp/dialogs/lang/ru.js | 0 .../plugins/a11yhelp/dialogs/lang/si.js | 0 .../plugins/a11yhelp/dialogs/lang/sk.js | 0 .../plugins/a11yhelp/dialogs/lang/sl.js | 0 .../plugins/a11yhelp/dialogs/lang/sq.js | 0 .../plugins/a11yhelp/dialogs/lang/sr-latn.js | 0 .../plugins/a11yhelp/dialogs/lang/sr.js | 0 .../plugins/a11yhelp/dialogs/lang/sv.js | 0 .../plugins/a11yhelp/dialogs/lang/th.js | 0 .../plugins/a11yhelp/dialogs/lang/tr.js | 0 .../plugins/a11yhelp/dialogs/lang/tt.js | 0 .../plugins/a11yhelp/dialogs/lang/ug.js | 0 .../plugins/a11yhelp/dialogs/lang/uk.js | 0 .../plugins/a11yhelp/dialogs/lang/vi.js | 0 .../plugins/a11yhelp/dialogs/lang/zh-cn.js | 0 .../plugins/a11yhelp/dialogs/lang/zh.js | 0 .../ckeditor}/plugins/about/dialogs/about.js | 0 .../about/dialogs/hidpi/logo_ckeditor.png | Bin .../plugins/about/dialogs/logo_ckeditor.png | Bin .../plugins/clipboard/dialogs/paste.js | 0 .../plugins/dialog/dialogDefinition.js | 0 .../web/ckeditor}/plugins/icons.png | Bin .../web/ckeditor}/plugins/icons_hidpi.png | Bin .../ckeditor}/plugins/image/dialogs/image.js | 0 .../plugins/image/images/noimage.png | Bin .../ckeditor}/plugins/link/dialogs/anchor.js | 0 .../ckeditor}/plugins/link/dialogs/link.js | 0 .../ckeditor}/plugins/link/images/anchor.png | Bin .../plugins/link/images/hidpi/anchor.png | Bin .../magicline/images/hidpi/icon-rtl.png | Bin .../plugins/magicline/images/hidpi/icon.png | Bin .../plugins/magicline/images/icon-rtl.png | Bin .../plugins/magicline/images/icon.png | Bin .../plugins/pastefromword/filter/default.js | 0 .../web/ckeditor}/plugins/scayt/CHANGELOG.md | 40 +- .../web/ckeditor}/plugins/scayt/LICENSE.md | 56 +- .../web/ckeditor}/plugins/scayt/README.md | 50 +- .../plugins/scayt/dialogs/options.js | 0 .../plugins/scayt/dialogs/toolbar.css | 142 +- .../dialogs/lang/_translationstatus.txt | 40 +- .../plugins/specialchar/dialogs/lang/af.js | 0 .../plugins/specialchar/dialogs/lang/ar.js | 0 .../plugins/specialchar/dialogs/lang/bg.js | 0 .../plugins/specialchar/dialogs/lang/ca.js | 0 .../plugins/specialchar/dialogs/lang/cs.js | 0 .../plugins/specialchar/dialogs/lang/cy.js | 0 .../plugins/specialchar/dialogs/lang/da.js | 0 .../plugins/specialchar/dialogs/lang/de-ch.js | 0 .../plugins/specialchar/dialogs/lang/de.js | 0 .../plugins/specialchar/dialogs/lang/el.js | 0 .../plugins/specialchar/dialogs/lang/en-gb.js | 0 .../plugins/specialchar/dialogs/lang/en.js | 0 .../plugins/specialchar/dialogs/lang/eo.js | 0 .../plugins/specialchar/dialogs/lang/es.js | 0 .../plugins/specialchar/dialogs/lang/et.js | 0 .../plugins/specialchar/dialogs/lang/eu.js | 0 .../plugins/specialchar/dialogs/lang/fa.js | 0 .../plugins/specialchar/dialogs/lang/fi.js | 0 .../plugins/specialchar/dialogs/lang/fr-ca.js | 0 .../plugins/specialchar/dialogs/lang/fr.js | 0 .../plugins/specialchar/dialogs/lang/gl.js | 0 .../plugins/specialchar/dialogs/lang/he.js | 0 .../plugins/specialchar/dialogs/lang/hr.js | 0 .../plugins/specialchar/dialogs/lang/hu.js | 0 .../plugins/specialchar/dialogs/lang/id.js | 0 .../plugins/specialchar/dialogs/lang/it.js | 0 .../plugins/specialchar/dialogs/lang/ja.js | 0 .../plugins/specialchar/dialogs/lang/km.js | 0 .../plugins/specialchar/dialogs/lang/ko.js | 0 .../plugins/specialchar/dialogs/lang/ku.js | 0 .../plugins/specialchar/dialogs/lang/lt.js | 0 .../plugins/specialchar/dialogs/lang/lv.js | 0 .../plugins/specialchar/dialogs/lang/nb.js | 0 .../plugins/specialchar/dialogs/lang/nl.js | 0 .../plugins/specialchar/dialogs/lang/no.js | 0 .../plugins/specialchar/dialogs/lang/pl.js | 0 .../plugins/specialchar/dialogs/lang/pt-br.js | 0 .../plugins/specialchar/dialogs/lang/pt.js | 0 .../plugins/specialchar/dialogs/lang/ru.js | 0 .../plugins/specialchar/dialogs/lang/si.js | 0 .../plugins/specialchar/dialogs/lang/sk.js | 0 .../plugins/specialchar/dialogs/lang/sl.js | 0 .../plugins/specialchar/dialogs/lang/sq.js | 0 .../plugins/specialchar/dialogs/lang/sv.js | 0 .../plugins/specialchar/dialogs/lang/th.js | 0 .../plugins/specialchar/dialogs/lang/tr.js | 0 .../plugins/specialchar/dialogs/lang/tt.js | 0 .../plugins/specialchar/dialogs/lang/ug.js | 0 .../plugins/specialchar/dialogs/lang/uk.js | 0 .../plugins/specialchar/dialogs/lang/vi.js | 0 .../plugins/specialchar/dialogs/lang/zh-cn.js | 0 .../plugins/specialchar/dialogs/lang/zh.js | 0 .../specialchar/dialogs/specialchar.js | 0 .../ckeditor}/plugins/table/dialogs/table.js | 0 .../plugins/tabletools/dialogs/tableCell.js | 0 .../web/ckeditor}/plugins/wsc/LICENSE.md | 56 +- .../web/ckeditor}/plugins/wsc/README.md | 50 +- .../plugins/wsc/dialogs/ciframe.html | 132 +- .../plugins/wsc/dialogs/tmpFrameset.html | 104 +- .../web/ckeditor}/plugins/wsc/dialogs/wsc.css | 164 +- .../web/ckeditor}/plugins/wsc/dialogs/wsc.js | 0 .../ckeditor}/plugins/wsc/dialogs/wsc_ie.js | 0 .../web/ckeditor}/samples/css/samples.css | 3280 ++++++++--------- .../web/ckeditor}/samples/img/github-top.png | Bin .../web/ckeditor}/samples/img/header-bg.png | Bin .../samples/img/header-separator.png | Bin .../web/ckeditor}/samples/img/logo.png | Bin .../ckeditor}/samples/img/navigation-tip.png | Bin .../web/ckeditor}/samples/index.html | 256 +- .../web/ckeditor}/samples/js/sample.js | 106 +- .../web/ckeditor}/samples/js/sf.js | 0 .../web/ckeditor}/samples/old/ajax.html | 170 +- .../web/ckeditor}/samples/old/api.html | 420 +-- .../web/ckeditor}/samples/old/appendto.html | 118 +- .../samples/old/assets/inlineall/logo.png | Bin .../old/assets/outputxhtml/outputxhtml.css | 408 +- .../samples/old/assets/posteddata.php | 118 +- .../ckeditor}/samples/old/assets/sample.jpg | Bin .../old/assets/uilanguages/languages.js | 0 .../ckeditor}/samples/old/datafiltering.html | 1016 ++--- .../samples/old/dialog/assets/my_dialog.js | 96 +- .../ckeditor}/samples/old/dialog/dialog.html | 380 +- .../web/ckeditor}/samples/old/divreplace.html | 288 +- .../samples/old/enterkey/enterkey.html | 212 +- .../assets/outputforflash/outputforflash.fla | Bin .../assets/outputforflash/outputforflash.swf | Bin .../assets/outputforflash/swfobject.js | 0 .../old/htmlwriter/outputforflash.html | 566 +-- .../samples/old/htmlwriter/outputhtml.html | 448 +-- .../web/ckeditor}/samples/old/index.html | 218 +- .../web/ckeditor}/samples/old/inlineall.html | 628 ++-- .../ckeditor}/samples/old/inlinebycode.html | 248 +- .../ckeditor}/samples/old/inlinetextarea.html | 226 +- .../web/ckeditor}/samples/old/jquery.html | 206 +- .../samples/old/magicline/magicline.html | 418 +-- .../web/ckeditor}/samples/old/readonly.html | 152 +- .../ckeditor}/samples/old/replacebyclass.html | 120 +- .../ckeditor}/samples/old/replacebycode.html | 118 +- .../web/ckeditor}/samples/old/sample.css | 714 ++-- .../web/ckeditor}/samples/old/sample.js | 100 +- .../samples/old/sample_posteddata.php | 32 +- .../web/ckeditor}/samples/old/tabindex.html | 156 +- .../samples/old/toolbar/toolbar.html | 470 +-- .../web/ckeditor}/samples/old/uicolor.html | 144 +- .../ckeditor}/samples/old/uilanguages.html | 244 +- .../samples/old/wysiwygarea/fullpage.html | 160 +- .../web/ckeditor}/samples/old/xhtmlstyle.html | 468 +-- .../toolbarconfigurator/css/fontello.css | 110 +- .../toolbarconfigurator/font/LICENSE.txt | 20 +- .../toolbarconfigurator/font/config.json | 0 .../toolbarconfigurator/font/fontello.eot | Bin .../toolbarconfigurator/font/fontello.svg | 0 .../toolbarconfigurator/font/fontello.ttf | Bin .../toolbarconfigurator/font/fontello.woff | Bin .../samples/toolbarconfigurator/index.html | 892 ++--- .../js/abstracttoolbarmodifier.js | 0 .../js/fulltoolbareditor.js | 0 .../toolbarconfigurator/js/toolbarmodifier.js | 0 .../js/toolbartextmodifier.js | 0 .../lib/codemirror/LICENSE | 0 .../lib/codemirror/codemirror.css | 650 ++-- .../lib/codemirror/codemirror.js | 0 .../lib/codemirror/javascript.js | 0 .../lib/codemirror/neo.css | 72 +- .../lib/codemirror/show-hint.css | 76 +- .../lib/codemirror/show-hint.js | 0 code/web/ckeditor/skins/moono/dialog.css | 5 + code/web/ckeditor/skins/moono/dialog_ie.css | 5 + code/web/ckeditor/skins/moono/dialog_ie7.css | 5 + code/web/ckeditor/skins/moono/dialog_ie8.css | 5 + .../ckeditor/skins/moono/dialog_iequirks.css | 5 + code/web/ckeditor/skins/moono/editor.css | 5 + .../web/ckeditor/skins/moono/editor_gecko.css | 5 + code/web/ckeditor/skins/moono/editor_ie.css | 5 + .../web/ckeditor/skins/moono/editor_ie7.css | 10 +- code/web/ckeditor/skins/moono/editor_ie8.css | 5 + .../ckeditor/skins/moono/editor_iequirks.css | 5 + .../web/ckeditor}/skins/moono/icons.png | Bin .../web/ckeditor}/skins/moono/icons_hidpi.png | Bin .../ckeditor}/skins/moono/images/arrow.png | Bin .../ckeditor}/skins/moono/images/close.png | Bin .../skins/moono/images/hidpi/close.png | Bin .../skins/moono/images/hidpi/lock-open.png | Bin .../skins/moono/images/hidpi/lock.png | Bin .../skins/moono/images/hidpi/refresh.png | Bin .../skins/moono/images/lock-open.png | Bin .../web/ckeditor}/skins/moono/images/lock.png | Bin .../ckeditor}/skins/moono/images/refresh.png | Bin .../ckeditor}/skins/moono/images/spinner.gif | Bin .../web/ckeditor}/skins/moono/readme.md | 98 +- {ckeditor => code/web/ckeditor}/styles.js | 222 +- 333 files changed, 14295 insertions(+), 14295 deletions(-) delete mode 100644 ckeditor/skins/moono/dialog.css delete mode 100644 ckeditor/skins/moono/dialog_ie.css delete mode 100644 ckeditor/skins/moono/dialog_ie7.css delete mode 100644 ckeditor/skins/moono/dialog_ie8.css delete mode 100644 ckeditor/skins/moono/dialog_iequirks.css delete mode 100644 ckeditor/skins/moono/editor.css delete mode 100644 ckeditor/skins/moono/editor_ie.css delete mode 100644 ckeditor/skins/moono/editor_ie7.css delete mode 100644 ckeditor/skins/moono/editor_ie8.css delete mode 100644 ckeditor/skins/moono/editor_iequirks.css rename {ckeditor => code/web/ckeditor}/.htaccess (96%) rename {ckeditor => code/web/ckeditor}/CHANGES.html (98%) rename {ckeditor => code/web/ckeditor}/CHANGES.md (99%) rename {ckeditor => code/web/ckeditor}/INSTALL.html (96%) rename {ckeditor => code/web/ckeditor}/LICENSE.html (98%) rename {ckeditor => code/web/ckeditor}/LICENSE.md (98%) rename {ckeditor => code/web/ckeditor}/README.md (100%) rename {ckeditor => code/web/ckeditor}/adapters/jquery.js (100%) rename {ckeditor => code/web/ckeditor}/build-config.js (98%) rename {ckeditor => code/web/ckeditor}/ckeditor.js (100%) rename {ckeditor => code/web/ckeditor}/ckeditor.pack (97%) rename {ckeditor => code/web/ckeditor}/ckeditor.php (96%) rename {ckeditor => code/web/ckeditor}/ckeditor_basic.js (99%) rename {ckeditor => code/web/ckeditor}/ckeditor_basic_source.js (98%) rename {ckeditor => code/web/ckeditor}/ckeditor_php4.php (96%) rename {ckeditor => code/web/ckeditor}/ckeditor_php5.php (96%) rename {ckeditor => code/web/ckeditor}/ckeditor_source.js (98%) rename {ckeditor => code/web/ckeditor}/config.js (100%) rename {ckeditor => code/web/ckeditor}/contents.css (93%) rename {ckeditor => code/web/ckeditor}/lang/af.js (99%) rename {ckeditor => code/web/ckeditor}/lang/ar.js (99%) rename {ckeditor => code/web/ckeditor}/lang/bg.js (99%) rename {ckeditor => code/web/ckeditor}/lang/bn.js (99%) rename {ckeditor => code/web/ckeditor}/lang/bs.js (99%) rename {ckeditor => code/web/ckeditor}/lang/ca.js (99%) rename {ckeditor => code/web/ckeditor}/lang/cs.js (99%) rename {ckeditor => code/web/ckeditor}/lang/cy.js (99%) rename {ckeditor => code/web/ckeditor}/lang/da.js (99%) rename {ckeditor => code/web/ckeditor}/lang/de-ch.js (99%) rename {ckeditor => code/web/ckeditor}/lang/de.js (99%) rename {ckeditor => code/web/ckeditor}/lang/el.js (99%) rename {ckeditor => code/web/ckeditor}/lang/en-au.js (99%) rename {ckeditor => code/web/ckeditor}/lang/en-ca.js (99%) rename {ckeditor => code/web/ckeditor}/lang/en-gb.js (99%) rename {ckeditor => code/web/ckeditor}/lang/en.js (99%) rename {ckeditor => code/web/ckeditor}/lang/eo.js (99%) rename {ckeditor => code/web/ckeditor}/lang/es.js (99%) rename {ckeditor => code/web/ckeditor}/lang/et.js (99%) rename {ckeditor => code/web/ckeditor}/lang/eu.js (99%) rename {ckeditor => code/web/ckeditor}/lang/fa.js (99%) rename {ckeditor => code/web/ckeditor}/lang/fi.js (99%) rename {ckeditor => code/web/ckeditor}/lang/fo.js (99%) rename {ckeditor => code/web/ckeditor}/lang/fr-ca.js (99%) rename {ckeditor => code/web/ckeditor}/lang/fr.js (99%) rename {ckeditor => code/web/ckeditor}/lang/gl.js (99%) rename {ckeditor => code/web/ckeditor}/lang/gu.js (99%) rename {ckeditor => code/web/ckeditor}/lang/he.js (99%) rename {ckeditor => code/web/ckeditor}/lang/hi.js (99%) rename {ckeditor => code/web/ckeditor}/lang/hr.js (99%) rename {ckeditor => code/web/ckeditor}/lang/hu.js (99%) rename {ckeditor => code/web/ckeditor}/lang/id.js (99%) rename {ckeditor => code/web/ckeditor}/lang/is.js (99%) rename {ckeditor => code/web/ckeditor}/lang/it.js (99%) rename {ckeditor => code/web/ckeditor}/lang/ja.js (99%) rename {ckeditor => code/web/ckeditor}/lang/ka.js (99%) rename {ckeditor => code/web/ckeditor}/lang/km.js (99%) rename {ckeditor => code/web/ckeditor}/lang/ko.js (99%) rename {ckeditor => code/web/ckeditor}/lang/ku.js (99%) rename {ckeditor => code/web/ckeditor}/lang/lt.js (99%) rename {ckeditor => code/web/ckeditor}/lang/lv.js (99%) rename {ckeditor => code/web/ckeditor}/lang/mk.js (99%) rename {ckeditor => code/web/ckeditor}/lang/mn.js (99%) rename {ckeditor => code/web/ckeditor}/lang/ms.js (99%) rename {ckeditor => code/web/ckeditor}/lang/nb.js (99%) rename {ckeditor => code/web/ckeditor}/lang/nl.js (99%) rename {ckeditor => code/web/ckeditor}/lang/no.js (99%) rename {ckeditor => code/web/ckeditor}/lang/pl.js (99%) rename {ckeditor => code/web/ckeditor}/lang/pt-br.js (99%) rename {ckeditor => code/web/ckeditor}/lang/pt.js (99%) rename {ckeditor => code/web/ckeditor}/lang/ro.js (99%) rename {ckeditor => code/web/ckeditor}/lang/ru.js (99%) rename {ckeditor => code/web/ckeditor}/lang/si.js (99%) rename {ckeditor => code/web/ckeditor}/lang/sk.js (99%) rename {ckeditor => code/web/ckeditor}/lang/sl.js (99%) rename {ckeditor => code/web/ckeditor}/lang/sq.js (99%) rename {ckeditor => code/web/ckeditor}/lang/sr-latn.js (99%) rename {ckeditor => code/web/ckeditor}/lang/sr.js (99%) rename {ckeditor => code/web/ckeditor}/lang/sv.js (99%) rename {ckeditor => code/web/ckeditor}/lang/th.js (99%) rename {ckeditor => code/web/ckeditor}/lang/tr.js (99%) rename {ckeditor => code/web/ckeditor}/lang/tt.js (99%) rename {ckeditor => code/web/ckeditor}/lang/ug.js (99%) rename {ckeditor => code/web/ckeditor}/lang/uk.js (99%) rename {ckeditor => code/web/ckeditor}/lang/vi.js (99%) rename {ckeditor => code/web/ckeditor}/lang/zh-cn.js (99%) rename {ckeditor => code/web/ckeditor}/lang/zh.js (99%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/a11yhelp.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/_translationstatus.txt (97%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/af.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/ar.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/bg.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/ca.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/cs.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/cy.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/da.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/de-ch.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/de.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/el.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/en-gb.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/en.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/eo.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/es.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/et.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/eu.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/fa.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/fi.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/fo.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/fr-ca.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/fr.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/gl.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/gu.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/he.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/hi.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/hr.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/hu.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/id.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/it.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/ja.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/km.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/ko.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/ku.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/lt.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/lv.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/mk.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/mn.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/nb.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/nl.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/no.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/pl.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/pt-br.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/pt.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/ro.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/ru.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/si.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/sk.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/sl.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/sq.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/sr-latn.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/sr.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/sv.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/th.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/tr.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/tt.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/ug.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/uk.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/vi.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/zh-cn.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/a11yhelp/dialogs/lang/zh.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/about/dialogs/about.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/about/dialogs/hidpi/logo_ckeditor.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/about/dialogs/logo_ckeditor.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/clipboard/dialogs/paste.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/dialog/dialogDefinition.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/icons.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/icons_hidpi.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/image/dialogs/image.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/image/images/noimage.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/link/dialogs/anchor.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/link/dialogs/link.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/link/images/anchor.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/link/images/hidpi/anchor.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/magicline/images/hidpi/icon-rtl.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/magicline/images/hidpi/icon.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/magicline/images/icon-rtl.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/magicline/images/icon.png (100%) rename {ckeditor => code/web/ckeditor}/plugins/pastefromword/filter/default.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/scayt/CHANGELOG.md (98%) rename {ckeditor => code/web/ckeditor}/plugins/scayt/LICENSE.md (98%) rename {ckeditor => code/web/ckeditor}/plugins/scayt/README.md (97%) rename {ckeditor => code/web/ckeditor}/plugins/scayt/dialogs/options.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/scayt/dialogs/toolbar.css (94%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/_translationstatus.txt (97%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/af.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/ar.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/bg.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/ca.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/cs.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/cy.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/da.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/de-ch.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/de.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/el.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/en-gb.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/en.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/eo.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/es.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/et.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/eu.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/fa.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/fi.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/fr-ca.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/fr.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/gl.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/he.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/hr.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/hu.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/id.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/it.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/ja.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/km.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/ko.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/ku.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/lt.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/lv.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/nb.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/nl.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/no.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/pl.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/pt-br.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/pt.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/ru.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/si.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/sk.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/sl.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/sq.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/sv.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/th.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/tr.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/tt.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/ug.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/uk.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/vi.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/zh-cn.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/lang/zh.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/specialchar/dialogs/specialchar.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/table/dialogs/table.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/tabletools/dialogs/tableCell.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/wsc/LICENSE.md (98%) rename {ckeditor => code/web/ckeditor}/plugins/wsc/README.md (97%) rename {ckeditor => code/web/ckeditor}/plugins/wsc/dialogs/ciframe.html (96%) rename {ckeditor => code/web/ckeditor}/plugins/wsc/dialogs/tmpFrameset.html (97%) rename {ckeditor => code/web/ckeditor}/plugins/wsc/dialogs/wsc.css (93%) rename {ckeditor => code/web/ckeditor}/plugins/wsc/dialogs/wsc.js (100%) rename {ckeditor => code/web/ckeditor}/plugins/wsc/dialogs/wsc_ie.js (100%) rename {ckeditor => code/web/ckeditor}/samples/css/samples.css (97%) rename {ckeditor => code/web/ckeditor}/samples/img/github-top.png (100%) rename {ckeditor => code/web/ckeditor}/samples/img/header-bg.png (100%) rename {ckeditor => code/web/ckeditor}/samples/img/header-separator.png (100%) rename {ckeditor => code/web/ckeditor}/samples/img/logo.png (100%) rename {ckeditor => code/web/ckeditor}/samples/img/navigation-tip.png (100%) rename {ckeditor => code/web/ckeditor}/samples/index.html (98%) rename {ckeditor => code/web/ckeditor}/samples/js/sample.js (96%) rename {ckeditor => code/web/ckeditor}/samples/js/sf.js (100%) rename {ckeditor => code/web/ckeditor}/samples/old/ajax.html (96%) rename {ckeditor => code/web/ckeditor}/samples/old/api.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/appendto.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/assets/inlineall/logo.png (100%) rename {ckeditor => code/web/ckeditor}/samples/old/assets/outputxhtml/outputxhtml.css (90%) rename {ckeditor => code/web/ckeditor}/samples/old/assets/posteddata.php (95%) rename {ckeditor => code/web/ckeditor}/samples/old/assets/sample.jpg (100%) rename {ckeditor => code/web/ckeditor}/samples/old/assets/uilanguages/languages.js (100%) rename {ckeditor => code/web/ckeditor}/samples/old/datafiltering.html (98%) rename {ckeditor => code/web/ckeditor}/samples/old/dialog/assets/my_dialog.js (94%) rename {ckeditor => code/web/ckeditor}/samples/old/dialog/dialog.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/divreplace.html (96%) rename {ckeditor => code/web/ckeditor}/samples/old/enterkey/enterkey.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/htmlwriter/assets/outputforflash/outputforflash.fla (100%) rename {ckeditor => code/web/ckeditor}/samples/old/htmlwriter/assets/outputforflash/outputforflash.swf (100%) rename {ckeditor => code/web/ckeditor}/samples/old/htmlwriter/assets/outputforflash/swfobject.js (100%) rename {ckeditor => code/web/ckeditor}/samples/old/htmlwriter/outputforflash.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/htmlwriter/outputhtml.html (96%) rename {ckeditor => code/web/ckeditor}/samples/old/index.html (98%) rename {ckeditor => code/web/ckeditor}/samples/old/inlineall.html (96%) rename {ckeditor => code/web/ckeditor}/samples/old/inlinebycode.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/inlinetextarea.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/jquery.html (98%) rename {ckeditor => code/web/ckeditor}/samples/old/magicline/magicline.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/readonly.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/replacebyclass.html (99%) rename {ckeditor => code/web/ckeditor}/samples/old/replacebycode.html (99%) rename {ckeditor => code/web/ckeditor}/samples/old/sample.css (92%) rename {ckeditor => code/web/ckeditor}/samples/old/sample.js (97%) rename {ckeditor => code/web/ckeditor}/samples/old/sample_posteddata.php (97%) rename {ckeditor => code/web/ckeditor}/samples/old/tabindex.html (96%) rename {ckeditor => code/web/ckeditor}/samples/old/toolbar/toolbar.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/uicolor.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/uilanguages.html (97%) rename {ckeditor => code/web/ckeditor}/samples/old/wysiwygarea/fullpage.html (99%) rename {ckeditor => code/web/ckeditor}/samples/old/xhtmlstyle.html (96%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/css/fontello.css (96%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/font/LICENSE.txt (94%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/font/config.json (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/font/fontello.eot (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/font/fontello.svg (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/font/fontello.ttf (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/font/fontello.woff (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/index.html (97%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/js/fulltoolbareditor.js (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/js/toolbarmodifier.js (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/js/toolbartextmodifier.js (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/lib/codemirror/LICENSE (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/lib/codemirror/codemirror.css (95%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/lib/codemirror/codemirror.js (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/lib/codemirror/javascript.js (100%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/lib/codemirror/neo.css (95%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/lib/codemirror/show-hint.css (94%) rename {ckeditor => code/web/ckeditor}/samples/toolbarconfigurator/lib/codemirror/show-hint.js (100%) create mode 100644 code/web/ckeditor/skins/moono/dialog.css create mode 100644 code/web/ckeditor/skins/moono/dialog_ie.css create mode 100644 code/web/ckeditor/skins/moono/dialog_ie7.css create mode 100644 code/web/ckeditor/skins/moono/dialog_ie8.css create mode 100644 code/web/ckeditor/skins/moono/dialog_iequirks.css create mode 100644 code/web/ckeditor/skins/moono/editor.css create mode 100644 code/web/ckeditor/skins/moono/editor_gecko.css create mode 100644 code/web/ckeditor/skins/moono/editor_ie.css rename ckeditor/skins/moono/editor_gecko.css => code/web/ckeditor/skins/moono/editor_ie7.css (74%) create mode 100644 code/web/ckeditor/skins/moono/editor_ie8.css create mode 100644 code/web/ckeditor/skins/moono/editor_iequirks.css rename {ckeditor => code/web/ckeditor}/skins/moono/icons.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/icons_hidpi.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/images/arrow.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/images/close.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/images/hidpi/close.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/images/hidpi/lock-open.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/images/hidpi/lock.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/images/hidpi/refresh.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/images/lock-open.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/images/lock.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/images/refresh.png (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/images/spinner.gif (100%) rename {ckeditor => code/web/ckeditor}/skins/moono/readme.md (97%) rename {ckeditor => code/web/ckeditor}/styles.js (96%) diff --git a/ckeditor/skins/moono/dialog.css b/ckeditor/skins/moono/dialog.css deleted file mode 100644 index 68f3d65cd..000000000 --- a/ckeditor/skins/moono/dialog.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%} \ No newline at end of file diff --git a/ckeditor/skins/moono/dialog_ie.css b/ckeditor/skins/moono/dialog_ie.css deleted file mode 100644 index 75dd7c598..000000000 --- a/ckeditor/skins/moono/dialog_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file diff --git a/ckeditor/skins/moono/dialog_ie7.css b/ckeditor/skins/moono/dialog_ie7.css deleted file mode 100644 index 7ce23f78b..000000000 --- a/ckeditor/skins/moono/dialog_ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #bfbfbf}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important} \ No newline at end of file diff --git a/ckeditor/skins/moono/dialog_ie8.css b/ckeditor/skins/moono/dialog_ie8.css deleted file mode 100644 index 6fb36f129..000000000 --- a/ckeditor/skins/moono/dialog_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block} \ No newline at end of file diff --git a/ckeditor/skins/moono/dialog_iequirks.css b/ckeditor/skins/moono/dialog_iequirks.css deleted file mode 100644 index c1cad5563..000000000 --- a/ckeditor/skins/moono/dialog_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file diff --git a/ckeditor/skins/moono/editor.css b/ckeditor/skins/moono/editor.css deleted file mode 100644 index cccabba9b..000000000 --- a/ckeditor/skins/moono/editor.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon {background: url(icons.png?t=3876e73) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=3876e73) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=3876e73) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=3876e73) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=3876e73) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=3876e73) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=3876e73) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=3876e73) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=3876e73) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=3876e73) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=3876e73) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=3876e73) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=3876e73) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=3876e73) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=3876e73) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png?t=3876e73) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=3876e73) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=3876e73) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png?t=3876e73) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png?t=3876e73) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png?t=3876e73) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=3876e73) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=3876e73) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=3876e73) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=3876e73) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=3876e73) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=3876e73) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=3876e73) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=3876e73) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png?t=3876e73) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png?t=3876e73) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=3876e73) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/ckeditor/skins/moono/editor_ie.css b/ckeditor/skins/moono/editor_ie.css deleted file mode 100644 index be84ba396..000000000 --- a/ckeditor/skins/moono/editor_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__about_icon {background: url(icons.png?t=3876e73) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=3876e73) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=3876e73) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=3876e73) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=3876e73) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=3876e73) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=3876e73) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=3876e73) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=3876e73) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=3876e73) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=3876e73) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=3876e73) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=3876e73) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=3876e73) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=3876e73) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png?t=3876e73) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=3876e73) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=3876e73) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png?t=3876e73) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png?t=3876e73) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png?t=3876e73) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=3876e73) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=3876e73) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=3876e73) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=3876e73) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=3876e73) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=3876e73) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=3876e73) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=3876e73) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png?t=3876e73) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png?t=3876e73) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=3876e73) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/ckeditor/skins/moono/editor_ie7.css b/ckeditor/skins/moono/editor_ie7.css deleted file mode 100644 index ef66e7082..000000000 --- a/ckeditor/skins/moono/editor_ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#c0c0c0}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important}.cke_button__about_icon {background: url(icons.png?t=3876e73) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=3876e73) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=3876e73) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=3876e73) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=3876e73) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=3876e73) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=3876e73) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=3876e73) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=3876e73) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=3876e73) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=3876e73) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=3876e73) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=3876e73) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=3876e73) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=3876e73) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png?t=3876e73) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=3876e73) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=3876e73) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png?t=3876e73) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png?t=3876e73) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png?t=3876e73) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=3876e73) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=3876e73) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=3876e73) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=3876e73) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=3876e73) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=3876e73) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=3876e73) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=3876e73) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png?t=3876e73) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png?t=3876e73) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=3876e73) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/ckeditor/skins/moono/editor_ie8.css b/ckeditor/skins/moono/editor_ie8.css deleted file mode 100644 index abfc0259b..000000000 --- a/ckeditor/skins/moono/editor_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_button__about_icon {background: url(icons.png?t=3876e73) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=3876e73) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=3876e73) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=3876e73) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=3876e73) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=3876e73) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=3876e73) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=3876e73) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=3876e73) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=3876e73) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=3876e73) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=3876e73) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=3876e73) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=3876e73) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=3876e73) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png?t=3876e73) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=3876e73) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=3876e73) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png?t=3876e73) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png?t=3876e73) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png?t=3876e73) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=3876e73) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=3876e73) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=3876e73) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=3876e73) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=3876e73) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=3876e73) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=3876e73) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=3876e73) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png?t=3876e73) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png?t=3876e73) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=3876e73) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/ckeditor/skins/moono/editor_iequirks.css b/ckeditor/skins/moono/editor_iequirks.css deleted file mode 100644 index 2672245e7..000000000 --- a/ckeditor/skins/moono/editor_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__about_icon {background: url(icons.png?t=3876e73) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png?t=3876e73) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png?t=3876e73) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png?t=3876e73) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png?t=3876e73) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png?t=3876e73) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png?t=3876e73) no-repeat 0 -144px !important;}.cke_button__blockquote_icon {background: url(icons.png?t=3876e73) no-repeat 0 -168px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png?t=3876e73) no-repeat 0 -192px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png?t=3876e73) no-repeat 0 -216px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png?t=3876e73) no-repeat 0 -240px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png?t=3876e73) no-repeat 0 -264px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png?t=3876e73) no-repeat 0 -288px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png?t=3876e73) no-repeat 0 -312px !important;}.cke_button__horizontalrule_icon {background: url(icons.png?t=3876e73) no-repeat 0 -336px !important;}.cke_button__image_icon {background: url(icons.png?t=3876e73) no-repeat 0 -360px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -384px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -408px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -432px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png?t=3876e73) no-repeat 0 -456px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png?t=3876e73) no-repeat 0 -480px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png?t=3876e73) no-repeat 0 -504px !important;}.cke_button__link_icon {background: url(icons.png?t=3876e73) no-repeat 0 -528px !important;}.cke_button__unlink_icon {background: url(icons.png?t=3876e73) no-repeat 0 -552px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -576px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -600px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -624px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png?t=3876e73) no-repeat 0 -648px !important;}.cke_button__maximize_icon {background: url(icons.png?t=3876e73) no-repeat 0 -672px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png?t=3876e73) no-repeat 0 -696px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png?t=3876e73) no-repeat 0 -720px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png?t=3876e73) no-repeat 0 -744px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png?t=3876e73) no-repeat 0 -768px !important;}.cke_button__removeformat_icon {background: url(icons.png?t=3876e73) no-repeat 0 -792px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png?t=3876e73) no-repeat 0 -816px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png?t=3876e73) no-repeat 0 -840px !important;}.cke_button__specialchar_icon {background: url(icons.png?t=3876e73) no-repeat 0 -864px !important;}.cke_button__scayt_icon {background: url(icons.png?t=3876e73) no-repeat 0 -888px !important;}.cke_button__table_icon {background: url(icons.png?t=3876e73) no-repeat 0 -912px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -936px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -960px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -984px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png?t=3876e73) no-repeat 0 -1008px !important;}.cke_button__spellchecker_icon {background: url(icons.png?t=3876e73) no-repeat 0 -1032px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png?t=3876e73) no-repeat 0 -1032px !important;background-size: 16px !important;} \ No newline at end of file diff --git a/ckeditor/.htaccess b/code/web/ckeditor/.htaccess similarity index 96% rename from ckeditor/.htaccess rename to code/web/ckeditor/.htaccess index ed1d794fe..3a5e7026d 100644 --- a/ckeditor/.htaccess +++ b/code/web/ckeditor/.htaccess @@ -1,24 +1,24 @@ -# -# Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. -# For licensing, see LICENSE.html or http://ckeditor.com/license -# - -# -# On some specific Linux installations you could face problems with Firefox. -# It could give you errors when loading the editor saying that some illegal -# characters were found (three strange chars in the beginning of the file). -# This could happen if you map the .js or .css files to PHP, for example. -# -# Those characters are the Byte Order Mask (BOM) of the Unicode encoded files. -# All FCKeditor files are Unicode encoded. -# - -AddType application/x-javascript .js -AddType text/css .css - -# -# If PHP is mapped to handle XML files, you could have some issues. The -# following will disable it. -# - -AddType text/xml .xml +# +# Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. +# For licensing, see LICENSE.html or http://ckeditor.com/license +# + +# +# On some specific Linux installations you could face problems with Firefox. +# It could give you errors when loading the editor saying that some illegal +# characters were found (three strange chars in the beginning of the file). +# This could happen if you map the .js or .css files to PHP, for example. +# +# Those characters are the Byte Order Mask (BOM) of the Unicode encoded files. +# All FCKeditor files are Unicode encoded. +# + +AddType application/x-javascript .js +AddType text/css .css + +# +# If PHP is mapped to handle XML files, you could have some issues. The +# following will disable it. +# + +AddType text/xml .xml diff --git a/ckeditor/CHANGES.html b/code/web/ckeditor/CHANGES.html similarity index 98% rename from ckeditor/CHANGES.html rename to code/web/ckeditor/CHANGES.html index 9b763b035..e15516b51 100644 --- a/ckeditor/CHANGES.html +++ b/code/web/ckeditor/CHANGES.html @@ -1,538 +1,538 @@ - - - - - Changelog - CKEditor - - - - -

- CKEditor Changelog -

-

- CKEditor 3.2

-

- New features:

-
    -
  • Several accessibility enhancements:
      -
    • #4502 : The editor accessibility is now totally based on WAI-ARIA.
    • -
    • #5015 : Adding accessibility help dialog plugin.
    • -
    • #5014 : Keyboard navigation compliance with screen reader suggested keys.
    • -
    • #4595 : Better accessibility in the Templates dialog.
    • -
    • #3389 : Esc/Arrow Key now works for closing sub menu.
    • -
  • -
  • #4973 : The Style field in the Div Container dialog is now loading the styles defined in the default styleset used by the Styles toolbar combo.
  • -
-

- Fixed issues:

-
    -
  • #5049 : Form Field list command in JAWS incorrectly lists extra fields.
  • -
  • #5008 : Lock/Unlock ratio buttons in the Image dialog was poorly designed in High Contrast mode.
  • -
  • #3980 : All labels in dialogs now use <label> instead of <div>.
  • -
  • #5213 : Reorganization of some entries in the language files to make it more consistent.
  • -
  • #5199 : In IE, single row toolbars didn't have the bottom padding.
  • -
-

- CKEditor 3.1.1

-

- New features:

-
    -
  • #4399 : Improved support for external file browsers by allowing executing a callback function.
  • -
  • #4612 : The text of links is now updated if it matches the URL to which it points to.
  • -
  • #4936 : New localization support for the Welsh language.
  • -
-

- Fixed issues:

-
    -
  • #4272 : Kama skin toolbar was broken in IE+Quirks+RTL.
  • -
  • #4987 : Changed the url which is called by the Browser Server button in the Link tab of Image Properties dialog.
  • -
  • #5030 : The CKEDITOR.timestamp wasn't been appended to the skin.js file.
  • -
  • #4993 : Removed the float style from images when the user selects 'not set' for alignment.
  • -
  • #4944 : Fixed a bug where nested list structures with inconsequent levels were not being pasted correctly from MS Word.
  • -
  • #4637 : Table cells' 'nowrap' attribute was not being loaded by the cell property dialog. Thanks to pomu0325.
  • -
  • #4724 : Using the mouse to insert a link in IE might create incorrect results.
  • -
  • #4640 : Small optimizations for the fileBrowser plugin.
  • -
  • #4583 : The "Target Frame Name" field is now visible when target is set to 'frame' only.
  • -
  • #4863 : Fixing iframedialog's height doesn't stretch to 100% (except IE Quirks).
  • -
  • #4964 : The BACKSPACE key positioning was not correct in some cases with Firefox.
  • -
  • #4980 : Setting border, vspace and hspace of images to zero was not working.
  • -
  • #4773 : The fileBrowser plugin was overwriting onClick functions eventually defined on fileButton elements.
  • -
  • #4731 : The clipboard plugin was missing a reference to the dialog plugin.
  • -
  • #5051 : The about plugin was missing a reference to the dialog plugin.
  • -
  • #5146 : The wsc plugin was missing a reference to the dialog plugin.
  • -
  • #4632 : The print command will now properly break on the insertion point of page break for printing.
  • -
  • #4862 : The English (United Kingdom) language file has been renamed to en-gb.js.
  • -
  • #4618 : Selecting an emoticon or the lock and reset buttons in the image dialog fired the onBeforeUnload event in IE.
  • -
  • #4678 : It was not possible to set tables' width to empty value.
  • -
  • #5012 : Fixed dependency issues with the menu plugin.
  • -
  • #5040 : The editor will not properly ignore font related settings that have extra item separators (semi-colons).
  • -
  • #4046 : Justify should respect config.enterMode = CKEDITOR.ENTER_BR.
  • -
  • #4622 : Inserting tables multiple times was corrupting the undo system.
  • -
  • #4647 : [IE] Selection on an element within positioned container is lost after open context-menu then click one menu item.
  • -
  • #4683 : Double-quote character in attribute values was not escaped in the editor output.
  • -
  • #4762 : [IE] Unexpected vertical-scrolling behavior happens whenever focus is moving out of editor in source mode.
  • -
  • #4772 : Text color was not being applied properly on links.
  • -
  • #4795 : [IE] Press 'Del' key on horizontal line or table result in error.
  • -
  • #4824 : [IE] <br/> at the very first table cell breaks the editor selection.
  • -
  • #4851 : [IE] Delete table rows with context-menu may cause error.
  • -
  • #4951 : Replacing text with empty string was throwing errors.
  • -
  • #4963 : Link dialog was not opening properly for e-mail type links.
  • -
  • #5043 : Removed the possibility of having an unwanted script tag being outputted with the editor contents.
  • -
  • #3678 : There were issues when editing links inside floating divs with IE.
  • -
  • #4763 : Pressing ENTER key with text selected was not deleting the text in some situations.
  • -
  • #5096 : Simple ampersand attribute value doesn't work for more than one occurrence.
  • -
  • #3494 : Context menu is too narrow in some translations.
  • -
  • #5005 : Fixed HTML errors in PHP samples.
  • -
  • #5123 : Fixed broken XHTML in User Interface Languages sample.
  • -
  • #4893 : Editor now understands table cell inline styles.
  • -
  • #4611 : Selection around <select> in editor doesn't cause error anymore.
  • -
  • #4886 : Extra BR tags were being created in the output HTML.
  • -
  • #4933 : Empty tags with BR were being left in the DOM.
  • -
  • #5127 : There were errors when removing dialog definition pages through code.
  • -
  • #4767 : CKEditor was not working when ckeditor_source.js is loaded in the <body> .
  • -
  • #5062 : Avoided security warning message when loading the wysiwyg area in IE6 under HTTPS.
  • -
  • #5135 : The TAB key will now behave properly when in Source mode.
  • -
  • #4988 : It wasn't possible to use forcePasteAsPlainText with Safari on Mac.
  • -
  • #5095 : Safari on Mac deleted the current selection in the editor when Edit menu was clicked.
  • -
  • #5140 : In High Contrast mode, arrows were now been displayed for menus with submenus.
  • -
  • #5163 : The undo system was not working on some specific cases.
  • -
  • #5162 : The ajax sample was throwing errors when loading data.
  • -
  • #4999 : The Template dialog was not generating an undo snapshot.
  • -
  • Updated the following language files:
  • -
-

- CKEditor 3.1

-

- New features:

-
    -
  • #4067 : Introduced the full page editing support (from <html> to </html>).
  • -
  • #4228 : Introduced the Shared Spaces feature.
  • -
  • #4379 : Introduced the new powerful pasting system and word cleanup procedure, including enhancements to the paste as plain text feature.
  • -
  • #2872 : Introduced the new native PHP API, the first standardized server side support.
  • -
  • #4210 : Added CKEditor plugin for jQuery.
  • -
  • #2885 : Added 'div' dialog and corresponding context menu options.
  • -
  • #4574 : Added the table merging tools and corresponding context menu options.
  • -
  • #4340 : Added the email protection option for link dialog.
  • -
  • #4463 : Added inline CSS support in all places where custom stylesheet could apply.
  • -
  • #3881 : Added color dialog for 'more color' option in color buttons.
  • -
  • #4341 : Added the 'showborder' plugin.
  • -
  • #4549 : Make the anti-cache query string configurable.
  • -
  • #4708 : Added the 'htmlEncodeOutput' config option.
  • -
  • #4342 : Introduced the bodyId and bodyClass settings to specify the id and class. to be used in the editing area at runtime.
  • -
  • #3401 : Introduced the baseHref setting so it's possible to set the URL to be used to resolve absolute and relative URLs in the contents.
  • -
  • #4729 : Added support to fake elements for comments.
  • -
-

- Fixed issues:

-
    -
  • #4707 : Fixed invalid link is requested in image preview.
  • -
  • #4461 : Fixed toolbar separator line along side combo enlarging the toolbar height.
  • -
  • #4596 : Fixed image re-size lock buttons aren't accessible in high-contrast mode.
  • -
  • #4676 : Fixed editing tables using table properties dialog overwrites original style values.
  • -
  • #4714 : Fixed IE6 JavaScript error when editing flash by commit 'Flash' dialog.
  • -
  • #3905 : Fixed 'wysiwyg' mode causes unauthenticated content warnings over SSL in FF 3.5.
  • -
  • #4768 : Fixed open context menu in IE throws js error when focus is not inside document.
  • -
  • #4822 : Fixed applying 'Headers' to existing table does not work in IE.
  • -
  • #4855 : Fixed toolbar doesn't wrap well for 'v2' skin in all browsers.
  • -
  • #4882 : Fixed auto detect paste from MS-Word is not working for Safari.
  • -
  • #4882 : Fixed unexpected margin style left behind on content cleaning up from MS-Word.
  • -
  • #4896 : Fixed paste nested list from MS-Word with measurement units set to cm is broken.
  • -
  • #4899 : Fixed unable to undo pre-formatted style.
  • -
  • #4900 : Fixed ratio-lock inconsistent between browsers.
  • -
  • #4901 : Fixed unable to edit any link with popup window's features in Firefox.
  • -
  • #4904 : Fixed when paste happen from dialog, it always throw JavaScript error.
  • -
  • #4905 : Fixed paste plain text result incorrect when content from dialog.
  • -
  • #4889 : Fixed unable to undo 'New Page' command after typing inside editor.
  • -
  • #4892 : Fixed table alignment style is not properly represented by the wrapping div.
  • -
  • #4918 : Fixed switching mode when maximized is showing background page contents.
  • -
-

- CKEditor 3.0.2

-

- New features:

-
    -
  • #4343 : Added the configuration option 'browserContextMenuOnCtrl' so it's possible to enable the default browser context menu by holding the CTRL key.
  • -
-

- Fixed issues:

-
    -
  • #4552 : Fixed float panel doesn't show up since editor instanced been destroyed once.
  • -
  • #3918 : Fixed fake object is editable with Image dialog.
  • -
  • #4053 : Fixed 'Form Properties' missing from context menu when selection collapsed inside form.
  • -
  • #4401 : Fixed customized by removing 'upload' tab page from 'Link dialog' cause JavaScript error.
  • -
  • #4477 : Adding missing tag names in object style elements.
  • -
  • #4567 : Fixed IE throw error when pressing BACKSPACE in source mode.
  • -
  • #4573 : Fixed 'IgnoreEmptyPargraph' config doesn't work with the config 'entities' is set to 'false'.
  • -
  • #4614 : Fixed attribute protection fails because of line-break.
  • -
  • #4546 : Fixed UIColor plugin doesn't work when editor id contains CSS selector preserved keywords.
  • -
  • #4609 : Fixed flash object is lost when loading data from outside editor.
  • -
  • #4625 : Fixed editor stays visible in a div with style 'visibility:hidden'.
  • -
  • #4621 : Fixed clicking below table caused an empty table been generated.
  • -
  • #3373 : Fixed empty context menu when there's no menu item at all.
  • -
  • #4473 : Fixed setting rules on the same element tag name throws error.
  • -
  • #4514 : Fixed press 'Back' button breaks wysiwyg editing mode is Firefox.
  • -
  • #4542 : Fixed unable to access buttons using tab key in Safari and Opera.
  • -
  • #4577 : Fixed relative link url is broken after opening 'Link' dialog.
  • -
  • #4597 : Fixed custom style with same attribute name but different attribute value doesn't work.
  • -
  • #4651 : Fixed 'Deleted' and 'Inserted' text style is not rendering in wysiwyg mode and is wrong is source mode.
  • -
  • #4654 : Fixed 'CKEDITOR.config.font_defaultLabel(fontSize_defaultLabel)' is not working.
  • -
  • #3950 : Fixed table column insertion incorrect when selecting empty cell area.
  • -
  • #3912 : Fixed UIColor not working in IE when page has more than 30+ editors.
  • -
  • #4031 : Fixed mouse cursor on toolbar combo has more than 3 shapes.
  • -
  • #4041 : Fixed open context menu on multiple cells to remove them result in only one removed.
  • -
  • #4185 : Fixed resize handler effect doesn't affect flash object on output.
  • -
  • #4196 : Fixed 'Remove Numbered/Bulleted List' on nested list doesn't work well on nested list.
  • -
  • #4200 : Fixed unable to insert 'password' type filed with attributes.
  • -
  • #4530 : Fixed context menu couldn't open in Opera.
  • -
  • #4536 : Fixed keyboard navigation doesn't work at all in IE quirks mode.
  • -
  • #4584 : Fixed updated link Target field is not updating when updating to certain values.
  • -
  • #4603 : Fixed unable to disable submenu items in contextmenu.
  • -
  • #4672 : Fixed unable to redo the insertion of horizontal line.
  • -
  • #4677 : Fixed 'Tab' key is trapped by hidden dialog elements.
  • -
  • #4073 : Fixed insert template with replace option could result in empty document.
  • -
  • #4455 : Fixed unable to start editing when image inside document not loaded.
  • -
  • #4517 : Fixed 'dialog_backgroundCoverColor' doesn't work on IE6.
  • -
  • #3165 : Fixed enter key in empty list item before nested one result in collapsed line.
  • -
  • #4527 : Fixed checkbox generate invalid 'checked' attribute.
  • -
  • #1659 : Fixed unable to click below content to start editing in IE with 'config.docType' setting to standard compliant.
  • -
  • #3933 : Fixed extra <br> left at the end of document when the last element is a table.
  • -
  • #4736 : Fixed PAGE UP and PAGE DOWN keys in standards mode are not working.
  • -
  • #4725 : Fixed hitting 'enter' before html comment node produces a JavaScript error.
  • -
  • #4522 : Fixed unable to redo when typing after insert an image with relative url.
  • -
  • #4594 : Fixed context menu goes off-screen when mouse is at right had side of screen.
  • -
  • #4673 : Fixed undo not available straight away if shift key is used to enter first character.
  • -
  • #4690 : Fixed the parsing of nested inline elements.
  • -
  • #4450 : Fixed selecting multiple table cells before apply justify commands generates spurious paragraph in Firefox.
  • -
  • #4733 : Fixed dialog opening sometimes hang up Firefox and Safari.
  • -
  • #4498 : Fixed toolbar collapse button missing tooltip.
  • -
  • #4738 : Fixed inserting table inside bold/italic/underline generates error on ENTER_BR mode.
  • -
  • #4246 : Fixed avoid XHTML deprecated attributes for image styling.
  • -
  • #4543 : Fixed unable to move cursor between table and hr.
  • -
  • #4764 : Fixed wrong exception message when CKEDITOR.editor.append() to non-existing elements.
  • -
  • #4521 : Fixed dialog layout in IE6/7 may have scroll-bar and other weird effects.
  • -
  • #4709 : Fixed inconsistent scroll-bar behavior on IE.
  • -
  • #4776 : Fixed preview page failed to open when relative URl contains in document.
  • -
  • #4812 : Fixed 'Esc' key not working on dialogs in Opera.
  • -
  • Updated the following language files:
  • -
-

- CKEditor 3.0.1

-

- New features:

-
    -
  • #4219 : Added fallback mechanism for config.language.
  • -
  • #4194 : Added support for using multiple css style sheets within the editor.
  • -
-

- Fixed issues:

-
    -
  • #3898 : Added validation for URL value in Image dialog.
  • -
  • #3528 : Fixed Context Menu issue when triggered using Shift+F10.
  • -
  • #4028 : Maximize control's tool tip was wrong once it is maximized.
  • -
  • #4237 : Toolbar is chopped off in Safari browser 3.x.
  • -
  • #4241 : Float panels are left on screen while editor is destroyed.
  • -
  • #4274 : Double click event is incorrect handled in 'divreplace' sample.
  • -
  • #4354 : Fixed TAB key on toolbar to not focus disabled buttons.
  • -
  • #3856 : Fixed focus and blur events in source view mode.
  • -
  • #3438 : Floating panels are off by (-1px, 0px) in RTL mode.
  • -
  • #3370 : Refactored use of CKEDITOR.env.isCustomDomain().
  • -
  • #4230 : HC detection caused js error.
  • -
  • #3978 : Fixed setStyle float on IE7 strict.
  • -
  • #4262 : Tab and Shift+Tab was not working to cycle through CTRL+SHIFT+F10 context menu in IE.
  • -
  • #3633 : Default context menu isn't disabled in toolbar, status bar, panels...
  • -
  • #3897 : Now there is no image previews when the URL is empty in image dialog.
  • -
  • #4048 : Context submenu was lacking uiColor.
  • -
  • #3568 : Dialogs now select all text when tabbing to text inputs.
  • -
  • #3727 : Cell Properties dialog was missing color selection option.
  • -
  • #3517 : Fixed "Match cyclic" field in Find & Replace dialog.
  • -
  • #4368 : borderColor table cell attribute haven't worked for none-IE
  • -
  • #4203 : In IE quirks mode + toolbar collapsed + source mode editing block height was incorrect.
  • -
  • #4387 : Fixed: right clicking in Kama skin can lead to a javascript error.
  • -
  • #4397 : Wysiwyg mode caused the host page scroll.
  • -
  • #4385 : Fixed editor's auto adjusting on DOM structure were confusing the dirty checking mechanism.
  • -
  • #4397 : Fixed regression of [3816] where turn on design mode was causing Firefox3 to scroll the host page.
  • -
  • #4254 : Added basic API sample.
  • -
  • #4107 : Normalize css font-family style text for correct comparision.
  • -
  • #3664 : Insert block element in empty editor document should not create new paragraph.
  • -
  • #4037 : 'id' attribute is missing with Flash dialog advanced page.
  • -
  • #4047 : Delete selected control type element when 'Backspace' is pressed on it.
  • -
  • #4191 : Fixed: dialog changes confirmation on image dialog appeared even when no changes have been made.
  • -
  • #4351 : Dash and dot could appear in attribute names.
  • -
  • #4355 : 'maximize' and 'showblock' commands shouldn't take editor focus.
  • -
  • #4504 : Fixed 'Enter'/'Esc' key is not working on dialog button.
  • -
  • #4245 : 'Strange Template' now come with a style attribute for width.
  • -
  • #4512 : Fixed styles plugin incorrectly adding semicolons to style text.
  • -
  • #3855 : Fixed loading unminified _source files when ckeditor_source.js is used.
  • -
  • #3717 : Dialog settings defaults can now be overridden in-page through the CKEDITOR.config object.
  • -
  • #4481 : The 'stylesCombo_stylesSet' configuration entry didn't work for full URLs.
  • -
  • #4480 : Fixed scope attribute in th.
  • -
  • #4467 : Fixed bug to use custom icon in context menus. Thanks to george.
  • -
  • #4190 : Fixed select field dialog layout in Safari.
  • -
  • #4518 : Fixed unable to open dialog without editor focus in IE.
  • -
  • #4519 : Fixed maximize without editor focus throw error in IE.
  • -
  • Updated the following language files:
  • -
-

- CKEditor 3.0

-

- New features:

-
    -
  • #3188 : Introduce - <pre> formatting feature when converting from other blocks.
  • -
  • #4445 : editor::setData now support an optional callback parameter.
  • -
-

- Fixed issues:

-
    -
  • #2856 : Fixed problem with inches in Paste From Word plugin.
  • -
  • #3929 : Using Paste dialog, - the text is pasted into current selection
  • -
  • #3920 : Mouse cursor over characters in - Special Character dialog now is correct
  • -
  • #3882 : Fixed an issue - with PasteFromWord dialog in which default values was ignored
  • -
  • #3859 : Fixed Flash dialog layout in Webkit
  • -
  • #3852 : Disabled textarea resizing in dialogs
  • -
  • #3831 : The attempt to remove the contextmenu plugin - will not anymore break the editor
  • -
  • #3781 : Colorbutton is now disabled in 'source' mode
  • -
  • #3848 : Fixed an issue with Webkit in witch - elements in the Image and Link dialogs had wrong dimensions.
  • -
  • #3808 : Fixed UI Color Picker dialog size in example page.
  • -
  • #3658 : Editor had horizontal scrollbar in IE6.
  • -
  • #3819 : The cursor was not visible - when applying style to collapsed selections in Firefox 2.
  • -
  • #3809 : Fixed beam cursor - when mouse cursor is over text-only buttons in IE.
  • -
  • #3815 : Fixed an issue - with the form dialog in which the "enctype" attribute is outputted as "encoding".
  • -
  • #3785 : Fixed an issue - in CKEDITOR.tools.htmlEncode() which incorrectly outputs &nbsp; in IE8.
  • -
  • #3820 : Fixed an issue in - bullet list command in which a list created at the bottom of another gets merged to the top. -
  • -
  • #3830 : Table cell properties dialog - doesn't apply to all selected cells.
  • -
  • #3835 : Element path is not refreshed - after click on 'newpage'; and safari is not putting focus on document also. -
  • -
  • #3821 : Fixed an issue with JAWS in which - toolbar items are read inconsistently between virtual cursor modes.
  • -
  • #3789 : The "src" attribute - was getting duplicated in some situations.
  • -
  • #3591 : Protecting flash related elements - including '<object>', '<embed>' and '<param>'. -
  • -
  • #3759 : Fixed CKEDITOR.dom.element::scrollIntoView - logic bug which scroll even element is inside viewport. -
  • -
  • #3773 : Fixed remove list will merge lines. -
  • -
  • #3829 : Fixed remove empty link on output data.
  • -
  • #3730 : Indent is performing on the whole - block instead of selected lines in enterMode = BR.
  • -
  • #3844 : Fixed UndoManager register keydown on obsoleted document
  • -
  • #3805 : Enabled SCAYT plugin for IE.
  • -
  • #3834 : Context menu on table caption was incorrect.
  • -
  • #3812 : Fixed an issue in which the editor - may show up empty or uneditable in IE7, 8 and Firefox 3.
  • -
  • #3825 : Fixed JS error when opening spellingcheck.
  • -
  • #3862 : Fixed html parser infinite loop on certain malformed - source code.
  • -
  • #3639 : Button size was inconsistent.
  • -
  • #3874 : Paste as plain text in Safari loosing lines.
  • -
  • #3849 : Fixed IE8 crashes when applying lists and indenting.
  • -
  • #3876 : Changed dialog checkbox and radio labels to explicit labels.
  • -
  • #3843 : Fixed context submenu position in IE 6 & 7 RTL.
  • -
  • #3864 : [FF]Document is not editable after inserting element on a fresh page.
  • -
  • #3883 : Fixed removing inline style logic incorrect on Firefox2.
  • -
  • #3884 : Empty "href" attribute was duplicated on output data.
  • -
  • #3858 : Fixed the issue where toolbars - break up in IE6 and IE7 after the browser is resized.
  • -
  • #3868 : [chrome] SCAYT toolbar options was in reversed order.
  • -
  • #3875 : Fixed an issue in Safari where - table row/column/cell menus are not useable when table cells are selected.
  • -
  • #3896 : The editing area was - flashing when switching forth and back to source view.
  • -
  • #3894 : Fixed an issue where editor failed to initialize when using the on-demand loading way.
  • -
  • #3903 : Color button plugin doesn't read config entry from editor instance correctly.
  • -
  • #3801 : Comments at the start of the document was lost in IE.
  • -
  • #3871 : Unable to redo when undos to the front of snapshots stack.
  • -
  • #3909 : Move focus from editor into a text input control is broken.
  • -
  • #3870 : The empty paragraph - desappears when hitting ENTER after "New Page".
  • -
  • #3887 : Fixed an issue in which the create - list command may leak outside of a selected table cell and into the rest of document.
  • -
  • #3916 : Fixed maximize does not enlarge editor width when width is set.
  • -
  • #3879 : [webkit] Color button panel had incorrect size on first open.
  • -
  • #3839 : Update Scayt plugin to reflect the latest change from SpellChecker.net.
  • -
  • #3742 : Fixed wrong dialog layout for dialogs without tab bar in IE RTL mode .
  • -
  • #3671 : Fixed body fixing should be applied to the real type under fake elements.
  • -
  • #3836 : Fixed remove list in enterMode=BR will merge sibling text to one line.
  • -
  • #3949 : Fixed enterKey within pre-formatted text introduce wrong line-break.
  • -
  • #3878 : Whenever possible, - dialogs will not present scrollbars if the content is too big for its standard - size.
  • -
  • #3782 : Remove empty list in table cell result in collapsed cell.
  • -
  • Updated the following language files:
  • -
  • #3984 : [IE]The pre-formatted style is generating error.
  • -
  • #3946 : Fixed unable to hide contextmenu.
  • -
  • #3956 : Fixed About dialog in Source Mode for IE.
  • -
  • #3953 : Fixed keystroke for close Paste dialog.
  • -
  • #3951 : Reset size and lock ratio options were not accessible in Image dialog.
  • -
  • #3921 : Fixed Container scroll issue on IE7.
  • -
  • #3940 : Fixed list operation doesn't stop at table.
  • -
  • #3891 : [IE] Fixed 'automatic' font color doesn't work.
  • -
  • #3972 : Fixed unable to remove a single empty list in document in Firefox with enterMode=BR.
  • -
  • #3973 : Fixed list creation error at the end of document.
  • -
  • #3959 : Pasting styled text from word result in content lost.
  • -
  • #3793 : Combined images into sprites.
  • -
  • #3783 : Fixed indenting command in table cells create collapsed paragraph.
  • -
  • #3968 : About dialog layout was broken with IE+Standards+RTL.
  • -
  • #3991 : In IE quirks, text was not visible in v2 and office2003 skins.
  • -
  • #3983 : In IE, we'll now - silently ignore wrong toolbar definition settings which have extra commas being - left around.
  • -
  • Fixed the following test cases:
      -
    • #3992 : core/ckeditor2.html
    • -
    • #4138 : core/plugins.html
    • -
    • #3801 : plugins/htmldataprocessor/htmldataprocessor.html
    • -
  • -
  • #3989 : Host page horizontal scrolling a lot when on having righ-to-left direction.
  • -
  • #4001 : Create link around existing image result incorrect.
  • -
  • #3988 : Destroy editor on form submit event cause error.
  • -
  • #3994 : Insert horizontal line at end of document cause error.
  • -
  • #4074 : Indent error with 'indentClasses' config specified.
  • -
  • #4057 : Fixed anchor is lost after switch between editing modes.
  • -
  • #3644 : Image dialog was missin radio lock.
  • -
  • #4014 : Firefox2 had no dialog button backgrounds.
  • -
  • #4018 : Firefox2 had no richcombo text visible.
  • -
  • #4035 : [IE6] Paste dialog size was too small.
  • -
  • #4049 : Kama skin was too wide with config.width.
  • -
  • The following released files now doesn't require the _source folder
      -
    • #4086 : _samples/ui_languages.html
    • -
    • #4093 : _tests/core/dom/document.html
    • -
    • #4094 : Smiley plugin file
    • -
    • #4097 : No undo/redo support for fontColor and backgroundColor buttons.
    • -
  • -
  • #4085 : Paste and Paste from Word dialogs were not well styled in IE+RTL.
  • -
  • #3982 : Fixed enterKey on empty list item result in weird dom structure.
  • -
  • #4101 : Now it is possible to close dialog before gets focus.
  • -
  • #4075 : [IE6/7]Fixed apply custom inline style with "class" attribute failed.
  • -
  • #4087 : [Firefox]Fixed extra blocks created on create list when full document selected.
  • -
  • #4097 : No undo/redo support for fontColor and backgroundColor buttons.
  • -
  • #4111 : Fixed apply block style after inline style applied on full document error.
  • -
  • #3622 : Fixed shift enter with selection not deleting highlighted text.
  • -
  • #4092 : [IE6] Close button was missing for dialog without multiple tabs.
  • -
  • #4003 : Markup on the image dialog was disrupted when removing the border input.
  • -
  • #4096 : Editor content area was pushed down in IE RTL quirks.
  • -
  • #4112 : [FF] Paste dialog had scrollbars in quirks.
  • -
  • #4118 : Dialog dragging was - occasionally behaving strangely .
  • -
  • #4077 : The toolbar combos - were rendering incorrectly in some languages, like Chinese.
  • -
  • #3622 : The toolbar in the v2 - skin was wrapping improperly in some languages.
  • -
  • #4119 : Unable to edit image link with image dialog.
  • -
  • #4117 : Fixed dialog error when transforming image into button.
  • -
  • #4058 : [FF] wysiwyg mode is sometimes not been activated.
  • -
  • #4114 : [IE] RTE + IE6/IE7 Quirks = dialog mispositoned.
  • -
  • #4123 : Some dialog buttons were broken in IE7 quirks.
  • -
  • #4122 : [IE] The image dialog - was being rendered improperly when loading an image with long URL.
  • -
  • #4144 : Fixed the white-spaces at the end of <pre> is incorrectly removed.
  • -
  • #4143 : Fixed element id is lost when extracting contents from the range.
  • -
  • #4007 : [IE] Source area overflow from editor chrome.
  • -
  • #4145 : Fixed the on demand - ("basic") loading model of the editor.
  • -
  • #4139 : Fixed list plugin regression of [3903].
  • -
  • #4147 : Unify style text normalization logic when comparing styles.
  • -
  • #4150 : Fixed enlarge list result incorrect at the inner boundary of block.
  • -
  • #4164 : Now it is possible to paste text - in Source mode even if forcePasteAsPlainText = true.
  • -
  • #4129 : [FF]Unable to remove list with Ctrl-A.
  • -
  • #4172 : [Safari] The trailing - <br> was not been always added to blank lines ending with &nbsp;.
  • -
  • #4178 : It's now possible to - copy and paste Flash content among different editor instances.
  • -
  • #4193 : Automatic font color produced empty span on Firefox 3.5.
  • -
  • #4186 : [FF] Fixed First open float panel cause host page scrollbar blinking.
  • -
  • #4227 : Fixed destroy editor instance created on textarea which is not within form cause error.
  • -
  • #4240 : Fixed editor name containing hyphen break editor completely.
  • -
  • #3828 : Malformed nested list is now corrected by the parser.
  • -
-

- CKEditor 3.0 RC

-

- Changelog starts at this release.

- - - + + + + + Changelog - CKEditor + + + + +

+ CKEditor Changelog +

+

+ CKEditor 3.2

+

+ New features:

+
    +
  • Several accessibility enhancements:
      +
    • #4502 : The editor accessibility is now totally based on WAI-ARIA.
    • +
    • #5015 : Adding accessibility help dialog plugin.
    • +
    • #5014 : Keyboard navigation compliance with screen reader suggested keys.
    • +
    • #4595 : Better accessibility in the Templates dialog.
    • +
    • #3389 : Esc/Arrow Key now works for closing sub menu.
    • +
  • +
  • #4973 : The Style field in the Div Container dialog is now loading the styles defined in the default styleset used by the Styles toolbar combo.
  • +
+

+ Fixed issues:

+
    +
  • #5049 : Form Field list command in JAWS incorrectly lists extra fields.
  • +
  • #5008 : Lock/Unlock ratio buttons in the Image dialog was poorly designed in High Contrast mode.
  • +
  • #3980 : All labels in dialogs now use <label> instead of <div>.
  • +
  • #5213 : Reorganization of some entries in the language files to make it more consistent.
  • +
  • #5199 : In IE, single row toolbars didn't have the bottom padding.
  • +
+

+ CKEditor 3.1.1

+

+ New features:

+
    +
  • #4399 : Improved support for external file browsers by allowing executing a callback function.
  • +
  • #4612 : The text of links is now updated if it matches the URL to which it points to.
  • +
  • #4936 : New localization support for the Welsh language.
  • +
+

+ Fixed issues:

+
    +
  • #4272 : Kama skin toolbar was broken in IE+Quirks+RTL.
  • +
  • #4987 : Changed the url which is called by the Browser Server button in the Link tab of Image Properties dialog.
  • +
  • #5030 : The CKEDITOR.timestamp wasn't been appended to the skin.js file.
  • +
  • #4993 : Removed the float style from images when the user selects 'not set' for alignment.
  • +
  • #4944 : Fixed a bug where nested list structures with inconsequent levels were not being pasted correctly from MS Word.
  • +
  • #4637 : Table cells' 'nowrap' attribute was not being loaded by the cell property dialog. Thanks to pomu0325.
  • +
  • #4724 : Using the mouse to insert a link in IE might create incorrect results.
  • +
  • #4640 : Small optimizations for the fileBrowser plugin.
  • +
  • #4583 : The "Target Frame Name" field is now visible when target is set to 'frame' only.
  • +
  • #4863 : Fixing iframedialog's height doesn't stretch to 100% (except IE Quirks).
  • +
  • #4964 : The BACKSPACE key positioning was not correct in some cases with Firefox.
  • +
  • #4980 : Setting border, vspace and hspace of images to zero was not working.
  • +
  • #4773 : The fileBrowser plugin was overwriting onClick functions eventually defined on fileButton elements.
  • +
  • #4731 : The clipboard plugin was missing a reference to the dialog plugin.
  • +
  • #5051 : The about plugin was missing a reference to the dialog plugin.
  • +
  • #5146 : The wsc plugin was missing a reference to the dialog plugin.
  • +
  • #4632 : The print command will now properly break on the insertion point of page break for printing.
  • +
  • #4862 : The English (United Kingdom) language file has been renamed to en-gb.js.
  • +
  • #4618 : Selecting an emoticon or the lock and reset buttons in the image dialog fired the onBeforeUnload event in IE.
  • +
  • #4678 : It was not possible to set tables' width to empty value.
  • +
  • #5012 : Fixed dependency issues with the menu plugin.
  • +
  • #5040 : The editor will not properly ignore font related settings that have extra item separators (semi-colons).
  • +
  • #4046 : Justify should respect config.enterMode = CKEDITOR.ENTER_BR.
  • +
  • #4622 : Inserting tables multiple times was corrupting the undo system.
  • +
  • #4647 : [IE] Selection on an element within positioned container is lost after open context-menu then click one menu item.
  • +
  • #4683 : Double-quote character in attribute values was not escaped in the editor output.
  • +
  • #4762 : [IE] Unexpected vertical-scrolling behavior happens whenever focus is moving out of editor in source mode.
  • +
  • #4772 : Text color was not being applied properly on links.
  • +
  • #4795 : [IE] Press 'Del' key on horizontal line or table result in error.
  • +
  • #4824 : [IE] <br/> at the very first table cell breaks the editor selection.
  • +
  • #4851 : [IE] Delete table rows with context-menu may cause error.
  • +
  • #4951 : Replacing text with empty string was throwing errors.
  • +
  • #4963 : Link dialog was not opening properly for e-mail type links.
  • +
  • #5043 : Removed the possibility of having an unwanted script tag being outputted with the editor contents.
  • +
  • #3678 : There were issues when editing links inside floating divs with IE.
  • +
  • #4763 : Pressing ENTER key with text selected was not deleting the text in some situations.
  • +
  • #5096 : Simple ampersand attribute value doesn't work for more than one occurrence.
  • +
  • #3494 : Context menu is too narrow in some translations.
  • +
  • #5005 : Fixed HTML errors in PHP samples.
  • +
  • #5123 : Fixed broken XHTML in User Interface Languages sample.
  • +
  • #4893 : Editor now understands table cell inline styles.
  • +
  • #4611 : Selection around <select> in editor doesn't cause error anymore.
  • +
  • #4886 : Extra BR tags were being created in the output HTML.
  • +
  • #4933 : Empty tags with BR were being left in the DOM.
  • +
  • #5127 : There were errors when removing dialog definition pages through code.
  • +
  • #4767 : CKEditor was not working when ckeditor_source.js is loaded in the <body> .
  • +
  • #5062 : Avoided security warning message when loading the wysiwyg area in IE6 under HTTPS.
  • +
  • #5135 : The TAB key will now behave properly when in Source mode.
  • +
  • #4988 : It wasn't possible to use forcePasteAsPlainText with Safari on Mac.
  • +
  • #5095 : Safari on Mac deleted the current selection in the editor when Edit menu was clicked.
  • +
  • #5140 : In High Contrast mode, arrows were now been displayed for menus with submenus.
  • +
  • #5163 : The undo system was not working on some specific cases.
  • +
  • #5162 : The ajax sample was throwing errors when loading data.
  • +
  • #4999 : The Template dialog was not generating an undo snapshot.
  • +
  • Updated the following language files:
  • +
+

+ CKEditor 3.1

+

+ New features:

+
    +
  • #4067 : Introduced the full page editing support (from <html> to </html>).
  • +
  • #4228 : Introduced the Shared Spaces feature.
  • +
  • #4379 : Introduced the new powerful pasting system and word cleanup procedure, including enhancements to the paste as plain text feature.
  • +
  • #2872 : Introduced the new native PHP API, the first standardized server side support.
  • +
  • #4210 : Added CKEditor plugin for jQuery.
  • +
  • #2885 : Added 'div' dialog and corresponding context menu options.
  • +
  • #4574 : Added the table merging tools and corresponding context menu options.
  • +
  • #4340 : Added the email protection option for link dialog.
  • +
  • #4463 : Added inline CSS support in all places where custom stylesheet could apply.
  • +
  • #3881 : Added color dialog for 'more color' option in color buttons.
  • +
  • #4341 : Added the 'showborder' plugin.
  • +
  • #4549 : Make the anti-cache query string configurable.
  • +
  • #4708 : Added the 'htmlEncodeOutput' config option.
  • +
  • #4342 : Introduced the bodyId and bodyClass settings to specify the id and class. to be used in the editing area at runtime.
  • +
  • #3401 : Introduced the baseHref setting so it's possible to set the URL to be used to resolve absolute and relative URLs in the contents.
  • +
  • #4729 : Added support to fake elements for comments.
  • +
+

+ Fixed issues:

+
    +
  • #4707 : Fixed invalid link is requested in image preview.
  • +
  • #4461 : Fixed toolbar separator line along side combo enlarging the toolbar height.
  • +
  • #4596 : Fixed image re-size lock buttons aren't accessible in high-contrast mode.
  • +
  • #4676 : Fixed editing tables using table properties dialog overwrites original style values.
  • +
  • #4714 : Fixed IE6 JavaScript error when editing flash by commit 'Flash' dialog.
  • +
  • #3905 : Fixed 'wysiwyg' mode causes unauthenticated content warnings over SSL in FF 3.5.
  • +
  • #4768 : Fixed open context menu in IE throws js error when focus is not inside document.
  • +
  • #4822 : Fixed applying 'Headers' to existing table does not work in IE.
  • +
  • #4855 : Fixed toolbar doesn't wrap well for 'v2' skin in all browsers.
  • +
  • #4882 : Fixed auto detect paste from MS-Word is not working for Safari.
  • +
  • #4882 : Fixed unexpected margin style left behind on content cleaning up from MS-Word.
  • +
  • #4896 : Fixed paste nested list from MS-Word with measurement units set to cm is broken.
  • +
  • #4899 : Fixed unable to undo pre-formatted style.
  • +
  • #4900 : Fixed ratio-lock inconsistent between browsers.
  • +
  • #4901 : Fixed unable to edit any link with popup window's features in Firefox.
  • +
  • #4904 : Fixed when paste happen from dialog, it always throw JavaScript error.
  • +
  • #4905 : Fixed paste plain text result incorrect when content from dialog.
  • +
  • #4889 : Fixed unable to undo 'New Page' command after typing inside editor.
  • +
  • #4892 : Fixed table alignment style is not properly represented by the wrapping div.
  • +
  • #4918 : Fixed switching mode when maximized is showing background page contents.
  • +
+

+ CKEditor 3.0.2

+

+ New features:

+
    +
  • #4343 : Added the configuration option 'browserContextMenuOnCtrl' so it's possible to enable the default browser context menu by holding the CTRL key.
  • +
+

+ Fixed issues:

+
    +
  • #4552 : Fixed float panel doesn't show up since editor instanced been destroyed once.
  • +
  • #3918 : Fixed fake object is editable with Image dialog.
  • +
  • #4053 : Fixed 'Form Properties' missing from context menu when selection collapsed inside form.
  • +
  • #4401 : Fixed customized by removing 'upload' tab page from 'Link dialog' cause JavaScript error.
  • +
  • #4477 : Adding missing tag names in object style elements.
  • +
  • #4567 : Fixed IE throw error when pressing BACKSPACE in source mode.
  • +
  • #4573 : Fixed 'IgnoreEmptyPargraph' config doesn't work with the config 'entities' is set to 'false'.
  • +
  • #4614 : Fixed attribute protection fails because of line-break.
  • +
  • #4546 : Fixed UIColor plugin doesn't work when editor id contains CSS selector preserved keywords.
  • +
  • #4609 : Fixed flash object is lost when loading data from outside editor.
  • +
  • #4625 : Fixed editor stays visible in a div with style 'visibility:hidden'.
  • +
  • #4621 : Fixed clicking below table caused an empty table been generated.
  • +
  • #3373 : Fixed empty context menu when there's no menu item at all.
  • +
  • #4473 : Fixed setting rules on the same element tag name throws error.
  • +
  • #4514 : Fixed press 'Back' button breaks wysiwyg editing mode is Firefox.
  • +
  • #4542 : Fixed unable to access buttons using tab key in Safari and Opera.
  • +
  • #4577 : Fixed relative link url is broken after opening 'Link' dialog.
  • +
  • #4597 : Fixed custom style with same attribute name but different attribute value doesn't work.
  • +
  • #4651 : Fixed 'Deleted' and 'Inserted' text style is not rendering in wysiwyg mode and is wrong is source mode.
  • +
  • #4654 : Fixed 'CKEDITOR.config.font_defaultLabel(fontSize_defaultLabel)' is not working.
  • +
  • #3950 : Fixed table column insertion incorrect when selecting empty cell area.
  • +
  • #3912 : Fixed UIColor not working in IE when page has more than 30+ editors.
  • +
  • #4031 : Fixed mouse cursor on toolbar combo has more than 3 shapes.
  • +
  • #4041 : Fixed open context menu on multiple cells to remove them result in only one removed.
  • +
  • #4185 : Fixed resize handler effect doesn't affect flash object on output.
  • +
  • #4196 : Fixed 'Remove Numbered/Bulleted List' on nested list doesn't work well on nested list.
  • +
  • #4200 : Fixed unable to insert 'password' type filed with attributes.
  • +
  • #4530 : Fixed context menu couldn't open in Opera.
  • +
  • #4536 : Fixed keyboard navigation doesn't work at all in IE quirks mode.
  • +
  • #4584 : Fixed updated link Target field is not updating when updating to certain values.
  • +
  • #4603 : Fixed unable to disable submenu items in contextmenu.
  • +
  • #4672 : Fixed unable to redo the insertion of horizontal line.
  • +
  • #4677 : Fixed 'Tab' key is trapped by hidden dialog elements.
  • +
  • #4073 : Fixed insert template with replace option could result in empty document.
  • +
  • #4455 : Fixed unable to start editing when image inside document not loaded.
  • +
  • #4517 : Fixed 'dialog_backgroundCoverColor' doesn't work on IE6.
  • +
  • #3165 : Fixed enter key in empty list item before nested one result in collapsed line.
  • +
  • #4527 : Fixed checkbox generate invalid 'checked' attribute.
  • +
  • #1659 : Fixed unable to click below content to start editing in IE with 'config.docType' setting to standard compliant.
  • +
  • #3933 : Fixed extra <br> left at the end of document when the last element is a table.
  • +
  • #4736 : Fixed PAGE UP and PAGE DOWN keys in standards mode are not working.
  • +
  • #4725 : Fixed hitting 'enter' before html comment node produces a JavaScript error.
  • +
  • #4522 : Fixed unable to redo when typing after insert an image with relative url.
  • +
  • #4594 : Fixed context menu goes off-screen when mouse is at right had side of screen.
  • +
  • #4673 : Fixed undo not available straight away if shift key is used to enter first character.
  • +
  • #4690 : Fixed the parsing of nested inline elements.
  • +
  • #4450 : Fixed selecting multiple table cells before apply justify commands generates spurious paragraph in Firefox.
  • +
  • #4733 : Fixed dialog opening sometimes hang up Firefox and Safari.
  • +
  • #4498 : Fixed toolbar collapse button missing tooltip.
  • +
  • #4738 : Fixed inserting table inside bold/italic/underline generates error on ENTER_BR mode.
  • +
  • #4246 : Fixed avoid XHTML deprecated attributes for image styling.
  • +
  • #4543 : Fixed unable to move cursor between table and hr.
  • +
  • #4764 : Fixed wrong exception message when CKEDITOR.editor.append() to non-existing elements.
  • +
  • #4521 : Fixed dialog layout in IE6/7 may have scroll-bar and other weird effects.
  • +
  • #4709 : Fixed inconsistent scroll-bar behavior on IE.
  • +
  • #4776 : Fixed preview page failed to open when relative URl contains in document.
  • +
  • #4812 : Fixed 'Esc' key not working on dialogs in Opera.
  • +
  • Updated the following language files:
  • +
+

+ CKEditor 3.0.1

+

+ New features:

+
    +
  • #4219 : Added fallback mechanism for config.language.
  • +
  • #4194 : Added support for using multiple css style sheets within the editor.
  • +
+

+ Fixed issues:

+
    +
  • #3898 : Added validation for URL value in Image dialog.
  • +
  • #3528 : Fixed Context Menu issue when triggered using Shift+F10.
  • +
  • #4028 : Maximize control's tool tip was wrong once it is maximized.
  • +
  • #4237 : Toolbar is chopped off in Safari browser 3.x.
  • +
  • #4241 : Float panels are left on screen while editor is destroyed.
  • +
  • #4274 : Double click event is incorrect handled in 'divreplace' sample.
  • +
  • #4354 : Fixed TAB key on toolbar to not focus disabled buttons.
  • +
  • #3856 : Fixed focus and blur events in source view mode.
  • +
  • #3438 : Floating panels are off by (-1px, 0px) in RTL mode.
  • +
  • #3370 : Refactored use of CKEDITOR.env.isCustomDomain().
  • +
  • #4230 : HC detection caused js error.
  • +
  • #3978 : Fixed setStyle float on IE7 strict.
  • +
  • #4262 : Tab and Shift+Tab was not working to cycle through CTRL+SHIFT+F10 context menu in IE.
  • +
  • #3633 : Default context menu isn't disabled in toolbar, status bar, panels...
  • +
  • #3897 : Now there is no image previews when the URL is empty in image dialog.
  • +
  • #4048 : Context submenu was lacking uiColor.
  • +
  • #3568 : Dialogs now select all text when tabbing to text inputs.
  • +
  • #3727 : Cell Properties dialog was missing color selection option.
  • +
  • #3517 : Fixed "Match cyclic" field in Find & Replace dialog.
  • +
  • #4368 : borderColor table cell attribute haven't worked for none-IE
  • +
  • #4203 : In IE quirks mode + toolbar collapsed + source mode editing block height was incorrect.
  • +
  • #4387 : Fixed: right clicking in Kama skin can lead to a javascript error.
  • +
  • #4397 : Wysiwyg mode caused the host page scroll.
  • +
  • #4385 : Fixed editor's auto adjusting on DOM structure were confusing the dirty checking mechanism.
  • +
  • #4397 : Fixed regression of [3816] where turn on design mode was causing Firefox3 to scroll the host page.
  • +
  • #4254 : Added basic API sample.
  • +
  • #4107 : Normalize css font-family style text for correct comparision.
  • +
  • #3664 : Insert block element in empty editor document should not create new paragraph.
  • +
  • #4037 : 'id' attribute is missing with Flash dialog advanced page.
  • +
  • #4047 : Delete selected control type element when 'Backspace' is pressed on it.
  • +
  • #4191 : Fixed: dialog changes confirmation on image dialog appeared even when no changes have been made.
  • +
  • #4351 : Dash and dot could appear in attribute names.
  • +
  • #4355 : 'maximize' and 'showblock' commands shouldn't take editor focus.
  • +
  • #4504 : Fixed 'Enter'/'Esc' key is not working on dialog button.
  • +
  • #4245 : 'Strange Template' now come with a style attribute for width.
  • +
  • #4512 : Fixed styles plugin incorrectly adding semicolons to style text.
  • +
  • #3855 : Fixed loading unminified _source files when ckeditor_source.js is used.
  • +
  • #3717 : Dialog settings defaults can now be overridden in-page through the CKEDITOR.config object.
  • +
  • #4481 : The 'stylesCombo_stylesSet' configuration entry didn't work for full URLs.
  • +
  • #4480 : Fixed scope attribute in th.
  • +
  • #4467 : Fixed bug to use custom icon in context menus. Thanks to george.
  • +
  • #4190 : Fixed select field dialog layout in Safari.
  • +
  • #4518 : Fixed unable to open dialog without editor focus in IE.
  • +
  • #4519 : Fixed maximize without editor focus throw error in IE.
  • +
  • Updated the following language files:
  • +
+

+ CKEditor 3.0

+

+ New features:

+
    +
  • #3188 : Introduce + <pre> formatting feature when converting from other blocks.
  • +
  • #4445 : editor::setData now support an optional callback parameter.
  • +
+

+ Fixed issues:

+
    +
  • #2856 : Fixed problem with inches in Paste From Word plugin.
  • +
  • #3929 : Using Paste dialog, + the text is pasted into current selection
  • +
  • #3920 : Mouse cursor over characters in + Special Character dialog now is correct
  • +
  • #3882 : Fixed an issue + with PasteFromWord dialog in which default values was ignored
  • +
  • #3859 : Fixed Flash dialog layout in Webkit
  • +
  • #3852 : Disabled textarea resizing in dialogs
  • +
  • #3831 : The attempt to remove the contextmenu plugin + will not anymore break the editor
  • +
  • #3781 : Colorbutton is now disabled in 'source' mode
  • +
  • #3848 : Fixed an issue with Webkit in witch + elements in the Image and Link dialogs had wrong dimensions.
  • +
  • #3808 : Fixed UI Color Picker dialog size in example page.
  • +
  • #3658 : Editor had horizontal scrollbar in IE6.
  • +
  • #3819 : The cursor was not visible + when applying style to collapsed selections in Firefox 2.
  • +
  • #3809 : Fixed beam cursor + when mouse cursor is over text-only buttons in IE.
  • +
  • #3815 : Fixed an issue + with the form dialog in which the "enctype" attribute is outputted as "encoding".
  • +
  • #3785 : Fixed an issue + in CKEDITOR.tools.htmlEncode() which incorrectly outputs &nbsp; in IE8.
  • +
  • #3820 : Fixed an issue in + bullet list command in which a list created at the bottom of another gets merged to the top. +
  • +
  • #3830 : Table cell properties dialog + doesn't apply to all selected cells.
  • +
  • #3835 : Element path is not refreshed + after click on 'newpage'; and safari is not putting focus on document also. +
  • +
  • #3821 : Fixed an issue with JAWS in which + toolbar items are read inconsistently between virtual cursor modes.
  • +
  • #3789 : The "src" attribute + was getting duplicated in some situations.
  • +
  • #3591 : Protecting flash related elements + including '<object>', '<embed>' and '<param>'. +
  • +
  • #3759 : Fixed CKEDITOR.dom.element::scrollIntoView + logic bug which scroll even element is inside viewport. +
  • +
  • #3773 : Fixed remove list will merge lines. +
  • +
  • #3829 : Fixed remove empty link on output data.
  • +
  • #3730 : Indent is performing on the whole + block instead of selected lines in enterMode = BR.
  • +
  • #3844 : Fixed UndoManager register keydown on obsoleted document
  • +
  • #3805 : Enabled SCAYT plugin for IE.
  • +
  • #3834 : Context menu on table caption was incorrect.
  • +
  • #3812 : Fixed an issue in which the editor + may show up empty or uneditable in IE7, 8 and Firefox 3.
  • +
  • #3825 : Fixed JS error when opening spellingcheck.
  • +
  • #3862 : Fixed html parser infinite loop on certain malformed + source code.
  • +
  • #3639 : Button size was inconsistent.
  • +
  • #3874 : Paste as plain text in Safari loosing lines.
  • +
  • #3849 : Fixed IE8 crashes when applying lists and indenting.
  • +
  • #3876 : Changed dialog checkbox and radio labels to explicit labels.
  • +
  • #3843 : Fixed context submenu position in IE 6 & 7 RTL.
  • +
  • #3864 : [FF]Document is not editable after inserting element on a fresh page.
  • +
  • #3883 : Fixed removing inline style logic incorrect on Firefox2.
  • +
  • #3884 : Empty "href" attribute was duplicated on output data.
  • +
  • #3858 : Fixed the issue where toolbars + break up in IE6 and IE7 after the browser is resized.
  • +
  • #3868 : [chrome] SCAYT toolbar options was in reversed order.
  • +
  • #3875 : Fixed an issue in Safari where + table row/column/cell menus are not useable when table cells are selected.
  • +
  • #3896 : The editing area was + flashing when switching forth and back to source view.
  • +
  • #3894 : Fixed an issue where editor failed to initialize when using the on-demand loading way.
  • +
  • #3903 : Color button plugin doesn't read config entry from editor instance correctly.
  • +
  • #3801 : Comments at the start of the document was lost in IE.
  • +
  • #3871 : Unable to redo when undos to the front of snapshots stack.
  • +
  • #3909 : Move focus from editor into a text input control is broken.
  • +
  • #3870 : The empty paragraph + desappears when hitting ENTER after "New Page".
  • +
  • #3887 : Fixed an issue in which the create + list command may leak outside of a selected table cell and into the rest of document.
  • +
  • #3916 : Fixed maximize does not enlarge editor width when width is set.
  • +
  • #3879 : [webkit] Color button panel had incorrect size on first open.
  • +
  • #3839 : Update Scayt plugin to reflect the latest change from SpellChecker.net.
  • +
  • #3742 : Fixed wrong dialog layout for dialogs without tab bar in IE RTL mode .
  • +
  • #3671 : Fixed body fixing should be applied to the real type under fake elements.
  • +
  • #3836 : Fixed remove list in enterMode=BR will merge sibling text to one line.
  • +
  • #3949 : Fixed enterKey within pre-formatted text introduce wrong line-break.
  • +
  • #3878 : Whenever possible, + dialogs will not present scrollbars if the content is too big for its standard + size.
  • +
  • #3782 : Remove empty list in table cell result in collapsed cell.
  • +
  • Updated the following language files:
  • +
  • #3984 : [IE]The pre-formatted style is generating error.
  • +
  • #3946 : Fixed unable to hide contextmenu.
  • +
  • #3956 : Fixed About dialog in Source Mode for IE.
  • +
  • #3953 : Fixed keystroke for close Paste dialog.
  • +
  • #3951 : Reset size and lock ratio options were not accessible in Image dialog.
  • +
  • #3921 : Fixed Container scroll issue on IE7.
  • +
  • #3940 : Fixed list operation doesn't stop at table.
  • +
  • #3891 : [IE] Fixed 'automatic' font color doesn't work.
  • +
  • #3972 : Fixed unable to remove a single empty list in document in Firefox with enterMode=BR.
  • +
  • #3973 : Fixed list creation error at the end of document.
  • +
  • #3959 : Pasting styled text from word result in content lost.
  • +
  • #3793 : Combined images into sprites.
  • +
  • #3783 : Fixed indenting command in table cells create collapsed paragraph.
  • +
  • #3968 : About dialog layout was broken with IE+Standards+RTL.
  • +
  • #3991 : In IE quirks, text was not visible in v2 and office2003 skins.
  • +
  • #3983 : In IE, we'll now + silently ignore wrong toolbar definition settings which have extra commas being + left around.
  • +
  • Fixed the following test cases:
      +
    • #3992 : core/ckeditor2.html
    • +
    • #4138 : core/plugins.html
    • +
    • #3801 : plugins/htmldataprocessor/htmldataprocessor.html
    • +
  • +
  • #3989 : Host page horizontal scrolling a lot when on having righ-to-left direction.
  • +
  • #4001 : Create link around existing image result incorrect.
  • +
  • #3988 : Destroy editor on form submit event cause error.
  • +
  • #3994 : Insert horizontal line at end of document cause error.
  • +
  • #4074 : Indent error with 'indentClasses' config specified.
  • +
  • #4057 : Fixed anchor is lost after switch between editing modes.
  • +
  • #3644 : Image dialog was missin radio lock.
  • +
  • #4014 : Firefox2 had no dialog button backgrounds.
  • +
  • #4018 : Firefox2 had no richcombo text visible.
  • +
  • #4035 : [IE6] Paste dialog size was too small.
  • +
  • #4049 : Kama skin was too wide with config.width.
  • +
  • The following released files now doesn't require the _source folder
      +
    • #4086 : _samples/ui_languages.html
    • +
    • #4093 : _tests/core/dom/document.html
    • +
    • #4094 : Smiley plugin file
    • +
    • #4097 : No undo/redo support for fontColor and backgroundColor buttons.
    • +
  • +
  • #4085 : Paste and Paste from Word dialogs were not well styled in IE+RTL.
  • +
  • #3982 : Fixed enterKey on empty list item result in weird dom structure.
  • +
  • #4101 : Now it is possible to close dialog before gets focus.
  • +
  • #4075 : [IE6/7]Fixed apply custom inline style with "class" attribute failed.
  • +
  • #4087 : [Firefox]Fixed extra blocks created on create list when full document selected.
  • +
  • #4097 : No undo/redo support for fontColor and backgroundColor buttons.
  • +
  • #4111 : Fixed apply block style after inline style applied on full document error.
  • +
  • #3622 : Fixed shift enter with selection not deleting highlighted text.
  • +
  • #4092 : [IE6] Close button was missing for dialog without multiple tabs.
  • +
  • #4003 : Markup on the image dialog was disrupted when removing the border input.
  • +
  • #4096 : Editor content area was pushed down in IE RTL quirks.
  • +
  • #4112 : [FF] Paste dialog had scrollbars in quirks.
  • +
  • #4118 : Dialog dragging was + occasionally behaving strangely .
  • +
  • #4077 : The toolbar combos + were rendering incorrectly in some languages, like Chinese.
  • +
  • #3622 : The toolbar in the v2 + skin was wrapping improperly in some languages.
  • +
  • #4119 : Unable to edit image link with image dialog.
  • +
  • #4117 : Fixed dialog error when transforming image into button.
  • +
  • #4058 : [FF] wysiwyg mode is sometimes not been activated.
  • +
  • #4114 : [IE] RTE + IE6/IE7 Quirks = dialog mispositoned.
  • +
  • #4123 : Some dialog buttons were broken in IE7 quirks.
  • +
  • #4122 : [IE] The image dialog + was being rendered improperly when loading an image with long URL.
  • +
  • #4144 : Fixed the white-spaces at the end of <pre> is incorrectly removed.
  • +
  • #4143 : Fixed element id is lost when extracting contents from the range.
  • +
  • #4007 : [IE] Source area overflow from editor chrome.
  • +
  • #4145 : Fixed the on demand + ("basic") loading model of the editor.
  • +
  • #4139 : Fixed list plugin regression of [3903].
  • +
  • #4147 : Unify style text normalization logic when comparing styles.
  • +
  • #4150 : Fixed enlarge list result incorrect at the inner boundary of block.
  • +
  • #4164 : Now it is possible to paste text + in Source mode even if forcePasteAsPlainText = true.
  • +
  • #4129 : [FF]Unable to remove list with Ctrl-A.
  • +
  • #4172 : [Safari] The trailing + <br> was not been always added to blank lines ending with &nbsp;.
  • +
  • #4178 : It's now possible to + copy and paste Flash content among different editor instances.
  • +
  • #4193 : Automatic font color produced empty span on Firefox 3.5.
  • +
  • #4186 : [FF] Fixed First open float panel cause host page scrollbar blinking.
  • +
  • #4227 : Fixed destroy editor instance created on textarea which is not within form cause error.
  • +
  • #4240 : Fixed editor name containing hyphen break editor completely.
  • +
  • #3828 : Malformed nested list is now corrected by the parser.
  • +
+

+ CKEditor 3.0 RC

+

+ Changelog starts at this release.

+ + + diff --git a/ckeditor/CHANGES.md b/code/web/ckeditor/CHANGES.md similarity index 99% rename from ckeditor/CHANGES.md rename to code/web/ckeditor/CHANGES.md index 6a6e62f3a..d291c8d58 100644 --- a/ckeditor/CHANGES.md +++ b/code/web/ckeditor/CHANGES.md @@ -1,1118 +1,1118 @@ -CKEditor 4 Changelog -==================== - -## CKEditor 4.5.11 - -**Security Updates:** - -* [Severity: minor] Fixed the target="_blank" vulnerability reported by James Gaskell. - - Issue summary: If a victim had access to a spoofed version of ckeditor.com via HTTP (e.g. due to DNS spoofing, using a hacked public network or mailicious hotspot), then when using a link to the ckeditor.com website it was possible for the attacker to change the current URL of the opening page, even if the opening page was protected with SSL. - - An upgrade is recommended. - -New Features: - -* [#14747](http://dev.ckeditor.com/ticket/14747): The [Enhanced Image](http://ckeditor.com/addon/image2) caption now supports the link `target` attribute. -* [#7154](http://dev.ckeditor.com/ticket/7154): Added support for the "Display Text" field to the [Link](http://ckeditor.com/addon/link) dialog. Thanks to [Ryan Guill](https://github.com/ryanguill)! - -Fixed Issues: - -* [#13362](http://dev.ckeditor.com/ticket/13362): [Blink, WebKit] Fixed: Active widget element is not cached when it is losing focus and it is inside an editable element. -* [#13755](http://dev.ckeditor.com/ticket/13755): [Edge] Fixed: Pasting images does not work. -* [#13548](http://dev.ckeditor.com/ticket/13548): [IE] Fixed: Clicking the [elements path](http://ckeditor.com/addon/elementspath) disables Cut and Copy icons. -* [#13812](http://dev.ckeditor.com/ticket/13812): Fixed: When aborting file upload the placeholder for image is left. -* [#14659](http://dev.ckeditor.com/ticket/14659): [Blink] Fixed: Content scrolled to the top after closing the dialog in a [`
`-based editor](http://ckeditor.com/addon/divarea). -* [#14825](http://dev.ckeditor.com/ticket/14825): [Edge] Fixed: Focusing the editor causes unwanted scrolling due to dropped support for the `setActive` method. - -## CKEditor 4.5.10 - -Fixed Issues: - -* [#10750](http://dev.ckeditor.com/ticket/10750): Fixed: The editor does not escape the `font-style` family property correctly, removing quotes and whitespace from font names. -* [#14413](http://dev.ckeditor.com/ticket/14413): Fixed: The [Auto Grow](http://ckeditor.com/addon/autogrow) plugin with the [`config.autoGrow_onStartup`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-autoGrow_onStartup) option set to `true` does not work properly for an editor that is not visible. -* [#14451](http://dev.ckeditor.com/ticket/14451): Fixed: Numeric element ID not escaped properly. Thanks to [Jakub Chalupa](https://github.com/chaluja7)! -* [#14590](http://dev.ckeditor.com/ticket/14590): Fixed: Additional line break appearing after inline elements when switching modes. Thanks to [dpidcock](https://github.com/dpidcock)! -* [#14539](https://dev.ckeditor.com/ticket/14539): Fixed: JAWS reads "selected Blank" instead of "selected " when selecting a widget. -* [#14701](http://dev.ckeditor.com/ticket/14701): Fixed: More precise labels for [Enhanced Image](http://ckeditor.com/addon/image2) and [Placeholder](http://ckeditor.com/addon/placeholder) widgets. -* [#14667](http://dev.ckeditor.com/ticket/14667): [IE] Fixed: Removing background color from selected text removes background color from the whole paragraph. -* [#14252](http://dev.ckeditor.com/ticket/14252): [IE] Fixed: Styles drop-down list does not always reflect the current style of the text line. -* [#14275](http://dev.ckeditor.com/ticket/14275): [IE9+] Fixed: `onerror` and `onload` events are not used in browsers it could have been used when loading scripts dynamically. - -## CKEditor 4.5.9 - -Fixed Issues: - -* [#10685](http://dev.ckeditor.com/ticket/10685): Fixed: Unreadable toolbar icons after updating to the new editor version. Fixed with [6876179](https://github.com/ckeditor/ckeditor-dev/commit/6876179db4ee97e786b07b8fd72e6b4120732185) in [ckeditor-dev](https://github.com/ckeditor/ckeditor-dev) and [6c9189f4](https://github.com/ckeditor/ckeditor-presets/commit/6c9189f46392d2c126854fe8889b820b8c76d291) in [ckeditor-presets](https://github.com/ckeditor/ckeditor-presets). -* [#14573](https://dev.ckeditor.com/ticket/14573): Fixed: Missing [Widget](http://ckeditor.com/addon/widget) drag handler CSS when there are multiple editor instances. -* [#14620](https://dev.ckeditor.com/ticket/14620): Fixed: Setting both the `min-height` style for the `` element and the `height` style for the `` element breaks the [Auto Grow](http://ckeditor.com/addon/autogrow) plugin. -* [#14538](http://dev.ckeditor.com/ticket/14538): Fixed: Keyboard focus goes into an embedded `'; echo '
'; diff --git a/test/runAllTests.sh b/test/runAllTests.sh index 4055c7299..a2c9480f7 100755 --- a/test/runAllTests.sh +++ b/test/runAllTests.sh @@ -1,8 +1,9 @@ #!/bin/sh -cd /var/www/public/ +cd /var/www/ dockerize -wait tcp://opencats_test_mariadb:3306 -wait http://opencats_test_web:80 -timeout 30s php modules/tests/waitForDb.php cat config.php -./vendor/bin/phpunit src/OpenCATS/Tests/IntegrationTests -./vendor/bin/behat -v -c ./test/behat.yml --suite="default" -./vendor/bin/behat -v -c ./test/behat.yml --suite="security" +cd /var/www/code +./vendor/bin/codecept run acceptance activities.feature -vvv +# ./vendor/bin/behat -v -c ./test/behat.yml --suite="default" +# ./vendor/bin/behat -v -c ./test/behat.yml --suite="security" From 273b76e3af25c49775f1c78b742e4f50d7b2c2ec Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Mon, 9 Jan 2017 17:42:38 -0300 Subject: [PATCH 039/178] Update location of runAllTests call in travis --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ab8c5d72b..55462465a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ script: - cd code; ./vendor/bin/codecept run unit -c src/AppBundle/; cd .. - cd docker/; docker-compose -f docker-compose-unittest.yml down; cd .. - cd docker/; docker-compose -f docker-compose-test.yml up -d - - docker-compose -f docker-compose-test.yml exec php /var/www/public/test/runAllTests.sh + - docker-compose -f docker-compose-test.yml exec php /var/www/test/runAllTests.sh - cd ..; ./ci/package-code.sh deploy: From d8ff052bd9cde3e5bea6667884f807149c28566d Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Mon, 9 Jan 2017 17:54:12 -0300 Subject: [PATCH 040/178] Fix error in waitForDB.php --- modules/tests/waitForDb.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/tests/waitForDb.php b/modules/tests/waitForDb.php index c93bb0967..5a5351eec 100644 --- a/modules/tests/waitForDb.php +++ b/modules/tests/waitForDb.php @@ -1,4 +1,5 @@ Date: Mon, 9 Jan 2017 18:06:02 -0300 Subject: [PATCH 041/178] Fix selenium hostname during acceptance testing phase --- code/tests/acceptance.suite.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/tests/acceptance.suite.yml b/code/tests/acceptance.suite.yml index e4205403b..c2292bb18 100644 --- a/code/tests/acceptance.suite.yml +++ b/code/tests/acceptance.suite.yml @@ -3,6 +3,6 @@ modules: enabled: - WebDriver: url: 'http://opencats/' # put your local url - host: 172.19.0.3 + host: selenium browser: chrome - \Helper\Acceptance \ No newline at end of file From b5e413c952100b3a370cd87895b0a73aaa8df8ce Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Mon, 9 Jan 2017 18:14:12 -0300 Subject: [PATCH 042/178] Increase wait timeout --- test/runAllTests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/runAllTests.sh b/test/runAllTests.sh index a2c9480f7..659cc80f6 100755 --- a/test/runAllTests.sh +++ b/test/runAllTests.sh @@ -1,6 +1,6 @@ #!/bin/sh cd /var/www/ -dockerize -wait tcp://opencats_test_mariadb:3306 -wait http://opencats_test_web:80 -timeout 30s +dockerize -wait tcp://opencats_test_mariadb:3306 -wait http://opencats_test_web:80 -timeout 60s php modules/tests/waitForDb.php cat config.php cd /var/www/code From 2ed0b51e88efd3bea91ce12cc113c15e9f272ee7 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Mon, 9 Jan 2017 18:42:53 -0300 Subject: [PATCH 043/178] Move candidate-filters acceptance tests to codeception standards --- code/tests/_support/AcceptanceTester.php | 24 +++++++++++++++++++ .../_generated/AcceptanceTesterActions.php | 2 +- .../acceptance}/candidate-filters.feature | 20 ++++++++-------- 3 files changed, 35 insertions(+), 11 deletions(-) rename {test/features => code/tests/acceptance}/candidate-filters.feature (71%) diff --git a/code/tests/_support/AcceptanceTester.php b/code/tests/_support/AcceptanceTester.php index c0234d31e..61ac2673c 100644 --- a/code/tests/_support/AcceptanceTester.php +++ b/code/tests/_support/AcceptanceTester.php @@ -130,4 +130,28 @@ public function iShouldSee($text) { $this->see($text); } + + /** + * @When I select :option from :select + */ + public function iSelectFrom($option, $select) + { + $this->selectOption($select, $option); + } + + /** + * @Then I should not see :text + */ + public function iShouldNotSee($text) + { + $this->cantSee($text); + } + + /** + * @Then the :element element should contain :attribute + */ + public function theElementShouldContain($element, $attribute) + { + $this->grabAttributeFrom($element, $attribute); + } } diff --git a/code/tests/_support/_generated/AcceptanceTesterActions.php b/code/tests/_support/_generated/AcceptanceTesterActions.php index 2faf45598..24d9d4905 100644 --- a/code/tests/_support/_generated/AcceptanceTesterActions.php +++ b/code/tests/_support/_generated/AcceptanceTesterActions.php @@ -1,4 +1,4 @@ - Date: Mon, 9 Jan 2017 21:03:47 -0300 Subject: [PATCH 044/178] Push test artifacts to s3 --- .travis.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.travis.yml b/.travis.yml index 55462465a..3be929c3d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,3 +38,12 @@ deploy: on: tags: true +addons: + artifacts: + debug: true + paths: + - ./code/tests/_output + target_paths: $TRAVIS_BUILD_NUMBER + working_dir: WORKING_DIR + bucket: opencats/$TRAVIS_REPO_SLUG/$TRAVIS_BUILD_NUMBER + s3_region: us-east-1 \ No newline at end of file From 80b14ba0565bd70f7202cb68be5a1d94db6e0b2e Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Tue, 10 Jan 2017 07:32:41 -0300 Subject: [PATCH 045/178] Update s3 bucket configuration --- .travis.yml | 4 ++-- .../tests/acceptance}/customize-extra-fields.feature | 0 {test/features => code/tests/acceptance}/job-orders.feature | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename {test/features => code/tests/acceptance}/customize-extra-fields.feature (100%) rename {test/features => code/tests/acceptance}/job-orders.feature (100%) diff --git a/.travis.yml b/.travis.yml index 3be929c3d..2f4746c9e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,7 +43,7 @@ addons: debug: true paths: - ./code/tests/_output - target_paths: $TRAVIS_BUILD_NUMBER + target_paths: $TRAVIS_REPO_SLUG/$TRAVIS_BUILD_NUMBER working_dir: WORKING_DIR - bucket: opencats/$TRAVIS_REPO_SLUG/$TRAVIS_BUILD_NUMBER + bucket: opencats s3_region: us-east-1 \ No newline at end of file diff --git a/test/features/customize-extra-fields.feature b/code/tests/acceptance/customize-extra-fields.feature similarity index 100% rename from test/features/customize-extra-fields.feature rename to code/tests/acceptance/customize-extra-fields.feature diff --git a/test/features/job-orders.feature b/code/tests/acceptance/job-orders.feature similarity index 100% rename from test/features/job-orders.feature rename to code/tests/acceptance/job-orders.feature From 2f6280348efe6f90a0a9b24ff693ee7b98c275d5 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Tue, 10 Jan 2017 17:49:36 -0300 Subject: [PATCH 046/178] Move tinymce to the public folder --- {lib => code/web/js}/tinymce/changelog | 2566 +-- .../js}/tinymce/examples/example_advanced.css | 80 +- .../js}/tinymce/examples/example_advanced.htm | 198 +- .../tinymce/examples/example_flash_list.js | 18 +- .../web/js}/tinymce/examples/example_full.css | 102 +- .../web/js}/tinymce/examples/example_full.htm | 148 +- .../tinymce/examples/example_image_list.js | 18 +- .../js}/tinymce/examples/example_link_list.js | 20 +- .../tinymce/examples/example_media_list.js | 18 +- .../js}/tinymce/examples/example_simple.htm | 92 +- .../js}/tinymce/examples/example_template.htm | 290 +- .../tinymce/examples/example_template_list.js | 16 +- .../web/js}/tinymce/examples/example_word.css | 122 +- .../web/js}/tinymce/examples/example_word.htm | 134 +- .../web/js}/tinymce/examples/logo.jpg | Bin .../web/js}/tinymce/examples/logo_over.jpg | Bin .../js}/tinymce/examples/templates/count.htm | 10 +- .../examples/templates/editing_details.htm | 28 +- .../examples/templates/editors_comment.htm | 18 +- .../tinymce/examples/templates/invoice.htm | 52 +- .../tinymce/examples/templates/layout1.htm | 30 +- .../tinymce/examples/templates/snippet1.htm | 2 +- .../js}/tinymce/jscripts/tiny_mce/blank.htm | 18 +- .../js}/tinymce/jscripts/tiny_mce/langs/en.js | 82 +- .../jscripts/tiny_mce/langs/readme.txt | 18 +- .../js}/tinymce/jscripts/tiny_mce/license.txt | 1008 +- .../plugins/_template/editor_plugin.js | 0 .../plugins/_template/editor_plugin_src.js | 490 +- .../plugins/_template/images/template.gif | Bin .../tiny_mce/plugins/_template/langs/en.js | 16 +- .../tiny_mce/plugins/_template/popup.htm | 96 +- .../tiny_mce/plugins/_template/readme.txt | 0 .../tiny_mce/plugins/advhr/css/advhr.css | 46 +- .../tiny_mce/plugins/advhr/editor_plugin.js | 0 .../plugins/advhr/editor_plugin_src.js | 180 +- .../tiny_mce/plugins/advhr/images/advhr.gif | Bin .../tiny_mce/plugins/advhr/jscripts/rule.js | 86 +- .../tiny_mce/plugins/advhr/langs/en.js | 16 +- .../tiny_mce/plugins/advhr/readme.txt | 2 +- .../jscripts/tiny_mce/plugins/advhr/rule.htm | 122 +- .../plugins/advimage/css/advimage.css | 132 +- .../plugins/advimage/editor_plugin.js | 0 .../plugins/advimage/editor_plugin_src.js | 296 +- .../tiny_mce/plugins/advimage/image.htm | 482 +- .../plugins/advimage/images/sample.gif | Bin .../plugins/advimage/jscripts/functions.js | 1076 +- .../tiny_mce/plugins/advimage/langs/en.js | 54 +- .../tiny_mce/plugins/advimage/readme.txt | 2 +- .../tiny_mce/plugins/advlink/css/advlink.css | 70 +- .../tiny_mce/plugins/advlink/editor_plugin.js | 0 .../plugins/advlink/editor_plugin_src.js | 160 +- .../plugins/advlink/jscripts/functions.js | 1174 +- .../tiny_mce/plugins/advlink/langs/en.js | 90 +- .../tiny_mce/plugins/advlink/link.htm | 676 +- .../tiny_mce/plugins/advlink}/readme.txt | 2 +- .../plugins/autosave/editor_plugin.js | 0 .../plugins/autosave/editor_plugin_src.js | 92 +- .../tiny_mce/plugins/autosave/langs/en.js | 10 +- .../tiny_mce/plugins/autosave}/readme.txt | 2 +- .../tiny_mce/plugins/bbcode/editor_plugin.js | 0 .../plugins/bbcode/editor_plugin_src.js | 204 +- .../tiny_mce/plugins/cleanup/editor_plugin.js | 0 .../plugins/cleanup/editor_plugin_src.js | 20 +- .../tiny_mce/plugins/cleanup/readme.txt | 2 +- .../plugins/contextmenu/css/contextmenu.css | 148 +- .../plugins/contextmenu/editor_plugin.js | 0 .../plugins/contextmenu/editor_plugin_src.js | 720 +- .../plugins/contextmenu/images/spacer.gif | Bin .../tiny_mce/plugins/contextmenu/readme.txt | 1 + .../tiny_mce/plugins/devkit/css/devkit.css | 234 +- .../tiny_mce/plugins/devkit/css/devkit_ui.css | 30 +- .../tiny_mce/plugins/devkit/devkit.htm | 280 +- .../tiny_mce/plugins/devkit/editor_plugin.js | 0 .../plugins/devkit/editor_plugin_src.js | 650 +- .../plugins/devkit/images/flip_down.gif | Bin .../plugins/devkit/images/flip_up.gif | Bin .../plugins/devkit/jscripts/devkit.js | 660 +- .../tiny_mce/plugins/devkit/jscripts/diff.js | 2384 +-- .../tiny_mce/plugins/devkit/langs/en.js | 46 +- .../plugins/directionality/editor_plugin.js | 0 .../directionality/editor_plugin_src.js | 180 +- .../plugins/directionality/images/ltr.gif | Bin .../plugins/directionality/images/rtl.gif | Bin .../plugins/directionality/langs/en.js | 12 +- .../plugins/directionality/readme.txt | 1 + .../plugins/emotions/editor_plugin.js | 0 .../plugins/emotions/editor_plugin_src.js | 126 +- .../tiny_mce/plugins/emotions/emotions.htm | 80 +- .../plugins/emotions/images/emotions.gif | Bin .../plugins/emotions/images/readme.txt | 4 +- .../plugins/emotions/images/smiley-cool.gif | Bin .../plugins/emotions/images/smiley-cry.gif | Bin .../emotions/images/smiley-embarassed.gif | Bin .../emotions/images/smiley-foot-in-mouth.gif | Bin .../plugins/emotions/images/smiley-frown.gif | Bin .../emotions/images/smiley-innocent.gif | Bin .../plugins/emotions/images/smiley-kiss.gif | Bin .../emotions/images/smiley-laughing.gif | Bin .../emotions/images/smiley-money-mouth.gif | Bin .../plugins/emotions/images/smiley-sealed.gif | Bin .../plugins/emotions/images/smiley-smile.gif | Bin .../emotions/images/smiley-surprised.gif | Bin .../emotions/images/smiley-tongue-out.gif | Bin .../emotions/images/smiley-undecided.gif | Bin .../plugins/emotions/images/smiley-wink.gif | Bin .../plugins/emotions/images/smiley-yell.gif | Bin .../plugins/emotions/jscripts/functions.js | 42 +- .../tiny_mce/plugins/emotions/langs/en.js | 44 +- .../tiny_mce/plugins/emotions/readme.txt | 1 + .../tiny_mce/plugins/flash/css/content.css | 14 +- .../tiny_mce/plugins/flash/css/flash.css | 22 +- .../tiny_mce/plugins/flash/editor_plugin.js | 0 .../plugins/flash/editor_plugin_src.js | 570 +- .../jscripts/tiny_mce/plugins/flash/flash.htm | 140 +- .../tiny_mce/plugins/flash/images/flash.gif | Bin .../tiny_mce/plugins/flash/jscripts/flash.js | 214 +- .../tiny_mce/plugins/flash/langs/en.js | 22 +- .../tiny_mce/plugins/flash/readme.txt | 1 + .../tiny_mce/plugins/fullpage/blank.htm | 18 +- .../plugins/fullpage/css/fullpage.css | 350 +- .../plugins/fullpage/editor_plugin.js | 0 .../plugins/fullpage/editor_plugin_src.js | 470 +- .../tiny_mce/plugins/fullpage/fullpage.htm | 1154 +- .../tiny_mce/plugins/fullpage/images/add.gif | Bin .../plugins/fullpage/images/fullpage.gif | Bin .../plugins/fullpage/images/move_down.gif | Bin .../plugins/fullpage/images/move_up.gif | Bin .../plugins/fullpage/images/remove.gif | Bin .../plugins/fullpage/jscripts/fullpage.js | 1158 +- .../tiny_mce/plugins/fullpage/langs/en.js | 184 +- .../tiny_mce/plugins/fullscreen/css/page.css | 42 +- .../plugins/fullscreen/editor_plugin.js | 0 .../plugins/fullscreen/editor_plugin_src.js | 460 +- .../plugins/fullscreen/fullscreen.htm | 182 +- .../plugins/fullscreen/images/fullscreen.gif | Bin .../tiny_mce/plugins/fullscreen/langs/en.js | 10 +- .../tiny_mce/plugins/fullscreen/readme.txt | 1 + .../tiny_mce/plugins/iespell/editor_plugin.js | 0 .../plugins/iespell/editor_plugin_src.js | 116 +- .../plugins/iespell/images/iespell.gif | Bin .../tiny_mce/plugins/iespell/langs/en.js | 14 +- .../tiny_mce/plugins/iespell/readme.txt | 1 + .../plugins/inlinepopups/css/inlinepopup.css | 138 +- .../plugins/inlinepopups/editor_plugin.js | 0 .../plugins/inlinepopups/editor_plugin_src.js | 0 .../plugins/inlinepopups/images/spacer.gif | Bin .../inlinepopups/images/window_close.gif | Bin .../inlinepopups/images/window_maximize.gif | Bin .../inlinepopups/images/window_minimize.gif | Bin .../inlinepopups/images/window_resize.gif | Bin .../inlinepopups/jscripts/mcwindows.js | 906 +- .../tiny_mce/plugins/inlinepopups/readme.txt | 0 .../plugins/insertdatetime/editor_plugin.js | 0 .../insertdatetime/editor_plugin_src.js | 180 +- .../insertdatetime/images/insertdate.gif | Bin .../insertdatetime/images/inserttime.gif | Bin .../plugins/insertdatetime/langs/en.js | 24 +- .../plugins/insertdatetime/readme.txt | 1 + .../tiny_mce/plugins/layer/editor_plugin.js | 0 .../plugins/layer/editor_plugin_src.js | 496 +- .../plugins/layer/images/absolute.gif | Bin .../plugins/layer/images/backward.gif | Bin .../tiny_mce/plugins/layer/images/forward.gif | Bin .../plugins/layer/images/insert_layer.gif | Bin .../plugins/layer/images/insertlayer.gif | Bin .../plugins/layer/images/movebackward.gif | Bin .../plugins/layer/images/moveforward.gif | Bin .../tiny_mce/plugins/layer/langs/en.js | 18 +- .../tiny_mce/plugins/layer/readme.txt | 1 + .../tiny_mce/plugins/media/css/content.css | 52 +- .../tiny_mce/plugins/media/css/media.css | 136 +- .../tiny_mce/plugins/media/editor_plugin.js | 0 .../plugins/media/editor_plugin_src.js | 864 +- .../tiny_mce/plugins/media/images/flash.gif | Bin .../tiny_mce/plugins/media/images/media.gif | Bin .../plugins/media/images/quicktime.gif | Bin .../plugins/media/images/realmedia.gif | Bin .../plugins/media/images/shockwave.gif | Bin .../plugins/media/images/windowsmedia.gif | Bin .../tiny_mce/plugins/media}/jscripts/embed.js | 146 +- .../tiny_mce/plugins/media/jscripts/media.js | 1188 +- .../tiny_mce/plugins/media/langs/en.js | 186 +- .../jscripts/tiny_mce/plugins/media/media.htm | 1446 +- .../plugins/nonbreaking/editor_plugin.js | 0 .../plugins/nonbreaking/editor_plugin_src.js | 124 +- .../nonbreaking/images/nonbreaking.gif | Bin .../tiny_mce/plugins/nonbreaking/langs/en.js | 10 +- .../plugins/noneditable/css/noneditable.css | 18 +- .../plugins/noneditable/editor_plugin.js | 0 .../plugins/noneditable/editor_plugin_src.js | 306 +- .../tiny_mce/plugins/noneditable/readme.txt | 1 + .../jscripts/tiny_mce/plugins/paste/blank.htm | 38 +- .../tiny_mce/plugins/paste/css/blank.css | 26 +- .../tiny_mce/plugins/paste/css/pasteword.css | 6 +- .../tiny_mce/plugins/paste/editor_plugin.js | 0 .../plugins/paste/editor_plugin_src.js | 790 +- .../plugins/paste/images/pastetext.gif | Bin .../plugins/paste/images/pasteword.gif | Bin .../plugins/paste/images/selectall.gif | Bin .../plugins/paste/jscripts/pastetext.js | 76 +- .../plugins/paste/jscripts/pasteword.js | 104 +- .../tiny_mce/plugins/paste/langs/en.js | 20 +- .../tiny_mce/plugins/paste/pastetext.htm | 66 +- .../tiny_mce/plugins/paste/pasteword.htm | 58 +- .../tiny_mce/plugins/paste/readme.txt | 1 + .../tiny_mce/plugins/preview/editor_plugin.js | 0 .../plugins/preview/editor_plugin_src.js | 0 .../tiny_mce/plugins/preview/example.html | 28 +- .../plugins/preview/images/preview.gif | Bin .../plugins/preview}/jscripts/embed.js | 146 +- .../tiny_mce/plugins/preview/langs/en.js | 10 +- .../tiny_mce/plugins/preview/readme.txt | 1 + .../tiny_mce/plugins/print/editor_plugin.js | 0 .../plugins/print/editor_plugin_src.js | 94 +- .../tiny_mce/plugins/print/images/print.gif | Bin .../tiny_mce/plugins/print/langs/en.js | 10 +- .../tiny_mce/plugins/print/readme.txt | 1 + .../jscripts/tiny_mce/plugins/readme.txt | 2 +- .../tiny_mce/plugins/save/editor_plugin.js | 0 .../plugins/save/editor_plugin_src.js | 304 +- .../tiny_mce/plugins/save/images/cancel.gif | Bin .../tiny_mce/plugins/save/images/save.gif | Bin .../tiny_mce/plugins/save/langs/en.js | 12 +- .../jscripts/tiny_mce/plugins/save/readme.txt | 1 + .../searchreplace/css/searchreplace.css | 40 +- .../plugins/searchreplace/editor_plugin.js | 0 .../searchreplace/editor_plugin_src.js | 344 +- .../plugins/searchreplace/images/replace.gif | Bin .../images/replace_all_button_bg.gif | Bin .../images/replace_button_bg.gif | Bin .../plugins/searchreplace/images/search.gif | Bin .../searchreplace/jscripts/searchreplace.js | 170 +- .../plugins/searchreplace/langs/en.js | 42 +- .../tiny_mce/plugins/searchreplace/readme.txt | 1 + .../plugins/searchreplace/searchreplace.htm | 214 +- .../tiny_mce/plugins/style/css/props.css | 124 +- .../tiny_mce/plugins/style/editor_plugin.js | 0 .../plugins/style/editor_plugin_src.js | 166 +- .../plugins/style/images/apply_button_bg.gif | Bin .../plugins/style/images/style_info.gif | Bin .../plugins/style/images/styleprops.gif | Bin .../tiny_mce/plugins/style/jscripts/props.js | 1266 +- .../tiny_mce/plugins/style/langs/en.js | 132 +- .../jscripts/tiny_mce/plugins/style/props.htm | 0 .../tiny_mce/plugins/style/readme.txt | 1 + .../jscripts/tiny_mce/plugins/table/cell.htm | 364 +- .../tiny_mce/plugins/table/css/cell.css | 32 +- .../tiny_mce/plugins/table/css/row.css | 50 +- .../tiny_mce/plugins/table/css/table.css | 26 +- .../tiny_mce/plugins/table/editor_plugin.js | 0 .../plugins/table/editor_plugin_src.js | 2146 +-- .../tiny_mce/plugins/table/images/buttons.gif | Bin .../tiny_mce/plugins/table/images/table.gif | Bin .../plugins/table/images/table_cell_props.gif | Bin .../plugins/table/images/table_delete.gif | Bin .../plugins/table/images/table_delete_col.gif | Bin .../plugins/table/images/table_delete_row.gif | Bin .../table/images/table_insert_col_after.gif | Bin .../table/images/table_insert_col_before.gif | Bin .../table/images/table_insert_row_after.gif | Bin .../table/images/table_insert_row_before.gif | Bin .../table/images/table_merge_cells.gif | Bin .../plugins/table/images/table_row_props.gif | Bin .../table/images/table_split_cells.gif | Bin .../tiny_mce/plugins/table/jscripts/cell.js | 498 +- .../plugins/table/jscripts/merge_cells.js | 48 +- .../tiny_mce/plugins/table/jscripts/row.js | 400 +- .../tiny_mce/plugins/table/jscripts/table.js | 728 +- .../tiny_mce/plugins/table/langs/en.js | 158 +- .../tiny_mce/plugins/table/merge_cells.htm | 76 +- .../tiny_mce/plugins/table/readme.txt | 1 + .../jscripts/tiny_mce/plugins/table/row.htm | 318 +- .../jscripts/tiny_mce/plugins/table/table.htm | 320 +- .../tiny_mce/plugins/template/blank.htm | 46 +- .../plugins/template/css/template.css | 46 +- .../plugins/template/editor_plugin.js | 0 .../plugins/template/editor_plugin_src.js | 1102 +- .../plugins/template/images/template.gif | Bin .../plugins/template/jscripts/template.js | 286 +- .../tiny_mce/plugins/template/langs/en.js | 32 +- .../tiny_mce/plugins/template/template.htm | 74 +- .../plugins/visualchars/editor_plugin.js | 0 .../plugins/visualchars/editor_plugin_src.js | 178 +- .../visualchars/images/visualchars.gif | Bin .../tiny_mce/plugins/visualchars/langs/en.js | 10 +- .../tiny_mce/plugins/xhtmlxtras/abbr.htm | 296 +- .../tiny_mce/plugins/xhtmlxtras/acronym.htm | 296 +- .../plugins/xhtmlxtras/attributes.htm | 306 +- .../tiny_mce/plugins/xhtmlxtras/cite.htm | 296 +- .../plugins/xhtmlxtras/css/attributes.css | 22 +- .../tiny_mce/plugins/xhtmlxtras/css/popup.css | 92 +- .../plugins/xhtmlxtras/css/xhtmlxtras.css | 48 +- .../tiny_mce/plugins/xhtmlxtras/del.htm | 338 +- .../plugins/xhtmlxtras/editor_plugin.js | 0 .../plugins/xhtmlxtras/editor_plugin_src.js | 398 +- .../plugins/xhtmlxtras/images/abbr.gif | Bin .../plugins/xhtmlxtras/images/acronym.gif | Bin .../plugins/xhtmlxtras/images/attribs.gif | Bin .../plugins/xhtmlxtras/images/cite.gif | Bin .../plugins/xhtmlxtras/images/date_time.gif | Bin .../plugins/xhtmlxtras/images/del.gif | Bin .../plugins/xhtmlxtras/images/ins.gif | Bin .../xhtmlxtras/images/remove_button_bg.gif | Bin .../tiny_mce/plugins/xhtmlxtras/ins.htm | 338 +- .../plugins/xhtmlxtras/jscripts/abbr.js | 56 +- .../plugins/xhtmlxtras/jscripts/acronym.js | 56 +- .../plugins/xhtmlxtras/jscripts/attributes.js | 258 +- .../plugins/xhtmlxtras/jscripts/cite.js | 56 +- .../plugins/xhtmlxtras/jscripts/del.js | 106 +- .../xhtmlxtras/jscripts/element_common.js | 480 +- .../plugins/xhtmlxtras/jscripts/ins.js | 104 +- .../tiny_mce/plugins/xhtmlxtras/langs/en.js | 84 +- .../tiny_mce/plugins/zoom/editor_plugin.js | 0 .../plugins/zoom/editor_plugin_src.js | 112 +- .../jscripts/tiny_mce/plugins/zoom/readme.txt | 1 + .../tiny_mce/themes/advanced/about.htm | 104 +- .../tiny_mce/themes/advanced/anchor.htm | 66 +- .../tiny_mce/themes/advanced/charmap.htm | 106 +- .../tiny_mce/themes/advanced/color_picker.htm | 148 +- .../themes/advanced/css/colorpicker.css | 104 +- .../themes/advanced/css/editor_content.css | 116 +- .../themes/advanced/css/editor_popup.css | 662 +- .../themes/advanced/css/editor_ui.css | 194 +- .../themes/advanced/docs/en/about.htm | 62 +- .../advanced/docs/en/common_buttons.htm | 324 +- .../docs/en/create_accessible_content.htm | 90 +- .../docs/en/images/insert_anchor_window.gif | Bin .../docs/en/images/insert_image_window.gif | Bin .../docs/en/images/insert_link_window.gif | Bin .../docs/en/images/insert_table_window.gif | Bin .../themes/advanced/docs/en/index.htm | 54 +- .../advanced/docs/en/insert_anchor_button.htm | 64 +- .../advanced/docs/en/insert_image_button.htm | 130 +- .../advanced/docs/en/insert_link_button.htm | 66 +- .../advanced/docs/en/insert_table_button.htm | 142 +- .../themes/advanced/docs/en/style.css | 56 +- .../themes/advanced/editor_template.js | 0 .../themes/advanced/editor_template_src.js | 3032 +-- .../tiny_mce/themes/advanced/image.htm | 200 +- .../themes/advanced/images/anchor.gif | Bin .../themes/advanced/images/anchor_symbol.gif | Bin .../themes/advanced/images/backcolor.gif | Bin .../tiny_mce/themes/advanced/images/bold.gif | Bin .../themes/advanced/images/bold_de_se.gif | Bin .../themes/advanced/images/bold_es.gif | Bin .../themes/advanced/images/bold_fr.gif | Bin .../themes/advanced/images/bold_ru.gif | Bin .../themes/advanced/images/bold_tw.gif | Bin .../themes/advanced/images/browse.gif | Bin .../themes/advanced/images/bullist.gif | Bin .../themes/advanced/images/button_menu.gif | Bin .../themes/advanced/images/buttons.gif | Bin .../advanced/images/cancel_button_bg.gif | Bin .../themes/advanced/images/charmap.gif | Bin .../themes/advanced/images/cleanup.gif | Bin .../tiny_mce/themes/advanced/images/close.gif | Bin .../tiny_mce/themes/advanced/images/code.gif | Bin .../tiny_mce/themes/advanced/images/color.gif | Bin .../themes/advanced/images/colors.jpg | Bin .../tiny_mce/themes/advanced/images/copy.gif | Bin .../themes/advanced/images/custom_1.gif | Bin .../tiny_mce/themes/advanced/images/cut.gif | Bin .../themes/advanced/images/forecolor.gif | Bin .../tiny_mce/themes/advanced/images/help.gif | Bin .../tiny_mce/themes/advanced/images/hr.gif | Bin .../tiny_mce/themes/advanced/images/image.gif | Bin .../themes/advanced/images/indent.gif | Bin .../advanced/images/insert_button_bg.gif | Bin .../themes/advanced/images/italic.gif | Bin .../themes/advanced/images/italic_de_se.gif | Bin .../themes/advanced/images/italic_es.gif | Bin .../themes/advanced/images/italic_ru.gif | Bin .../themes/advanced/images/italic_tw.gif | Bin .../themes/advanced/images/justifycenter.gif | Bin .../themes/advanced/images/justifyfull.gif | Bin .../themes/advanced/images/justifyleft.gif | Bin .../themes/advanced/images/justifyright.gif | Bin .../tiny_mce/themes/advanced/images/link.gif | Bin .../themes/advanced/images/menu_check.gif | Bin .../themes/advanced/images/newdocument.gif | Bin .../themes/advanced/images/numlist.gif | Bin .../themes/advanced/images/opacity.png | Bin .../themes/advanced/images/outdent.gif | Bin .../tiny_mce/themes/advanced/images/paste.gif | Bin .../tiny_mce/themes/advanced/images/redo.gif | Bin .../themes/advanced/images/removeformat.gif | Bin .../themes/advanced/images/separator.gif | Bin .../themes/advanced/images/spacer.gif | Bin .../advanced/images/statusbar_resize.gif | Bin .../themes/advanced/images/strikethrough.gif | Bin .../tiny_mce/themes/advanced/images/sub.gif | Bin .../tiny_mce/themes/advanced/images/sup.gif | Bin .../themes/advanced/images/underline.gif | Bin .../themes/advanced/images/underline_es.gif | Bin .../themes/advanced/images/underline_fr.gif | Bin .../themes/advanced/images/underline_ru.gif | Bin .../themes/advanced/images/underline_tw.gif | Bin .../tiny_mce/themes/advanced/images/undo.gif | Bin .../themes/advanced/images/unlink.gif | Bin .../themes/advanced/images/visualaid.gif | Bin .../themes/advanced/images/xp/tab_bg.gif | Bin .../themes/advanced/images/xp/tab_end.gif | Bin .../themes/advanced/images/xp/tab_sel_bg.gif | Bin .../themes/advanced/images/xp/tab_sel_end.gif | Bin .../themes/advanced/images/xp/tabs_bg.gif | Bin .../themes/advanced/jscripts/about.js | 150 +- .../themes/advanced/jscripts/anchor.js | 148 +- .../themes/advanced/jscripts/charmap.js | 652 +- .../themes/advanced/jscripts/color_picker.js | 478 +- .../themes/advanced/jscripts/image.js | 162 +- .../tiny_mce/themes/advanced/jscripts/link.js | 148 +- .../themes/advanced/jscripts/source_editor.js | 118 +- .../tiny_mce/themes/advanced/langs/en.js | 186 +- .../tiny_mce/themes/advanced/link.htm | 202 +- .../themes/advanced/source_editor.htm | 64 +- .../themes/simple/css/editor_content.css | 50 +- .../themes/simple/css/editor_popup.css | 80 +- .../tiny_mce/themes/simple/css/editor_ui.css | 250 +- .../tiny_mce/themes/simple/editor_template.js | 0 .../themes/simple/editor_template_src.js | 168 +- .../tiny_mce/themes/simple/images/bold.gif | Bin .../themes/simple/images/bold_de_se.gif | Bin .../tiny_mce/themes/simple/images/bold_fr.gif | Bin .../tiny_mce/themes/simple/images/bold_ru.gif | Bin .../tiny_mce/themes/simple/images/bold_tw.gif | Bin .../tiny_mce/themes/simple/images/bullist.gif | Bin .../tiny_mce/themes/simple/images/buttons.gif | Bin .../tiny_mce/themes/simple/images/cleanup.gif | Bin .../tiny_mce/themes/simple/images/italic.gif | Bin .../themes/simple/images/italic_de_se.gif | Bin .../themes/simple/images/italic_ru.gif | Bin .../themes/simple/images/italic_tw.gif | Bin .../tiny_mce/themes/simple/images/numlist.gif | Bin .../tiny_mce/themes/simple/images/redo.gif | Bin .../themes/simple/images/separator.gif | Bin .../tiny_mce/themes/simple/images/spacer.gif | Bin .../themes/simple/images/strikethrough.gif | Bin .../themes/simple/images/underline.gif | Bin .../themes/simple/images/underline_fr.gif | Bin .../themes/simple/images/underline_ru.gif | Bin .../themes/simple/images/underline_tw.gif | Bin .../tiny_mce/themes/simple/images/undo.gif | Bin .../js}/tinymce/jscripts/tiny_mce/tiny_mce.js | 0 .../tinymce/jscripts/tiny_mce/tiny_mce_dev.js | 80 +- .../jscripts/tiny_mce/tiny_mce_popup.js | 588 +- .../tinymce/jscripts/tiny_mce/tiny_mce_src.js | 15214 ++++++++-------- .../tiny_mce/utils/editable_selects.js | 122 +- .../jscripts/tiny_mce/utils/form_utils.js | 420 +- .../jscripts/tiny_mce/utils/mclayer.js | 420 +- .../tinymce/jscripts/tiny_mce/utils/mctabs.js | 148 +- .../jscripts/tiny_mce/utils/validate.js | 438 +- {lib => code/web/js}/tinymce/readme | 0 lib/TemplateUtility.php | 2 +- .../tiny_mce/plugins/contextmenu/readme.txt | 1 - .../plugins/directionality/readme.txt | 1 - .../tiny_mce/plugins/emotions/readme.txt | 1 - .../tiny_mce/plugins/flash/readme.txt | 1 - .../tiny_mce/plugins/fullscreen/readme.txt | 1 - .../tiny_mce/plugins/iespell/readme.txt | 1 - .../plugins/insertdatetime/readme.txt | 1 - .../tiny_mce/plugins/layer/readme.txt | 1 - .../tiny_mce/plugins/noneditable/readme.txt | 1 - .../tiny_mce/plugins/paste/readme.txt | 1 - .../tiny_mce/plugins/preview/readme.txt | 1 - .../tiny_mce/plugins/print/readme.txt | 1 - .../jscripts/tiny_mce/plugins/save/readme.txt | 1 - .../tiny_mce/plugins/searchreplace/readme.txt | 1 - .../tiny_mce/plugins/style/readme.txt | 1 - .../tiny_mce/plugins/table/readme.txt | 1 - .../jscripts/tiny_mce/plugins/zoom/readme.txt | 1 - 470 files changed, 34357 insertions(+), 34357 deletions(-) rename {lib => code/web/js}/tinymce/changelog (98%) rename {lib => code/web/js}/tinymce/examples/example_advanced.css (94%) rename {lib => code/web/js}/tinymce/examples/example_advanced.htm (97%) rename {lib => code/web/js}/tinymce/examples/example_flash_list.js (97%) rename {lib => code/web/js}/tinymce/examples/example_full.css (94%) rename {lib => code/web/js}/tinymce/examples/example_full.htm (98%) rename {lib => code/web/js}/tinymce/examples/example_image_list.js (97%) rename {lib => code/web/js}/tinymce/examples/example_link_list.js (97%) rename {lib => code/web/js}/tinymce/examples/example_media_list.js (97%) rename {lib => code/web/js}/tinymce/examples/example_simple.htm (97%) rename {lib => code/web/js}/tinymce/examples/example_template.htm (97%) rename {lib => code/web/js}/tinymce/examples/example_template_list.js (98%) rename {lib => code/web/js}/tinymce/examples/example_word.css (94%) rename {lib => code/web/js}/tinymce/examples/example_word.htm (98%) rename {lib => code/web/js}/tinymce/examples/logo.jpg (100%) rename {lib => code/web/js}/tinymce/examples/logo_over.jpg (100%) rename {lib => code/web/js}/tinymce/examples/templates/count.htm (97%) rename {lib => code/web/js}/tinymce/examples/templates/editing_details.htm (96%) rename {lib => code/web/js}/tinymce/examples/templates/editors_comment.htm (97%) rename {lib => code/web/js}/tinymce/examples/templates/invoice.htm (96%) rename {lib => code/web/js}/tinymce/examples/templates/layout1.htm (93%) rename {lib => code/web/js}/tinymce/examples/templates/snippet1.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/blank.htm (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/langs/en.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/langs/readme.txt (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/license.txt (98%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin_src.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/_template/images/template.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/_template/langs/en.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/_template/popup.htm (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/_template/readme.txt (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css (92%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advhr/images/advhr.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advhr/jscripts/rule.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en.js (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advhr/readme.txt (98%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css (92%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advimage/images/sample.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advimage/jscripts/functions.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advimage/readme.txt (98%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css (94%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advlink/jscripts/functions.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm (97%) rename {lib/tinymce/jscripts/tiny_mce/plugins/autosave => code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink}/readme.txt (98%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js (96%) rename {lib/tinymce/jscripts/tiny_mce/plugins/advlink => code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave}/readme.txt (98%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin_src.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/cleanup/readme.txt (98%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/contextmenu/css/contextmenu.css (93%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/contextmenu/images/spacer.gif (100%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit.css (91%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit_ui.css (93%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/devkit/devkit.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/devkit/images/flip_down.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/devkit/images/flip_up.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/devkit.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/diff.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/devkit/langs/en.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/directionality/images/ltr.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/directionality/images/rtl.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/directionality/langs/en.js (96%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/directionality/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm (99%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/emotions.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/readme.txt (98%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cry.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-frown.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-kiss.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-sealed.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-smile.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-surprised.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-yell.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/jscripts/functions.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en.js (95%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/flash/css/content.css (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/flash/css/flash.css (90%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin_src.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/flash/flash.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/flash/images/flash.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/flash/jscripts/flash.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/flash/langs/en.js (95%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/blank.htm (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css (93%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/images/add.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/images/fullpage.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/images/move_down.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/images/move_up.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/images/remove.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullscreen/css/page.css (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/en.js (94%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/fullscreen/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/iespell/images/iespell.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/iespell/langs/en.js (95%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css (93%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/spacer.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_close.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_maximize.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_resize.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/inlinepopups/readme.txt (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/insertdatetime/images/insertdate.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/insertdatetime/images/inserttime.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/insertdatetime/langs/en.js (98%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/insertdatetime/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/layer/images/absolute.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/layer/images/backward.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/layer/images/forward.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/layer/images/insert_layer.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/layer/images/insertlayer.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/layer/images/movebackward.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/layer/images/moveforward.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/layer/langs/en.js (96%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/css/content.css (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/css/media.css (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/images/flash.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/images/media.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/images/quicktime.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/images/realmedia.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/images/shockwave.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/images/windowsmedia.gif (100%) rename {lib/tinymce/jscripts/tiny_mce/plugins/preview => code/web/js/tinymce/jscripts/tiny_mce/plugins/media}/jscripts/embed.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/jscripts/media.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/langs/en.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/media/media.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/nonbreaking/langs/en.js (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/noneditable/css/noneditable.css (94%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js (96%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/noneditable/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/blank.htm (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/css/blank.css (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css (93%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/images/pastetext.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/images/pasteword.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/images/selectall.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/jscripts/pastetext.js (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/jscripts/pasteword.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/langs/en.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm (97%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/preview/example.html (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/preview/images/preview.gif (100%) rename {lib/tinymce/jscripts/tiny_mce/plugins/media => code/web/js/tinymce/jscripts/tiny_mce/plugins/preview}/jscripts/embed.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/preview/langs/en.js (93%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/print/images/print.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/print/langs/en.js (93%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/print/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/readme.txt (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/save/images/cancel.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/save/images/save.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/save/langs/en.js (94%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/save/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/searchreplace/images/replace.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/searchreplace/images/search.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en.js (97%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/style/css/props.css (94%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/style/images/apply_button_bg.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/style/images/style_info.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/style/images/styleprops.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/style/jscripts/props.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/style/langs/en.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/style/props.htm (100%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/style/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/cell.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css (92%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/css/row.css (91%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/css/table.css (92%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/buttons.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_cell_props.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete_col.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete_row.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_col_after.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_col_before.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_row_after.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_row_before.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_merge_cells.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_row_props.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/images/table_split_cells.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/jscripts/cell.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/jscripts/merge_cells.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/jscripts/row.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/jscripts/table.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/langs/en.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm (97%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/table/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/row.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/table/table.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/template/blank.htm (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/template/css/template.css (91%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/template/images/template.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/template/jscripts/template.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/template/langs/en.js (98%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/template/template.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/visualchars/images/visualchars.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/visualchars/langs/en.js (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css (94%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css (94%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css (92%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/acronym.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/attribs.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/del.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/zoom/editor_plugin.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/plugins/zoom/editor_plugin_src.js (96%) create mode 100755 code/web/js/tinymce/jscripts/tiny_mce/plugins/zoom/readme.txt rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/about.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/css/colorpicker.css (92%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_content.css (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_popup.css (94%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_ui.css (98%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/about.htm (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm (98%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/index.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/style.css (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/image.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor_symbol.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/backcolor.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/bold.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_de_se.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_es.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_fr.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_ru.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_tw.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/browse.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/bullist.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/button_menu.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/buttons.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/charmap.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/cleanup.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/close.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/code.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/color.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/colors.jpg (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/copy.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/custom_1.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/cut.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/forecolor.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/help.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/hr.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/image.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/indent.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/insert_button_bg.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/italic.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_de_se.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_es.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_ru.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_tw.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/justifycenter.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyfull.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyleft.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyright.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/link.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/menu_check.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/newdocument.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/numlist.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/opacity.png (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/outdent.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/paste.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/redo.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/removeformat.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/separator.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/spacer.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/statusbar_resize.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/strikethrough.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/sub.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/sup.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/underline.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_es.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_fr.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_ru.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_tw.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/undo.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/unlink.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/visualaid.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_end.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/about.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/charmap.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/color_picker.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/image.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/link.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/source_editor.js (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/link.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/css/editor_content.css (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/css/editor_popup.css (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/css/editor_ui.css (94%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/bold.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/bold_de_se.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/bold_fr.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/bold_ru.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/bold_tw.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/bullist.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/buttons.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/cleanup.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/italic.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/italic_de_se.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/italic_ru.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/italic_tw.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/numlist.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/redo.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/separator.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/spacer.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/strikethrough.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/underline.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/underline_fr.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/underline_ru.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/underline_tw.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/themes/simple/images/undo.gif (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/tiny_mce.js (100%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/tiny_mce_dev.js (97%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/tiny_mce_popup.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/tiny_mce_src.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/utils/editable_selects.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/utils/form_utils.js (96%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/utils/mclayer.js (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/utils/mctabs.js (95%) rename {lib => code/web/js}/tinymce/jscripts/tiny_mce/utils/validate.js (95%) rename {lib => code/web/js}/tinymce/readme (100%) delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/directionality/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/emotions/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/flash/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/fullscreen/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/iespell/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/insertdatetime/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/layer/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/noneditable/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/paste/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/preview/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/print/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/save/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/searchreplace/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/style/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/table/readme.txt delete mode 100755 lib/tinymce/jscripts/tiny_mce/plugins/zoom/readme.txt diff --git a/lib/tinymce/changelog b/code/web/js/tinymce/changelog similarity index 98% rename from lib/tinymce/changelog rename to code/web/js/tinymce/changelog index 2c8e8562a..105940a10 100755 --- a/lib/tinymce/changelog +++ b/code/web/js/tinymce/changelog @@ -1,1283 +1,1283 @@ -Version 2.1.3 (2007-11-27) - Fixed bug with copy paste scrolled to top of content in IE when a specific doctype was used. - Fixed bug with Firefox 3 opening all dialogs twice. - Fixed bug with Firefox 3 now forcing importNode. - Fixed various issues with Opera 9.50 such as broken dialogs, selection blocking etc. -Version 2.1.2 (2007-08-21) - Added fix for polluting third partly libraries that insist on messing with internal objects. - Added new save_on_tinymce_forms option to control when triggerSave is to be called. - Added mceContentBody class to template plugin preview. - Fixed bug where background color didn't work as expected in Opera. - Fixed bug where empty p tags where created on source code edit when forced_root_block was used. - Fixed bug where it was impossible to remove alignment using the align buttons. - Fixed bug where a empty URL was reported as a possible email link in advlink dialog. - Fixed bug where Opera would destroy the body if you pressed return 3 times in the beginning of a list. - Fixed bug where getHTML would return an empty string in IE sometimes. - Fixed bug where tinyMCE.selectedInstance is null after mceRemoveControl. - Fixed bug where remove_script_host option didn't work with media plugin. - Fixed bug with the convert_urls option and anchors in the advlink plugin. - Fixed issue with missing entityDecode statement for new document confirm. - Fixed issue with incorrect font value for Sans-serif. - Fixed problem with some youtube video urls. -Version 2.1.1.1 (2007-05-14) - Fixed bug where dot notaion for some callback options didn't work. - Fixed bug where valid_child_elements option didn't work. - Fixed bug where form trigger wasn't executed when keyboard was used to submit form. -Version 2.1.1 (2007-05-08) - Added new forced_root_block option. Forces inline elements or text nodes into block elements. - Added new fullpage_hide_in_source_view option to fullpage plugin. - Added new youtube/googlevideo support to media plugin. Simply paste a YouTube/Google URL and it will embed it. - Added new cancel button/control to the save plugin. This will undo all changes and execute a optional callback. - Added new remove_trailing_nbsp option that removes &nsbp; entities when paragraphs are filled with contents. - Added new default_document option this enables you to specify a document to be loaded into TinyMCE by default. - Added new detection for external and mail links. It will now ask to add http or mailto prefixes to these. - Cleaned up the source code by removing some obsolete code. - Removed debug option, no longer needed since the devkit does it better. - Removed old IE 5.0 code and reduced the overall code by using smarter prototype add methods. - Removed encoding of apos/' characters since they only time they need to be escaped is when placed in apos based attribs. - Fixed bug where local urls with params like ?param=x was converted into /?param=x if relative_urls was set to true. - Fixed bug where the clsids for wmp in media plugin was handled as RealMedia. - Fixed bug where template plugin was inserting blank_page in FF. - Fixed bug where it was impossible to remove the width/height of images in IE. - Fixed bug where replace with empty contents in the replace dialog didn't work in FF. - Fixed bug where the advanced themes insert image dialog produces a SSL warning if running over HTTPS in IE. - Fixed bug where links directly to a anchor with a editor in IE failed due to the frameset fix. - Fixed bug with numeric entity encoding not converting the first character in string. - Fixed bug with new color picker not closing correctly some times. - Fixed bug where FF was auto generating BR elements at the end of LI elements. - Fixed bug where more colors link failed if the page had a base element in page. - Fixed bug where link dialog produced error when importing CSS classes. - Fixed bug where fullpage plugin inserted extra > at the end of doctype. - Fixed bug where fullpage plugin didn't remove internal mce_src/mce_href items correctly. - Fixed bug where fullpage plugin height was incorrect on Linux. - Fixed bug where media plugin did a incorrect comparation of width/height. - Fixed bug with pressing return/enter inside a paragraph in a non IE browser. - Fixed bug with autoplay option for QT not being enabled by default in the media plugin. - Fixed bug where isDirty state of instances was incorrect if a form submit handler didn't submit the form. - Fixed bug where isDirty state was incorrect if another form was submitted. - Fixed bug with getHTML not returning correct content if run twice on a row in IE. - Fixed bug where setting class to "not set" in the advimage dialog in IE didn't remove the class attribute. - Fixed bug where mceToggleEditor command didn't work with other elements such as DIVs. - Fixed bug where link dialog didn't close if editing a link and having inlinepopups enabled. - Fixed bug where the hidden textarea was updated even if the instance was hidden with mceToggleEditor. - Fixed bug where IE7 was reporting undefined error if the iframe didn't load fast enough over https. - Fixed bug where a space was created after links, it will now just place the cursor after the link. - Fixed bug where false param values in media plugin wasn't stored correctly in IE. - Fixed bug with missing cursor if a instance was totally empty in Gecko. - Fixed so classes can be applied to images using the style select dropdown in FF and Opera. - Fixed so the width/height fields of the advanced themes image dialogs can take more that 3 characters. - Fixed so store/restore selection logic works in Opera and Safari (Nightly). - Fixed so the remove column/row icons are more clear in the table plugin. Contributed by Ferenc Veres. - Fixed so both title and alt attributes of buttons are set. Contributed by BigBrownChunx. - Fixed so if ctrl key is hold down the default browser context menu will appear. - Fixed so the mceResetDesignMode command resets the designmode and useCSS values more correctly. - Fixed so custom namespaces on tags can be used in all browsers like . - Fixed problem with source editor using mono instead of monospace as a font family. - Fixed problem with Opera detection, it now detects Opera even if it spoofs another browser. - Fixed problem where TinyMCE failed to initialized if used together with libraries like Scriptaculous. -Version 2.1.0 (2007-02-13) - Added new template plugin, this supports simple snippets and advanced smart templates. - Added new attributes dialog for xhtmlxtras plugin. Based on contribution by Ryan Demmer. - Added new bbcode plugin, currently only support for PunBB but more might be added in the future. - Added new support for table captions, captions can now be toggled on or off on tables. - Added new more colors link for text/background color menus. - Added new more advanced color picker based on a contribution by Tristan Poet. - Added new functionality to always keep inlinepopups in viewable area contributed by Joshua T. Corbin. - Added new maximize button for inlinepopups contributed by Joshua T. Corbin. - Added new mceToggleEditor command. Toggles visibility of a editor instance on/off. - Added new showInstance/hideInstance callbacks. Used by mceToggleEditor command. - Added support for Ctrl+v handling for non IE browsers when the paste_auto_cleanup_on_paste option was used with the paste plugin. - Fixed issue where focus wasn't returned to editor after using a inlinepopup. Contributed by Andy Skelton. - Fixed issue where fullscreen.htm file used the _dev version of the JavaScript. - Fixed issue with TinyMCE forcing absolute links for document local anchors. Ex: #a got converted into b.htm#a - Fixed issue where initialization failed some times with Drupal. - Fixed issue with rtl languages and the new color picker menus. - Fixed major bug where url convertion logic wasn't executed correctly. - Fixed bug where text color/background color menus wasn't visible in fullscreen mode. - Fixed bug where text color/background color menus wasn't hidden when switching to/from fullscreen mode. - Fixed bug where embed elements was converted into ibed elements. - Fixed bug where contrain proportions in advimage dialog wasn't working. - Fixes bug where an inlinepopup wouldn't close if mcWindows.selectedWindow was nullified contributed by Joshua T. Corbin. - Fixed bug where style dropdown wasn't unique for each editor instance if diffrent content_css files where used. - Fixed bug with the noneditable plugin and IE. Only the last element was uneditable. - Fixed bug with link dialog and Firebug sometimes produced a TINYMCE_UNIQUEURL not defined error. - Fixed so the fix_list_elements option is enabled by default to produce more valid XHTML code. - Fixed so that all more info links on plugins point to the wiki in the about dialog. - Fixed so there is two new button names forecolorpicker and backcolorpicker these can be used to make plain old color picker buttons. - Removed the forcing of a space inside alt attributes by the advimage plugin since the default valid_elements rule defaults to "". -Version 2.0.9 (2007-01-09) - Added support for fullscreen new window mode since the other method was problematic for some. - Added new hide_selects_on_submit option. Enables the possibility to enable/disable disabling of TinyMCE select elements. - Added new removeInstance callback for plugins and also a new remove_instance_callback option. - Added warning if flash and media plugin is used at the same time. Flash plugin should be replaced with media plugin. - Fixed so that fullscreen can be used even if placed in absolute positioned divs with borders etc. - Fixed so that contextmenu on named anchors doesn't display the link/unlink items. - Fixed so that wrap in source editor dialog works in Opera. - Fixed so that single quotes/' is only applied to text nodes not attributes. - Fixed so that the emotions dialog is a little wider to avoid the FF bug with statusbar content alignment. - Fixed issue where TinyMCE wasn't restoring scroll position after fullscreen mode switch. - Fixed some HTML issues in style plugin dialog. Contributed by Michael Keck. - Fixed bug where color selection menu was visible for instances that got removed. - Fixed bug where it wasn't possible to remove block formatting with format select box. - Fixed bug with xhtmlxtras plugin not working when convert_fonts_to_spans option enabled. - Fixed bug where element path elements wasn't entity encoded properly. - Fixed bug where IE 7 produced a invalid attribute exception for some URLs. - Fixed bug where the fix_table_elements option moved tables out of divs and not just P and H1-6 elements. - Fixed bug where drop menu for spellchecker didn't work in IE. - Fixed bug with noneditable plugin. The classes where removed sometimes. - Fixed bug where media plugin failed if single quotes wasn't entity encoded. - Fixed bug where fullscreen mode switched the way bold/italic/underline works in FF. - Fixed bug where style plugin could modify body element of editor instance. - Fixed bugs and issues with searchreplace plugin. - Fixed bug where windows using inlinepopups where invisible when using fullscreen mode. Contributed by Joshua T. Corbin. - Fixed bug where inlinepopups where settings style values without px suffix. Contributed by Joshua T. Corbin. - Fixed bug where externaltoolbar where causing problems in fullscreen mode. Contributed by Joshua T. Corbin. - Fixed alignment problems of buttons inside the search/replace dialog. Contributed by Dongsu Jang. - Optimized event/callback execution by a factor of 10. - Optimized cleanup engine by factor of 2 on some documents. - Optimized shortcut and key event handling logic. -Version 2.0.8 (2006-10-23) - Added class select lists for all xhtmlxtras dialogs, custom values can still be added. - Added missing documentation for devkit, xhtmlxtras, visualchars and nonbreaking plugins. - Added new gecko_spellcheck option, this enables you to disable/enable the FF 2.0 spellchecker. - Fixed so that the media can be modified using the context menu. - Fixed bug where media plugin wasn't working if convert_fonts_to_span option was enabled. - Fixed bug where media plugin produced errors on older IE versions. - Fixed bug where media plugin was breaking when prototype was used on the same page. - Fixed bug where cite and datetime attributes wasn't added to the default valid_elements list for del and ins. - Fixed bug where insert date in xhtmlxtras plugin wasn't placed in language pack. - Fixed bug where new fullscreen mode didn't function in IE with XHTML transitional doctype. - Fixed bug where new text and hilite text previews generated ghost layers in IE. - Fixed bug where fullscreen mode produced an error is the resizing was disabled. - Fixed bug where BR elements wasn't removed from PRE elements when apply_source_formatting was enabled. - Fixed bug where JS errors where thrown in IE if TinyMCE was placed in a frameset. - Fixed bug where devkit reported errors if TinyMCE was places in a frameset. - Fixed bug where auto_focus option didn't work in IE. - Fixed bug where FF leaked memory on some event handlers. - Fixed bug where Fullscreen plugin didn't fill containing elements if they where absolute. - Fixed bug where IE 7 hover out CSS events wasn't triggered correctly due to a IE bug. - Fixed bug where contextmenu plugin showed a incorrect flash menu item if the media plugin was enabled. - Fixed bug where 100% width of TinyMCE instances didn't work correctly. - Fixed issue where the image icon was selected when a user selected a media object. - Fixed issue where select elements where disabled if AJAX or custom submit triggers where used. - Fixed issue where formatblock command could insert invalid elements. - Fixed issue with duplicate default rules for abbr in valid_elements. - Fixed issue where the devkit wasn't the frontmost layer all the time. -Version 2.0.7 (2006-10-17) - Added new visualchars plugin. Enables users to see custom chars like  . - Added new nonbreaking plugin. Enables users to insert   characters. - Added new devkit plugin. Gives TinyMCE developers more information. - Added new xhtmlxtras plugin. Based on work contributed by Andrew Tetlaw. - Added new text and hilite color picker layers to the advanced theme. - Added new media plugin, this handles flash, quicktime, windows media player, real player. - Added new valid_child_elements option. Enables you to remove non valid child nodes from parents. - Added new required attribute flag to the valid_elements option. - Added new popup_css add option. Enables you to add an additional css to all popups. - Added new table_default_border, table_default_cellpadding, table_default_cellspacing options to table plugin. - Added new RegExp support for editor_selector/editor_deselector options. - Added new validation class. Implemented in various dialogs. - Added new createTag and createTagHTML methods to the API. - Added new shortcut keys for h1-h6,p,div,address elements by keys Ctrl+1-9. - Added lightbox, nofollow and tag as possible rel attribute values in the advlink dialog. - Added new table delete control for the table plugin. - Added new updated search/replace dialogs. Contributed by Felix Riesterer. - Added image browser support for style plugin. - Fixed bugs and issues with the lastest Safari Nightly build. - Fixed bugs where data was set outside the current function scopes. - Fixed bug where all plugin and theme callback methods had the "this" reference incorrectly set to window. - Fixed bug where a call to moveToBookmark method resulted in a error is called on a hidden TinyMCE instance. - Fixed bug where script element contents and event attributes where HTML encoded. - Fixed bug where TinyMCE didn't load if a base element and relative URL to TinyMCE where used in MSIE. - Fixed bug where TinyMCE didn't function in MSIE 5.0.1 because call method wasn't available. - Fixed bug where context menu location wasn't correct if the user scrolled down on page. - Fixed bug where nodes wasn't selected correctly in Opera 9. - Fixed bug with setOuterHTML function. This had some impacts on the spellchecker plugin. - Fixed bug where spaces in the body node of the document couldn't be deleted. - Fixed bug where images lost focus in IE if they where placed in a resizable div. - Fixed bug where isDirty state was set after calling user specific onsubmit function. - Fixed bug where editor_selector/editor_deselector matched incorrectly on some names. - Fixed bug where contextmenu was placed in the wrong location in FF. - Fixed bug where images had a href attribute displayed in it's element path title. - Fixed bug where forms_utils.js function where using a relative URL to the current theme. - Fixed bug where cursor was placed at a incorrect location after mceInsertContent call in Gecko. - Fixed bug where selection/caret is moved to top of document on a cleanup in Gecko. - Fixed bug where button elements was forced closed. - Fixed bug where comma separated content_css option wasn't working with the preview plugin. - Fixed bug where DIV element named doc caused errors in IE. - Fixed bug where the selectedInstance wasn't updated correctly if the user clicked outside of the body of a editor area. - Fixed bug where strong and em wasn't handled correctly in Gecko browsers if the user added them by using the source editor. - Fixed bug where script tag was removed if it was the first element in IE and convert_fonts_to_span option was enabled. - Fixed bug when converting empty divs to editor instances didn't work in IE. - Fixed bug where Gecko produces a BR tag at the end of a single line of content. - Fixed bug where the entity_encoding numeric wasn't converting   to  . - Fixed bug where fullpage plugin produced an error if the first thing was to edit the header data. - Fixed bug where background attribute of body element in fullpage plugin produced error in IE. - Fixed bug where Opera was reporting errors if the width/height of a editor area was set to a percent value. - Fixed bug where JS error was produced in IE if you tried to insert a row/column. - Fixed bug where IE was causing flicker if the browser cache was disabled and the button_tile_map option is enabled. - Fixed bug where onchange callback wasn't executed on a mceInsertContent command. - Fixed bug where custom classes on anchor elements was removed. - Fixed bug where force_br_newlines options produced errors in Opera. - Fixed bugs with table selection not beeing restored correctly when actions where performed. - Fixed issue where a link wasn't removed on unlink in gecko if only the caret was placed within the link. - Fixed so that the valid attribute values for the valid_elements rules are case insensitive. - Fixed so that the fullscreen plugin uses the current document area instead of a new window/popup. - Fixed so that the cleanup callback is executed on themes. - Fixed so that document local anchors isn't forced absolute. - Fixed so that the initialization is even faster both editor instanced and dialogs. - Fixed so that the force_p_newlines option works on Opera & Safari. This is enabled by default. - Fixed so that empty td cells are padded with   by default. This can be changed with the extended_valid_elements option. - Fixed so that the theme_advanced_disable option works with RowLayout. - Fixed so that string serialization is alot faster in all browsers. Makes the cleanup logic a lot faster. - Fixed issue with language variable in replace dialog in the searchreplace plugin. - Fixed various CSS compatiblity issues with MSIE 7 beta 3. - Renamed some image names in style and layer plugins for compatiblity with Drupal. - Fixed some HTML and CSS issues with the style properties plugin. - Fixed so the addMCEControl method returns the new editor instance id. - Fixed translation issues with the style properties dialog, patch contributed by TOMASIAN. - Removed the need for adding language codes to plugins. Since the online service now merges old ones with en. -Version 2.0.6.1 (2006-05-04) - Fixed issue where the layer and style plugins couldn't be added in incorrect order. - Fixed issue with Firefox nl not beeing defined in triggerSave correctly. -Version 2.0.6 (2006-05-03) - Added new theme_advanced_source_editor_wrap option, this gives the possibility to force word wrapping. - Added new support for using div,blockquote,dt,dd,code,samp as a items in the theme_advanced_blockformats option. - Added new strict_loading_mode option, this switches the loading method from document.write to DOM. - Added new hidden_tab_class, display_tab_class options for resolving the MSIE image dimension bug. - Added new absolute layer support, this was added to a new plugin called layer. - Added new CSS style properties support, this was as a plugin called style. - Fixed bug where TinyMCE was reporting a warning when inserting a image while running on HTTPS. - Fixed bug where pressing the browser back button after submit removed empty paragraphs in MSIE. - Fixed bug where links the the same page as the editor page was converted into a /. - Fixed bug where the getSelectedHTML method was returning undefined when selecting controls in MSIE. - Fixed bug with unterminated string literal errors where reported in some browsers. - Fixed bug where src and href where converted into xsrc and xhref in text. - Fixed bug where two characters where removed by backspace sometimes in Gecko. - Fixed bug where class drop list wasn't visible in some of the table dialogs. - Fixed bug where br elements where incorrectly removed within paragraphs on backspace. - Fixed bug where drag/drop operations failed in MSIE when editor height was set to a % value. - Fixed bug where width/height was lost on images if they where placed in hidden tabs in MSIE. - Fixed bugs with CSS auto import parsing, contributed by Scott Eade. - Fixed compatiblity issues with MSIE 5.0. Some RegExps needed to be rewritten. - Fixed issue that made it impossible to remove the entity code/name for '. - Fixed issue with odd

elements not beeing handled properly. - Fixed issue where TinyMCE couldn't be loaded in a XML document. - Fixed issue with contextmenu beeing placed outside of visible area on Gecko browsers. - Fixed issue whith area tag not being closed. -Version 2.0.5.1 (2006-03-22) - Fixed bug where emtpy paragraphs sometimes got removed in MSIE. - Fixed bug where autosave plugin was running even in fullscreen mode. - Fixed bug where browse and color image button urls in form_utils.js where hardcoded. -Version 2.0.5 (2006-03-21) - Added API docs for the TinyMCE_Popup class that is used by all dialogs in TinyMCE. - Added new TinyMCE_Layer class to the core of TinyMCE plugins will be using this later on. - Added new loadPlugin function, use this to load external plugins. - Added instructions on how to contribute language packs. - Added new support for multiple content_css files, based on contribution by Man-Chicken. - Added new table_cell_limit, table_row_limit, table_col_limit options, based on contribution by Man-Chicken. - Added new fix_list_elements option, if this is set to true UL/OL lists will be forced XHTML valid on cleanup. - Added new fix_table_elements, if this is set to true tables will be moved outside paragraphs. - Fixed so input and button as closed elements in the cleanup logic. - Fixed so the mceButtonSelected is more visible with darker background in the editor_ui.css. - Fixed issue where charmap.js was calling switchClass that's reserved for buttons. - Fixed issue where the directionality option wasn't used in the preview plugin. - Fixed issues with nestled bullet lists pasted from Word 2003. - Fixed bug where button wasn't selected correctly in MSIE due to a CSS issue. - Fixed bug where ask mode wasn't working on DIV elements in Firefox and Opera. - Fixed bug where the mceAddFrameControl command wasn't working correctly. - Fixed bug where language packs wasn't imported correctly in plugins loaded externaly. - Fixed bug where focusing external input elements was visible in element path under MSIE. - Fixed bug where fullscreen plugin wasn't opening the window fullscreen in Firefox. - Fixed bug where style select dropdown wasn't working in Firefox when used in fullscreen mode. - Fixed bug where the fix_content_duplication wasn't working anymore. - Fixed bug where MSIE sometimes generated empty paragraphs. - Fixed bug where MSIE sometimes generated tags like . - Fixed bug where the directionality option produced a error for the color picker dialog. - Fixed bug where configured callback options wasn't executed correctly in fullscreen mode. - Fixed bug where tags got generated as <*> some times in Gecko. - Fixed bug where the cursor was placed within a the anchor when inserting a new one in Gecko. - Fixed bug where convert_fonts_to_span option wasn't working correctly with new cleanup engine. - Fixed various language pack issues such as invalid characters. - Fixed naming conflict with zoom plugin and the format select box. - Fixed so that the initialization of the editor is slightly faster. - Removed all language packs except the english one from the core package. [BREAKS COMPATIBLITY] -Version 2.0.4 (2006-02-24) - Fixed bug where fullscreen plugin was using the tinymce_dev.js script. - Fixed bug where events where having a return true; statement infront of them. - Fixed bug where theme_advanced_toolbar_location option wasn't working. - Fixed bug where select lists wasn't working if you touched them with the tab key. - Fixed bug where auto reset design mode wasn't working correctly. - Fixed bug where null was inserted in paste button action in MSIE. - Fixed bug where _template plugin had a , instead of . character on e.type. - Fixed bug where src, href where replaced to xsrc and xhref in comments. - Fixed bug where paste_cleanup_on_paste option wasn't working correctly with the paste plugin. - Fixed bug where MSIE was reporting an error when TinyMCE was placed in a frame and not focused. - Fixed bug where clipboard_msg wasn't entity decoded corectly before displaying it in confirm box. - Fixed bug where mceRemoveControl wasn't working correctly on DIV elements. - Fixed bug where mceInsertContent/mceReplaceContent produced error when a empty string was inserted. - Fixed so the default valid_elements option is more XHTML valid. - Fixed issue where style formatting wasn't handled when pasting content from Word. - Fixed issue where ' characters wasn't entity encoded, they are now encoded into ' and not '. - Fixed issue with empty paragraphs, these are now filled with &nsbp; if they are empty. - Added documentation on how the # prefix can be used in the valid_elements option. - Added new options paste_remove_styles and paste_remove_spans to paste plugin. - Added possibility to have empty default attributes values. -Version 2.0.3 (2006-02-13) - Added missing buttons to button reference page in documentation. - Added dt,dl,dd elements to default_valid elements config value. - Added new support for self registrering plugins. - Added new callback for themes and plugins handleEvent and the handle_event_callback option. - Added new execcommand_callback option, this enables you to add custom execcommand logic on page level. - Added new custom_shortcuts option, this enables you to disable plugin/theme specific keyboard shortcuts. - Added new addShortcut to TinyMCE_Control, this enables plugin to register custom keyboard shortcuts. - Added new getButtonHTML function to TinyMCE core, this function makes it easier for plugins/themes to make buttons. - Added more documentation on how to write plugins and updated the _template plugin. - Added more documentation on how to write custom themes. - Fixed so the default window size of the source editor is larger in the advanced theme. - Fixed so all internal plugins use the new auto registration and separation logic. - Fixed so all internal themes use the new auto registration and separation logic. - Fixed so the Safari warning is switched off by default. - Fixed so cursor position isn't moved when performing a cleanup. - Fixed so cursor position is correct when performing undo/redo actions. - Fixed so all themes/plugins now use a:hover to produce the mouse over button effect. - Fixed so it uses the DOMContentLoaded and onreadystatechange instead of onload. - Fixed so the simple theme also supports the button_tile_map option. - Fixed so the selection/cursor is moved to the beginning of area on search/replace. - Fixed callback handling to reduce logic, improve performance and flexibility. - Fixed documentarion error for the paste plugin, contributed by Jochen Metzger. - Fixed bug that made the cleanup process to hang MSIE on specific content. - Fixed bug with absolute to relative URL convertion logic if the absolute URL didn't have a path. - Fixed bug where about.htm in advanced theme refered to a non existing css file. - Fixed bug with defParam and the event_elements option. - Fixed bug where fullscreen plugin wasn't correctly setup with editor contents. - Fixed bug where paste/drop converted relative URLs incorrectly in MSIE. - Fixed bug with inlinepopups not restoring selection on close window in MSIE. - Fixed bug where selection was lost when a new column/row was inserted in a table running in Gecko. - Fixed bug where save plugin wasn't working in fullscreen mode. - Fixed bug where fullscreen plugin wasn't working in Opera. - Fixed bug where editor resizing in advanced theme wasn't working in Opera. - Fixed bug where cursor position was placed at the end of instance on word paste. - Fixed bug where a tinyMCE is undefined error was reported in Firefox. - Fixed compatiblity issues with new cleanup plugin and the prototype.js library. - Renamed the mceItemEditable/mceItemNonEditable to mceEditable/mceNonEditable. - Renamed the TinyMCEControl class to TinyMCE_Control, TinyMCE_ is the valid class prefix. - Removed the getInsertLinkTemplate and getInsertImageTemplate functions from themes and from API. - Removed insertImage and insertLink from TinyMCE core, they are moved to the advanced theme. - Removed opacity workaround made for Opera Preview 1, download Opera Preview 2 instead. - Removed search backward function from replace dialog since it could result in a infinite loop. - Marked insertlink_callback, insertimage_callback options as deprecated these can be replaced with execcommand_callback. - Moved selection specific methods to a new class. For example inst.selectNode is now inst.selection.selectNode. - Updated German language pack, contributed by Ace Man. -Version 2.0.2 (2006-01-24) - Added updated Danish language pack contributed by Jan Moelgaard, John Dalsgaard and Bo Frederiksen. - Added updated Czech language pack contributed by michi aka mishal. - Added new Slovenian language pack contributed by Domen Kosir. - Added new Turkish language pack contributed by Engin Dumlu. - Added new save_onsavecallback option to the save plugin, this function is called on save. - Added new save_enablewhendirty option to the save plugin, this will disable the button until changes are made. - Added new onpageload callback event, this event is called when the page is loaded but before instances are made. - Added new accessibility_focus option, this enables you to control if buttons should be tab focusable or not. - Added new greek alpha character to charmap dialog. - Added new Scaron,scaron,Alpha entities to the default value of the entities option thanks to Kevin Rodgers. - Added new contextmenu items link.unlink,advhr contributed by Speednet. - Added new paste_insert_word_content_callback option for the paste plugin. - Added new cleanup plugin, this will replace the one inside the core ones it's considered stable. - Added cancel button to color picker contributed by Speednet. - Fixed various documentation errors and typos, modified the FAQ. - Fixed issue where the first handleNodeChange call was done to early in initialization. - Fixed issue with Dutch language pack for advlink plugin. - Fixed issue where dialogs was to short when dialog_type option was set to modal in MSIE. - Fixed bug where insert image under Gecko resulted in a broken image if it was inserted a the beginning of a element. - Fixed bug where mceVisualAid class wasn't removed from TH elements on save. - Fixed bug where the href attribute area elements gets converted to xhref. - Fixed bug with document relative anchors being forced absolute even when the convert_urls was set to false. - Fixed bug where some plugins produced &gr; intead of > entities on string encoding. - Fixed bug where some characters in charmap dialog was double encoded in Firefox/Gecko. - Fixed bug with XML core entities wasn't encoded when using raw or numeric value in entity_encoding option. - Fixed bug where classes was removed from table,td,th elements when the verify_css_classes option was enabled. - Fixed bug where elements was getting a visual aid class if a default or force class attribute value rule was used. - Fixed bug where strong/em rules didn't handle the -/+ prefixes correctly under Firefox/Mozilla. - Fixed bug where non textarea elements didn't work when submiting content. - Fixed bug where a access denied error was produced when using contextmenu together with modal dialogs under MSIE. - Fixed bug where fullscreen plugin didn't call custom cleanup functions when passing content back and forth. - Fixed issue where default rule for font tags didn't have a + prefix in valid_elements. - Fixed issue with CSS where "arrow" was used instead of "default" for cursor replacement. - Fixed issue where the replace button replaced the current selection first time it was used. - Fixed issue with missing title for the advhr dialog. - Fixed issue with div not beeing usable in the theme_advanced_blockformats option. - Fixed issue in with translation in the German language pack. - Fixed so the word wrap toggle for source view functions in Firefox/Mozilla. - Fixed so title attribute of emotion images gets inserted aswell as alt. - Fixed so the insert return on popups is checked by default in advlink. - Fixed so url gets filled when empty if a user selects a popup url. - Fixed so some init settings gets trimmed from whitespace. - Fixed so charmap closes when a char is selected since most of the time users only need one char. - Fixed so the link and image dialogs of advanced theme are styled with the new 2.x layout. - Fixed accessibility issuew with the link, image and advhr dialogs. - Fixed so the advhr dialog uses the new 2.x layout. - Fixed XHTML compliance for Preview plugin contributed by Bo Frederiksen. - Fixed entity decoding problem with insert button of the advhr plugin contributed by Bo Frederiksen. -Version 2.0.1 (2005-12-02) - Fixed critical bug in some MSIE versions when submiting content. -Version 2.0 (2005-12-01) - Added new paste_replace_list option to the paste plugin, this replaces some MS specific characters into normal characters. - Added new convert_urls option, this was required to address some issues with Firefox 1.5. - Added new paste_create_linebreaks option to paste plugin contributed by Kevin Rodgers. - Added new advimage_update_dimensions_onchange option to advimage plugin, this is enabled by default. - Added new table_inline_editing option, this enables you to toggle the inline table editing controls in FF 1.5. - Added new object_resizing option, this enables you to toggle the resizing controls of table and images in FF 1.5. - Added updated simplified Chinese language pack contributed by Wang Yang (tom_cat). - Added updated Dutch language pack contributed by Mark van der Sanden. - Added updated French language pack contributed by Normand Lamoureux. - Added updated Polish language pack contributed by Wooya. - Added updated Brazilian Portuguese language pack contributed by Marcio Barbosa. - Added new Traditional Chinese language pack contributed by Twapweb. - Added new Slovak language pack contributed by Vladimir VASIL. - Added new Norwegian Nynorsk pack contributed by Knut B. Jacobsen. - Fixed bug where getting init settings in handleNodeChange callback wasn't working correctly when multiple configs where used. - Fixed bug with urls being converted into incorrect values in Firefox 1.5. - Fixed bug where editor and cursor was flickering when TinyMCE was placed in a hidden div in Firefox 1.5. - Fixed bug with missing parenthesis in a MSIE setInnerHTML call. - Fixed bug where MSIE was producing a "Invalid source HTML for this operation" javascript error when placed in P tags. - Fixed bug where some styles with RGB values was parsed/serialized incorrectly in Firefox/Mozilla. - Fixed bug where reset form action didn't reset all editor instances to their original values. - Fixed bug where a javascript exception whas thrown when the editor was resized to a negative value in MSIE. - Fixed bug where inserting custom characters or date/time within a font element removed formatting in Firefox/Mozilla. - Fixed bug where image urls was inserted incorrectly if relative_urls was set to false due to issues with inserthtml command. - Fixed bug where encoding option wasn't working correctly becurse the entities list wasn't initialized. - Fixed bug where MSIE removed the first comment from the HTML of a mceInsertContent call. - Fixed bug where update all cells in table/row wasn't working on some tables with lots of whitespace. - Fixed bug with td background attribute when inline_styles option was set to true in MSIE. - Fixed bug where forms submitted with accesskey or return produced a JS error in Firefox 1.5. - Fixed bug with URL convertion logic not converting paths correctly to relative/absolute URLs. - Fixed bug where inline_styles option and flash moviews produced strange results. - Fixed bug where tabs and links where opened in a new window in MSIE when dialog_type option was set to modal. - Fixed bug where dialogs didn't open in Opera if the dialog_type option was set to modal. - Fixed bug where the table plugin wasn't working with the inlinepopups plugin while running in MSIE. - Fixed bug where embed elements whasn't parsed correctly by the flash plugin if no object tag was surrounding it. - Fixed bug where contents wasn't stored/restored when using the browser back button in Firefox 1.5. - Fixed issue where the ghost resize handles in Firefox/Mozilla was appearing when resizing images/tables. - Fixed issue with constrain proportions feature in advimage plugin, when trying to reset the values to blank. - Fixed issue where inlinepopups option couldn't be enabled/disabled on individual instances. - Fixed issue where TDs was created instead of TH elements when inserting a column on a row with TH elements. - Fixed issue with editor_selector/editor_deselector options couldn't be used when mode was specific_textareas. - Fixed issue where font selection produced null face attributes in MSIE. - Fixed issue where document local anchors where prefixed with the document name. - Fixed issue where link/image dialogs of the advanced theme didn't open using inlinepopups when enabled. - Fixed so the CSS select list gets hidden in the link dialog in advanced theme if there isn't any CSS classes. - Fixed so that the onsubmit handler of a form was processed correctly when posting using the save plugin. - Fixed so TinyMCE makes some very simple cleanups even if cleanup option is set to false. - Fixed so alignment button gifs have the justify prefix, such as justifyleft, for compatiblity with Drupal. - Fixed compatiblity issues with the .NET version of TinyMCE Compressor. - Fixed performance issue with fullscreen plugin, it switches back to normal view a lot faster now. - Fixed issues with mceSelectList class in advanced theme and compressed it some. - Renamed the Norwegian language pack from no to nb since it's "Norwegian Bokmål". -Version 2.0RC4 (2005-10-30) - Fixed bug with font face/size/color wasn't working correctly in Firefox 1.5b1. - Fixed bug where all actions where dispatching the onbeforeunload event. - Fixed bug where buttons in fullscreen mode wasn't working in MSIE. - Fixed bug where style removal with drop list wasn't working correctly. - Fixed bug where element path list or return key some times didn't scroll to the right location. - Fixed bug where return key in Firefox/Mozilla some times produced a error. - Fixed bug where MSIE was presenting a alert box about insecure items when running TinyMCE over HTTPS. - Fixed bug where TR/TD elements width/height attributes produced a JS error on cleanup. - Fixed bug where Polish Ctrl+Alt+Z executed the undo function instead of inserting national character. - Fixed bug where editor couldn't be initialized if no rows or height where specified on a textarea. - Fixed bug where comments sometimes got removed from HTML code. - Fixed bug with advimage not inserting onmouseover attribute correctly. - Fixed bug where anchors with child nodes messed up list elements. - Fixed bug where apply_source_formatting option wasn't working when used together with remove_linebreaks. - Fixed bug where empty paragraphs where invisible in Firefox. These are now padded with a  . - Fixed bug where tables without a border attribute didn't get visual aid borders until cleanup. - Fixed bug with URL convertion, absolute URLs to the same domain without trailing slash produced incorrect results. - Fixed bug with URL convertion of urls like this somedir/?id=3 produced somedir?id=3. - Fixed bug with weird cursor movement when pressing return/enter in a list when running on Firefox/Mozilla. - Fixed bug where contents where deleted sometimes when user pressed return/enter running on Firefox/Mozilla. - Fixed bug where style elements what generated empty in MSIE, but using style tags is not recommended. - Fixed bug with not beeing able to have absolute urls in the external_link_list_url and simmilar. - Fixed bug with bold, italic, underline, strikethrough buttons not beeing selected correctly. - Fixed bug with font size and font face select list not beeing selected correctly. - Fixed bug where document anchors was incorrectly converted if document_base_url was defined. - Fixed bug where changing border width/color of a table didn't update CSS styles correcty. - Fixed bug where emotions plugin didn't insert a new smiley the second time you insert one. - Fixed bug with blockquote command produced javascript error when used on lists in MSIE. - Fixed bug with cleanup converting flash elements to images. - Fixed bug where class wasn't selected in drop list of advlink/advimage dialogs when editing links/images. - Fixed bug where cellpadding/cellspacing/scope wasn't correctly handled in MSIE 5.5SP2. - Fixed bug where hreflang,charset and type attributes wasn't returned correctly in MSIE 5.5SP2. - Fixed bug with broken image URLs when user clicked the cleanup button in Firefox 1.5b2. - Fixed some compatiblity issues with call to createStyleSheet and event.target setup. - Fixed more compatiblity issues with scripts extending core JS logic such as the Array class. - Fixed issue where paragraphs wasn't generated if user pressed returned inside a H1-H6 running on Firefox/Mozilla. - Fixed issue with context menu plugin messing up some onclick events. - Fixed issue with missing HTML in advanced theme. - Fixed issue with Finnish language pack, it wasn't working at all. - Fixed issue where button control styles needed to be overriden in default editor_ui.css. - Fixed issue with a broken link in the documentation to the theme_advanced_resize_horizontal option. - Fixed issue with missing var declaration of a buttons variable in the advanced theme. - Fixed issue with missing block elements in block element regexp. - Fixed issue where advhr plugin didn't produce valid attribute for noshade. - Fixed issue with misslabeled option, plaintext_create_paragraphs is renamed to paste_create_paragraphs. - Fixed issue where remove_script_host and relative_urls where treated as true if they where specified as strings. - Fixed issue with charmap, made it easier to select/click characters. - Fixed issue with search/replace dialogs not being refocused in MSIE. - Fixed issues with dialogs being to small if large class names where added. Made sure they can grow. - Fixed issues with some dialogs being to small in NS 7.2 and not working correctly in NS 7.1. - Fixed missing HEAD element in fullscreen.htm file, contributed by monkeybrain. - Fixed some HTML issues with the advhr plugin, contributed by monkeybrain. - Fixed some small issues with the span element rule of the XHTML rule set in valid_elements documentation. - Added new Opera 9 support, most of the functions is working in the prerelease of Opera 9. - Added new paste_strip_class_attributes option to paste plugin, contributed by monkeybrain. - Added new merge_styles_invalid_parents option, allows users to control what elements gets styles. - Added new theme_advanced_resizing_use_cookie option, this enables you to disable the cookie used by resize. - Added new function that converts all font elements to span elements when the editor loads. - Added new force_hex_style_colors option, enables you to control the color format of CSS styles. - Added new convert_fonts_to_spans option, this option converts fonts to span elements. - Added new font_size_classes option, this option is used together with convert_fonts_to_spans. - Added new doctype option, enables you to control the internal doctype declaration. - Added new event_elements option contributed by happy_noodle_boy. - Added new path tooltips for font, span and flash elements such as color, font-family, src and so forth. - Added trim_span_elements back again, this option removes unneeded span elements. - Added documentation of the apply_source_formatting option. - Added updated Danish language pack, contributed by Jan Moelgaard. - Added updated Hebrew language pack, contributed by Liron Newman. - Added updated Russian language pack, contributed by Vladimir Vitkovsky. - Added updated Finnish language pack, contributed by Tuomo Aura. - Added updated Spanish language pack, contributed by Adolfo Sanz De Diego. - Added updated Italian language pack, contributed by grueff. - Added updated Icelandic language pack, contributed by Johannes Birgir Jensson. - Removed option convert_fonts_to_styles due to various compatiblity issues. Use convert_fonts_to_spans instead. -Version 2.0RC3 (2005-09-26) - Fixed bug where colorpicker in table plugin wasn't working in Mozilla/Firefox. - Fixed bug where closed anchors produced strange results. Anchors are now forced open. - Fixed bug where the font style/color functions wasn't producing correct results. - Fixed bug where buttons not working if a target was defined in head element. - Fixed bug where paragraphs wasn't generated when pressing return/enter in a floating div. - Fixed bug where anchor contents was getting lost, contents of anchors are now placed behind them. - Fixed bug where style info such font size/face/color was removing parent elements such as LI. - Fixed bug where %I wasn't inserting correct hour in the insertdatetime plugin. - Fixed bug where MSIE sometimes doesn't output attributes correctly, contributed by Luke Bennett. - Fixed bug where images was lost if the user pressed return after a image in a TD on FF. - Fixed bug where empty non block elements where produced when hitting return in Gecko browsers. - Fixed bug where it was impossible to update tables. - Fixed various bugs and issues with removeformatting function it will now remove classes and styles. - Fixed compatiblity issues with prototype.js and other scripts that modifies the Object.prototype. - Fixed issue where a unnecessary dir and style attribute was generated on the blockquote command in MSIE. - Fixed issue with access denied error if page contained iframes with external URLs. - Fixed issue where the plugin links in about dialog was linking to blank. - Fixed issue with useCSS command not working in Deer park beta. - Fixed XHTML table compatiblity issues. Placed bordercolor and height in styles instead of attributes. - Fixed issue with tables getting empty summary attribute in MSIE. - Fixes so the insert custom character dialog is accessible through keyboard. - Removed _self as the default target for links inorder to produce more XHTML compliant code. - Removed bordercolor field from table row properties dialog since this is not a valid attribute. - Added accessibility warnings to image and table plugin. These can be disabled by the accessibility_warnings option. - Added updated Danish language pack, contributed by Jan Moelgaard. - Added updated Hebrew language pack, contributed by Liron Newman. - Added updated Norwegian language pack, contributed by Knut B. Jacobsen. - Added updated German language pack, contributed by salzbermat. -Version 2.0RC2 (2005-09-12) - Fixed bug with plugin tab in about dialog not working in MSIE 5.01. - Fixed bug issues with paste and noneditable plugin in MSIE 5.01. - Fixed bug where dialogs in the search/replace plugin was to small. - Fixed bug where about dialog sometimes produced unknown runtime error in MSIE. - Fixed bug where é and í characters was converted the wrong entities. - Fixed bug where it was possible to click on the disabled link icon when nothing was selected. - Fixed bug where autosave plugin wasn't working with JS submit calls or the save plugin. - Fixed bug where file/image browser wasn't working with the default link/image dialogs. - Fixed bug where style attributes where parsed/serialized incorrectly when using - and #. - Fixed bug where inline popups plugin wasn't working when loading the compressed JS files. - Fixed bug with contextmenu showing theme image dialog instead of advimage dialog. - Fixed bug with flash plugin trying to include a empty external list JS file. - Fixed bug with some fields beeing to short if the file browser was disabled. - Fixed bug where contextmenu wasn't recognizing flash elements. - Fixed bug where border styles on images and tables was removed. - Fixed accessibility issue with colorpicker, added titles and keyboard access. - Fixed accessibility issue with toolbar buttons, all toolbar buttons are now wrapped in links. - Fixed accessibility issue width browse buttons, these are now wrapped in links. - Fixed accessibility issue with select lists, all select lists has now keyboard access. - Fixed accessibility issues with missing labels in various dialogs. - Fixed accessibility issue with the emotions plugin, this one now inserts a alt text for smileys. - Fixed accessibility issue with the locationbar, menubar and so fort in advlink plugin. - Fixed accessibility issue with TOC in english help pages. This is not wrapped in a acronym element. - Fixed issue with the directionality plugin. It will now get disabled on invalid elements. - Fixed issue where popups was the wrong size a new resizeToInnerSize function resizes popups to the correct size. - Fixed so empty elements gets removed since they serve no purpose. - Added support for TinyMCE grabbing text from input elements if specified in exact mode. - Added language specific relative popup width/heights to all build in dialogs. - Added missing browser for popup url in advlink plugin. - Added missing delete table icon to context menu. - Added so it's possible to see the target value in the target select dropdown in the advlink plugin. - Updated the documentation to include information about the new language packs. - Updated the swedish language pack. -Version 2.0RC1 (2005-09-06) - Renamed CSS classes mcePathTop,mcePathBottom,mcePath to mceStatusbarTop,mceStatusbarBottom,mceStatusbar. [BREAKS COMPATIBLITY]. - Moved all theme CSS files to a css directory within the theme. [BREAKS COMPATIBLITY]. - Removed the default theme since the advanced theme can be configured to be as the default theme. [BREAKS COMPATIBLITY]. - Removed closeDialog method from TinyMCE use tinyMCEPopup.close(); instead of tinyMCE.closeDialog();. [BREAKS COMPATIBLITY]. - Removed the auto_cleanup_word option, since the paste plugin now handles this better than the build in function. - Added improved undo/redo and onchange handling. All modifications are now undo/redo:able. - Added new mceBeginUndoLevel/mceEndUndoLevel commands. Used to begin/end a undo/redo:able action. - Added new link dialog with tab interface and lots of new fields and options. - Added new image dialog with tab interface and lots of new fields and options. - Added new about dialog with tab interface, this one replaces the old help dialog. - Added new table dialogs with tab interface and lots of new fileds and options. - Added new utils directory in tiny_mce script dir. This directory contains various utility classes. - Added new TinyMCEPopup class to tiny_mce_popup.js, used for common popup logic. - Added new inlinepopups plugin, this makes the popup windows to open as DHTML windows (divs). - Added new version info constants to TinyMCE (majorVersion, minorVersion, releaseDate). - Added new resizing functionality to the advanced theme, the editor instance can now be resized. - Added new theme_advanced_resizing option, enables/disables the new resizing functionality. - Added new theme_advanced_resize_horizontal option, enables/disables the horizontal resizing. - Added new theme_advanced_path option, enables/disables the element path functionality in statusbar. - Added new compressed icons about 1/3 of the original size, contributed by Jozef. - Added new center support of images, images are now wrapped in a div with alignment. - Added new - character to the valid_elements/extended_valid_elements options this feature removes empty elements. - Added new setup_content_dom and submit_content types to custom cleanup callbacks. - Added new inst parameter to custom cleanup callbacks, this is a reference to the editor instance. - Added new mceColorPicker command to the advanced theme, enables the possibility invoke the color picker. - Added new safari_warning option, this enables you to disable the alert that gets presented when running on Safari. - Added new editor_selector/editor_deselector options that enables you to specify a include/exclude from convertion class. - Added new tinyMCE.addToLang function to reduce the overall size of the language files. - Added new auto save plugin. This plugin will confirm that the user want's the leave any modifications unsaved. - Added new noneditable plugin. This plugin enables you to disable/enable the possibility to edit various elements. - Added new word example, to better illustrate how TinyMCE is to be used when pasting content from Office/Word. - Added missing entities eactute,iacute,oacute,uacute,Aacute,Eacute,Iacute,Oacute,Uacute,Yacute,Aacute. - Added updated Hebrew language pack contributed by Liron Newman. - Added visual aid icon for invisible anchors elements. - Added new insert table and delete table commands to context menu. - Added new convert_fonts_to_styles option, this option controls if font or span will be used when using font size, color etc. - Renamed the theme_advanced_path_location to theme_advanced_statusbar_location. - Moved all popup javascript logic into external .js files, inorder to separate presentation and logic. - Removed the automatic resizing of popups. Better to use relative window sizes for each language when opening a dialog. - Fixed issue where the character map dialog lost focus when inserting a char. - Fixed issue where the attribute values where not XML encoded correctly. For example: & will be &. - Fixed performance issue with the table plugin, it was executing logic even when it was inactive. - Fixed so the directionality gets inherited by all popups/dialogs. - Fixed so the CSS file content_css loads after the theme content CSS, user specific CSS extends theme CSS. - Fixed so more than 3 toolbar rows may be added in when using the default simple layout. - Fixed so the insertdatetime plugin polls it's default date formats from the language pack. - Fixes so auto_reset_designmode is enabled by default, to avoid the question about the editor not working in tabs. - Fixed better inline styles support for images and tables. - Fixed duplicate IDs on advanced theme with external toolbar, contributed by Miguel Fortea. - Fixed issue with remove formatting under MSIE, if all contents of a element is selected the element is also selected. - Fixed issue with visual aids not being removed from content when cleanup is disabled. But it's NOT recommended to disable the cleanup. - Fixed bug where return/enter key sometimes produced empty elements in MSIE. - Fixed bug where link list was generated twice in the advanced themes link dialog. - Fixed bug issue where embed was converted in to ibed due to some invalid regexps. - Fixed bug where summary attribute on tables got lost in MSIE. - Fixed bug where the editor scrolled to the top of content when the pasting text with the paste plugin. - Fixed bug where external toolbar wasn't translated, contributed by Miguel Fortea. - Fixed bug where the editor had a incorrect height, contributed by Miguel Fortea. - Fixed bug where visual aid class where presented in element path. - Fixed bug where HR elements with a id set to "null" produced runtime error in MSIE. - Fixed bug where isDirty wasn't working due to the same function name and variable name. - Fixed bug where events like onclick wasn't removed/stored correctly in old MSIE. -Version 1.45 (2005-06-23) - Fixed so the newdocument button shows again, was removed by accident in RC2. - Fixed so styles drop down in link dialog gets hidden if no classes are defined. - Fixed bug where Paste command in context menu wasn't working. - Fixed bug issue with not having a base href element in preview plugin. - Fixed bug where input elements produced double type/value attributes in MSIE. - Fixed so the check for empty contents in cleanup handled uppercase elements. - Added a alert box is a popup is blocked by a popup blocker. - Added updated dutch language pack, contributed by Fred Stuurman. - Added a confirm dialog for the newdocument action. - Added mceContentBody class to the iframe document body. - Added allowtransparency attribute to iframe. - Added fix where some HTML content produced runtime error in MSIE. - Added a lot better Safari support, but many things are still very buggy. - Added flash_wmode, flash_quality and flash_menu options for the flash plugin. - Added new dialog_type option, this enables you to switch back to modal dialogs in MSIE. - Updated Canadian French table language pack contributed by Virtuelcom. - Fixed some minor issues with Simplified Chinese language pack. - Re-added Tahoma font to font drop list, was removed in previous version. -Version 1.45 RC2 (2005-06-15) - Fixed bug where paste_use_dialog option for the paste plugin wasn't working correctly. - Fixed bug issue with setContent not calling custom cleanups correctly. Inflicts the Flash plugin. - Fixed bug where external_link_list_url/external_image_list_url in fullscreen mode. - Fixed so TinyMCE doesn't use modal dialogs on MSIE, these where giving some problems with for example lost sessions. - Fixed the auto resize function for popups to use new logic. - Fixed so callback functions gets called correctly from fullscreen mode. - Fixed misspelled language pack for canadian french in the advimage plugin. - Fixed so openWindow can open use absolute URL:s. - Fixed bug issue where auto_cleanup_word sometimes didn't work in MSIE. - Fixed bug issue where the close button in dialogs wasn't available on Firefox on MacOSX. - Added new pastetext icon contributed by speednet. - Added new browsers option that enables you to specify what browsers is to be WYSIWYG enabled or not. - Added partial Catalan translation contributed by Marc Bria Ramírez. - Added portuguese Brazil translation contributed by João Borges. - Added updated Simplified Chinese language pack contributed by cube316. - Added beforeunload handler for fullscreen plugin so contents gets updated when the window is closed. - Added a new fullscreen_settings option for the fullscreen plugin contributed by David Glick. - Added new insert table command to context menu when user clicks within a table. - Added new advimage_constrain_proportions option to advimage plugin, contributed by Knut B. Jacobsen. - Added updated advanced theme with a new external toolbar location option, contributed by Man-Chicken (http://www.zoomshare.com/). - Added new tiny_mce_gzip.php file, this PHP script merges and compressed the requested .js files to improve loading times. - Added updated czech language pack, contributed by Stanislav Lacko. - Added new mceRemoveNode command, this command removes a node and inserts the node contents instead. - Added new behavior to format select box, you can now remove a paragraph by selecting -- Format --. - Removed ?rnd from external_link_list_url/external_image_list_url since it doesn't work well with serverside scripts. -Version 1.45 RC1 (2005-05-27) - Fixed bug where character map inserted & and </> when using & < >. - Fixed so paragraphs containing   is converted to numeric or raw if entity_encoding is set. - Fixed bug in searchreplace plugin when user tried to search on a empty string or the editor contents was empty. - Fixed repaint/trail graphics issues with images and tables in FF/Mozilla. - Fixed some memory leaks in TinyMCE core and context menu plugin, only MSIE was inflicted by this. - Fixed stange issue where elements sometimes disappeared in MSIE. - Fixed URL convertion problems with onmouseover, onmouseout image urls in advimage plugin. - Fixed URL convertion problems with Flash plugin. - Fixed the experimental Safari support, some features work some doesn't. - Fixed bug where multiple a elements where created when updating links on images in FF/Mozilla. - Fixed bug in importCSS function, was having a meaning less if statement. - Fixed so the contextmenu plugin uses images from the configurated theme instead of the advanced theme. - Fixed so the external_link_list_url/external_image_list_url options can use relative or absolute path. - Fixed so the external_link_list_url/external_image_list_url has a random query parameter to prevent it from cache. - Added new mceInsertRawHTML command, this inserts raw as it is HTML code in the the selected position. - Added paste plain text plugin contributed by Ryan Demmer, converted it into a paste plugin. - Added updated paste plugin contributed by speednet, includes paste directly feature for MSIE. - Added split/merge table cells support, to table plugin and context menus. - Added cut/copy/paste table rows functionality to context menu and table plugin. - Added new mceSetContent command, this does the same as the setContent function. - Added new clear all/new document icon to advanced theme. - Added new remove formatting and select text color icons. - Added new directionality plugin to better support languages that write from right to left. - Added new fullscreen plugin, enables users to toggle fullscreen editing mode. - Added a new template/tutorial plugin to aid people in the development of own plugins. - Removed visual_table_style and replaced it with visual_table_class. [BREAKS COMPATIBLITY]. - Renamed urlconvertor_callback option to urlconverter_callback. -Version 1.44 (2005-05-03) - Fixed bug with contextmenu not showing at the correct location in MSIE. - Fixed bug where a error was produced by the Flash plugin if the user reloaded the page in MSIE. - Fixed issue where mceAddControl and mceRemoveControl commands produced a error in MSIE. - Fixed bug when images and flash movies where mixed in the editor produced strange results. - Fixed so trailing / characters isn't removed from URLs. - Fixed so the contextmenu uses a diffrent method of loading it's custom CSS file. - Fixed getAttributes problem, it should read getAttribute. - Fixed so "Edit HTML source" window may be maximized. - Added French eacute entitiy to default entities option. - Added a height CSS value for the element path in advanced themes editor_ui.css since it keept bobbing up and down. - Added updated Polish language pack contributed by Marcin Szymon Sznyra. - Added better window auto resize method for most dialogs. - Added new feature to set what tags are to be left open in valid_elements. Add a + before the element names to enable. - Added nowrap for the editor table cells, sometimes the editors controls wrapped. - Updated German language pack contributed by Krokogras. -Version 1.44 RC2 (2005-04-25) - Fixed bug with host prefixes and port numbers when having relative_urls set to false and remove_script_host set to true. - Fixed bug when site absolute URLs for example /something was converted incorrectly in Firefox/Mozilla. - Fixed bug where the link wasn't auto selected in the drop list in the advanced themes default link dialog. - Fixed bug issue with the flash plugin and croping out characters before and after the movie. - Fixed bug where the editor jumped to top of editor area on enter/return when doctype was set to XML Transitional. - Fixed bug where context menu was appearing in the wrong location if the window was resized. - Fixed bug in the context menu where table properties wasn't working. - Fixed bug where a selectorText exception was trown if the CSS file contained @import or @charset. - Fixed bug where bold/italic/strikethough/underline wasn't selected/unselected in toolbar some times. - Fixed issue with hspace and vspace when having the inline_styles option enabled. Contributed by speednet. - Fixed bug where access denied error was thrown sometimes in MSIE. - Fixed so images without src won't be inserted. - Fixed some issues with width/height fields in the advimage plugin. - Fixed so the contextmenu plugin doesn't appear in MSIE 5.0, now functions with 5.5+. - Added filebrowser icon to mouse over and mouse out fields in the advimage plugin. - Added filebrowser icon to popup field in the advlink plugin. - Added so the triggerSave function gets auto executed when a user calls submit on a form, this can be disabled with the submit_patch option. - Added missing readme.txt file for the context menu plugin. - Added new border and background color fields to table dialog, based on contribution by Neirda. Enable them by the table_color_fields option. - Removed some old outdated items from FAQ. -Version 1.44 RC1 (2005-04-20) - Fixed bug where width/height attributes of a image wasn't stored some times in Firefox/Mozilla. - Fixed bug where P elements where created if a user pressed return/enter within a h1-h6 in Firefox/Mozilla. - Fixed bug where the remove format fuction didn't work some times in MSIE. - Fixed so backspace/delete gets added in one undo level in MSIE (improves performance). - Fixed so the "Could not find element by id or name" alert only shows when the debug option is set to true. - Fixed bug where bold/italic didn't work in Mozilla 1.3. - Fixed bug where width/height of a hidden TinyMCE instance where incorrect. - Fixed so the function layout of classes in tiny_mce_src.js uses prototype keyword instead of TinyMCE_ prefix (reduces size). - Fixed bug where triggerNodeChange produced javascript error some times in MSIE. - Fixed some issues in the Swedish and Spanish language packs. - Fixed bug where first undo level wasn't working correctly. - Fixed so flash plugin loads it's needed CSS data from within the plugin. - Fixed button images and CSS in the simple theme. - Fixed so the simple example shows how to use the simple theme instead of the default theme. - Fixed so cleanup default values can be set to empty. For example alt= generated alt="" on img elements. - Fixed memory leaks in MSIE (circular closure problem) events are now removed in a better way. - Fixed bug where URLs where converted incorrectly if the editor page URL contained / characters. - Fixed bug where table guidlines didn't work correctly when using the build in Mozilla table buttons. - Fixed bug where the Flash plugin was breaking other elements. - Added new contextmenu plugin, this plugin adds a menu if the user right clicks/uses the contextmenu on elements. - Added new multiple configuration support, the init method may now be called multiple times. - Added new remove_linebreaks option, this option is enabled by default and removes all HTML code linebreaks. - Added new behavior to the textarea_trigger option, if mode is textareas and trigger is false those elements will not be converted into editors. - Added new entity_encoding option, enabled user to better control the behavior of how character are converted into entities. - Added new isDirty command to TinyMCEControl, this method returns true if the user has done any modifications to the content. - Added new onchange_callback option, this callback is executed when contents within the editor instance is changed. - Added new init function for themes/plugins this gets called when a editor instance has finished it's setup. - Added new init_instance_callback option this callback is executed when instances are added to the editor. - Added new cleanup option this option enables users to totaly disable the whole cleanup process. - Added new importCSS method to TinyMCE. This method allows plugins and themes to load custom CSS files on initialization. - Added new getSelectedHTML method to TinyMCEControl class, this method returns the currently selected HTML contents. - Added new getSelectedText method to TinyMCEControl class, this method returns the currently selected contents as text. - Added new removeclass behavior to the removeformat button. The current class will be removed if no contents is selected. - Added new queryInstanceCommandValue and queryInstanceCommandState methods. - Added new option button_tile_map, this option contols the usage of button tile maps and is disabled by default. -Version 1.43 (2005-03-06) - Fixed bug with ask option not working at all. - Fixed bug where a "instance is not defined bug" error was produced. - Fixed bug with empty image src produced a error. - Fixed so the simple and default theme used the same CSS style as the advanced theme. - Fixed bug with the relative to absolute URL convertion logic if a empty string was passed used. - Fixed parse error bug with the source editor some servers can't handle XML PI declarations. - Fixed bug issue with HR elements in MSIE, if a specific work pattern where used a runtime error was produced by MSIE. - Fixed bug in the URL convertor logic, port numbers was not correctly handled. - Fixed issue where the cursor was placed before a insert of custom charater or date/time. - Fixed bug where the editor height option didn't work on MSIE. - Fixed bug where a linefeed within a table cell broke the table in Firefox/Mozilla. - Fixed bug where return/enter key after a image removed all content. - Fixed bug where return/enter key sometimes produced nestled P elements. - Fixed bug where the editor was stealing focus on load in MSIE. - Fixed bug where the visual aid logic forces width/height attributes on tables. - Fixed bug where getCSSClasses some times returned null value. - Fixed issue where the lang_insert/lang_update language variables wasn't entity decoded. - Fixed so the image/link/flash drop list gets auto selected thanks goes to Randy Simons and salzbermat. - Fixed so remove formatting button in MSIE removes all classes aswell. - Fixed issue where output contained single br element when the editor area was empty. - Added new %A/%a/%B/%b format chunks to insertdatetime, these insert localized date names such as January. - Added new oninit callback option for TinyMCE this callback is executed when all editor instances been initialized. - Added new preview panel to dialog in the advimage plugin, contributed by Virtuelcom. - Added element class name to element path in the advanced theme. - Updated Canadian French table language pack contributed by Virtuelcom. - Updated the swedish language pack, contributed by Mats Löfström, York Consulting AB. -Version 1.42 (2005-02-14) - Fixed bug with the element path beeing resized if width/height of editor was 100%. - Fixed bug with reloading/flicker of all button images in MSIE if browser cache is disabled. - Fixed backspace/delete bug in Firefox, some times the cursor got stuck. - Fixed bug issues with enter/return key in Firefox/Mozilla. - Fixed bug where copy/paste and drag drop of images/links failed in Firefox/Mozilla if a document_base_url is provided. - Fixed so when relative_urls is set to false it forces absolute URLs for images/links. - Fixed so the _src.js suffix versions of the themes and plugins gets loaded with the tiny_mce_src.js script is used. - Fixed so verify_css_classes option is disabled by default. - Fixed bug where tables where resized when toggling visual aid in Firefox/Mozilla. - Fixed bugs with advhr plugin running in a hidden div element. - Added new auto_focus option that enabled a specific editor area to be focused on startup. - Added a extra argument to the filebrowser callback inorder to get the calling window reference. - Added a new persian (farsi) language pack contributed by Morteza Zafari. - Added new more nice looking icons contributed by Morteza Zafari and Michael Keck. The old icons are available in a separate icon pack. - Added updated Canadian French language pack contributed by Virtuelcom. - Added updated French languahe pack contributed by Laurent Dran. - Added updated German language pack contributed by Tobias Heer. - Added some documentation regarding the layout manager options made by SlyD. -Version 1.41 (2005-01-31) - Added new table plugin, all table code is moved into this plugin [BREAKS COMPATIBLITY]. - Added new external_link_list_url/external_image_list_url options for better backend integration. - Added new file_browser_callback option for better backend integration. - Added new layout manager code into the advanced theme, contributed by SlyD. - Added new nowrap option, enables so users may change the word wraping behavior. - Added new Thai language pack contributed by Innozent. - Added obfuscated version of all plugins and themes to reduce over all startup/download time. - Added Simplified Chinese language pack contributed by cube316. - Added a updated Czech language pack thanks to Josef Klimosz. - Fixed issue where anchor elements where closed. This results in browser problems with the outputed HTML. - Fixed bug where the first return key press didn't produce a paragraph in Firefox/Mozilla. - Fixed bug in the searchreplace plugin where replace content sometimes fails in Firefox/Mozilla. - Fixed so all language packs now uses the ISO-639-2 code instead of ISO 3166-1 [BREAKS COMPATIBLITY]. - Fixed some issues with the force_br_newlines option in MSIE. - Fixed bug where the backspace or delete key produced BR elements in Firefox/Mozilla. - Fixed bug issue with link and image dialogs of the default theme/simple example. - Fixed some bugs when having the editor hidden in a tab/div, contributed by Ernst de Moor. - Fixed some character issues with the Danish language packs, contributed by someone unknown. -Version 1.40 (2005-01-09) - Added a new default value for the font size drop down, if no font size where found this gets selected. - Added a auto resize window feature, this is enabled by default but can be disabled with a window argument. - Added a new print plugin, prints the current editor contents to a printer. - Added a new searchreplace plugin, adds a search, searchnext and replace button. - Fixed bug issue where buttons didn't display correctly on some Firefox installations. - Fixed issue with value and type attributes of input elements getting lost in cleanup on MSIE. - Fixed so that the getEditorInstance command is public, returns a TinyMCEControl by id. - Fixed issue where "true" and "false" string wasn't treated as booleans in TinyMCE init options. - Fixed so cursor/mousepointer allways remains a arrow in all themes when rolling over buttons. - Fixed the popup windows so they are mode "modal" in Mozilla/Firefox. - Fixed so the ask question is displayed when elements are focused with the tab key. - Fixed so the ask option works when mode option is set to exact. - Fixed issue with visualaids on tables not working correctly when the user uses the tab key in Firefox/Mozilla. - Fixed some bugs with the mceSetCSSClass class command and the element path. - Fixed a new version of the mceInsertContent command. - Fixed so the auto_cleanup_word option is disabled by default. - Removed the langs of the zoom plugin, it now uses + instead of the "zoom" word. -Version 1.391 (2005-01-04) - Fixed major spacebar bug in MSIE, spacebar was disabled. -Version 1.39 (2005-01-04) - Updated the Flash plugin with a new version, contributed by jamesw. - Added new setWindowArg function, useful if plugins are to call other plugins. - Added new save plugin, this plugin adds a save/submit form button to tinyMCE, contributed by SlyD. - Added new hilite color support, sets a background-color style on the selected text. - Added new variable replacement popup URLs, check the openWindow function documentation for details. - Added new force_p_newlines option, forces P elements on return/enter key in Mozilla/Firefox. - Added new theme_advanced_path_location, adds a element path list. - Added new theme_advanced_toolbar_align option, defaults to center. - Added new Portuguese translation contributed by José Pedro Pereira. - Added new mceSelectNode and mceSelectNodeDepth commands. - Added new add_unload_trigger option, this adds a unload triggerSave call. Enabled by default. - Added am/pm time format to the insertdatetime plugin. - Fixed font color and size attribute bug, contributed by Vincent FIACK. - Fixed className undefined bug, Firefox/Mozilla produced a console error sometimes. - Fixed so mceSetCSSClass command may be applied to all sorts of elements. - Fixed so anchor elements can be removed by setting the anchor name to nothing. - Fixed typing performance some in Firefox/Mozilla, removed some nodechange triggers. - Fixed so the zoom plugin is invisible in MSIE 5.0, since zoom isn't available in that browser. - Fixed bug with the emotions plugin in MSIE 5.0, it was opening a new window. - Fixed so contents stay within the editor if the user hits the back/forward buttons. - Fixed bug where the window.name property was set to the image name. - Fixed so anchors links within the same page are made relative when relative_urls are set to false. - Updated the advanced theme so most of the images are loaded from a tiled image, improves loading time. - Updated the Swedish language pack, contributed by Martin. - Updated the readme.txt in the advlink plugin, was some problems with the valid_elements. - Updated the default CSS for the advanced theme some, added button backgrounds to look like office2k. -Version 1.38 (2004-11-28) - Added new textarea field for form elements when debug mode is enabled, contributed by Michael Keck. - Added new spacer item support for the theme_advanced_buttons options, contributed by Michael Keck. - Added new selection borders for images and hr elements, contributed by Michael Keck. - Added new advhr plugin, this plugin handles advanced settings on HR elements, contributed by Michael Keck. - Added new german language pack for the preview plugin, contributed by Michael Keck. - Added new word wrap and source formatting to the source editor, contributed by Michael Keck. - Added new updated charmap, contributed by Michael Keck. - Added new flash plugin that enabled flash movied to be handled, contributed by Michael Keck. - Added the old cut/copy/paste commands to the advanced theme, these are not visible by default. - Added new theme_advanced_buttons_add_before option to advanced theme. - Added new "update" button title for a popup windows. - Added new zoom prefix language variable to the zoom plugin. - Added new entities option, that enables you to config entity code to name convertion. - Added new custom cleanup possibility to plugins. - Added new cleanup_callback option, adds the possibilty to add custom cleanup logic. - Added new Norwegian language pack, contributed by Sten Aksel Heien. - Added new Korean language pack, contributed by Setzer Gabbiani. - Fixed the layout of the color picker, contributed by Michael Keck. - Fixed so the preview plugin doesn't include the any toolsbars in preview popup window, contributed by Michael Keck. - Fixed bug where anchors elements was treated as links. - Fixed so all popup windows are modal dialogs in MSIE. - Fixed bug where the word "null" sometimes appares in HTML after cleanup in Firefox/Mozilla. - Fixed bug where form elements with missing name attributes produced errors. - Fixed some default value bugs and issues with the new advlink plugin. - Fixed the link/image dialog sizes in the SE language pack. - Fixed the content duplication bug, it seems to be fixed anyway, if not please let me know. - Fixed bug where plugin handleNodeChange extentions broke the theme function. -Version 1.37 (2004-11-12) - Added new mceResetDesignMode command that can be used when the editor is placed in tabs. - Added new updated Italian language pack thanks goes to "Fabrix Xm" for the contribtion. - Added new greek language pack thanks goes to "Jacaranda Bill" for the contribution. - Added new french language pack thanks goes to "Pat Boens" for the contribution. - Added new russian language pack thanks goes to "Roman Filippov" for the contribution. - Added new updated Dutch language pack thanks goes to Arnoud van Delden and Ernst de Moor for the contribution. - Added new convert_newlines_to_brs option, that enables newlines to be converted to br elements. - Added new custom_undo_redo_keyboard_shortcuts option, enables keyboard shortcuts to be enabled/disabled. - Added new auto_reset_designmode option, thats resets the design mode when a editor instance is focused. - Added new form reset handler, resets the contents of TinyMCE areas when the onreset event is trigged. - Added new skip_cleanup parameter to triggerSave, this parameter is optional and defaults to false. - Added new lang_underline_img language variable to all themes. - Added new title attribute to all images, enables tooltips in Mozilla and Firefox. - Added new insert and cancel CSS id's for all submit and cancel buttons. - Added new full featured example that includes all available plugins and buttons. - Added new advlink and advimage plugins to TinyMCE, these are more advanced link and image tools. Contributed by Michael Keck. - Added new parameters to insertImage and insertLink commands. Contributed by Michael Keck. - Added updated compatiblity chart, includes a matrix table thanks goes to Ernst de Moor. - Added new insert image icon contributed by Arnoud van Delden and Ernst de Moor. - Added window focus on all popup windows, contributed by Arnoud van Delden and Ernst de Moor. - Fixed some issues with the char map added some characters and removed duplicate ones, contributed by Arnoud van Delden and Ernst de Moor. - Fixed the insert row icon, rotated it 180 degrees, contributed by Arnoud van Delden and Ernst de Moor. - Fixed the visual aid icon, made it a bit darker. Contributed by Arnoud van Delden and Ernst de Moor. - Fixed some issues with entity encoding in source editor aswell as in core cleanup code. - Fixed bug where the auto import CSS feature imported invalid CSS rules with : or spaces. - Fixed bug where unnecessary entity encoding of characters was done. - Fixed the window sizes some to better function on MSIE with SP2. - Fixed some issued with the auto word cleanup feature, fixes some issued with content duplication. - Fixed bug that made the editor to throw weird error when HTML code includes content. - Fixed bug where the style attribute was returned on images in source output even if it was disabled. - Fixed issue where the UI form elements of TinyMCE was submitted with the form submit. -Version 1.36 (2004-10-19) - Added a newly modified version of the German language pack from "krokogras". - Added auto resizing to popup windows with the same name. - Added example page for the plugin_preview_pageurl option in the preview plugin. - Fixed issue with link button auto enable/disable feature when content selection was made with the keyboard. - Fixed bug where events wasn't handled correctly in MSIE 5.5 and some 6.0 versions. - Fixed so align on images gets set as float style when the inline_styles option is enabled. - Fixed so solid border style isn't applied on elements with a border when the inline_styles option is enabled. - Fixed some issues with tables and the inline_styles option. - Fixed back button issue with MSIE, iframes was placed in browser history. -Version 1.35 (2004-10-13) - Added so that whitespace gets stripped in plugin and theme_advanced_buttons options. - Added custom plugin_preview_pageurl option to preview plugin. - Added Canadian French language packs for the new plugins, contributed by Virtuelcom. - Added new theme_advanced_blockformats option. - Added new title support to advanced theme link dialog. - Added new Ctrl+B/I/U keyboard shortcuts for Firefox. - Added Polish language pack contributed by "revyag". - Added Taiwanese language pack contributed by "Jim Kou". - Added updated German language pack contributed by "Krokogras". - Fixed some issues with ieSpell including better language support. - Fixed bug with default value in valid_elements not working in Firefox some times. - Fixed bug when focusing links without selecting any characters. - Fixed some typos in Swedish language pack. - Fixed bug with content selection and link button auto enable/disable feature. - Fixed bug issue when "theme_advanced_buttons" options where left empty. - Fixed various bugs with absolute URLs. -Version 1.34 (2004-10-03) - Added new insertdatetime plugin, inserts date/time in various formats. - Added new preview plugin, previews the HTML page in a new window. - Added new zoom plugin, adds the possibility zoom the editor in MSIE. - Added new emotions plugin, adds the possibility to add smileys. - Fixed so that TinyMCE functions on MSIE 5.0 again. - Fixed so that TinyMCE functions better on Mozilla 1.3. - Fixed so that the cursor doesn't jump to the top when setting styles. - Fixed bug with STRONG and EM elements wasn't handled correctly in Firefox. - Optimized the key handling some, gives better typing performance. - Removed key down statusbar debug info. -Version 1.33 (2004-09-29) - Removed the need of loading blank.html, iframes are now created dynamicly. - Fixed bug when selecting tables, MSIE was casting errors. - Fixed bug with pluginurl variable. - Fixed bug when tinyMCE.selectedElement error was cast in Mozilla. - Added new Arabic language pack contributed by Hani Suleiman. - Added "lang_dir" support to language packs like Arabic. -Version 1.32 (2004-09-25) - Added new ieSpell plugin, only works in MSIE. - Added new "theme_advanced_buttons_add" option. - Added new importPluginLanguagePack function. - Added new Danish language pack contributed by Jan Moelgaard. - Added updated German language pack contributed by Christopher Müller. - Added new any_selection to handleNodeChange callback. - Modified so link/unlink is dimmed if nothing is selected. - Fixed bug when deleting images in Firefox. - Changed the plugin location to a new plugin directory. - Renamed the "theme_plugins" option to "plugins". -Version 1.31 (2004-09-18) - Added Canadian French language pack, contributed by Virtuelcom. - Added so link/unlink buttons gets selected when user enters a link element. - Fixed URL bug when drag dropping/copy pasting images in Mozilla. - Fixed so mso style attribs don't get trimmed if auto_cleanup_word option is set to false. - Fixed bug with text alignment buttons. - Fixed bug with CSS auto import function in MSIE. - Fixed initialization bugs and issues. -Version 1.30 (2004-09-10) - Fixed bug issue where the editor was stealing focus from location bar. - Fixed bug issue with absolute aligned images lost focus when using tools. - Fixed bug #1025483, Url converting broken. - Added ability to send command values in advanced theme button list, contributed by someone helpfull. - Added new cleanup_on_startup option, to increase startup speed. - Added new inline_styles partly based on a contribution by Victor Nilsson. - Added new named anchor support. - Added custom_undo_redo_levels option. -Version 1.29 (2004-09-08) - Added new getEditorId function, to retrive the editor id of a form element. - Readded so cleanup is automaticly executed on editor startup in MSIE. - Added some various cleanup fixes for MS Word HTML. - Added new auto_cleanup_word option, enabled auto MS Word HTML cleanup on paste events. - Fixed parameter issue with insertImage function. Bug #1022863. - Fixed bug #1022874, Where the small theme had underline command on strikethrough button. - Fixed some bugs with table commands. - Fixed bug #1023204, mceRemoveControl brings back the old HTML. - Fixed bug issue with tinyMCE.selectedInstance in Mozilla. - Fixed bug issue with Mozilla not saving content. -Version 1.28 (2004-09-04) - Added new Finnish language pack thanks to Urho Konttori. - Added new rowseparator as a possible value of the theme_advanced_buttons options. - Added new theme_advanced_toolbar_location option. - Added new uid variable option to valid_elements. (Generates unique IDs) - Added new "directionality" option to support languages like Arabic. - Added new character map button/window. - Added new guidelines/visual aid toggle button. - Reduced the source of the advanced theme some, and added some better comments. - Separated the default theme in to files aswell. - Removed source area size options and made source editor resizable instead. - Increased the default width and height of the source editor. - Fixed bug where image width/height default to 0x0 if these attributes wasn't defined. - Fixed some bug issues with MSIE 5.5. -Version 1.27 (2004-08-29) - Added new cleanup logic, with new options and smarter behavior. - Added new "trim_span_elements" option (removed unneeded span elements). - Added new "verify_css_classes" option (verifies so class attributes contain a valid class). - Added new "verify_html" option (enables/disabled verification of elements and attributes). - Added new value verification type to "valid_elements" option. - Added new simple wildcard support in "valid_elements" option. - Added class as a valid attribute to table elements by default. - Added so non existent classes gets removed HTML output. - Added fix for   entities, so they get converted correctly. - Added new class select box in table dialog. - Added hr as a default valid element. - Fixed some issues with the language packs. - Fixed some weird bugs and issues with hr elements. - Fixed bug where Mozilla was casting exceptions on keypress. -Version 1.26 (2004-08-25) - Added a better way to create theme popup windows (External files). - Added new getWindowArg function, returns window arguments in theme popups. - Modified the advanced theme to adopt the new theme popup idea. - Fixed critical Mozilla bug, where the editor didn't work at all some times. - Fixed bug with auto CSS class import feature running on Firefox. -Version 1.25 (2004-08-22) - Added new format select box in advanced theme (Can be disabled). - Added new "theme_advanced_disable" option to advanced theme. - Added some new elements to default list of valid elements (Format select box elements). - Added new font face, forecolor and font size support, these are not enabled by default. - Added new "mceAddControl" command, enables users to dynamicly add editors. - Added new execInstanceCommand function, check the documentation for details. - Added new "mceSetAttribute" command. - Modified the themes so that the focus alert doesn't popup as often as before. - Modified the "mceRemoveControl" command so it can handle element id aswell as editor ids. - Fixed some bugs and issues with the new custom undo/redo logic. - Fixed weird Mozilla bug #997860. -Version 1.24 (2004-08-17) - Modified so that span with CSS classes that don't exists get removed. - Added new "custom_undo_redo" option, this option is enabled by default. - Added new "fix_content_duplication" option, that fixes some MSIE content duplication issues. - Added new "mceFocus" command, that changes focus to the specified editor instance. - Added new "mceReplaceContent" command, that enables users to replace the current selection. - Fixed so styles including spaces doesn't get listed in style selection box. - Fixed bug with form element names and exact mode in Mozilla. - Fixed so tiny_mce_src.js can be used aswell as tiny_mce.js. - Converted some of the language packs to better support unicode. -Version 1.23 (2004-07-31) - Modified the mceSetCSSClass command to address bug #997071. - Added new Hungarian language pack thanks to 2XP. - Added new callback "setupcontent_callback" check the manual for details. - Fixed bug #994506, where empty theme_plugins option generated a 404 error. - Fixed bug #999332, where image properties wasn't removed if the user deleted the image. -Version 1.22 (2004-07-19) - Fixed bug #989846, Image resize bug. - Changed so that style attribute values get converted to lowercase in MSIE. - Changed so the alignment called "middle" is "center" in table properties. - Fixed so visual aids work correctly after using the source editor. - Fixed some issues with anchor links. - Fixed so that javascript: links can be used. - Added width/height options for the advanced source editor. - Fixed bug issue with URL:s containing quotes or single quotes. - Fixed so that document_base_url can point to another domain. -Version 1.21 (2004-07-12) - Added new "theme_plugins" option, check the manuals for details. - Added new "execCommand" plugin extention possibility. - Added new "buttons" config options to the advanced theme. - Added new "mceRemoveControl" command. - Added Spanish language pack thanks to "Alvaro Velasco". - Fixed first click bug. - Fixed so CSS url:s can be absolute. - Updated the FAQ regarding the Cut/Copy/Paste issue. -Version 1.20 (2004-07-05) - Fixed bug issue #983257, JS runtime error when template contains no controls. - Removed cut/copy/paste commands and icons due to security reasons in Mozilla. - Added Czech language pack, thanks goes to "Pavel Novák" for the contribution. - Fixed minor bug regarding empty attributes. - Fixed so the "extended_valid_elements" overrides previous declarations. -Version 1.19 (2004-06-28) - Fixed focus bug that appared on Linux version of Mozilla. - Fixed major bug issues with some Firefox/Firebird versions on Linux. - Fixed minor visual aid bugs on tables. - Fixed minor bugs with table commands. - Fixed scroll issue in HTML source windows on Mozilla/Linux. - Added a compatiblity chart to the manuals. -Version 1.18 (2004-06-20) - Added new option "remove_script_host". - Some minor fixes to the mceInsertContent command. - Fixed some issues with visual aids for tables. - Fixed strange focus bug in MSIE. - Updated some of the documentation. -Version 1.17 (2004-06-16) - Fixed bug, #972666 - Doesn't save edits when id != name. - Added more Italian, user manuals. Thanks goes to "Fabrix Xm". - Added Dutch language pack thanks to "Meint Post". - Modified the MSIE version of mceInsertContent command. -Version 1.16 (2004-06-14) - Added new table dialog and TinyMCE__getInsertTableTemplate template function. - Added auto class import feature and Italian language pack thanks goes to "Lorenzo Pavani". - Added border, alignment, vspace, hspace, width, height fields to the image properties dialog in advanced theme. - Updates advanced theme help pages for Swedish and English. - Fixed some minor issues with the mceSetCSSClass command. - Fixed minor MSIE bug in built in default URL convertor. - Fixed some image alignment issues. - Fixed support for site root script paths like src="/jscripts/tiny_mce.js". - Removed the use of "TinyMCE_advanced_cssClasses" from "advanced" theme. - Modified the default value of "valid_elements" to include table align and class as valid attributes. - Modified the default value of "valid_elements" to set img border attribute to 0 by default instead of by force. - Modified so that popup windows gets centered on screen. -Version 1.15 (2004-06-09) - Added new "advanced" theme, that adds some new functions. - Added new public js functions "getContent, setContent, applyTemplate, openWindow". - Added new custom command "mceSetCSSClass", that sets css class of the selection. - Added new custom command "mceInsertContent", that inserts HTML content. - Added class attributes to some of the elements in the default value of "valid_elements". - Added ability to have theme specific language packs by the js function "importThemeLanguagePack". - Added more documentation to the usage and themes sections. - Added table support, with custom commands and in advanced theme. - Modified the advanced example to include the new advanced theme. - Fixed tooltips for buttons in Mozilla. -Version 1.14 (2004-06-07) - Added new conversion possibility to save callback. - Added some more usage documentation. - Fixed some issues will updateContent function in Mozilla. - Fixed some issues with relative paths. - Fixed small Mozilla issue with visual aids. - Fixed so that the default theme sets image border to 0. - Fixed bug #968079, Removing editor buttons in template can cause errors. -Version 1.13 (2004-06-04) - Fixed critical bug where the editor didn't work at all in MSIE. - Fixed bug where table visual aids didn't work in Mozilla. -Version 1.12 (2004-06-03) - Added updateContent function thanks to "Jürgen Baute" contribution. - Added documentation of the diffrent public javascript functions of tinyMCE. - Fixed bug #965615, Empty editor content returns "
" as value after cleanup. - Fixed bug where Bold and Italic didn't work correctly in Mozilla. -Version 1.11 (2004-06-01) - Added new option "document_base_url", it's used when converting absolute URLs to relative ones. - Added so that align button sets the align attribute of selected images. - Fixed bug when / was passed within query string to the editors page. - Fixed bug #961041, Image attributes are not removed. -Version 1.1 (2004-05-26) - Fixed bug #960112 JavaScript error when opening image window. - Fixed bug #926644 Multiple forms with elements having the same name failed. - Added function so that "specific_textareas" mode handles the "ask" option. - Added new option "focus_alert", to remove annoying focus alert message. -Version 1.09 (2004-05-24) - Added new option "extended_valid_elements", this option adds extra elements to the "valid_elements" list. - Fixed bug #958637, Resized images are displayed in original size - Fixed bug #958942, Bug on realitive_urls (Bug with absolute URLs to insertlink_callback, insertimage_callback callbacks) - Fixed bug #958498, Unable to change Bold and italic text in Mozilla. -Version 1.08 (2004-05-21) - Added new attributes "border, hspace, vspace, width, height, align" to the getInsertImageTemplate theme function. - Added new relative_urls option, this new feature converts all absolute URLs to relative URLs and it's on by default. - Fixed bug #956007, the CSS theme URL:s was allways pointing to the default theme. - Fixed bug where enter/return key produced a error in the insert link popup window form. (This was done in the default template) - Fixed bug #957681, Could not delete text without first adding character bug in Mozilla. -Version 1.07 (2004-05-10) - Added experimental support for option "force_br_newlines" to address bug #922416 and feature request #936270. - Fixed bug with mailto: links. -Version 1.06 (2004-04-15) - Added new German language pack. Thanks goes to "Simon Rupf" for the contribution. - Added new German/Swedish bold/italic language specific icons to both default and simple theme. - Added new Swedish documentation. -Version 1.05 (2004-04-02) - Added new Italian language pack and documentation. Thanks goes to "Fabrix Xm" for the contribution. - Fixed missing "lang_help_desc" definition in UK and SE langpacks. - Added better documentation for the "valid_elements" option and it's format. - Added new "preformatted" option to address feature request #927948. - Added browser checker so that the script don't break on non compatible browsers. - Fixed bug #926639, now the editor instance gets resized if a width/height is specified in %. - Added new simple theme, this theme has only basic functions. -Version 1.04 (2004-03-30) - Fixed bug when insertLink and insertImage function didn't use the url_convertor callback. - Fixed MSIE bug when images was 32x32 on initialization on slow connections. - Fixed bug that made request on images with wrong path, produced some 404 error in webserver logs. - Fixed MSIE bug where users could add images outside of the editor scope. -Version 1.03 (2004-03-26) - Added new "add_form_submit_trigger" this option is default and is added on all document forms within the page. To address bug #923362 - Moved javascript sourcecode file to "jscripts/tiny_mce/tiny_mce_src.js". - Added new obfuscated version of tinymce to reduce size of script. - Added some performance boosting code to the switchClassSticky function. - Removed the "autosave" option, this is no longer needed and is replaced with "add_form_submit_trigger" or triggerSave call. - Fixed undo bug in MSIE. - Removed some unused eventhandlers results in better performance. -Version 1.02 (2004-03-26) - Added new handleNodeChange callback to themes. - Fixed some bugs regarding events and themes function checks. - Fixed bug issue when user focused nodes with keyboard. -Version 1.01 (2004-03-12) - Added some more documentation. - Added new "visual" option to editor. - Fixed bug on empty P elements. - Fixed bug on table width/height. -Version 1.0 (2004-03-11) - Added new "debug" option and fixed some path issues. +Version 2.1.3 (2007-11-27) + Fixed bug with copy paste scrolled to top of content in IE when a specific doctype was used. + Fixed bug with Firefox 3 opening all dialogs twice. + Fixed bug with Firefox 3 now forcing importNode. + Fixed various issues with Opera 9.50 such as broken dialogs, selection blocking etc. +Version 2.1.2 (2007-08-21) + Added fix for polluting third partly libraries that insist on messing with internal objects. + Added new save_on_tinymce_forms option to control when triggerSave is to be called. + Added mceContentBody class to template plugin preview. + Fixed bug where background color didn't work as expected in Opera. + Fixed bug where empty p tags where created on source code edit when forced_root_block was used. + Fixed bug where it was impossible to remove alignment using the align buttons. + Fixed bug where a empty URL was reported as a possible email link in advlink dialog. + Fixed bug where Opera would destroy the body if you pressed return 3 times in the beginning of a list. + Fixed bug where getHTML would return an empty string in IE sometimes. + Fixed bug where tinyMCE.selectedInstance is null after mceRemoveControl. + Fixed bug where remove_script_host option didn't work with media plugin. + Fixed bug with the convert_urls option and anchors in the advlink plugin. + Fixed issue with missing entityDecode statement for new document confirm. + Fixed issue with incorrect font value for Sans-serif. + Fixed problem with some youtube video urls. +Version 2.1.1.1 (2007-05-14) + Fixed bug where dot notaion for some callback options didn't work. + Fixed bug where valid_child_elements option didn't work. + Fixed bug where form trigger wasn't executed when keyboard was used to submit form. +Version 2.1.1 (2007-05-08) + Added new forced_root_block option. Forces inline elements or text nodes into block elements. + Added new fullpage_hide_in_source_view option to fullpage plugin. + Added new youtube/googlevideo support to media plugin. Simply paste a YouTube/Google URL and it will embed it. + Added new cancel button/control to the save plugin. This will undo all changes and execute a optional callback. + Added new remove_trailing_nbsp option that removes &nsbp; entities when paragraphs are filled with contents. + Added new default_document option this enables you to specify a document to be loaded into TinyMCE by default. + Added new detection for external and mail links. It will now ask to add http or mailto prefixes to these. + Cleaned up the source code by removing some obsolete code. + Removed debug option, no longer needed since the devkit does it better. + Removed old IE 5.0 code and reduced the overall code by using smarter prototype add methods. + Removed encoding of apos/' characters since they only time they need to be escaped is when placed in apos based attribs. + Fixed bug where local urls with params like ?param=x was converted into /?param=x if relative_urls was set to true. + Fixed bug where the clsids for wmp in media plugin was handled as RealMedia. + Fixed bug where template plugin was inserting blank_page in FF. + Fixed bug where it was impossible to remove the width/height of images in IE. + Fixed bug where replace with empty contents in the replace dialog didn't work in FF. + Fixed bug where the advanced themes insert image dialog produces a SSL warning if running over HTTPS in IE. + Fixed bug where links directly to a anchor with a editor in IE failed due to the frameset fix. + Fixed bug with numeric entity encoding not converting the first character in string. + Fixed bug with new color picker not closing correctly some times. + Fixed bug where FF was auto generating BR elements at the end of LI elements. + Fixed bug where more colors link failed if the page had a base element in page. + Fixed bug where link dialog produced error when importing CSS classes. + Fixed bug where fullpage plugin inserted extra > at the end of doctype. + Fixed bug where fullpage plugin didn't remove internal mce_src/mce_href items correctly. + Fixed bug where fullpage plugin height was incorrect on Linux. + Fixed bug where media plugin did a incorrect comparation of width/height. + Fixed bug with pressing return/enter inside a paragraph in a non IE browser. + Fixed bug with autoplay option for QT not being enabled by default in the media plugin. + Fixed bug where isDirty state of instances was incorrect if a form submit handler didn't submit the form. + Fixed bug where isDirty state was incorrect if another form was submitted. + Fixed bug with getHTML not returning correct content if run twice on a row in IE. + Fixed bug where setting class to "not set" in the advimage dialog in IE didn't remove the class attribute. + Fixed bug where mceToggleEditor command didn't work with other elements such as DIVs. + Fixed bug where link dialog didn't close if editing a link and having inlinepopups enabled. + Fixed bug where the hidden textarea was updated even if the instance was hidden with mceToggleEditor. + Fixed bug where IE7 was reporting undefined error if the iframe didn't load fast enough over https. + Fixed bug where a space was created after links, it will now just place the cursor after the link. + Fixed bug where false param values in media plugin wasn't stored correctly in IE. + Fixed bug with missing cursor if a instance was totally empty in Gecko. + Fixed so classes can be applied to images using the style select dropdown in FF and Opera. + Fixed so the width/height fields of the advanced themes image dialogs can take more that 3 characters. + Fixed so store/restore selection logic works in Opera and Safari (Nightly). + Fixed so the remove column/row icons are more clear in the table plugin. Contributed by Ferenc Veres. + Fixed so both title and alt attributes of buttons are set. Contributed by BigBrownChunx. + Fixed so if ctrl key is hold down the default browser context menu will appear. + Fixed so the mceResetDesignMode command resets the designmode and useCSS values more correctly. + Fixed so custom namespaces on tags can be used in all browsers like . + Fixed problem with source editor using mono instead of monospace as a font family. + Fixed problem with Opera detection, it now detects Opera even if it spoofs another browser. + Fixed problem where TinyMCE failed to initialized if used together with libraries like Scriptaculous. +Version 2.1.0 (2007-02-13) + Added new template plugin, this supports simple snippets and advanced smart templates. + Added new attributes dialog for xhtmlxtras plugin. Based on contribution by Ryan Demmer. + Added new bbcode plugin, currently only support for PunBB but more might be added in the future. + Added new support for table captions, captions can now be toggled on or off on tables. + Added new more colors link for text/background color menus. + Added new more advanced color picker based on a contribution by Tristan Poet. + Added new functionality to always keep inlinepopups in viewable area contributed by Joshua T. Corbin. + Added new maximize button for inlinepopups contributed by Joshua T. Corbin. + Added new mceToggleEditor command. Toggles visibility of a editor instance on/off. + Added new showInstance/hideInstance callbacks. Used by mceToggleEditor command. + Added support for Ctrl+v handling for non IE browsers when the paste_auto_cleanup_on_paste option was used with the paste plugin. + Fixed issue where focus wasn't returned to editor after using a inlinepopup. Contributed by Andy Skelton. + Fixed issue where fullscreen.htm file used the _dev version of the JavaScript. + Fixed issue with TinyMCE forcing absolute links for document local anchors. Ex: #a got converted into b.htm#a + Fixed issue where initialization failed some times with Drupal. + Fixed issue with rtl languages and the new color picker menus. + Fixed major bug where url convertion logic wasn't executed correctly. + Fixed bug where text color/background color menus wasn't visible in fullscreen mode. + Fixed bug where text color/background color menus wasn't hidden when switching to/from fullscreen mode. + Fixed bug where embed elements was converted into ibed elements. + Fixed bug where contrain proportions in advimage dialog wasn't working. + Fixes bug where an inlinepopup wouldn't close if mcWindows.selectedWindow was nullified contributed by Joshua T. Corbin. + Fixed bug where style dropdown wasn't unique for each editor instance if diffrent content_css files where used. + Fixed bug with the noneditable plugin and IE. Only the last element was uneditable. + Fixed bug with link dialog and Firebug sometimes produced a TINYMCE_UNIQUEURL not defined error. + Fixed so the fix_list_elements option is enabled by default to produce more valid XHTML code. + Fixed so that all more info links on plugins point to the wiki in the about dialog. + Fixed so there is two new button names forecolorpicker and backcolorpicker these can be used to make plain old color picker buttons. + Removed the forcing of a space inside alt attributes by the advimage plugin since the default valid_elements rule defaults to "". +Version 2.0.9 (2007-01-09) + Added support for fullscreen new window mode since the other method was problematic for some. + Added new hide_selects_on_submit option. Enables the possibility to enable/disable disabling of TinyMCE select elements. + Added new removeInstance callback for plugins and also a new remove_instance_callback option. + Added warning if flash and media plugin is used at the same time. Flash plugin should be replaced with media plugin. + Fixed so that fullscreen can be used even if placed in absolute positioned divs with borders etc. + Fixed so that contextmenu on named anchors doesn't display the link/unlink items. + Fixed so that wrap in source editor dialog works in Opera. + Fixed so that single quotes/' is only applied to text nodes not attributes. + Fixed so that the emotions dialog is a little wider to avoid the FF bug with statusbar content alignment. + Fixed issue where TinyMCE wasn't restoring scroll position after fullscreen mode switch. + Fixed some HTML issues in style plugin dialog. Contributed by Michael Keck. + Fixed bug where color selection menu was visible for instances that got removed. + Fixed bug where it wasn't possible to remove block formatting with format select box. + Fixed bug with xhtmlxtras plugin not working when convert_fonts_to_spans option enabled. + Fixed bug where element path elements wasn't entity encoded properly. + Fixed bug where IE 7 produced a invalid attribute exception for some URLs. + Fixed bug where the fix_table_elements option moved tables out of divs and not just P and H1-6 elements. + Fixed bug where drop menu for spellchecker didn't work in IE. + Fixed bug with noneditable plugin. The classes where removed sometimes. + Fixed bug where media plugin failed if single quotes wasn't entity encoded. + Fixed bug where fullscreen mode switched the way bold/italic/underline works in FF. + Fixed bug where style plugin could modify body element of editor instance. + Fixed bugs and issues with searchreplace plugin. + Fixed bug where windows using inlinepopups where invisible when using fullscreen mode. Contributed by Joshua T. Corbin. + Fixed bug where inlinepopups where settings style values without px suffix. Contributed by Joshua T. Corbin. + Fixed bug where externaltoolbar where causing problems in fullscreen mode. Contributed by Joshua T. Corbin. + Fixed alignment problems of buttons inside the search/replace dialog. Contributed by Dongsu Jang. + Optimized event/callback execution by a factor of 10. + Optimized cleanup engine by factor of 2 on some documents. + Optimized shortcut and key event handling logic. +Version 2.0.8 (2006-10-23) + Added class select lists for all xhtmlxtras dialogs, custom values can still be added. + Added missing documentation for devkit, xhtmlxtras, visualchars and nonbreaking plugins. + Added new gecko_spellcheck option, this enables you to disable/enable the FF 2.0 spellchecker. + Fixed so that the media can be modified using the context menu. + Fixed bug where media plugin wasn't working if convert_fonts_to_span option was enabled. + Fixed bug where media plugin produced errors on older IE versions. + Fixed bug where media plugin was breaking when prototype was used on the same page. + Fixed bug where cite and datetime attributes wasn't added to the default valid_elements list for del and ins. + Fixed bug where insert date in xhtmlxtras plugin wasn't placed in language pack. + Fixed bug where new fullscreen mode didn't function in IE with XHTML transitional doctype. + Fixed bug where new text and hilite text previews generated ghost layers in IE. + Fixed bug where fullscreen mode produced an error is the resizing was disabled. + Fixed bug where BR elements wasn't removed from PRE elements when apply_source_formatting was enabled. + Fixed bug where JS errors where thrown in IE if TinyMCE was placed in a frameset. + Fixed bug where devkit reported errors if TinyMCE was places in a frameset. + Fixed bug where auto_focus option didn't work in IE. + Fixed bug where FF leaked memory on some event handlers. + Fixed bug where Fullscreen plugin didn't fill containing elements if they where absolute. + Fixed bug where IE 7 hover out CSS events wasn't triggered correctly due to a IE bug. + Fixed bug where contextmenu plugin showed a incorrect flash menu item if the media plugin was enabled. + Fixed bug where 100% width of TinyMCE instances didn't work correctly. + Fixed issue where the image icon was selected when a user selected a media object. + Fixed issue where select elements where disabled if AJAX or custom submit triggers where used. + Fixed issue where formatblock command could insert invalid elements. + Fixed issue with duplicate default rules for abbr in valid_elements. + Fixed issue where the devkit wasn't the frontmost layer all the time. +Version 2.0.7 (2006-10-17) + Added new visualchars plugin. Enables users to see custom chars like  . + Added new nonbreaking plugin. Enables users to insert   characters. + Added new devkit plugin. Gives TinyMCE developers more information. + Added new xhtmlxtras plugin. Based on work contributed by Andrew Tetlaw. + Added new text and hilite color picker layers to the advanced theme. + Added new media plugin, this handles flash, quicktime, windows media player, real player. + Added new valid_child_elements option. Enables you to remove non valid child nodes from parents. + Added new required attribute flag to the valid_elements option. + Added new popup_css add option. Enables you to add an additional css to all popups. + Added new table_default_border, table_default_cellpadding, table_default_cellspacing options to table plugin. + Added new RegExp support for editor_selector/editor_deselector options. + Added new validation class. Implemented in various dialogs. + Added new createTag and createTagHTML methods to the API. + Added new shortcut keys for h1-h6,p,div,address elements by keys Ctrl+1-9. + Added lightbox, nofollow and tag as possible rel attribute values in the advlink dialog. + Added new table delete control for the table plugin. + Added new updated search/replace dialogs. Contributed by Felix Riesterer. + Added image browser support for style plugin. + Fixed bugs and issues with the lastest Safari Nightly build. + Fixed bugs where data was set outside the current function scopes. + Fixed bug where all plugin and theme callback methods had the "this" reference incorrectly set to window. + Fixed bug where a call to moveToBookmark method resulted in a error is called on a hidden TinyMCE instance. + Fixed bug where script element contents and event attributes where HTML encoded. + Fixed bug where TinyMCE didn't load if a base element and relative URL to TinyMCE where used in MSIE. + Fixed bug where TinyMCE didn't function in MSIE 5.0.1 because call method wasn't available. + Fixed bug where context menu location wasn't correct if the user scrolled down on page. + Fixed bug where nodes wasn't selected correctly in Opera 9. + Fixed bug with setOuterHTML function. This had some impacts on the spellchecker plugin. + Fixed bug where spaces in the body node of the document couldn't be deleted. + Fixed bug where images lost focus in IE if they where placed in a resizable div. + Fixed bug where isDirty state was set after calling user specific onsubmit function. + Fixed bug where editor_selector/editor_deselector matched incorrectly on some names. + Fixed bug where contextmenu was placed in the wrong location in FF. + Fixed bug where images had a href attribute displayed in it's element path title. + Fixed bug where forms_utils.js function where using a relative URL to the current theme. + Fixed bug where cursor was placed at a incorrect location after mceInsertContent call in Gecko. + Fixed bug where selection/caret is moved to top of document on a cleanup in Gecko. + Fixed bug where button elements was forced closed. + Fixed bug where comma separated content_css option wasn't working with the preview plugin. + Fixed bug where DIV element named doc caused errors in IE. + Fixed bug where the selectedInstance wasn't updated correctly if the user clicked outside of the body of a editor area. + Fixed bug where strong and em wasn't handled correctly in Gecko browsers if the user added them by using the source editor. + Fixed bug where script tag was removed if it was the first element in IE and convert_fonts_to_span option was enabled. + Fixed bug when converting empty divs to editor instances didn't work in IE. + Fixed bug where Gecko produces a BR tag at the end of a single line of content. + Fixed bug where the entity_encoding numeric wasn't converting   to  . + Fixed bug where fullpage plugin produced an error if the first thing was to edit the header data. + Fixed bug where background attribute of body element in fullpage plugin produced error in IE. + Fixed bug where Opera was reporting errors if the width/height of a editor area was set to a percent value. + Fixed bug where JS error was produced in IE if you tried to insert a row/column. + Fixed bug where IE was causing flicker if the browser cache was disabled and the button_tile_map option is enabled. + Fixed bug where onchange callback wasn't executed on a mceInsertContent command. + Fixed bug where custom classes on anchor elements was removed. + Fixed bug where force_br_newlines options produced errors in Opera. + Fixed bugs with table selection not beeing restored correctly when actions where performed. + Fixed issue where a link wasn't removed on unlink in gecko if only the caret was placed within the link. + Fixed so that the valid attribute values for the valid_elements rules are case insensitive. + Fixed so that the fullscreen plugin uses the current document area instead of a new window/popup. + Fixed so that the cleanup callback is executed on themes. + Fixed so that document local anchors isn't forced absolute. + Fixed so that the initialization is even faster both editor instanced and dialogs. + Fixed so that the force_p_newlines option works on Opera & Safari. This is enabled by default. + Fixed so that empty td cells are padded with   by default. This can be changed with the extended_valid_elements option. + Fixed so that the theme_advanced_disable option works with RowLayout. + Fixed so that string serialization is alot faster in all browsers. Makes the cleanup logic a lot faster. + Fixed issue with language variable in replace dialog in the searchreplace plugin. + Fixed various CSS compatiblity issues with MSIE 7 beta 3. + Renamed some image names in style and layer plugins for compatiblity with Drupal. + Fixed some HTML and CSS issues with the style properties plugin. + Fixed so the addMCEControl method returns the new editor instance id. + Fixed translation issues with the style properties dialog, patch contributed by TOMASIAN. + Removed the need for adding language codes to plugins. Since the online service now merges old ones with en. +Version 2.0.6.1 (2006-05-04) + Fixed issue where the layer and style plugins couldn't be added in incorrect order. + Fixed issue with Firefox nl not beeing defined in triggerSave correctly. +Version 2.0.6 (2006-05-03) + Added new theme_advanced_source_editor_wrap option, this gives the possibility to force word wrapping. + Added new support for using div,blockquote,dt,dd,code,samp as a items in the theme_advanced_blockformats option. + Added new strict_loading_mode option, this switches the loading method from document.write to DOM. + Added new hidden_tab_class, display_tab_class options for resolving the MSIE image dimension bug. + Added new absolute layer support, this was added to a new plugin called layer. + Added new CSS style properties support, this was as a plugin called style. + Fixed bug where TinyMCE was reporting a warning when inserting a image while running on HTTPS. + Fixed bug where pressing the browser back button after submit removed empty paragraphs in MSIE. + Fixed bug where links the the same page as the editor page was converted into a /. + Fixed bug where the getSelectedHTML method was returning undefined when selecting controls in MSIE. + Fixed bug with unterminated string literal errors where reported in some browsers. + Fixed bug where src and href where converted into xsrc and xhref in text. + Fixed bug where two characters where removed by backspace sometimes in Gecko. + Fixed bug where class drop list wasn't visible in some of the table dialogs. + Fixed bug where br elements where incorrectly removed within paragraphs on backspace. + Fixed bug where drag/drop operations failed in MSIE when editor height was set to a % value. + Fixed bug where width/height was lost on images if they where placed in hidden tabs in MSIE. + Fixed bugs with CSS auto import parsing, contributed by Scott Eade. + Fixed compatiblity issues with MSIE 5.0. Some RegExps needed to be rewritten. + Fixed issue that made it impossible to remove the entity code/name for '. + Fixed issue with odd

elements not beeing handled properly. + Fixed issue where TinyMCE couldn't be loaded in a XML document. + Fixed issue with contextmenu beeing placed outside of visible area on Gecko browsers. + Fixed issue whith area tag not being closed. +Version 2.0.5.1 (2006-03-22) + Fixed bug where emtpy paragraphs sometimes got removed in MSIE. + Fixed bug where autosave plugin was running even in fullscreen mode. + Fixed bug where browse and color image button urls in form_utils.js where hardcoded. +Version 2.0.5 (2006-03-21) + Added API docs for the TinyMCE_Popup class that is used by all dialogs in TinyMCE. + Added new TinyMCE_Layer class to the core of TinyMCE plugins will be using this later on. + Added new loadPlugin function, use this to load external plugins. + Added instructions on how to contribute language packs. + Added new support for multiple content_css files, based on contribution by Man-Chicken. + Added new table_cell_limit, table_row_limit, table_col_limit options, based on contribution by Man-Chicken. + Added new fix_list_elements option, if this is set to true UL/OL lists will be forced XHTML valid on cleanup. + Added new fix_table_elements, if this is set to true tables will be moved outside paragraphs. + Fixed so input and button as closed elements in the cleanup logic. + Fixed so the mceButtonSelected is more visible with darker background in the editor_ui.css. + Fixed issue where charmap.js was calling switchClass that's reserved for buttons. + Fixed issue where the directionality option wasn't used in the preview plugin. + Fixed issues with nestled bullet lists pasted from Word 2003. + Fixed bug where button wasn't selected correctly in MSIE due to a CSS issue. + Fixed bug where ask mode wasn't working on DIV elements in Firefox and Opera. + Fixed bug where the mceAddFrameControl command wasn't working correctly. + Fixed bug where language packs wasn't imported correctly in plugins loaded externaly. + Fixed bug where focusing external input elements was visible in element path under MSIE. + Fixed bug where fullscreen plugin wasn't opening the window fullscreen in Firefox. + Fixed bug where style select dropdown wasn't working in Firefox when used in fullscreen mode. + Fixed bug where the fix_content_duplication wasn't working anymore. + Fixed bug where MSIE sometimes generated empty paragraphs. + Fixed bug where MSIE sometimes generated tags like . + Fixed bug where the directionality option produced a error for the color picker dialog. + Fixed bug where configured callback options wasn't executed correctly in fullscreen mode. + Fixed bug where tags got generated as <*> some times in Gecko. + Fixed bug where the cursor was placed within a the anchor when inserting a new one in Gecko. + Fixed bug where convert_fonts_to_span option wasn't working correctly with new cleanup engine. + Fixed various language pack issues such as invalid characters. + Fixed naming conflict with zoom plugin and the format select box. + Fixed so that the initialization of the editor is slightly faster. + Removed all language packs except the english one from the core package. [BREAKS COMPATIBLITY] +Version 2.0.4 (2006-02-24) + Fixed bug where fullscreen plugin was using the tinymce_dev.js script. + Fixed bug where events where having a return true; statement infront of them. + Fixed bug where theme_advanced_toolbar_location option wasn't working. + Fixed bug where select lists wasn't working if you touched them with the tab key. + Fixed bug where auto reset design mode wasn't working correctly. + Fixed bug where null was inserted in paste button action in MSIE. + Fixed bug where _template plugin had a , instead of . character on e.type. + Fixed bug where src, href where replaced to xsrc and xhref in comments. + Fixed bug where paste_cleanup_on_paste option wasn't working correctly with the paste plugin. + Fixed bug where MSIE was reporting an error when TinyMCE was placed in a frame and not focused. + Fixed bug where clipboard_msg wasn't entity decoded corectly before displaying it in confirm box. + Fixed bug where mceRemoveControl wasn't working correctly on DIV elements. + Fixed bug where mceInsertContent/mceReplaceContent produced error when a empty string was inserted. + Fixed so the default valid_elements option is more XHTML valid. + Fixed issue where style formatting wasn't handled when pasting content from Word. + Fixed issue where ' characters wasn't entity encoded, they are now encoded into ' and not '. + Fixed issue with empty paragraphs, these are now filled with &nsbp; if they are empty. + Added documentation on how the # prefix can be used in the valid_elements option. + Added new options paste_remove_styles and paste_remove_spans to paste plugin. + Added possibility to have empty default attributes values. +Version 2.0.3 (2006-02-13) + Added missing buttons to button reference page in documentation. + Added dt,dl,dd elements to default_valid elements config value. + Added new support for self registrering plugins. + Added new callback for themes and plugins handleEvent and the handle_event_callback option. + Added new execcommand_callback option, this enables you to add custom execcommand logic on page level. + Added new custom_shortcuts option, this enables you to disable plugin/theme specific keyboard shortcuts. + Added new addShortcut to TinyMCE_Control, this enables plugin to register custom keyboard shortcuts. + Added new getButtonHTML function to TinyMCE core, this function makes it easier for plugins/themes to make buttons. + Added more documentation on how to write plugins and updated the _template plugin. + Added more documentation on how to write custom themes. + Fixed so the default window size of the source editor is larger in the advanced theme. + Fixed so all internal plugins use the new auto registration and separation logic. + Fixed so all internal themes use the new auto registration and separation logic. + Fixed so the Safari warning is switched off by default. + Fixed so cursor position isn't moved when performing a cleanup. + Fixed so cursor position is correct when performing undo/redo actions. + Fixed so all themes/plugins now use a:hover to produce the mouse over button effect. + Fixed so it uses the DOMContentLoaded and onreadystatechange instead of onload. + Fixed so the simple theme also supports the button_tile_map option. + Fixed so the selection/cursor is moved to the beginning of area on search/replace. + Fixed callback handling to reduce logic, improve performance and flexibility. + Fixed documentarion error for the paste plugin, contributed by Jochen Metzger. + Fixed bug that made the cleanup process to hang MSIE on specific content. + Fixed bug with absolute to relative URL convertion logic if the absolute URL didn't have a path. + Fixed bug where about.htm in advanced theme refered to a non existing css file. + Fixed bug with defParam and the event_elements option. + Fixed bug where fullscreen plugin wasn't correctly setup with editor contents. + Fixed bug where paste/drop converted relative URLs incorrectly in MSIE. + Fixed bug with inlinepopups not restoring selection on close window in MSIE. + Fixed bug where selection was lost when a new column/row was inserted in a table running in Gecko. + Fixed bug where save plugin wasn't working in fullscreen mode. + Fixed bug where fullscreen plugin wasn't working in Opera. + Fixed bug where editor resizing in advanced theme wasn't working in Opera. + Fixed bug where cursor position was placed at the end of instance on word paste. + Fixed bug where a tinyMCE is undefined error was reported in Firefox. + Fixed compatiblity issues with new cleanup plugin and the prototype.js library. + Renamed the mceItemEditable/mceItemNonEditable to mceEditable/mceNonEditable. + Renamed the TinyMCEControl class to TinyMCE_Control, TinyMCE_ is the valid class prefix. + Removed the getInsertLinkTemplate and getInsertImageTemplate functions from themes and from API. + Removed insertImage and insertLink from TinyMCE core, they are moved to the advanced theme. + Removed opacity workaround made for Opera Preview 1, download Opera Preview 2 instead. + Removed search backward function from replace dialog since it could result in a infinite loop. + Marked insertlink_callback, insertimage_callback options as deprecated these can be replaced with execcommand_callback. + Moved selection specific methods to a new class. For example inst.selectNode is now inst.selection.selectNode. + Updated German language pack, contributed by Ace Man. +Version 2.0.2 (2006-01-24) + Added updated Danish language pack contributed by Jan Moelgaard, John Dalsgaard and Bo Frederiksen. + Added updated Czech language pack contributed by michi aka mishal. + Added new Slovenian language pack contributed by Domen Kosir. + Added new Turkish language pack contributed by Engin Dumlu. + Added new save_onsavecallback option to the save plugin, this function is called on save. + Added new save_enablewhendirty option to the save plugin, this will disable the button until changes are made. + Added new onpageload callback event, this event is called when the page is loaded but before instances are made. + Added new accessibility_focus option, this enables you to control if buttons should be tab focusable or not. + Added new greek alpha character to charmap dialog. + Added new Scaron,scaron,Alpha entities to the default value of the entities option thanks to Kevin Rodgers. + Added new contextmenu items link.unlink,advhr contributed by Speednet. + Added new paste_insert_word_content_callback option for the paste plugin. + Added new cleanup plugin, this will replace the one inside the core ones it's considered stable. + Added cancel button to color picker contributed by Speednet. + Fixed various documentation errors and typos, modified the FAQ. + Fixed issue where the first handleNodeChange call was done to early in initialization. + Fixed issue with Dutch language pack for advlink plugin. + Fixed issue where dialogs was to short when dialog_type option was set to modal in MSIE. + Fixed bug where insert image under Gecko resulted in a broken image if it was inserted a the beginning of a element. + Fixed bug where mceVisualAid class wasn't removed from TH elements on save. + Fixed bug where the href attribute area elements gets converted to xhref. + Fixed bug with document relative anchors being forced absolute even when the convert_urls was set to false. + Fixed bug where some plugins produced &gr; intead of > entities on string encoding. + Fixed bug where some characters in charmap dialog was double encoded in Firefox/Gecko. + Fixed bug with XML core entities wasn't encoded when using raw or numeric value in entity_encoding option. + Fixed bug where classes was removed from table,td,th elements when the verify_css_classes option was enabled. + Fixed bug where elements was getting a visual aid class if a default or force class attribute value rule was used. + Fixed bug where strong/em rules didn't handle the -/+ prefixes correctly under Firefox/Mozilla. + Fixed bug where non textarea elements didn't work when submiting content. + Fixed bug where a access denied error was produced when using contextmenu together with modal dialogs under MSIE. + Fixed bug where fullscreen plugin didn't call custom cleanup functions when passing content back and forth. + Fixed issue where default rule for font tags didn't have a + prefix in valid_elements. + Fixed issue with CSS where "arrow" was used instead of "default" for cursor replacement. + Fixed issue where the replace button replaced the current selection first time it was used. + Fixed issue with missing title for the advhr dialog. + Fixed issue with div not beeing usable in the theme_advanced_blockformats option. + Fixed issue in with translation in the German language pack. + Fixed so the word wrap toggle for source view functions in Firefox/Mozilla. + Fixed so title attribute of emotion images gets inserted aswell as alt. + Fixed so the insert return on popups is checked by default in advlink. + Fixed so url gets filled when empty if a user selects a popup url. + Fixed so some init settings gets trimmed from whitespace. + Fixed so charmap closes when a char is selected since most of the time users only need one char. + Fixed so the link and image dialogs of advanced theme are styled with the new 2.x layout. + Fixed accessibility issuew with the link, image and advhr dialogs. + Fixed so the advhr dialog uses the new 2.x layout. + Fixed XHTML compliance for Preview plugin contributed by Bo Frederiksen. + Fixed entity decoding problem with insert button of the advhr plugin contributed by Bo Frederiksen. +Version 2.0.1 (2005-12-02) + Fixed critical bug in some MSIE versions when submiting content. +Version 2.0 (2005-12-01) + Added new paste_replace_list option to the paste plugin, this replaces some MS specific characters into normal characters. + Added new convert_urls option, this was required to address some issues with Firefox 1.5. + Added new paste_create_linebreaks option to paste plugin contributed by Kevin Rodgers. + Added new advimage_update_dimensions_onchange option to advimage plugin, this is enabled by default. + Added new table_inline_editing option, this enables you to toggle the inline table editing controls in FF 1.5. + Added new object_resizing option, this enables you to toggle the resizing controls of table and images in FF 1.5. + Added updated simplified Chinese language pack contributed by Wang Yang (tom_cat). + Added updated Dutch language pack contributed by Mark van der Sanden. + Added updated French language pack contributed by Normand Lamoureux. + Added updated Polish language pack contributed by Wooya. + Added updated Brazilian Portuguese language pack contributed by Marcio Barbosa. + Added new Traditional Chinese language pack contributed by Twapweb. + Added new Slovak language pack contributed by Vladimir VASIL. + Added new Norwegian Nynorsk pack contributed by Knut B. Jacobsen. + Fixed bug where getting init settings in handleNodeChange callback wasn't working correctly when multiple configs where used. + Fixed bug with urls being converted into incorrect values in Firefox 1.5. + Fixed bug where editor and cursor was flickering when TinyMCE was placed in a hidden div in Firefox 1.5. + Fixed bug with missing parenthesis in a MSIE setInnerHTML call. + Fixed bug where MSIE was producing a "Invalid source HTML for this operation" javascript error when placed in P tags. + Fixed bug where some styles with RGB values was parsed/serialized incorrectly in Firefox/Mozilla. + Fixed bug where reset form action didn't reset all editor instances to their original values. + Fixed bug where a javascript exception whas thrown when the editor was resized to a negative value in MSIE. + Fixed bug where inserting custom characters or date/time within a font element removed formatting in Firefox/Mozilla. + Fixed bug where image urls was inserted incorrectly if relative_urls was set to false due to issues with inserthtml command. + Fixed bug where encoding option wasn't working correctly becurse the entities list wasn't initialized. + Fixed bug where MSIE removed the first comment from the HTML of a mceInsertContent call. + Fixed bug where update all cells in table/row wasn't working on some tables with lots of whitespace. + Fixed bug with td background attribute when inline_styles option was set to true in MSIE. + Fixed bug where forms submitted with accesskey or return produced a JS error in Firefox 1.5. + Fixed bug with URL convertion logic not converting paths correctly to relative/absolute URLs. + Fixed bug where inline_styles option and flash moviews produced strange results. + Fixed bug where tabs and links where opened in a new window in MSIE when dialog_type option was set to modal. + Fixed bug where dialogs didn't open in Opera if the dialog_type option was set to modal. + Fixed bug where the table plugin wasn't working with the inlinepopups plugin while running in MSIE. + Fixed bug where embed elements whasn't parsed correctly by the flash plugin if no object tag was surrounding it. + Fixed bug where contents wasn't stored/restored when using the browser back button in Firefox 1.5. + Fixed issue where the ghost resize handles in Firefox/Mozilla was appearing when resizing images/tables. + Fixed issue with constrain proportions feature in advimage plugin, when trying to reset the values to blank. + Fixed issue where inlinepopups option couldn't be enabled/disabled on individual instances. + Fixed issue where TDs was created instead of TH elements when inserting a column on a row with TH elements. + Fixed issue with editor_selector/editor_deselector options couldn't be used when mode was specific_textareas. + Fixed issue where font selection produced null face attributes in MSIE. + Fixed issue where document local anchors where prefixed with the document name. + Fixed issue where link/image dialogs of the advanced theme didn't open using inlinepopups when enabled. + Fixed so the CSS select list gets hidden in the link dialog in advanced theme if there isn't any CSS classes. + Fixed so that the onsubmit handler of a form was processed correctly when posting using the save plugin. + Fixed so TinyMCE makes some very simple cleanups even if cleanup option is set to false. + Fixed so alignment button gifs have the justify prefix, such as justifyleft, for compatiblity with Drupal. + Fixed compatiblity issues with the .NET version of TinyMCE Compressor. + Fixed performance issue with fullscreen plugin, it switches back to normal view a lot faster now. + Fixed issues with mceSelectList class in advanced theme and compressed it some. + Renamed the Norwegian language pack from no to nb since it's "Norwegian Bokmål". +Version 2.0RC4 (2005-10-30) + Fixed bug with font face/size/color wasn't working correctly in Firefox 1.5b1. + Fixed bug where all actions where dispatching the onbeforeunload event. + Fixed bug where buttons in fullscreen mode wasn't working in MSIE. + Fixed bug where style removal with drop list wasn't working correctly. + Fixed bug where element path list or return key some times didn't scroll to the right location. + Fixed bug where return key in Firefox/Mozilla some times produced a error. + Fixed bug where MSIE was presenting a alert box about insecure items when running TinyMCE over HTTPS. + Fixed bug where TR/TD elements width/height attributes produced a JS error on cleanup. + Fixed bug where Polish Ctrl+Alt+Z executed the undo function instead of inserting national character. + Fixed bug where editor couldn't be initialized if no rows or height where specified on a textarea. + Fixed bug where comments sometimes got removed from HTML code. + Fixed bug with advimage not inserting onmouseover attribute correctly. + Fixed bug where anchors with child nodes messed up list elements. + Fixed bug where apply_source_formatting option wasn't working when used together with remove_linebreaks. + Fixed bug where empty paragraphs where invisible in Firefox. These are now padded with a  . + Fixed bug where tables without a border attribute didn't get visual aid borders until cleanup. + Fixed bug with URL convertion, absolute URLs to the same domain without trailing slash produced incorrect results. + Fixed bug with URL convertion of urls like this somedir/?id=3 produced somedir?id=3. + Fixed bug with weird cursor movement when pressing return/enter in a list when running on Firefox/Mozilla. + Fixed bug where contents where deleted sometimes when user pressed return/enter running on Firefox/Mozilla. + Fixed bug where style elements what generated empty in MSIE, but using style tags is not recommended. + Fixed bug with not beeing able to have absolute urls in the external_link_list_url and simmilar. + Fixed bug with bold, italic, underline, strikethrough buttons not beeing selected correctly. + Fixed bug with font size and font face select list not beeing selected correctly. + Fixed bug where document anchors was incorrectly converted if document_base_url was defined. + Fixed bug where changing border width/color of a table didn't update CSS styles correcty. + Fixed bug where emotions plugin didn't insert a new smiley the second time you insert one. + Fixed bug with blockquote command produced javascript error when used on lists in MSIE. + Fixed bug with cleanup converting flash elements to images. + Fixed bug where class wasn't selected in drop list of advlink/advimage dialogs when editing links/images. + Fixed bug where cellpadding/cellspacing/scope wasn't correctly handled in MSIE 5.5SP2. + Fixed bug where hreflang,charset and type attributes wasn't returned correctly in MSIE 5.5SP2. + Fixed bug with broken image URLs when user clicked the cleanup button in Firefox 1.5b2. + Fixed some compatiblity issues with call to createStyleSheet and event.target setup. + Fixed more compatiblity issues with scripts extending core JS logic such as the Array class. + Fixed issue where paragraphs wasn't generated if user pressed returned inside a H1-H6 running on Firefox/Mozilla. + Fixed issue with context menu plugin messing up some onclick events. + Fixed issue with missing HTML in advanced theme. + Fixed issue with Finnish language pack, it wasn't working at all. + Fixed issue where button control styles needed to be overriden in default editor_ui.css. + Fixed issue with a broken link in the documentation to the theme_advanced_resize_horizontal option. + Fixed issue with missing var declaration of a buttons variable in the advanced theme. + Fixed issue with missing block elements in block element regexp. + Fixed issue where advhr plugin didn't produce valid attribute for noshade. + Fixed issue with misslabeled option, plaintext_create_paragraphs is renamed to paste_create_paragraphs. + Fixed issue where remove_script_host and relative_urls where treated as true if they where specified as strings. + Fixed issue with charmap, made it easier to select/click characters. + Fixed issue with search/replace dialogs not being refocused in MSIE. + Fixed issues with dialogs being to small if large class names where added. Made sure they can grow. + Fixed issues with some dialogs being to small in NS 7.2 and not working correctly in NS 7.1. + Fixed missing HEAD element in fullscreen.htm file, contributed by monkeybrain. + Fixed some HTML issues with the advhr plugin, contributed by monkeybrain. + Fixed some small issues with the span element rule of the XHTML rule set in valid_elements documentation. + Added new Opera 9 support, most of the functions is working in the prerelease of Opera 9. + Added new paste_strip_class_attributes option to paste plugin, contributed by monkeybrain. + Added new merge_styles_invalid_parents option, allows users to control what elements gets styles. + Added new theme_advanced_resizing_use_cookie option, this enables you to disable the cookie used by resize. + Added new function that converts all font elements to span elements when the editor loads. + Added new force_hex_style_colors option, enables you to control the color format of CSS styles. + Added new convert_fonts_to_spans option, this option converts fonts to span elements. + Added new font_size_classes option, this option is used together with convert_fonts_to_spans. + Added new doctype option, enables you to control the internal doctype declaration. + Added new event_elements option contributed by happy_noodle_boy. + Added new path tooltips for font, span and flash elements such as color, font-family, src and so forth. + Added trim_span_elements back again, this option removes unneeded span elements. + Added documentation of the apply_source_formatting option. + Added updated Danish language pack, contributed by Jan Moelgaard. + Added updated Hebrew language pack, contributed by Liron Newman. + Added updated Russian language pack, contributed by Vladimir Vitkovsky. + Added updated Finnish language pack, contributed by Tuomo Aura. + Added updated Spanish language pack, contributed by Adolfo Sanz De Diego. + Added updated Italian language pack, contributed by grueff. + Added updated Icelandic language pack, contributed by Johannes Birgir Jensson. + Removed option convert_fonts_to_styles due to various compatiblity issues. Use convert_fonts_to_spans instead. +Version 2.0RC3 (2005-09-26) + Fixed bug where colorpicker in table plugin wasn't working in Mozilla/Firefox. + Fixed bug where closed anchors produced strange results. Anchors are now forced open. + Fixed bug where the font style/color functions wasn't producing correct results. + Fixed bug where buttons not working if a target was defined in head element. + Fixed bug where paragraphs wasn't generated when pressing return/enter in a floating div. + Fixed bug where anchor contents was getting lost, contents of anchors are now placed behind them. + Fixed bug where style info such font size/face/color was removing parent elements such as LI. + Fixed bug where %I wasn't inserting correct hour in the insertdatetime plugin. + Fixed bug where MSIE sometimes doesn't output attributes correctly, contributed by Luke Bennett. + Fixed bug where images was lost if the user pressed return after a image in a TD on FF. + Fixed bug where empty non block elements where produced when hitting return in Gecko browsers. + Fixed bug where it was impossible to update tables. + Fixed various bugs and issues with removeformatting function it will now remove classes and styles. + Fixed compatiblity issues with prototype.js and other scripts that modifies the Object.prototype. + Fixed issue where a unnecessary dir and style attribute was generated on the blockquote command in MSIE. + Fixed issue with access denied error if page contained iframes with external URLs. + Fixed issue where the plugin links in about dialog was linking to blank. + Fixed issue with useCSS command not working in Deer park beta. + Fixed XHTML table compatiblity issues. Placed bordercolor and height in styles instead of attributes. + Fixed issue with tables getting empty summary attribute in MSIE. + Fixes so the insert custom character dialog is accessible through keyboard. + Removed _self as the default target for links inorder to produce more XHTML compliant code. + Removed bordercolor field from table row properties dialog since this is not a valid attribute. + Added accessibility warnings to image and table plugin. These can be disabled by the accessibility_warnings option. + Added updated Danish language pack, contributed by Jan Moelgaard. + Added updated Hebrew language pack, contributed by Liron Newman. + Added updated Norwegian language pack, contributed by Knut B. Jacobsen. + Added updated German language pack, contributed by salzbermat. +Version 2.0RC2 (2005-09-12) + Fixed bug with plugin tab in about dialog not working in MSIE 5.01. + Fixed bug issues with paste and noneditable plugin in MSIE 5.01. + Fixed bug where dialogs in the search/replace plugin was to small. + Fixed bug where about dialog sometimes produced unknown runtime error in MSIE. + Fixed bug where é and í characters was converted the wrong entities. + Fixed bug where it was possible to click on the disabled link icon when nothing was selected. + Fixed bug where autosave plugin wasn't working with JS submit calls or the save plugin. + Fixed bug where file/image browser wasn't working with the default link/image dialogs. + Fixed bug where style attributes where parsed/serialized incorrectly when using - and #. + Fixed bug where inline popups plugin wasn't working when loading the compressed JS files. + Fixed bug with contextmenu showing theme image dialog instead of advimage dialog. + Fixed bug with flash plugin trying to include a empty external list JS file. + Fixed bug with some fields beeing to short if the file browser was disabled. + Fixed bug where contextmenu wasn't recognizing flash elements. + Fixed bug where border styles on images and tables was removed. + Fixed accessibility issue with colorpicker, added titles and keyboard access. + Fixed accessibility issue with toolbar buttons, all toolbar buttons are now wrapped in links. + Fixed accessibility issue width browse buttons, these are now wrapped in links. + Fixed accessibility issue with select lists, all select lists has now keyboard access. + Fixed accessibility issues with missing labels in various dialogs. + Fixed accessibility issue with the emotions plugin, this one now inserts a alt text for smileys. + Fixed accessibility issue with the locationbar, menubar and so fort in advlink plugin. + Fixed accessibility issue with TOC in english help pages. This is not wrapped in a acronym element. + Fixed issue with the directionality plugin. It will now get disabled on invalid elements. + Fixed issue where popups was the wrong size a new resizeToInnerSize function resizes popups to the correct size. + Fixed so empty
elements gets removed since they serve no purpose. + Added support for TinyMCE grabbing text from input elements if specified in exact mode. + Added language specific relative popup width/heights to all build in dialogs. + Added missing browser for popup url in advlink plugin. + Added missing delete table icon to context menu. + Added so it's possible to see the target value in the target select dropdown in the advlink plugin. + Updated the documentation to include information about the new language packs. + Updated the swedish language pack. +Version 2.0RC1 (2005-09-06) + Renamed CSS classes mcePathTop,mcePathBottom,mcePath to mceStatusbarTop,mceStatusbarBottom,mceStatusbar. [BREAKS COMPATIBLITY]. + Moved all theme CSS files to a css directory within the theme. [BREAKS COMPATIBLITY]. + Removed the default theme since the advanced theme can be configured to be as the default theme. [BREAKS COMPATIBLITY]. + Removed closeDialog method from TinyMCE use tinyMCEPopup.close(); instead of tinyMCE.closeDialog();. [BREAKS COMPATIBLITY]. + Removed the auto_cleanup_word option, since the paste plugin now handles this better than the build in function. + Added improved undo/redo and onchange handling. All modifications are now undo/redo:able. + Added new mceBeginUndoLevel/mceEndUndoLevel commands. Used to begin/end a undo/redo:able action. + Added new link dialog with tab interface and lots of new fields and options. + Added new image dialog with tab interface and lots of new fields and options. + Added new about dialog with tab interface, this one replaces the old help dialog. + Added new table dialogs with tab interface and lots of new fileds and options. + Added new utils directory in tiny_mce script dir. This directory contains various utility classes. + Added new TinyMCEPopup class to tiny_mce_popup.js, used for common popup logic. + Added new inlinepopups plugin, this makes the popup windows to open as DHTML windows (divs). + Added new version info constants to TinyMCE (majorVersion, minorVersion, releaseDate). + Added new resizing functionality to the advanced theme, the editor instance can now be resized. + Added new theme_advanced_resizing option, enables/disables the new resizing functionality. + Added new theme_advanced_resize_horizontal option, enables/disables the horizontal resizing. + Added new theme_advanced_path option, enables/disables the element path functionality in statusbar. + Added new compressed icons about 1/3 of the original size, contributed by Jozef. + Added new center support of images, images are now wrapped in a div with alignment. + Added new - character to the valid_elements/extended_valid_elements options this feature removes empty elements. + Added new setup_content_dom and submit_content types to custom cleanup callbacks. + Added new inst parameter to custom cleanup callbacks, this is a reference to the editor instance. + Added new mceColorPicker command to the advanced theme, enables the possibility invoke the color picker. + Added new safari_warning option, this enables you to disable the alert that gets presented when running on Safari. + Added new editor_selector/editor_deselector options that enables you to specify a include/exclude from convertion class. + Added new tinyMCE.addToLang function to reduce the overall size of the language files. + Added new auto save plugin. This plugin will confirm that the user want's the leave any modifications unsaved. + Added new noneditable plugin. This plugin enables you to disable/enable the possibility to edit various elements. + Added new word example, to better illustrate how TinyMCE is to be used when pasting content from Office/Word. + Added missing entities eactute,iacute,oacute,uacute,Aacute,Eacute,Iacute,Oacute,Uacute,Yacute,Aacute. + Added updated Hebrew language pack contributed by Liron Newman. + Added visual aid icon for invisible anchors elements. + Added new insert table and delete table commands to context menu. + Added new convert_fonts_to_styles option, this option controls if font or span will be used when using font size, color etc. + Renamed the theme_advanced_path_location to theme_advanced_statusbar_location. + Moved all popup javascript logic into external .js files, inorder to separate presentation and logic. + Removed the automatic resizing of popups. Better to use relative window sizes for each language when opening a dialog. + Fixed issue where the character map dialog lost focus when inserting a char. + Fixed issue where the attribute values where not XML encoded correctly. For example: & will be &. + Fixed performance issue with the table plugin, it was executing logic even when it was inactive. + Fixed so the directionality gets inherited by all popups/dialogs. + Fixed so the CSS file content_css loads after the theme content CSS, user specific CSS extends theme CSS. + Fixed so more than 3 toolbar rows may be added in when using the default simple layout. + Fixed so the insertdatetime plugin polls it's default date formats from the language pack. + Fixes so auto_reset_designmode is enabled by default, to avoid the question about the editor not working in tabs. + Fixed better inline styles support for images and tables. + Fixed duplicate IDs on advanced theme with external toolbar, contributed by Miguel Fortea. + Fixed issue with remove formatting under MSIE, if all contents of a element is selected the element is also selected. + Fixed issue with visual aids not being removed from content when cleanup is disabled. But it's NOT recommended to disable the cleanup. + Fixed bug where return/enter key sometimes produced empty elements in MSIE. + Fixed bug where link list was generated twice in the advanced themes link dialog. + Fixed bug issue where embed was converted in to ibed due to some invalid regexps. + Fixed bug where summary attribute on tables got lost in MSIE. + Fixed bug where the editor scrolled to the top of content when the pasting text with the paste plugin. + Fixed bug where external toolbar wasn't translated, contributed by Miguel Fortea. + Fixed bug where the editor had a incorrect height, contributed by Miguel Fortea. + Fixed bug where visual aid class where presented in element path. + Fixed bug where HR elements with a id set to "null" produced runtime error in MSIE. + Fixed bug where isDirty wasn't working due to the same function name and variable name. + Fixed bug where events like onclick wasn't removed/stored correctly in old MSIE. +Version 1.45 (2005-06-23) + Fixed so the newdocument button shows again, was removed by accident in RC2. + Fixed so styles drop down in link dialog gets hidden if no classes are defined. + Fixed bug where Paste command in context menu wasn't working. + Fixed bug issue with not having a base href element in preview plugin. + Fixed bug where input elements produced double type/value attributes in MSIE. + Fixed so the check for empty contents in cleanup handled uppercase elements. + Added a alert box is a popup is blocked by a popup blocker. + Added updated dutch language pack, contributed by Fred Stuurman. + Added a confirm dialog for the newdocument action. + Added mceContentBody class to the iframe document body. + Added allowtransparency attribute to iframe. + Added fix where some HTML content produced runtime error in MSIE. + Added a lot better Safari support, but many things are still very buggy. + Added flash_wmode, flash_quality and flash_menu options for the flash plugin. + Added new dialog_type option, this enables you to switch back to modal dialogs in MSIE. + Updated Canadian French table language pack contributed by Virtuelcom. + Fixed some minor issues with Simplified Chinese language pack. + Re-added Tahoma font to font drop list, was removed in previous version. +Version 1.45 RC2 (2005-06-15) + Fixed bug where paste_use_dialog option for the paste plugin wasn't working correctly. + Fixed bug issue with setContent not calling custom cleanups correctly. Inflicts the Flash plugin. + Fixed bug where external_link_list_url/external_image_list_url in fullscreen mode. + Fixed so TinyMCE doesn't use modal dialogs on MSIE, these where giving some problems with for example lost sessions. + Fixed the auto resize function for popups to use new logic. + Fixed so callback functions gets called correctly from fullscreen mode. + Fixed misspelled language pack for canadian french in the advimage plugin. + Fixed so openWindow can open use absolute URL:s. + Fixed bug issue where auto_cleanup_word sometimes didn't work in MSIE. + Fixed bug issue where the close button in dialogs wasn't available on Firefox on MacOSX. + Added new pastetext icon contributed by speednet. + Added new browsers option that enables you to specify what browsers is to be WYSIWYG enabled or not. + Added partial Catalan translation contributed by Marc Bria Ramírez. + Added portuguese Brazil translation contributed by João Borges. + Added updated Simplified Chinese language pack contributed by cube316. + Added beforeunload handler for fullscreen plugin so contents gets updated when the window is closed. + Added a new fullscreen_settings option for the fullscreen plugin contributed by David Glick. + Added new insert table command to context menu when user clicks within a table. + Added new advimage_constrain_proportions option to advimage plugin, contributed by Knut B. Jacobsen. + Added updated advanced theme with a new external toolbar location option, contributed by Man-Chicken (http://www.zoomshare.com/). + Added new tiny_mce_gzip.php file, this PHP script merges and compressed the requested .js files to improve loading times. + Added updated czech language pack, contributed by Stanislav Lacko. + Added new mceRemoveNode command, this command removes a node and inserts the node contents instead. + Added new behavior to format select box, you can now remove a paragraph by selecting -- Format --. + Removed ?rnd from external_link_list_url/external_image_list_url since it doesn't work well with serverside scripts. +Version 1.45 RC1 (2005-05-27) + Fixed bug where character map inserted & and </> when using & < >. + Fixed so paragraphs containing   is converted to numeric or raw if entity_encoding is set. + Fixed bug in searchreplace plugin when user tried to search on a empty string or the editor contents was empty. + Fixed repaint/trail graphics issues with images and tables in FF/Mozilla. + Fixed some memory leaks in TinyMCE core and context menu plugin, only MSIE was inflicted by this. + Fixed stange issue where elements sometimes disappeared in MSIE. + Fixed URL convertion problems with onmouseover, onmouseout image urls in advimage plugin. + Fixed URL convertion problems with Flash plugin. + Fixed the experimental Safari support, some features work some doesn't. + Fixed bug where multiple a elements where created when updating links on images in FF/Mozilla. + Fixed bug in importCSS function, was having a meaning less if statement. + Fixed so the contextmenu plugin uses images from the configurated theme instead of the advanced theme. + Fixed so the external_link_list_url/external_image_list_url options can use relative or absolute path. + Fixed so the external_link_list_url/external_image_list_url has a random query parameter to prevent it from cache. + Added new mceInsertRawHTML command, this inserts raw as it is HTML code in the the selected position. + Added paste plain text plugin contributed by Ryan Demmer, converted it into a paste plugin. + Added updated paste plugin contributed by speednet, includes paste directly feature for MSIE. + Added split/merge table cells support, to table plugin and context menus. + Added cut/copy/paste table rows functionality to context menu and table plugin. + Added new mceSetContent command, this does the same as the setContent function. + Added new clear all/new document icon to advanced theme. + Added new remove formatting and select text color icons. + Added new directionality plugin to better support languages that write from right to left. + Added new fullscreen plugin, enables users to toggle fullscreen editing mode. + Added a new template/tutorial plugin to aid people in the development of own plugins. + Removed visual_table_style and replaced it with visual_table_class. [BREAKS COMPATIBLITY]. + Renamed urlconvertor_callback option to urlconverter_callback. +Version 1.44 (2005-05-03) + Fixed bug with contextmenu not showing at the correct location in MSIE. + Fixed bug where a error was produced by the Flash plugin if the user reloaded the page in MSIE. + Fixed issue where mceAddControl and mceRemoveControl commands produced a error in MSIE. + Fixed bug when images and flash movies where mixed in the editor produced strange results. + Fixed so trailing / characters isn't removed from URLs. + Fixed so the contextmenu uses a diffrent method of loading it's custom CSS file. + Fixed getAttributes problem, it should read getAttribute. + Fixed so "Edit HTML source" window may be maximized. + Added French eacute entitiy to default entities option. + Added a height CSS value for the element path in advanced themes editor_ui.css since it keept bobbing up and down. + Added updated Polish language pack contributed by Marcin Szymon Sznyra. + Added better window auto resize method for most dialogs. + Added new feature to set what tags are to be left open in valid_elements. Add a + before the element names to enable. + Added nowrap for the editor table cells, sometimes the editors controls wrapped. + Updated German language pack contributed by Krokogras. +Version 1.44 RC2 (2005-04-25) + Fixed bug with host prefixes and port numbers when having relative_urls set to false and remove_script_host set to true. + Fixed bug when site absolute URLs for example /something was converted incorrectly in Firefox/Mozilla. + Fixed bug where the link wasn't auto selected in the drop list in the advanced themes default link dialog. + Fixed bug issue with the flash plugin and croping out characters before and after the movie. + Fixed bug where the editor jumped to top of editor area on enter/return when doctype was set to XML Transitional. + Fixed bug where context menu was appearing in the wrong location if the window was resized. + Fixed bug in the context menu where table properties wasn't working. + Fixed bug where a selectorText exception was trown if the CSS file contained @import or @charset. + Fixed bug where bold/italic/strikethough/underline wasn't selected/unselected in toolbar some times. + Fixed issue with hspace and vspace when having the inline_styles option enabled. Contributed by speednet. + Fixed bug where access denied error was thrown sometimes in MSIE. + Fixed so images without src won't be inserted. + Fixed some issues with width/height fields in the advimage plugin. + Fixed so the contextmenu plugin doesn't appear in MSIE 5.0, now functions with 5.5+. + Added filebrowser icon to mouse over and mouse out fields in the advimage plugin. + Added filebrowser icon to popup field in the advlink plugin. + Added so the triggerSave function gets auto executed when a user calls submit on a form, this can be disabled with the submit_patch option. + Added missing readme.txt file for the context menu plugin. + Added new border and background color fields to table dialog, based on contribution by Neirda. Enable them by the table_color_fields option. + Removed some old outdated items from FAQ. +Version 1.44 RC1 (2005-04-20) + Fixed bug where width/height attributes of a image wasn't stored some times in Firefox/Mozilla. + Fixed bug where P elements where created if a user pressed return/enter within a h1-h6 in Firefox/Mozilla. + Fixed bug where the remove format fuction didn't work some times in MSIE. + Fixed so backspace/delete gets added in one undo level in MSIE (improves performance). + Fixed so the "Could not find element by id or name" alert only shows when the debug option is set to true. + Fixed bug where bold/italic didn't work in Mozilla 1.3. + Fixed bug where width/height of a hidden TinyMCE instance where incorrect. + Fixed so the function layout of classes in tiny_mce_src.js uses prototype keyword instead of TinyMCE_ prefix (reduces size). + Fixed bug where triggerNodeChange produced javascript error some times in MSIE. + Fixed some issues in the Swedish and Spanish language packs. + Fixed bug where first undo level wasn't working correctly. + Fixed so flash plugin loads it's needed CSS data from within the plugin. + Fixed button images and CSS in the simple theme. + Fixed so the simple example shows how to use the simple theme instead of the default theme. + Fixed so cleanup default values can be set to empty. For example alt= generated alt="" on img elements. + Fixed memory leaks in MSIE (circular closure problem) events are now removed in a better way. + Fixed bug where URLs where converted incorrectly if the editor page URL contained / characters. + Fixed bug where table guidlines didn't work correctly when using the build in Mozilla table buttons. + Fixed bug where the Flash plugin was breaking other elements. + Added new contextmenu plugin, this plugin adds a menu if the user right clicks/uses the contextmenu on elements. + Added new multiple configuration support, the init method may now be called multiple times. + Added new remove_linebreaks option, this option is enabled by default and removes all HTML code linebreaks. + Added new behavior to the textarea_trigger option, if mode is textareas and trigger is false those elements will not be converted into editors. + Added new entity_encoding option, enabled user to better control the behavior of how character are converted into entities. + Added new isDirty command to TinyMCEControl, this method returns true if the user has done any modifications to the content. + Added new onchange_callback option, this callback is executed when contents within the editor instance is changed. + Added new init function for themes/plugins this gets called when a editor instance has finished it's setup. + Added new init_instance_callback option this callback is executed when instances are added to the editor. + Added new cleanup option this option enables users to totaly disable the whole cleanup process. + Added new importCSS method to TinyMCE. This method allows plugins and themes to load custom CSS files on initialization. + Added new getSelectedHTML method to TinyMCEControl class, this method returns the currently selected HTML contents. + Added new getSelectedText method to TinyMCEControl class, this method returns the currently selected contents as text. + Added new removeclass behavior to the removeformat button. The current class will be removed if no contents is selected. + Added new queryInstanceCommandValue and queryInstanceCommandState methods. + Added new option button_tile_map, this option contols the usage of button tile maps and is disabled by default. +Version 1.43 (2005-03-06) + Fixed bug with ask option not working at all. + Fixed bug where a "instance is not defined bug" error was produced. + Fixed bug with empty image src produced a error. + Fixed so the simple and default theme used the same CSS style as the advanced theme. + Fixed bug with the relative to absolute URL convertion logic if a empty string was passed used. + Fixed parse error bug with the source editor some servers can't handle XML PI declarations. + Fixed bug issue with HR elements in MSIE, if a specific work pattern where used a runtime error was produced by MSIE. + Fixed bug in the URL convertor logic, port numbers was not correctly handled. + Fixed issue where the cursor was placed before a insert of custom charater or date/time. + Fixed bug where the editor height option didn't work on MSIE. + Fixed bug where a linefeed within a table cell broke the table in Firefox/Mozilla. + Fixed bug where return/enter key after a image removed all content. + Fixed bug where return/enter key sometimes produced nestled P elements. + Fixed bug where the editor was stealing focus on load in MSIE. + Fixed bug where the visual aid logic forces width/height attributes on tables. + Fixed bug where getCSSClasses some times returned null value. + Fixed issue where the lang_insert/lang_update language variables wasn't entity decoded. + Fixed so the image/link/flash drop list gets auto selected thanks goes to Randy Simons and salzbermat. + Fixed so remove formatting button in MSIE removes all classes aswell. + Fixed issue where output contained single br element when the editor area was empty. + Added new %A/%a/%B/%b format chunks to insertdatetime, these insert localized date names such as January. + Added new oninit callback option for TinyMCE this callback is executed when all editor instances been initialized. + Added new preview panel to dialog in the advimage plugin, contributed by Virtuelcom. + Added element class name to element path in the advanced theme. + Updated Canadian French table language pack contributed by Virtuelcom. + Updated the swedish language pack, contributed by Mats Löfström, York Consulting AB. +Version 1.42 (2005-02-14) + Fixed bug with the element path beeing resized if width/height of editor was 100%. + Fixed bug with reloading/flicker of all button images in MSIE if browser cache is disabled. + Fixed backspace/delete bug in Firefox, some times the cursor got stuck. + Fixed bug issues with enter/return key in Firefox/Mozilla. + Fixed bug where copy/paste and drag drop of images/links failed in Firefox/Mozilla if a document_base_url is provided. + Fixed so when relative_urls is set to false it forces absolute URLs for images/links. + Fixed so the _src.js suffix versions of the themes and plugins gets loaded with the tiny_mce_src.js script is used. + Fixed so verify_css_classes option is disabled by default. + Fixed bug where tables where resized when toggling visual aid in Firefox/Mozilla. + Fixed bugs with advhr plugin running in a hidden div element. + Added new auto_focus option that enabled a specific editor area to be focused on startup. + Added a extra argument to the filebrowser callback inorder to get the calling window reference. + Added a new persian (farsi) language pack contributed by Morteza Zafari. + Added new more nice looking icons contributed by Morteza Zafari and Michael Keck. The old icons are available in a separate icon pack. + Added updated Canadian French language pack contributed by Virtuelcom. + Added updated French languahe pack contributed by Laurent Dran. + Added updated German language pack contributed by Tobias Heer. + Added some documentation regarding the layout manager options made by SlyD. +Version 1.41 (2005-01-31) + Added new table plugin, all table code is moved into this plugin [BREAKS COMPATIBLITY]. + Added new external_link_list_url/external_image_list_url options for better backend integration. + Added new file_browser_callback option for better backend integration. + Added new layout manager code into the advanced theme, contributed by SlyD. + Added new nowrap option, enables so users may change the word wraping behavior. + Added new Thai language pack contributed by Innozent. + Added obfuscated version of all plugins and themes to reduce over all startup/download time. + Added Simplified Chinese language pack contributed by cube316. + Added a updated Czech language pack thanks to Josef Klimosz. + Fixed issue where anchor elements where closed. This results in browser problems with the outputed HTML. + Fixed bug where the first return key press didn't produce a paragraph in Firefox/Mozilla. + Fixed bug in the searchreplace plugin where replace content sometimes fails in Firefox/Mozilla. + Fixed so all language packs now uses the ISO-639-2 code instead of ISO 3166-1 [BREAKS COMPATIBLITY]. + Fixed some issues with the force_br_newlines option in MSIE. + Fixed bug where the backspace or delete key produced BR elements in Firefox/Mozilla. + Fixed bug issue with link and image dialogs of the default theme/simple example. + Fixed some bugs when having the editor hidden in a tab/div, contributed by Ernst de Moor. + Fixed some character issues with the Danish language packs, contributed by someone unknown. +Version 1.40 (2005-01-09) + Added a new default value for the font size drop down, if no font size where found this gets selected. + Added a auto resize window feature, this is enabled by default but can be disabled with a window argument. + Added a new print plugin, prints the current editor contents to a printer. + Added a new searchreplace plugin, adds a search, searchnext and replace button. + Fixed bug issue where buttons didn't display correctly on some Firefox installations. + Fixed issue with value and type attributes of input elements getting lost in cleanup on MSIE. + Fixed so that the getEditorInstance command is public, returns a TinyMCEControl by id. + Fixed issue where "true" and "false" string wasn't treated as booleans in TinyMCE init options. + Fixed so cursor/mousepointer allways remains a arrow in all themes when rolling over buttons. + Fixed the popup windows so they are mode "modal" in Mozilla/Firefox. + Fixed so the ask question is displayed when elements are focused with the tab key. + Fixed so the ask option works when mode option is set to exact. + Fixed issue with visualaids on tables not working correctly when the user uses the tab key in Firefox/Mozilla. + Fixed some bugs with the mceSetCSSClass class command and the element path. + Fixed a new version of the mceInsertContent command. + Fixed so the auto_cleanup_word option is disabled by default. + Removed the langs of the zoom plugin, it now uses + instead of the "zoom" word. +Version 1.391 (2005-01-04) + Fixed major spacebar bug in MSIE, spacebar was disabled. +Version 1.39 (2005-01-04) + Updated the Flash plugin with a new version, contributed by jamesw. + Added new setWindowArg function, useful if plugins are to call other plugins. + Added new save plugin, this plugin adds a save/submit form button to tinyMCE, contributed by SlyD. + Added new hilite color support, sets a background-color style on the selected text. + Added new variable replacement popup URLs, check the openWindow function documentation for details. + Added new force_p_newlines option, forces P elements on return/enter key in Mozilla/Firefox. + Added new theme_advanced_path_location, adds a element path list. + Added new theme_advanced_toolbar_align option, defaults to center. + Added new Portuguese translation contributed by José Pedro Pereira. + Added new mceSelectNode and mceSelectNodeDepth commands. + Added new add_unload_trigger option, this adds a unload triggerSave call. Enabled by default. + Added am/pm time format to the insertdatetime plugin. + Fixed font color and size attribute bug, contributed by Vincent FIACK. + Fixed className undefined bug, Firefox/Mozilla produced a console error sometimes. + Fixed so mceSetCSSClass command may be applied to all sorts of elements. + Fixed so anchor elements can be removed by setting the anchor name to nothing. + Fixed typing performance some in Firefox/Mozilla, removed some nodechange triggers. + Fixed so the zoom plugin is invisible in MSIE 5.0, since zoom isn't available in that browser. + Fixed bug with the emotions plugin in MSIE 5.0, it was opening a new window. + Fixed so contents stay within the editor if the user hits the back/forward buttons. + Fixed bug where the window.name property was set to the image name. + Fixed so anchors links within the same page are made relative when relative_urls are set to false. + Updated the advanced theme so most of the images are loaded from a tiled image, improves loading time. + Updated the Swedish language pack, contributed by Martin. + Updated the readme.txt in the advlink plugin, was some problems with the valid_elements. + Updated the default CSS for the advanced theme some, added button backgrounds to look like office2k. +Version 1.38 (2004-11-28) + Added new textarea field for form elements when debug mode is enabled, contributed by Michael Keck. + Added new spacer item support for the theme_advanced_buttons options, contributed by Michael Keck. + Added new selection borders for images and hr elements, contributed by Michael Keck. + Added new advhr plugin, this plugin handles advanced settings on HR elements, contributed by Michael Keck. + Added new german language pack for the preview plugin, contributed by Michael Keck. + Added new word wrap and source formatting to the source editor, contributed by Michael Keck. + Added new updated charmap, contributed by Michael Keck. + Added new flash plugin that enabled flash movied to be handled, contributed by Michael Keck. + Added the old cut/copy/paste commands to the advanced theme, these are not visible by default. + Added new theme_advanced_buttons_add_before option to advanced theme. + Added new "update" button title for a popup windows. + Added new zoom prefix language variable to the zoom plugin. + Added new entities option, that enables you to config entity code to name convertion. + Added new custom cleanup possibility to plugins. + Added new cleanup_callback option, adds the possibilty to add custom cleanup logic. + Added new Norwegian language pack, contributed by Sten Aksel Heien. + Added new Korean language pack, contributed by Setzer Gabbiani. + Fixed the layout of the color picker, contributed by Michael Keck. + Fixed so the preview plugin doesn't include the any toolsbars in preview popup window, contributed by Michael Keck. + Fixed bug where anchors elements was treated as links. + Fixed so all popup windows are modal dialogs in MSIE. + Fixed bug where the word "null" sometimes appares in HTML after cleanup in Firefox/Mozilla. + Fixed bug where form elements with missing name attributes produced errors. + Fixed some default value bugs and issues with the new advlink plugin. + Fixed the link/image dialog sizes in the SE language pack. + Fixed the content duplication bug, it seems to be fixed anyway, if not please let me know. + Fixed bug where plugin handleNodeChange extentions broke the theme function. +Version 1.37 (2004-11-12) + Added new mceResetDesignMode command that can be used when the editor is placed in tabs. + Added new updated Italian language pack thanks goes to "Fabrix Xm" for the contribtion. + Added new greek language pack thanks goes to "Jacaranda Bill" for the contribution. + Added new french language pack thanks goes to "Pat Boens" for the contribution. + Added new russian language pack thanks goes to "Roman Filippov" for the contribution. + Added new updated Dutch language pack thanks goes to Arnoud van Delden and Ernst de Moor for the contribution. + Added new convert_newlines_to_brs option, that enables newlines to be converted to br elements. + Added new custom_undo_redo_keyboard_shortcuts option, enables keyboard shortcuts to be enabled/disabled. + Added new auto_reset_designmode option, thats resets the design mode when a editor instance is focused. + Added new form reset handler, resets the contents of TinyMCE areas when the onreset event is trigged. + Added new skip_cleanup parameter to triggerSave, this parameter is optional and defaults to false. + Added new lang_underline_img language variable to all themes. + Added new title attribute to all images, enables tooltips in Mozilla and Firefox. + Added new insert and cancel CSS id's for all submit and cancel buttons. + Added new full featured example that includes all available plugins and buttons. + Added new advlink and advimage plugins to TinyMCE, these are more advanced link and image tools. Contributed by Michael Keck. + Added new parameters to insertImage and insertLink commands. Contributed by Michael Keck. + Added updated compatiblity chart, includes a matrix table thanks goes to Ernst de Moor. + Added new insert image icon contributed by Arnoud van Delden and Ernst de Moor. + Added window focus on all popup windows, contributed by Arnoud van Delden and Ernst de Moor. + Fixed some issues with the char map added some characters and removed duplicate ones, contributed by Arnoud van Delden and Ernst de Moor. + Fixed the insert row icon, rotated it 180 degrees, contributed by Arnoud van Delden and Ernst de Moor. + Fixed the visual aid icon, made it a bit darker. Contributed by Arnoud van Delden and Ernst de Moor. + Fixed some issues with entity encoding in source editor aswell as in core cleanup code. + Fixed bug where the auto import CSS feature imported invalid CSS rules with : or spaces. + Fixed bug where unnecessary entity encoding of characters was done. + Fixed the window sizes some to better function on MSIE with SP2. + Fixed some issued with the auto word cleanup feature, fixes some issued with content duplication. + Fixed bug that made the editor to throw weird error when HTML code includes content. + Fixed bug where the style attribute was returned on images in source output even if it was disabled. + Fixed issue where the UI form elements of TinyMCE was submitted with the form submit. +Version 1.36 (2004-10-19) + Added a newly modified version of the German language pack from "krokogras". + Added auto resizing to popup windows with the same name. + Added example page for the plugin_preview_pageurl option in the preview plugin. + Fixed issue with link button auto enable/disable feature when content selection was made with the keyboard. + Fixed bug where events wasn't handled correctly in MSIE 5.5 and some 6.0 versions. + Fixed so align on images gets set as float style when the inline_styles option is enabled. + Fixed so solid border style isn't applied on elements with a border when the inline_styles option is enabled. + Fixed some issues with tables and the inline_styles option. + Fixed back button issue with MSIE, iframes was placed in browser history. +Version 1.35 (2004-10-13) + Added so that whitespace gets stripped in plugin and theme_advanced_buttons options. + Added custom plugin_preview_pageurl option to preview plugin. + Added Canadian French language packs for the new plugins, contributed by Virtuelcom. + Added new theme_advanced_blockformats option. + Added new title support to advanced theme link dialog. + Added new Ctrl+B/I/U keyboard shortcuts for Firefox. + Added Polish language pack contributed by "revyag". + Added Taiwanese language pack contributed by "Jim Kou". + Added updated German language pack contributed by "Krokogras". + Fixed some issues with ieSpell including better language support. + Fixed bug with default value in valid_elements not working in Firefox some times. + Fixed bug when focusing links without selecting any characters. + Fixed some typos in Swedish language pack. + Fixed bug with content selection and link button auto enable/disable feature. + Fixed bug issue when "theme_advanced_buttons" options where left empty. + Fixed various bugs with absolute URLs. +Version 1.34 (2004-10-03) + Added new insertdatetime plugin, inserts date/time in various formats. + Added new preview plugin, previews the HTML page in a new window. + Added new zoom plugin, adds the possibility zoom the editor in MSIE. + Added new emotions plugin, adds the possibility to add smileys. + Fixed so that TinyMCE functions on MSIE 5.0 again. + Fixed so that TinyMCE functions better on Mozilla 1.3. + Fixed so that the cursor doesn't jump to the top when setting styles. + Fixed bug with STRONG and EM elements wasn't handled correctly in Firefox. + Optimized the key handling some, gives better typing performance. + Removed key down statusbar debug info. +Version 1.33 (2004-09-29) + Removed the need of loading blank.html, iframes are now created dynamicly. + Fixed bug when selecting tables, MSIE was casting errors. + Fixed bug with pluginurl variable. + Fixed bug when tinyMCE.selectedElement error was cast in Mozilla. + Added new Arabic language pack contributed by Hani Suleiman. + Added "lang_dir" support to language packs like Arabic. +Version 1.32 (2004-09-25) + Added new ieSpell plugin, only works in MSIE. + Added new "theme_advanced_buttons_add" option. + Added new importPluginLanguagePack function. + Added new Danish language pack contributed by Jan Moelgaard. + Added updated German language pack contributed by Christopher Müller. + Added new any_selection to handleNodeChange callback. + Modified so link/unlink is dimmed if nothing is selected. + Fixed bug when deleting images in Firefox. + Changed the plugin location to a new plugin directory. + Renamed the "theme_plugins" option to "plugins". +Version 1.31 (2004-09-18) + Added Canadian French language pack, contributed by Virtuelcom. + Added so link/unlink buttons gets selected when user enters a link element. + Fixed URL bug when drag dropping/copy pasting images in Mozilla. + Fixed so mso style attribs don't get trimmed if auto_cleanup_word option is set to false. + Fixed bug with text alignment buttons. + Fixed bug with CSS auto import function in MSIE. + Fixed initialization bugs and issues. +Version 1.30 (2004-09-10) + Fixed bug issue where the editor was stealing focus from location bar. + Fixed bug issue with absolute aligned images lost focus when using tools. + Fixed bug #1025483, Url converting broken. + Added ability to send command values in advanced theme button list, contributed by someone helpfull. + Added new cleanup_on_startup option, to increase startup speed. + Added new inline_styles partly based on a contribution by Victor Nilsson. + Added new named anchor support. + Added custom_undo_redo_levels option. +Version 1.29 (2004-09-08) + Added new getEditorId function, to retrive the editor id of a form element. + Readded so cleanup is automaticly executed on editor startup in MSIE. + Added some various cleanup fixes for MS Word HTML. + Added new auto_cleanup_word option, enabled auto MS Word HTML cleanup on paste events. + Fixed parameter issue with insertImage function. Bug #1022863. + Fixed bug #1022874, Where the small theme had underline command on strikethrough button. + Fixed some bugs with table commands. + Fixed bug #1023204, mceRemoveControl brings back the old HTML. + Fixed bug issue with tinyMCE.selectedInstance in Mozilla. + Fixed bug issue with Mozilla not saving content. +Version 1.28 (2004-09-04) + Added new Finnish language pack thanks to Urho Konttori. + Added new rowseparator as a possible value of the theme_advanced_buttons options. + Added new theme_advanced_toolbar_location option. + Added new uid variable option to valid_elements. (Generates unique IDs) + Added new "directionality" option to support languages like Arabic. + Added new character map button/window. + Added new guidelines/visual aid toggle button. + Reduced the source of the advanced theme some, and added some better comments. + Separated the default theme in to files aswell. + Removed source area size options and made source editor resizable instead. + Increased the default width and height of the source editor. + Fixed bug where image width/height default to 0x0 if these attributes wasn't defined. + Fixed some bug issues with MSIE 5.5. +Version 1.27 (2004-08-29) + Added new cleanup logic, with new options and smarter behavior. + Added new "trim_span_elements" option (removed unneeded span elements). + Added new "verify_css_classes" option (verifies so class attributes contain a valid class). + Added new "verify_html" option (enables/disabled verification of elements and attributes). + Added new value verification type to "valid_elements" option. + Added new simple wildcard support in "valid_elements" option. + Added class as a valid attribute to table elements by default. + Added so non existent classes gets removed HTML output. + Added fix for   entities, so they get converted correctly. + Added new class select box in table dialog. + Added hr as a default valid element. + Fixed some issues with the language packs. + Fixed some weird bugs and issues with hr elements. + Fixed bug where Mozilla was casting exceptions on keypress. +Version 1.26 (2004-08-25) + Added a better way to create theme popup windows (External files). + Added new getWindowArg function, returns window arguments in theme popups. + Modified the advanced theme to adopt the new theme popup idea. + Fixed critical Mozilla bug, where the editor didn't work at all some times. + Fixed bug with auto CSS class import feature running on Firefox. +Version 1.25 (2004-08-22) + Added new format select box in advanced theme (Can be disabled). + Added new "theme_advanced_disable" option to advanced theme. + Added some new elements to default list of valid elements (Format select box elements). + Added new font face, forecolor and font size support, these are not enabled by default. + Added new "mceAddControl" command, enables users to dynamicly add editors. + Added new execInstanceCommand function, check the documentation for details. + Added new "mceSetAttribute" command. + Modified the themes so that the focus alert doesn't popup as often as before. + Modified the "mceRemoveControl" command so it can handle element id aswell as editor ids. + Fixed some bugs and issues with the new custom undo/redo logic. + Fixed weird Mozilla bug #997860. +Version 1.24 (2004-08-17) + Modified so that span with CSS classes that don't exists get removed. + Added new "custom_undo_redo" option, this option is enabled by default. + Added new "fix_content_duplication" option, that fixes some MSIE content duplication issues. + Added new "mceFocus" command, that changes focus to the specified editor instance. + Added new "mceReplaceContent" command, that enables users to replace the current selection. + Fixed so styles including spaces doesn't get listed in style selection box. + Fixed bug with form element names and exact mode in Mozilla. + Fixed so tiny_mce_src.js can be used aswell as tiny_mce.js. + Converted some of the language packs to better support unicode. +Version 1.23 (2004-07-31) + Modified the mceSetCSSClass command to address bug #997071. + Added new Hungarian language pack thanks to 2XP. + Added new callback "setupcontent_callback" check the manual for details. + Fixed bug #994506, where empty theme_plugins option generated a 404 error. + Fixed bug #999332, where image properties wasn't removed if the user deleted the image. +Version 1.22 (2004-07-19) + Fixed bug #989846, Image resize bug. + Changed so that style attribute values get converted to lowercase in MSIE. + Changed so the alignment called "middle" is "center" in table properties. + Fixed so visual aids work correctly after using the source editor. + Fixed some issues with anchor links. + Fixed so that javascript: links can be used. + Added width/height options for the advanced source editor. + Fixed bug issue with URL:s containing quotes or single quotes. + Fixed so that document_base_url can point to another domain. +Version 1.21 (2004-07-12) + Added new "theme_plugins" option, check the manuals for details. + Added new "execCommand" plugin extention possibility. + Added new "buttons" config options to the advanced theme. + Added new "mceRemoveControl" command. + Added Spanish language pack thanks to "Alvaro Velasco". + Fixed first click bug. + Fixed so CSS url:s can be absolute. + Updated the FAQ regarding the Cut/Copy/Paste issue. +Version 1.20 (2004-07-05) + Fixed bug issue #983257, JS runtime error when template contains no controls. + Removed cut/copy/paste commands and icons due to security reasons in Mozilla. + Added Czech language pack, thanks goes to "Pavel Novák" for the contribution. + Fixed minor bug regarding empty attributes. + Fixed so the "extended_valid_elements" overrides previous declarations. +Version 1.19 (2004-06-28) + Fixed focus bug that appared on Linux version of Mozilla. + Fixed major bug issues with some Firefox/Firebird versions on Linux. + Fixed minor visual aid bugs on tables. + Fixed minor bugs with table commands. + Fixed scroll issue in HTML source windows on Mozilla/Linux. + Added a compatiblity chart to the manuals. +Version 1.18 (2004-06-20) + Added new option "remove_script_host". + Some minor fixes to the mceInsertContent command. + Fixed some issues with visual aids for tables. + Fixed strange focus bug in MSIE. + Updated some of the documentation. +Version 1.17 (2004-06-16) + Fixed bug, #972666 - Doesn't save edits when id != name. + Added more Italian, user manuals. Thanks goes to "Fabrix Xm". + Added Dutch language pack thanks to "Meint Post". + Modified the MSIE version of mceInsertContent command. +Version 1.16 (2004-06-14) + Added new table dialog and TinyMCE__getInsertTableTemplate template function. + Added auto class import feature and Italian language pack thanks goes to "Lorenzo Pavani". + Added border, alignment, vspace, hspace, width, height fields to the image properties dialog in advanced theme. + Updates advanced theme help pages for Swedish and English. + Fixed some minor issues with the mceSetCSSClass command. + Fixed minor MSIE bug in built in default URL convertor. + Fixed some image alignment issues. + Fixed support for site root script paths like src="/jscripts/tiny_mce.js". + Removed the use of "TinyMCE_advanced_cssClasses" from "advanced" theme. + Modified the default value of "valid_elements" to include table align and class as valid attributes. + Modified the default value of "valid_elements" to set img border attribute to 0 by default instead of by force. + Modified so that popup windows gets centered on screen. +Version 1.15 (2004-06-09) + Added new "advanced" theme, that adds some new functions. + Added new public js functions "getContent, setContent, applyTemplate, openWindow". + Added new custom command "mceSetCSSClass", that sets css class of the selection. + Added new custom command "mceInsertContent", that inserts HTML content. + Added class attributes to some of the elements in the default value of "valid_elements". + Added ability to have theme specific language packs by the js function "importThemeLanguagePack". + Added more documentation to the usage and themes sections. + Added table support, with custom commands and in advanced theme. + Modified the advanced example to include the new advanced theme. + Fixed tooltips for buttons in Mozilla. +Version 1.14 (2004-06-07) + Added new conversion possibility to save callback. + Added some more usage documentation. + Fixed some issues will updateContent function in Mozilla. + Fixed some issues with relative paths. + Fixed small Mozilla issue with visual aids. + Fixed so that the default theme sets image border to 0. + Fixed bug #968079, Removing editor buttons in template can cause errors. +Version 1.13 (2004-06-04) + Fixed critical bug where the editor didn't work at all in MSIE. + Fixed bug where table visual aids didn't work in Mozilla. +Version 1.12 (2004-06-03) + Added updateContent function thanks to "Jürgen Baute" contribution. + Added documentation of the diffrent public javascript functions of tinyMCE. + Fixed bug #965615, Empty editor content returns "
" as value after cleanup. + Fixed bug where Bold and Italic didn't work correctly in Mozilla. +Version 1.11 (2004-06-01) + Added new option "document_base_url", it's used when converting absolute URLs to relative ones. + Added so that align button sets the align attribute of selected images. + Fixed bug when / was passed within query string to the editors page. + Fixed bug #961041, Image attributes are not removed. +Version 1.1 (2004-05-26) + Fixed bug #960112 JavaScript error when opening image window. + Fixed bug #926644 Multiple forms with elements having the same name failed. + Added function so that "specific_textareas" mode handles the "ask" option. + Added new option "focus_alert", to remove annoying focus alert message. +Version 1.09 (2004-05-24) + Added new option "extended_valid_elements", this option adds extra elements to the "valid_elements" list. + Fixed bug #958637, Resized images are displayed in original size + Fixed bug #958942, Bug on realitive_urls (Bug with absolute URLs to insertlink_callback, insertimage_callback callbacks) + Fixed bug #958498, Unable to change Bold and italic text in Mozilla. +Version 1.08 (2004-05-21) + Added new attributes "border, hspace, vspace, width, height, align" to the getInsertImageTemplate theme function. + Added new relative_urls option, this new feature converts all absolute URLs to relative URLs and it's on by default. + Fixed bug #956007, the CSS theme URL:s was allways pointing to the default theme. + Fixed bug where enter/return key produced a error in the insert link popup window form. (This was done in the default template) + Fixed bug #957681, Could not delete text without first adding character bug in Mozilla. +Version 1.07 (2004-05-10) + Added experimental support for option "force_br_newlines" to address bug #922416 and feature request #936270. + Fixed bug with mailto: links. +Version 1.06 (2004-04-15) + Added new German language pack. Thanks goes to "Simon Rupf" for the contribution. + Added new German/Swedish bold/italic language specific icons to both default and simple theme. + Added new Swedish documentation. +Version 1.05 (2004-04-02) + Added new Italian language pack and documentation. Thanks goes to "Fabrix Xm" for the contribution. + Fixed missing "lang_help_desc" definition in UK and SE langpacks. + Added better documentation for the "valid_elements" option and it's format. + Added new "preformatted" option to address feature request #927948. + Added browser checker so that the script don't break on non compatible browsers. + Fixed bug #926639, now the editor instance gets resized if a width/height is specified in %. + Added new simple theme, this theme has only basic functions. +Version 1.04 (2004-03-30) + Fixed bug when insertLink and insertImage function didn't use the url_convertor callback. + Fixed MSIE bug when images was 32x32 on initialization on slow connections. + Fixed bug that made request on images with wrong path, produced some 404 error in webserver logs. + Fixed MSIE bug where users could add images outside of the editor scope. +Version 1.03 (2004-03-26) + Added new "add_form_submit_trigger" this option is default and is added on all document forms within the page. To address bug #923362 + Moved javascript sourcecode file to "jscripts/tiny_mce/tiny_mce_src.js". + Added new obfuscated version of tinymce to reduce size of script. + Added some performance boosting code to the switchClassSticky function. + Removed the "autosave" option, this is no longer needed and is replaced with "add_form_submit_trigger" or triggerSave call. + Fixed undo bug in MSIE. + Removed some unused eventhandlers results in better performance. +Version 1.02 (2004-03-26) + Added new handleNodeChange callback to themes. + Fixed some bugs regarding events and themes function checks. + Fixed bug issue when user focused nodes with keyboard. +Version 1.01 (2004-03-12) + Added some more documentation. + Added new "visual" option to editor. + Fixed bug on empty P elements. + Fixed bug on table width/height. +Version 1.0 (2004-03-11) + Added new "debug" option and fixed some path issues. diff --git a/lib/tinymce/examples/example_advanced.css b/code/web/js/tinymce/examples/example_advanced.css similarity index 94% rename from lib/tinymce/examples/example_advanced.css rename to code/web/js/tinymce/examples/example_advanced.css index 28b1d1c62..345bb0732 100755 --- a/lib/tinymce/examples/example_advanced.css +++ b/code/web/js/tinymce/examples/example_advanced.css @@ -1,40 +1,40 @@ -body { - background-color: #FFFFFF; - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 12px; - color: #880000; - scrollbar-3dlight-color: #F0F0EE; - scrollbar-arrow-color: #676662; - scrollbar-base-color: #F0F0EE; - scrollbar-darkshadow-color: #DDDDDD; - scrollbar-face-color: #E0E0DD; - scrollbar-highlight-color: #F0F0EE; - scrollbar-shadow-color: #F0F0EE; - scrollbar-track-color: #F5F5F5; -} - -.header1 { - font-weight: bold; - font-size: 14px -} - -.header2 { - font-weight: bold; - font-size: 12px; - color: #FF0000 -} - -.header3 { - font-weight: normal; - font-size: 12px; - color: #0000FF -} - -.tablerow1 { - background-color: #BBBBBB; -} - -td { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 12px; -} +body { + background-color: #FFFFFF; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 12px; + color: #880000; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} + +.header1 { + font-weight: bold; + font-size: 14px +} + +.header2 { + font-weight: bold; + font-size: 12px; + color: #FF0000 +} + +.header3 { + font-weight: normal; + font-size: 12px; + color: #0000FF +} + +.tablerow1 { + background-color: #BBBBBB; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 12px; +} diff --git a/lib/tinymce/examples/example_advanced.htm b/code/web/js/tinymce/examples/example_advanced.htm similarity index 97% rename from lib/tinymce/examples/example_advanced.htm rename to code/web/js/tinymce/examples/example_advanced.htm index c22339310..4fa5ed248 100755 --- a/lib/tinymce/examples/example_advanced.htm +++ b/code/web/js/tinymce/examples/example_advanced.htm @@ -1,99 +1,99 @@ - - - -Advanced example - - - - - - - - -
[Full featured example] [Advanced example] [Simple example] [Word example] - -

Advanced example

-This page shows a more complex usage of TinyMCE. On this page the mode is set to convert specific elements in this case a DIV element and a TEXTAREA into editor instances. The example below uses a custom CSS, thats why the text is red and it allso uses the "advanced" theme that includes more options than the default one. The code allso includes examples of custom call back functions and much more. Notice the submit button at the end of the page, this button triggers a save action. Read more about the features and possible settings of TinyMCE in the manual.
-
- - - - -
- - - - -
- Some element, this is to be editor 2.
This editor instance is a DIV element instead of a textarea. -

Some paragraph. Some link

- -
- -
- -Some custom actions: -[Bold] | -[Italic] -[Insert some HTML] -[Replace selection] - -
- - - + + + +Advanced example + + + + + + + + +[Full featured example] [Advanced example] [Simple example] [Word example] + +

Advanced example

+This page shows a more complex usage of TinyMCE. On this page the mode is set to convert specific elements in this case a DIV element and a TEXTAREA into editor instances. The example below uses a custom CSS, thats why the text is red and it allso uses the "advanced" theme that includes more options than the default one. The code allso includes examples of custom call back functions and much more. Notice the submit button at the end of the page, this button triggers a save action. Read more about the features and possible settings of TinyMCE in the manual.
+
+ + +
+ +
+ + + + +
+ Some element, this is to be editor 2.
This editor instance is a DIV element instead of a textarea. +

Some paragraph. Some link

+ +
+ +
+ +Some custom actions: +[Bold] | +[Italic] +[Insert some HTML] +[Replace selection] + +
+ + + diff --git a/lib/tinymce/examples/example_flash_list.js b/code/web/js/tinymce/examples/example_flash_list.js similarity index 97% rename from lib/tinymce/examples/example_flash_list.js rename to code/web/js/tinymce/examples/example_flash_list.js index ad0daace7..45946584a 100755 --- a/lib/tinymce/examples/example_flash_list.js +++ b/code/web/js/tinymce/examples/example_flash_list.js @@ -1,9 +1,9 @@ -// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. -// There flash movies will be displayed as a dropdown in all flash dialogs if the "flash_external_list_url" -// option is defined in TinyMCE init. - -var tinyMCEFlashList = new Array( - // Name, URL - ["Some Flash 1", "test1.swf"], - ["Some Flash 2", "test2.swf"] -); +// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. +// There flash movies will be displayed as a dropdown in all flash dialogs if the "flash_external_list_url" +// option is defined in TinyMCE init. + +var tinyMCEFlashList = new Array( + // Name, URL + ["Some Flash 1", "test1.swf"], + ["Some Flash 2", "test2.swf"] +); diff --git a/lib/tinymce/examples/example_full.css b/code/web/js/tinymce/examples/example_full.css similarity index 94% rename from lib/tinymce/examples/example_full.css rename to code/web/js/tinymce/examples/example_full.css index 8d7b1280f..9ab37f402 100755 --- a/lib/tinymce/examples/example_full.css +++ b/code/web/js/tinymce/examples/example_full.css @@ -1,51 +1,51 @@ -body { - background-color: #FFFFFF; - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; - scrollbar-3dlight-color: #F0F0EE; - scrollbar-arrow-color: #676662; - scrollbar-base-color: #F0F0EE; - scrollbar-darkshadow-color: #DDDDDD; - scrollbar-face-color: #E0E0DD; - scrollbar-highlight-color: #F0F0EE; - scrollbar-shadow-color: #F0F0EE; - scrollbar-track-color: #F5F5F5; -} - -td { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; -} - -pre { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; -} - -.example1 { - font-weight: bold; - font-size: 14px -} - -.example2 { - font-weight: bold; - font-size: 12px; - color: #FF0000 -} - -.tablerow1 { - background-color: #BBBBBB; -} - -thead { - background-color: #FFBBBB; -} - -tfoot { - background-color: #BBBBFF; -} - -th { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 13px; -} +body { + background-color: #FFFFFF; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +pre { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +.example1 { + font-weight: bold; + font-size: 14px +} + +.example2 { + font-weight: bold; + font-size: 12px; + color: #FF0000 +} + +.tablerow1 { + background-color: #BBBBBB; +} + +thead { + background-color: #FFBBBB; +} + +tfoot { + background-color: #BBBBFF; +} + +th { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 13px; +} diff --git a/lib/tinymce/examples/example_full.htm b/code/web/js/tinymce/examples/example_full.htm similarity index 98% rename from lib/tinymce/examples/example_full.htm rename to code/web/js/tinymce/examples/example_full.htm index 088517f7d..d1a904954 100755 --- a/lib/tinymce/examples/example_full.htm +++ b/code/web/js/tinymce/examples/example_full.htm @@ -1,74 +1,74 @@ - - - -Full featured example - - - - - - - -[Full featured example] [Advanced example] [Simple example] [Word example] -
-

Full featured example

- This page shows all available plugins that are included in the TinyMCE distribution. Some of these plugins will only be visible on MSIE due to the lack of some support in FF. For more details on the various options on TinyMCE check the manual or for more third party plugins check the plugin section.

- -
- - - - - - + + + +Full featured example + + + + + + + +[Full featured example] [Advanced example] [Simple example] [Word example] +
+

Full featured example

+ This page shows all available plugins that are included in the TinyMCE distribution. Some of these plugins will only be visible on MSIE due to the lack of some support in FF. For more details on the various options on TinyMCE check the manual or for more third party plugins check the plugin section.

+ +
+ + + + + + diff --git a/lib/tinymce/examples/example_image_list.js b/code/web/js/tinymce/examples/example_image_list.js similarity index 97% rename from lib/tinymce/examples/example_image_list.js rename to code/web/js/tinymce/examples/example_image_list.js index 6d04fbc15..b77b99d92 100755 --- a/lib/tinymce/examples/example_image_list.js +++ b/code/web/js/tinymce/examples/example_image_list.js @@ -1,9 +1,9 @@ -// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. -// There images will be displayed as a dropdown in all image dialogs if the "external_link_image_url" -// option is defined in TinyMCE init. - -var tinyMCEImageList = new Array( - // Name, URL - ["Logo 1", "logo.jpg"], - ["Logo 2 Over", "logo_over.jpg"] -); +// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. +// There images will be displayed as a dropdown in all image dialogs if the "external_link_image_url" +// option is defined in TinyMCE init. + +var tinyMCEImageList = new Array( + // Name, URL + ["Logo 1", "logo.jpg"], + ["Logo 2 Over", "logo_over.jpg"] +); diff --git a/lib/tinymce/examples/example_link_list.js b/code/web/js/tinymce/examples/example_link_list.js similarity index 97% rename from lib/tinymce/examples/example_link_list.js rename to code/web/js/tinymce/examples/example_link_list.js index 0d464331f..238dacb3c 100755 --- a/lib/tinymce/examples/example_link_list.js +++ b/code/web/js/tinymce/examples/example_link_list.js @@ -1,10 +1,10 @@ -// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. -// There links will be displayed as a dropdown in all link dialogs if the "external_link_list_url" -// option is defined in TinyMCE init. - -var tinyMCELinkList = new Array( - // Name, URL - ["Moxiecode", "http://www.moxiecode.com"], - ["Freshmeat", "http://www.freshmeat.com"], - ["Sourceforge", "http://www.sourceforge.com"] -); +// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. +// There links will be displayed as a dropdown in all link dialogs if the "external_link_list_url" +// option is defined in TinyMCE init. + +var tinyMCELinkList = new Array( + // Name, URL + ["Moxiecode", "http://www.moxiecode.com"], + ["Freshmeat", "http://www.freshmeat.com"], + ["Sourceforge", "http://www.sourceforge.com"] +); diff --git a/lib/tinymce/examples/example_media_list.js b/code/web/js/tinymce/examples/example_media_list.js similarity index 97% rename from lib/tinymce/examples/example_media_list.js rename to code/web/js/tinymce/examples/example_media_list.js index e06b292fd..9d523ca0c 100755 --- a/lib/tinymce/examples/example_media_list.js +++ b/code/web/js/tinymce/examples/example_media_list.js @@ -1,9 +1,9 @@ -// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. -// There flash movies will be displayed as a dropdown in all media dialog if the "media_external_list_url" -// option is defined in TinyMCE init. - -var tinyMCEMediaList = new Array( - // Name, URL - ["Some Flash 1", "test1.swf"], - ["Some Flash 2", "test2.swf"] -); +// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. +// There flash movies will be displayed as a dropdown in all media dialog if the "media_external_list_url" +// option is defined in TinyMCE init. + +var tinyMCEMediaList = new Array( + // Name, URL + ["Some Flash 1", "test1.swf"], + ["Some Flash 2", "test2.swf"] +); diff --git a/lib/tinymce/examples/example_simple.htm b/code/web/js/tinymce/examples/example_simple.htm similarity index 97% rename from lib/tinymce/examples/example_simple.htm rename to code/web/js/tinymce/examples/example_simple.htm index 82652bf0a..6831bd32c 100755 --- a/lib/tinymce/examples/example_simple.htm +++ b/code/web/js/tinymce/examples/example_simple.htm @@ -1,46 +1,46 @@ - - - - -Simple example - - - - - - - - -[Full featured example] [Advanced example] [Simple example] [Word example] - -
-

Simple example

-This page shows how to use TinyMCE on a HTML page in the most common and simple way. On this page each TEXTAREA -element gets converted to a editor instance on page load. Notice how TinyMCE tries to match the width and height of the old text area elements. Read more about the features and settings of TinyMCE in the manual.

- - - -
- - -
- - - - - - + + + + +Simple example + + + + + + + + +[Full featured example] [Advanced example] [Simple example] [Word example] + +
+

Simple example

+This page shows how to use TinyMCE on a HTML page in the most common and simple way. On this page each TEXTAREA +element gets converted to a editor instance on page load. Notice how TinyMCE tries to match the width and height of the old text area elements. Read more about the features and settings of TinyMCE in the manual.

+ + + +
+ + +
+ + + + + + diff --git a/lib/tinymce/examples/example_template.htm b/code/web/js/tinymce/examples/example_template.htm similarity index 97% rename from lib/tinymce/examples/example_template.htm rename to code/web/js/tinymce/examples/example_template.htm index aa4ac5ccd..2709fb940 100755 --- a/lib/tinymce/examples/example_template.htm +++ b/code/web/js/tinymce/examples/example_template.htm @@ -1,145 +1,145 @@ - - -Template plugin example - - - - - - - -[Full featured example] [Advanced example] [Simple example] [Word example] -
-

Template example

- This example shows how to make more advanced templates that execute logic.

- -
- - - - - - - + + +Template plugin example + + + + + + + +[Full featured example] [Advanced example] [Simple example] [Word example] +
+

Template example

+ This example shows how to make more advanced templates that execute logic.

+ +
+ + + + + + + diff --git a/lib/tinymce/examples/example_template_list.js b/code/web/js/tinymce/examples/example_template_list.js similarity index 98% rename from lib/tinymce/examples/example_template_list.js rename to code/web/js/tinymce/examples/example_template_list.js index e06d35788..79d3f86db 100755 --- a/lib/tinymce/examples/example_template_list.js +++ b/code/web/js/tinymce/examples/example_template_list.js @@ -1,9 +1,9 @@ -// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. -// There templates will be displayed as a dropdown in all media dialog if the "template_external_list_url" -// option is defined in TinyMCE init. - -var tinyMCETemplateList = [ - // Name, URL, Description - ["Simple snippet", "templates/snippet1.htm", "Simple HTML snippet."], - ["Layout", "templates/layout1.htm", "HTML Layout."] +// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. +// There templates will be displayed as a dropdown in all media dialog if the "template_external_list_url" +// option is defined in TinyMCE init. + +var tinyMCETemplateList = [ + // Name, URL, Description + ["Simple snippet", "templates/snippet1.htm", "Simple HTML snippet."], + ["Layout", "templates/layout1.htm", "HTML Layout."] ]; \ No newline at end of file diff --git a/lib/tinymce/examples/example_word.css b/code/web/js/tinymce/examples/example_word.css similarity index 94% rename from lib/tinymce/examples/example_word.css rename to code/web/js/tinymce/examples/example_word.css index aafc71f5e..c03464c8a 100755 --- a/lib/tinymce/examples/example_word.css +++ b/code/web/js/tinymce/examples/example_word.css @@ -1,61 +1,61 @@ -body { - background-color: #FFFFFF; - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; - scrollbar-3dlight-color: #F0F0EE; - scrollbar-arrow-color: #676662; - scrollbar-base-color: #F0F0EE; - scrollbar-darkshadow-color: #DDDDDD; - scrollbar-face-color: #E0E0DD; - scrollbar-highlight-color: #F0F0EE; - scrollbar-shadow-color: #F0F0EE; - scrollbar-track-color: #F5F5F5; -} - -td { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; -} - -pre { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; -} - -.example1 { - font-weight: bold; - font-size: 14px -} - -.example2 { - font-weight: bold; - font-size: 12px; - color: #FF0000 -} - -.tablerow1 { - background-color: #BBBBBB; -} - -/* Fix for MS Office style paragraphs (MsoNormal) */ -p { - margin: 0; - padding: 0; -} - -/* Fix for MS Office unindeted lists */ -.unIndentedList { - margin: 0; - padding: 0; - list-style-position: inside; -} - -.unIndentedList li { - padding: 0; -} - -/* Fix for MS Office UL lists */ -ul { - margin-top: 0; - margin-bottom: 0; -} +body { + background-color: #FFFFFF; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +pre { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +.example1 { + font-weight: bold; + font-size: 14px +} + +.example2 { + font-weight: bold; + font-size: 12px; + color: #FF0000 +} + +.tablerow1 { + background-color: #BBBBBB; +} + +/* Fix for MS Office style paragraphs (MsoNormal) */ +p { + margin: 0; + padding: 0; +} + +/* Fix for MS Office unindeted lists */ +.unIndentedList { + margin: 0; + padding: 0; + list-style-position: inside; +} + +.unIndentedList li { + padding: 0; +} + +/* Fix for MS Office UL lists */ +ul { + margin-top: 0; + margin-bottom: 0; +} diff --git a/lib/tinymce/examples/example_word.htm b/code/web/js/tinymce/examples/example_word.htm similarity index 98% rename from lib/tinymce/examples/example_word.htm rename to code/web/js/tinymce/examples/example_word.htm index 08653d256..071a486ef 100755 --- a/lib/tinymce/examples/example_word.htm +++ b/code/web/js/tinymce/examples/example_word.htm @@ -1,68 +1,68 @@ - - -Word example - - - - - - - -[Full featured example] [Advanced example] [Simple example] [Word example] - -
-

Word example

- This example shows you how TinyMCE can be configurated to function with Word content in the best possible way. TinyMCE is configured to auto convert/cleanup pasted Word content in this example. It's has also a custom CSS that makes paragraphs marginless as in Word.

- -
- - - - - + + +Word example + + + + + + + +[Full featured example] [Advanced example] [Simple example] [Word example] + +
+

Word example

+ This example shows you how TinyMCE can be configurated to function with Word content in the best possible way. TinyMCE is configured to auto convert/cleanup pasted Word content in this example. It's has also a custom CSS that makes paragraphs marginless as in Word.

+ +
+ + + + + \ No newline at end of file diff --git a/lib/tinymce/examples/logo.jpg b/code/web/js/tinymce/examples/logo.jpg similarity index 100% rename from lib/tinymce/examples/logo.jpg rename to code/web/js/tinymce/examples/logo.jpg diff --git a/lib/tinymce/examples/logo_over.jpg b/code/web/js/tinymce/examples/logo_over.jpg similarity index 100% rename from lib/tinymce/examples/logo_over.jpg rename to code/web/js/tinymce/examples/logo_over.jpg diff --git a/lib/tinymce/examples/templates/count.htm b/code/web/js/tinymce/examples/templates/count.htm similarity index 97% rename from lib/tinymce/examples/templates/count.htm rename to code/web/js/tinymce/examples/templates/count.htm index b15c6e8b3..4faefb551 100755 --- a/lib/tinymce/examples/templates/count.htm +++ b/code/web/js/tinymce/examples/templates/count.htm @@ -1,5 +1,5 @@ - - -
-

Word Count: 0, Character count: 0

-
+ + +
+

Word Count: 0, Character count: 0

+
diff --git a/lib/tinymce/examples/templates/editing_details.htm b/code/web/js/tinymce/examples/templates/editing_details.htm similarity index 96% rename from lib/tinymce/examples/templates/editing_details.htm rename to code/web/js/tinymce/examples/templates/editing_details.htm index 5b5f314f2..a819ee0a3 100755 --- a/lib/tinymce/examples/templates/editing_details.htm +++ b/code/web/js/tinymce/examples/templates/editing_details.htm @@ -1,14 +1,14 @@ - - -
-
- - - - - - - - -
CreatedModifiedBy
Creation DateLast ModifiedUserName
Please insert editors comment here
-
+ + +
+ + + + + + + + + +
CreatedModifiedBy
Creation DateLast ModifiedUserName
Please insert editors comment here
+
diff --git a/lib/tinymce/examples/templates/editors_comment.htm b/code/web/js/tinymce/examples/templates/editors_comment.htm similarity index 97% rename from lib/tinymce/examples/templates/editors_comment.htm rename to code/web/js/tinymce/examples/templates/editors_comment.htm index 77d455d40..7adbd2c23 100755 --- a/lib/tinymce/examples/templates/editors_comment.htm +++ b/code/web/js/tinymce/examples/templates/editors_comment.htm @@ -1,9 +1,9 @@ - - -
-

Selected Content

-

- Editors Comment ()
- [Insert your comment here] -

-
+ + +
+

Selected Content

+

+ Editors Comment ()
+ [Insert your comment here] +

+
diff --git a/lib/tinymce/examples/templates/invoice.htm b/code/web/js/tinymce/examples/templates/invoice.htm similarity index 96% rename from lib/tinymce/examples/templates/invoice.htm rename to code/web/js/tinymce/examples/templates/invoice.htm index 333f4db81..2b160e351 100755 --- a/lib/tinymce/examples/templates/invoice.htm +++ b/code/web/js/tinymce/examples/templates/invoice.htm @@ -1,26 +1,26 @@ - - -
-

Invoice # [invoice number]

-

- [Client details] -

- -

Invoice Items

- - - - - - - - - - - - - - - -
ItemQtyUnit CostTotal
Item Description1$0.00$0.00
Item Description1$0.00$0.00
Item Description1$0.00$0.00
Invoice Total
-
+ + +
+

Invoice # [invoice number]

+

+ [Client details] +

+ +

Invoice Items

+ + + + + + + + + + + + + + + +
ItemQtyUnit CostTotal
Item Description1$0.00$0.00
Item Description1$0.00$0.00
Item Description1$0.00$0.00
Invoice Total
+
diff --git a/lib/tinymce/examples/templates/layout1.htm b/code/web/js/tinymce/examples/templates/layout1.htm similarity index 93% rename from lib/tinymce/examples/templates/layout1.htm rename to code/web/js/tinymce/examples/templates/layout1.htm index a38df3e68..7248c237f 100755 --- a/lib/tinymce/examples/templates/layout1.htm +++ b/code/web/js/tinymce/examples/templates/layout1.htm @@ -1,15 +1,15 @@ - - - - - - - - - - - - - - -
Column 1Column 2
Username: {$username}Staffid: {$staffid}
+ + + + + + + + + + + + + + +
Column 1Column 2
Username: {$username}Staffid: {$staffid}
diff --git a/lib/tinymce/examples/templates/snippet1.htm b/code/web/js/tinymce/examples/templates/snippet1.htm similarity index 97% rename from lib/tinymce/examples/templates/snippet1.htm rename to code/web/js/tinymce/examples/templates/snippet1.htm index b2520beaf..98f42c379 100755 --- a/lib/tinymce/examples/templates/snippet1.htm +++ b/code/web/js/tinymce/examples/templates/snippet1.htm @@ -1 +1 @@ -This is just some code. +This is just some code. diff --git a/lib/tinymce/jscripts/tiny_mce/blank.htm b/code/web/js/tinymce/jscripts/tiny_mce/blank.htm similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/blank.htm rename to code/web/js/tinymce/jscripts/tiny_mce/blank.htm index 5a4a5a57c..c1ff8352b 100755 --- a/lib/tinymce/jscripts/tiny_mce/blank.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/blank.htm @@ -1,9 +1,9 @@ - - - blank_page - - - - - - + + + blank_page + + + + + + diff --git a/lib/tinymce/jscripts/tiny_mce/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/langs/en.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/langs/en.js index c093eafa0..c7faa2432 100755 --- a/lib/tinymce/jscripts/tiny_mce/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/langs/en.js @@ -1,41 +1,41 @@ -// UK lang variables - -tinyMCE.addToLang('',{ -bold_desc : 'Bold (Ctrl+B)', -italic_desc : 'Italic (Ctrl+I)', -underline_desc : 'Underline (Ctrl+U)', -striketrough_desc : 'Strikethrough', -justifyleft_desc : 'Align left', -justifycenter_desc : 'Align center', -justifyright_desc : 'Align right', -justifyfull_desc : 'Align full', -bullist_desc : 'Unordered list', -numlist_desc : 'Ordered list', -outdent_desc : 'Outdent', -indent_desc : 'Indent', -undo_desc : 'Undo (Ctrl+Z)', -redo_desc : 'Redo (Ctrl+Y)', -link_desc : 'Insert/edit link', -unlink_desc : 'Unlink', -image_desc : 'Insert/edit image', -cleanup_desc : 'Cleanup messy code', -focus_alert : 'A editor instance must be focused before using this command.', -edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?', -insert_link_title : 'Insert/edit link', -insert : 'Insert', -update : 'Update', -cancel : 'Cancel', -insert_link_url : 'Link URL', -insert_link_target : 'Target', -insert_link_target_same : 'Open link in the same window', -insert_link_target_blank : 'Open link in a new window', -insert_image_title : 'Insert/edit image', -insert_image_src : 'Image URL', -insert_image_alt : 'Image description', -help_desc : 'Help', -bold_img : "bold.gif", -italic_img : "italic.gif", -underline_img : "underline.gif", -clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', -popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' -}); +// UK lang variables + +tinyMCE.addToLang('',{ +bold_desc : 'Bold (Ctrl+B)', +italic_desc : 'Italic (Ctrl+I)', +underline_desc : 'Underline (Ctrl+U)', +striketrough_desc : 'Strikethrough', +justifyleft_desc : 'Align left', +justifycenter_desc : 'Align center', +justifyright_desc : 'Align right', +justifyfull_desc : 'Align full', +bullist_desc : 'Unordered list', +numlist_desc : 'Ordered list', +outdent_desc : 'Outdent', +indent_desc : 'Indent', +undo_desc : 'Undo (Ctrl+Z)', +redo_desc : 'Redo (Ctrl+Y)', +link_desc : 'Insert/edit link', +unlink_desc : 'Unlink', +image_desc : 'Insert/edit image', +cleanup_desc : 'Cleanup messy code', +focus_alert : 'A editor instance must be focused before using this command.', +edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?', +insert_link_title : 'Insert/edit link', +insert : 'Insert', +update : 'Update', +cancel : 'Cancel', +insert_link_url : 'Link URL', +insert_link_target : 'Target', +insert_link_target_same : 'Open link in the same window', +insert_link_target_blank : 'Open link in a new window', +insert_image_title : 'Insert/edit image', +insert_image_src : 'Image URL', +insert_image_alt : 'Image description', +help_desc : 'Help', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/lib/tinymce/jscripts/tiny_mce/langs/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/langs/readme.txt similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/langs/readme.txt rename to code/web/js/tinymce/jscripts/tiny_mce/langs/readme.txt index 9c3a9d9d9..0210e7ebb 100755 --- a/lib/tinymce/jscripts/tiny_mce/langs/readme.txt +++ b/code/web/js/tinymce/jscripts/tiny_mce/langs/readme.txt @@ -1,9 +1,9 @@ -Beginning with version 2.0.5 the language packs are no -longer included with the core distribution. -Language packs can be downloaded from the TinyMCE website: -http://tinymce.moxiecode.com/download.php - -The language pack codes are based on ISO-639-1: -http://www.loc.gov/standards/iso639-2/englangn.html - -Plrease try using entities if possible. Like å etc for non a-z characters. +Beginning with version 2.0.5 the language packs are no +longer included with the core distribution. +Language packs can be downloaded from the TinyMCE website: +http://tinymce.moxiecode.com/download.php + +The language pack codes are based on ISO-639-1: +http://www.loc.gov/standards/iso639-2/englangn.html + +Plrease try using entities if possible. Like å etc for non a-z characters. diff --git a/lib/tinymce/jscripts/tiny_mce/license.txt b/code/web/js/tinymce/jscripts/tiny_mce/license.txt similarity index 98% rename from lib/tinymce/jscripts/tiny_mce/license.txt rename to code/web/js/tinymce/jscripts/tiny_mce/license.txt index 60d6d4c8f..1837b0acb 100755 --- a/lib/tinymce/jscripts/tiny_mce/license.txt +++ b/code/web/js/tinymce/jscripts/tiny_mce/license.txt @@ -1,504 +1,504 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin_src.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin_src.js index 22b40fdaf..c1b42196a 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/editor_plugin_src.js @@ -1,245 +1,245 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('template'); - -/**** - * Steps for creating a plugin from this template: - * - * 1. Change all "template" to the name of your plugin. - * 2. Remove all the callbacks in this file that you don't need. - * 3. Remove the popup.htm file if you don't need any popups. - * 4. Add your custom logic to the callbacks you needed. - * 5. Write documentation in a readme.txt file on how to use the plugin. - * 6. Upload it under the "Plugins" section at sourceforge. - * - ****/ - -// Singleton class -var TinyMCE_TemplatePlugin = { - /** - * Returns information about the plugin as a name/value array. - * The current keys are longname, author, authorurl, infourl and version. - * - * @returns Name/value array containing information about the plugin. - * @type Array - */ - getInfo : function() { - return { - longname : 'Template plugin', - author : 'Your name', - authorurl : 'http://www.yoursite.com', - infourl : 'http://www.yoursite.com/docs/template.html', - version : "1.0" - }; - }, - - /** - * Gets executed when a TinyMCE editor instance is initialized. - * - * @param {TinyMCE_Control} Initialized TinyMCE editor control instance. - */ - initInstance : function(inst) { - // You can take out plugin specific parameters - alert("Initialization parameter:" + tinyMCE.getParam("template_someparam", false)); - - // Register custom keyboard shortcut - inst.addShortcut('ctrl', 't', 'lang_template_desc', 'mceTemplate'); - }, - - /** - * Gets executed when a TinyMCE editor instance is removed. - * - * @param {TinyMCE_Control} Removed TinyMCE editor control instance. - */ - removeInstance : function(inst) { - // Cleanup instance resources - }, - - /** - * Returns the HTML code for a specific control or empty string if this plugin doesn't have that control. - * A control can be a button, select list or any other HTML item to present in the TinyMCE user interface. - * The variable {$editor_id} will be replaced with the current editor instance id and {$pluginurl} will be replaced - * with the URL of the plugin. Language variables such as {$lang_somekey} will also be replaced with contents from - * the language packs. - * - * @param {string} cn Editor control/button name to get HTML for. - * @return HTML code for a specific control or empty string. - * @type string - */ - getControlHTML : function(cn) { - switch (cn) { - case "template": - return tinyMCE.getButtonHTML(cn, 'lang_template_desc', '{$pluginurl}/images/template.gif', 'mceTemplate', true); - } - - return ""; - }, - - /** - * Executes a specific command, this function handles plugin commands. - * - * @param {string} editor_id TinyMCE editor instance id that issued the command. - * @param {HTMLElement} element Body or root element for the editor instance. - * @param {string} command Command name to be executed. - * @param {string} user_interface True/false if a user interface should be presented. - * @param {mixed} value Custom value argument, can be anything. - * @return true/false if the command was executed by this plugin or not. - * @type - */ - execCommand : function(editor_id, element, command, user_interface, value) { - // Handle commands - switch (command) { - // Remember to have the "mce" prefix for commands so they don't intersect with built in ones in the browser. - case "mceTemplate": - // Show UI/Popup - if (user_interface) { - // Open a popup window and send in some custom data in a window argument - var template = new Array(); - - template['file'] = '../../plugins/template/popup.htm'; // Relative to theme - template['width'] = 300; - template['height'] = 200; - - tinyMCE.openWindow(template, {editor_id : editor_id, some_custom_arg : "somecustomdata"}); - - // Let TinyMCE know that something was modified - tinyMCE.triggerNodeChange(false); - } else { - // Do a command this gets called from the template popup - alert("execCommand: mceTemplate gets called from popup."); - } - - return true; - } - - // Pass to next handler in chain - return false; - }, - - /** - * Gets called ones the cursor/selection in a TinyMCE instance changes. This is useful to enable/disable - * button controls depending on where the user are and what they have selected. This method gets executed - * alot and should be as performance tuned as possible. - * - * @param {string} editor_id TinyMCE editor instance id that was changed. - * @param {HTMLNode} node Current node location, where the cursor is in the DOM tree. - * @param {int} undo_index The current undo index, if this is -1 custom undo/redo is disabled. - * @param {int} undo_levels The current undo levels, if this is -1 custom undo/redo is disabled. - * @param {boolean} visual_aid Is visual aids enabled/disabled ex: dotted lines on tables. - * @param {boolean} any_selection Is there any selection at all or is there only a cursor. - */ - handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { - // Select template button if parent node is a strong or b - if (node.parentNode.nodeName == "STRONG" || node.parentNode.nodeName == "B") { - tinyMCE.switchClass(editor_id + '_template', 'mceButtonSelected'); - return true; - } - - // Deselect template button - tinyMCE.switchClass(editor_id + '_template', 'mceButtonNormal'); - }, - - /** - * Gets called when a TinyMCE editor instance gets filled with content on startup. - * - * @param {string} editor_id TinyMCE editor instance id that was filled with content. - * @param {HTMLElement} body HTML body element of editor instance. - * @param {HTMLDocument} doc HTML document instance. - */ - setupContent : function(editor_id, body, doc) { - }, - - /** - * Gets called when the contents of a TinyMCE area is modified, in other words when a undo level is - * added. - * - * @param {TinyMCE_Control} inst TinyMCE editor area control instance that got modified. - */ - onChange : function(inst) { - }, - - /** - * Gets called when TinyMCE handles events such as keydown, mousedown etc. TinyMCE - * doesn't listen on all types of events so custom event handling may be required for - * some purposes. - * - * @param {Event} e HTML editor event reference. - * @return true - pass to next handler in chain, false - stop chain execution - * @type boolean - */ - handleEvent : function(e) { - // Display event type in statusbar - top.status = "template plugin event: " + e.type; - - return true; // Pass to next handler - }, - - /** - * Gets called when HTML contents is inserted or retrived from a TinyMCE editor instance. - * The type parameter contains what type of event that was performed and what format the content is in. - * Possible valuses for type is get_from_editor, insert_to_editor, get_from_editor_dom, insert_to_editor_dom. - * - * @param {string} type Cleanup event type. - * @param {mixed} content Editor contents that gets inserted/extracted can be a string or DOM element. - * @param {TinyMCE_Control} inst TinyMCE editor instance control that performes the cleanup. - * @return New content or the input content depending on action. - * @type string - */ - cleanup : function(type, content, inst) { - switch (type) { - case "get_from_editor": - alert("[FROM] Value HTML string: " + content); - - // Do custom cleanup code here - - break; - - case "insert_to_editor": - alert("[TO] Value HTML string: " + content); - - // Do custom cleanup code here - - break; - - case "get_from_editor_dom": - alert("[FROM] Value DOM Element " + content.innerHTML); - - // Do custom cleanup code here - - break; - - case "insert_to_editor_dom": - alert("[TO] Value DOM Element: " + content.innerHTML); - - // Do custom cleanup code here - - break; - } - - return content; - }, - - // Private plugin internal methods - - /** - * This is just a internal plugin method, prefix all internal methods with a _ character. - * The prefix is needed so they doesn't collide with future TinyMCE callback functions. - * - * @param {string} a Some arg1. - * @param {string} b Some arg2. - * @return Some return. - * @type string - */ - _someInternalFunction : function(a, b) { - return 1; - } -}; - -// Adds the plugin class to the list of available TinyMCE plugins -tinyMCE.addPlugin("template", TinyMCE_TemplatePlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('template'); + +/**** + * Steps for creating a plugin from this template: + * + * 1. Change all "template" to the name of your plugin. + * 2. Remove all the callbacks in this file that you don't need. + * 3. Remove the popup.htm file if you don't need any popups. + * 4. Add your custom logic to the callbacks you needed. + * 5. Write documentation in a readme.txt file on how to use the plugin. + * 6. Upload it under the "Plugins" section at sourceforge. + * + ****/ + +// Singleton class +var TinyMCE_TemplatePlugin = { + /** + * Returns information about the plugin as a name/value array. + * The current keys are longname, author, authorurl, infourl and version. + * + * @returns Name/value array containing information about the plugin. + * @type Array + */ + getInfo : function() { + return { + longname : 'Template plugin', + author : 'Your name', + authorurl : 'http://www.yoursite.com', + infourl : 'http://www.yoursite.com/docs/template.html', + version : "1.0" + }; + }, + + /** + * Gets executed when a TinyMCE editor instance is initialized. + * + * @param {TinyMCE_Control} Initialized TinyMCE editor control instance. + */ + initInstance : function(inst) { + // You can take out plugin specific parameters + alert("Initialization parameter:" + tinyMCE.getParam("template_someparam", false)); + + // Register custom keyboard shortcut + inst.addShortcut('ctrl', 't', 'lang_template_desc', 'mceTemplate'); + }, + + /** + * Gets executed when a TinyMCE editor instance is removed. + * + * @param {TinyMCE_Control} Removed TinyMCE editor control instance. + */ + removeInstance : function(inst) { + // Cleanup instance resources + }, + + /** + * Returns the HTML code for a specific control or empty string if this plugin doesn't have that control. + * A control can be a button, select list or any other HTML item to present in the TinyMCE user interface. + * The variable {$editor_id} will be replaced with the current editor instance id and {$pluginurl} will be replaced + * with the URL of the plugin. Language variables such as {$lang_somekey} will also be replaced with contents from + * the language packs. + * + * @param {string} cn Editor control/button name to get HTML for. + * @return HTML code for a specific control or empty string. + * @type string + */ + getControlHTML : function(cn) { + switch (cn) { + case "template": + return tinyMCE.getButtonHTML(cn, 'lang_template_desc', '{$pluginurl}/images/template.gif', 'mceTemplate', true); + } + + return ""; + }, + + /** + * Executes a specific command, this function handles plugin commands. + * + * @param {string} editor_id TinyMCE editor instance id that issued the command. + * @param {HTMLElement} element Body or root element for the editor instance. + * @param {string} command Command name to be executed. + * @param {string} user_interface True/false if a user interface should be presented. + * @param {mixed} value Custom value argument, can be anything. + * @return true/false if the command was executed by this plugin or not. + * @type + */ + execCommand : function(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + // Remember to have the "mce" prefix for commands so they don't intersect with built in ones in the browser. + case "mceTemplate": + // Show UI/Popup + if (user_interface) { + // Open a popup window and send in some custom data in a window argument + var template = new Array(); + + template['file'] = '../../plugins/template/popup.htm'; // Relative to theme + template['width'] = 300; + template['height'] = 200; + + tinyMCE.openWindow(template, {editor_id : editor_id, some_custom_arg : "somecustomdata"}); + + // Let TinyMCE know that something was modified + tinyMCE.triggerNodeChange(false); + } else { + // Do a command this gets called from the template popup + alert("execCommand: mceTemplate gets called from popup."); + } + + return true; + } + + // Pass to next handler in chain + return false; + }, + + /** + * Gets called ones the cursor/selection in a TinyMCE instance changes. This is useful to enable/disable + * button controls depending on where the user are and what they have selected. This method gets executed + * alot and should be as performance tuned as possible. + * + * @param {string} editor_id TinyMCE editor instance id that was changed. + * @param {HTMLNode} node Current node location, where the cursor is in the DOM tree. + * @param {int} undo_index The current undo index, if this is -1 custom undo/redo is disabled. + * @param {int} undo_levels The current undo levels, if this is -1 custom undo/redo is disabled. + * @param {boolean} visual_aid Is visual aids enabled/disabled ex: dotted lines on tables. + * @param {boolean} any_selection Is there any selection at all or is there only a cursor. + */ + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + // Select template button if parent node is a strong or b + if (node.parentNode.nodeName == "STRONG" || node.parentNode.nodeName == "B") { + tinyMCE.switchClass(editor_id + '_template', 'mceButtonSelected'); + return true; + } + + // Deselect template button + tinyMCE.switchClass(editor_id + '_template', 'mceButtonNormal'); + }, + + /** + * Gets called when a TinyMCE editor instance gets filled with content on startup. + * + * @param {string} editor_id TinyMCE editor instance id that was filled with content. + * @param {HTMLElement} body HTML body element of editor instance. + * @param {HTMLDocument} doc HTML document instance. + */ + setupContent : function(editor_id, body, doc) { + }, + + /** + * Gets called when the contents of a TinyMCE area is modified, in other words when a undo level is + * added. + * + * @param {TinyMCE_Control} inst TinyMCE editor area control instance that got modified. + */ + onChange : function(inst) { + }, + + /** + * Gets called when TinyMCE handles events such as keydown, mousedown etc. TinyMCE + * doesn't listen on all types of events so custom event handling may be required for + * some purposes. + * + * @param {Event} e HTML editor event reference. + * @return true - pass to next handler in chain, false - stop chain execution + * @type boolean + */ + handleEvent : function(e) { + // Display event type in statusbar + top.status = "template plugin event: " + e.type; + + return true; // Pass to next handler + }, + + /** + * Gets called when HTML contents is inserted or retrived from a TinyMCE editor instance. + * The type parameter contains what type of event that was performed and what format the content is in. + * Possible valuses for type is get_from_editor, insert_to_editor, get_from_editor_dom, insert_to_editor_dom. + * + * @param {string} type Cleanup event type. + * @param {mixed} content Editor contents that gets inserted/extracted can be a string or DOM element. + * @param {TinyMCE_Control} inst TinyMCE editor instance control that performes the cleanup. + * @return New content or the input content depending on action. + * @type string + */ + cleanup : function(type, content, inst) { + switch (type) { + case "get_from_editor": + alert("[FROM] Value HTML string: " + content); + + // Do custom cleanup code here + + break; + + case "insert_to_editor": + alert("[TO] Value HTML string: " + content); + + // Do custom cleanup code here + + break; + + case "get_from_editor_dom": + alert("[FROM] Value DOM Element " + content.innerHTML); + + // Do custom cleanup code here + + break; + + case "insert_to_editor_dom": + alert("[TO] Value DOM Element: " + content.innerHTML); + + // Do custom cleanup code here + + break; + } + + return content; + }, + + // Private plugin internal methods + + /** + * This is just a internal plugin method, prefix all internal methods with a _ character. + * The prefix is needed so they doesn't collide with future TinyMCE callback functions. + * + * @param {string} a Some arg1. + * @param {string} b Some arg2. + * @return Some return. + * @type string + */ + _someInternalFunction : function(a, b) { + return 1; + } +}; + +// Adds the plugin class to the list of available TinyMCE plugins +tinyMCE.addPlugin("template", TinyMCE_TemplatePlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/_template/images/template.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/images/template.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/_template/images/template.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/images/template.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/_template/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/langs/en.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/_template/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/langs/en.js index 2c3407690..fb1cdc666 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/_template/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/langs/en.js @@ -1,8 +1,8 @@ -// UK lang variables - -/* Remember to namespace the language parameters lang__ */ - -tinyMCE.addToLang('',{ -template_title : 'This is just a template popup', -template_desc : 'This is just a template button' -}); +// UK lang variables + +/* Remember to namespace the language parameters lang__ */ + +tinyMCE.addToLang('',{ +template_title : 'This is just a template popup', +template_desc : 'This is just a template button' +}); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/_template/popup.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/popup.htm similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/_template/popup.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/popup.htm index b07467fa2..d46ef7a82 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/_template/popup.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/popup.htm @@ -1,48 +1,48 @@ - - - {$lang_template_title} - - - - - -
-

{$lang_template_title}

- - -
- The selected element name: -
- -
-
- -
- -
- -
-
-
- - + + + {$lang_template_title} + + + + + +
+

{$lang_template_title}

+ + +
+ The selected element name: +
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/_template/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/readme.txt similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/_template/readme.txt rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/_template/readme.txt diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css similarity index 92% rename from lib/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css index 7ff36bdc8..b9615891b 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css @@ -1,23 +1,23 @@ -input.radio { - border: 1px none #000000; - background-color: transparent; - vertical-align: middle; -} - -.panel_wrapper div.current { - height: 80px; -} - -#width { - width: 50px; - vertical-align: middle; -} - -#width2 { - width: 50px; - vertical-align: middle; -} - -#size { - width: 100px; -} +input.radio { + border: 1px none #000000; + background-color: transparent; + vertical-align: middle; +} + +.panel_wrapper div.current { + height: 80px; +} + +#width { + width: 50px; + vertical-align: middle; +} + +#width2 { + width: 50px; + vertical-align: middle; +} + +#size { + width: 100px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js index 11dbfe83d..fa1bf622f 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js @@ -1,90 +1,90 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('advhr'); - -var TinyMCE_AdvancedHRPlugin = { - getInfo : function() { - return { - longname : 'Advanced HR', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - } - }, - - getControlHTML : function(cn) { - switch (cn) { - case "advhr": - return tinyMCE.getButtonHTML(cn, 'lang_insert_advhr_desc', '{$pluginurl}/images/advhr.gif', 'mceAdvancedHr'); - } - - return ""; - }, - - /** - * Executes the mceAdvanceHr command. - */ - execCommand : function(editor_id, element, command, user_interface, value) { - // Handle commands - switch (command) { - case "mceAdvancedHr": - var template = new Array(); - - template['file'] = '../../plugins/advhr/rule.htm'; // Relative to theme - template['width'] = 250; - template['height'] = 160; - - template['width'] += tinyMCE.getLang('lang_advhr_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_advhr_delta_height', 0); - - var size = "", width = "", noshade = ""; - if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr") { - tinyMCE.hrElement = tinyMCE.selectedElement; - - if (tinyMCE.hrElement) { - size = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : ""; - width = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : ""; - noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : ""; - } - - tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'}); - } else { - if (tinyMCE.isMSIE) { - tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'
'); - } else { - tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", size : size, width : width, noshade : noshade, mceDo : 'insert'}); - } - } - - return true; - } - - // Pass to next handler in chain - return false; - }, - - handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { - if (node == null) - return; - - do { - if (node.nodeName == "HR") { - tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonSelected'); - return true; - } - } while ((node = node.parentNode)); - - tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonNormal'); - - return true; - } -}; - -tinyMCE.addPlugin("advhr", TinyMCE_AdvancedHRPlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('advhr'); + +var TinyMCE_AdvancedHRPlugin = { + getInfo : function() { + return { + longname : 'Advanced HR', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + } + }, + + getControlHTML : function(cn) { + switch (cn) { + case "advhr": + return tinyMCE.getButtonHTML(cn, 'lang_insert_advhr_desc', '{$pluginurl}/images/advhr.gif', 'mceAdvancedHr'); + } + + return ""; + }, + + /** + * Executes the mceAdvanceHr command. + */ + execCommand : function(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceAdvancedHr": + var template = new Array(); + + template['file'] = '../../plugins/advhr/rule.htm'; // Relative to theme + template['width'] = 250; + template['height'] = 160; + + template['width'] += tinyMCE.getLang('lang_advhr_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_advhr_delta_height', 0); + + var size = "", width = "", noshade = ""; + if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr") { + tinyMCE.hrElement = tinyMCE.selectedElement; + + if (tinyMCE.hrElement) { + size = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : ""; + width = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : ""; + noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : ""; + } + + tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'}); + } else { + if (tinyMCE.isMSIE) { + tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'
'); + } else { + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", size : size, width : width, noshade : noshade, mceDo : 'insert'}); + } + } + + return true; + } + + // Pass to next handler in chain + return false; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + if (node == null) + return; + + do { + if (node.nodeName == "HR") { + tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonSelected'); + return true; + } + } while ((node = node.parentNode)); + + tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonNormal'); + + return true; + } +}; + +tinyMCE.addPlugin("advhr", TinyMCE_AdvancedHRPlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advhr/images/advhr.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/images/advhr.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/advhr/images/advhr.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/images/advhr.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advhr/jscripts/rule.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/jscripts/rule.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/advhr/jscripts/rule.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/jscripts/rule.js index ddaacd73d..1342b0b98 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advhr/jscripts/rule.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advhr/jscripts/rule.js @@ -1,43 +1,43 @@ -function init() { - tinyMCEPopup.resizeToInnerSize(); - - var formObj = document.forms[0]; - formObj.width.value = tinyMCE.getWindowArg('width'); - formObj.size.value = tinyMCE.getWindowArg('size'); - formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'),'Insert',true); - if (tinyMCE.getWindowArg('noshade')) { - formObj.noshade.checked = true; - } - if (tinyMCE.getWindowArg('width').lastIndexOf('%')!=-1) { - formObj.width2.value = "%"; - formObj.width.value = formObj.width.value.substring(0,formObj.width.value.length-1); - } -} - -function insertHR() { - var formObj = document.forms[0]; - var width = formObj.width.value; - var size = formObj.size.value; - var html = ' - - {$lang_insert_advhr_desc} - - - - - - - -
- - -
-
- - - - - - - - - - - - - -
- - -
-
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_insert_advhr_desc} + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + +
+ + +
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css similarity index 92% rename from lib/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css index abf4405d3..05f97da3d 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css @@ -1,66 +1,66 @@ -/* CSS file for advimage plugin popup */ - -.mceImageList { - width: 280px; -} - -.mceActionPanel { - margin-top: 7px; -} - -.alignPreview { - border: 1px solid black; - width: 140px; - height: 140px; - overflow: hidden; - padding: 5px; -} - -.checkbox { - border: 0; -} - -.panel_wrapper div.current { - height: 305px; -} - -#prev { - margin: 0; - border: 1px - solid black; - width: 99%; - height: 150px; - overflow: auto; -} - -#align, #classlist { - width: 150px; -} - -#width, #height { - vertical-align: middle; - width: 50px; - text-align: center; -} - -#vspace, #hspace, #border { - vertical-align: middle; - width: 30px; - text-align: center; -} - -#classlist { - width: 180px; -} - -input { - width: 280px; -} - -#constrain, #onmousemovecheck { - width: auto; -} - -#id, #dir, #lang, #usemap, #longdesc { - width: 200px; -} +/* CSS file for advimage plugin popup */ + +.mceImageList { + width: 280px; +} + +.mceActionPanel { + margin-top: 7px; +} + +.alignPreview { + border: 1px solid black; + width: 140px; + height: 140px; + overflow: hidden; + padding: 5px; +} + +.checkbox { + border: 0; +} + +.panel_wrapper div.current { + height: 305px; +} + +#prev { + margin: 0; + border: 1px + solid black; + width: 99%; + height: 150px; + overflow: auto; +} + +#align, #classlist { + width: 150px; +} + +#width, #height { + vertical-align: middle; + width: 50px; + text-align: center; +} + +#vspace, #hspace, #border { + vertical-align: middle; + width: 30px; + text-align: center; +} + +#classlist { + width: 180px; +} + +input { + width: 280px; +} + +#constrain, #onmousemovecheck { + width: auto; +} + +#id, #dir, #lang, #usemap, #longdesc { + width: 200px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js index a86b90dba..4fcb86729 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js @@ -1,148 +1,148 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('advimage'); - -var TinyMCE_AdvancedImagePlugin = { - getInfo : function() { - return { - longname : 'Advanced image', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - getControlHTML : function(cn) { - switch (cn) { - case "image": - return tinyMCE.getButtonHTML(cn, 'lang_image_desc', '{$themeurl}/images/image.gif', 'mceAdvImage'); - } - - return ""; - }, - - execCommand : function(editor_id, element, command, user_interface, value) { - switch (command) { - case "mceAdvImage": - var template = new Array(); - - template['file'] = '../../plugins/advimage/image.htm'; - template['width'] = 480; - template['height'] = 380; - - // Language specific width and height addons - template['width'] += tinyMCE.getLang('lang_advimage_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_advimage_delta_height', 0); - - var inst = tinyMCE.getInstanceById(editor_id); - var elm = inst.getFocusElement(); - - if (elm != null && tinyMCE.getAttrib(elm, 'class').indexOf('mceItem') != -1) - return true; - - tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); - - return true; - } - - return false; - }, - - cleanup : function(type, content) { - switch (type) { - case "insert_to_editor_dom": - var imgs = content.getElementsByTagName("img"), src, i; - for (i=0; i - - {$lang_insert_image_title} - - - - - - - - - -
- - -
-
-
- {$lang_advimage_general} - - - - - - - - - - - - - - - - - - -
- - - - -
 
 
-
- -
- {$lang_advimage_preview} - -
-
- -
-
- {$lang_advimage_tab_appearance} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- {$lang_advimage_example_img} - Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam - nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum - edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam - erat volutpat. -
-
- x - px -
  - - - - -
-
- -
-
-
- -
-
- {$lang_advimage_swap_image} - - - - - - - - - - - - - - - - - - - - - -
- - - - -
 
 
- - - - -
 
 
-
- -
- {$lang_advimage_misc} - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
- - - - -
 
-
-
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_insert_image_title} + + + + + + + + + +
+ + +
+
+
+ {$lang_advimage_general} + + + + + + + + + + + + + + + + + + +
+ + + + +
 
 
+
+ +
+ {$lang_advimage_preview} + +
+
+ +
+
+ {$lang_advimage_tab_appearance} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ {$lang_advimage_example_img} + Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam + nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum + edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam + erat volutpat. +
+
+ x + px +
  + + + + +
+
+ +
+
+
+ +
+
+ {$lang_advimage_swap_image} + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
 
+ + + + +
 
 
+
+ +
+ {$lang_advimage_misc} + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + + + +
 
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/images/sample.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/images/sample.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/advimage/images/sample.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/images/sample.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/jscripts/functions.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/jscripts/functions.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/advimage/jscripts/functions.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/jscripts/functions.js index fc6b707ac..feb9a0b8f 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/jscripts/functions.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/jscripts/functions.js @@ -1,538 +1,538 @@ -/* Functions for the advimage plugin popup */ - -var preloadImg = null; -var orgImageWidth, orgImageHeight; - -function preinit() { - // Initialize - tinyMCE.setWindowArg('mce_windowresize', false); - - // Import external list url javascript - var url = tinyMCE.getParam("external_image_list_url"); - if (url != null) { - // Fix relative - if (url.charAt(0) != '/' && url.indexOf('://') == -1) - url = tinyMCE.documentBasePath + "/" + url; - - document.write(''); - } -} - -function convertURL(url, node, on_save) { - return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);"); -} - -function getImageSrc(str) { - var pos = -1; - - if (!str) - return ""; - - if ((pos = str.indexOf('this.src=')) != -1) { - var src = str.substring(pos + 10); - - src = src.substring(0, src.indexOf('\'')); - - if (tinyMCE.getParam('convert_urls')) - src = convertURL(src, null, true); - - return src; - } - - return ""; -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - var formObj = document.forms[0]; - var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); - var elm = inst.getFocusElement(); - var action = "insert"; - var html = ""; - - // Image list src - html = getImageListHTML('imagelistsrc','src','onSelectMainImage'); - if (html == "") - document.getElementById("imagelistsrcrow").style.display = 'none'; - else - document.getElementById("imagelistsrccontainer").innerHTML = html; - - // Image list oversrc - html = getImageListHTML('imagelistover','onmouseoversrc'); - if (html == "") - document.getElementById("imagelistoverrow").style.display = 'none'; - else - document.getElementById("imagelistovercontainer").innerHTML = html; - - // Image list outsrc - html = getImageListHTML('imagelistout','onmouseoutsrc'); - if (html == "") - document.getElementById("imagelistoutrow").style.display = 'none'; - else - document.getElementById("imagelistoutcontainer").innerHTML = html; - - // Src browser - html = getBrowserHTML('srcbrowser','src','image','advimage'); - document.getElementById("srcbrowsercontainer").innerHTML = html; - - // Over browser - html = getBrowserHTML('oversrcbrowser','onmouseoversrc','image','advimage'); - document.getElementById("onmouseoversrccontainer").innerHTML = html; - - // Out browser - html = getBrowserHTML('outsrcbrowser','onmouseoutsrc','image','advimage'); - document.getElementById("onmouseoutsrccontainer").innerHTML = html; - - // Longdesc browser - html = getBrowserHTML('longdescbrowser','longdesc','file','advimage'); - document.getElementById("longdesccontainer").innerHTML = html; - - // Resize some elements - if (isVisible('srcbrowser')) - document.getElementById('src').style.width = '260px'; - - if (isVisible('oversrcbrowser')) - document.getElementById('onmouseoversrc').style.width = '260px'; - - if (isVisible('outsrcbrowser')) - document.getElementById('onmouseoutsrc').style.width = '260px'; - - if (isVisible('longdescbrowser')) - document.getElementById('longdesc').style.width = '180px'; - - // Check action - if (elm != null && elm.nodeName == "IMG") - action = "update"; - - formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); - - if (action == "update") { - var src = tinyMCE.getAttrib(elm, 'src'); - var onmouseoversrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); - var onmouseoutsrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); - - src = convertURL(src, elm, true); - - // Use mce_src if found - var mceRealSrc = tinyMCE.getAttrib(elm, 'mce_src'); - if (mceRealSrc != "") { - src = mceRealSrc; - - if (tinyMCE.getParam('convert_urls')) - src = convertURL(src, elm, true); - } - - if (onmouseoversrc != "" && tinyMCE.getParam('convert_urls')) - onmouseoversrc = convertURL(onmouseoversrc, elm, true); - - if (onmouseoutsrc != "" && tinyMCE.getParam('convert_urls')) - onmouseoutsrc = convertURL(onmouseoutsrc, elm, true); - - // Setup form data - var style = tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")); - - // Store away old size - orgImageWidth = trimSize(getStyle(elm, 'width')) - orgImageHeight = trimSize(getStyle(elm, 'height')); - - formObj.src.value = src; - formObj.alt.value = tinyMCE.getAttrib(elm, 'alt'); - formObj.title.value = tinyMCE.getAttrib(elm, 'title'); - formObj.border.value = trimSize(getStyle(elm, 'border', 'borderWidth')); - formObj.vspace.value = tinyMCE.getAttrib(elm, 'vspace'); - formObj.hspace.value = tinyMCE.getAttrib(elm, 'hspace'); - formObj.width.value = orgImageWidth; - formObj.height.value = orgImageHeight; - formObj.onmouseoversrc.value = onmouseoversrc; - formObj.onmouseoutsrc.value = onmouseoutsrc; - formObj.id.value = tinyMCE.getAttrib(elm, 'id'); - formObj.dir.value = tinyMCE.getAttrib(elm, 'dir'); - formObj.lang.value = tinyMCE.getAttrib(elm, 'lang'); - formObj.longdesc.value = tinyMCE.getAttrib(elm, 'longdesc'); - formObj.usemap.value = tinyMCE.getAttrib(elm, 'usemap'); - formObj.style.value = tinyMCE.serializeStyle(style); - - // Select by the values - if (tinyMCE.isMSIE) - selectByValue(formObj, 'align', getStyle(elm, 'align', 'styleFloat')); - else - selectByValue(formObj, 'align', getStyle(elm, 'align', 'cssFloat')); - - addClassesToList('classlist', 'advimage_styles'); - - selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class')); - selectByValue(formObj, 'imagelistsrc', src); - selectByValue(formObj, 'imagelistover', onmouseoversrc); - selectByValue(formObj, 'imagelistout', onmouseoutsrc); - - updateStyle(); - showPreviewImage(src, true); - changeAppearance(); - - window.focus(); - } else - addClassesToList('classlist', 'advimage_styles'); - - // If option enabled default contrain proportions to checked - if (tinyMCE.getParam("advimage_constrain_proportions", true)) - formObj.constrain.checked = true; - - // Check swap image if valid data - if (formObj.onmouseoversrc.value != "" || formObj.onmouseoutsrc.value != "") - setSwapImageDisabled(false); - else - setSwapImageDisabled(true); -} - -function setSwapImageDisabled(state) { - var formObj = document.forms[0]; - - formObj.onmousemovecheck.checked = !state; - - setBrowserDisabled('overbrowser', state); - setBrowserDisabled('outbrowser', state); - - if (formObj.imagelistover) - formObj.imagelistover.disabled = state; - - if (formObj.imagelistout) - formObj.imagelistout.disabled = state; - - formObj.onmouseoversrc.disabled = state; - formObj.onmouseoutsrc.disabled = state; -} - -function setAttrib(elm, attrib, value) { - var formObj = document.forms[0]; - var valueElm = formObj.elements[attrib]; - - if (typeof(value) == "undefined" || value == null) { - value = ""; - - if (valueElm) - value = valueElm.value; - } - - if (value != "") { - elm.setAttribute(attrib, value); - - if (attrib == "style") - attrib = "style.cssText"; - - if (attrib == "longdesc") - attrib = "longDesc"; - - if (attrib == "width") { - attrib = "style.width"; - value = value + "px"; - value = value.replace(/%px/g, 'px'); - } - - if (attrib == "height") { - attrib = "style.height"; - value = value + "px"; - value = value.replace(/%px/g, 'px'); - } - - if (attrib == "class") - attrib = "className"; - - eval('elm.' + attrib + "=value;"); - } else { - if (attrib == 'class') - elm.className = ''; - - elm.removeAttribute(attrib); - } -} - -function makeAttrib(attrib, value) { - var formObj = document.forms[0]; - var valueElm = formObj.elements[attrib]; - - if (typeof(value) == "undefined" || value == null) { - value = ""; - - if (valueElm) - value = valueElm.value; - } - - if (value == "") - return ""; - - // XML encode it - value = value.replace(/&/g, '&'); - value = value.replace(/\"/g, '"'); - value = value.replace(//g, '>'); - - return ' ' + attrib + '="' + value + '"'; -} - -function insertAction() { - var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); - var elm = inst.getFocusElement(); - var formObj = document.forms[0]; - var src = formObj.src.value; - var onmouseoversrc = formObj.onmouseoversrc.value; - var onmouseoutsrc = formObj.onmouseoutsrc.value; - - if (!AutoValidator.validate(formObj)) { - alert(tinyMCE.getLang('lang_invalid_data')); - return false; - } - - if (tinyMCE.getParam("accessibility_warnings")) { - if (formObj.alt.value == "" && !confirm(tinyMCE.getLang('lang_advimage_missing_alt', '', true))) - return; - } - - if (onmouseoversrc && onmouseoversrc != "") - onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';"; - - if (onmouseoutsrc && onmouseoutsrc != "") - onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';"; - - if (elm != null && elm.nodeName == "IMG") { - setAttrib(elm, 'src', convertURL(src, tinyMCE.imgElement)); - setAttrib(elm, 'mce_src', src); - setAttrib(elm, 'alt'); - setAttrib(elm, 'title'); - setAttrib(elm, 'border'); - setAttrib(elm, 'vspace'); - setAttrib(elm, 'hspace'); - setAttrib(elm, 'width'); - setAttrib(elm, 'height'); - setAttrib(elm, 'onmouseover', onmouseoversrc); - setAttrib(elm, 'onmouseout', onmouseoutsrc); - setAttrib(elm, 'id'); - setAttrib(elm, 'dir'); - setAttrib(elm, 'lang'); - setAttrib(elm, 'longdesc'); - setAttrib(elm, 'usemap'); - setAttrib(elm, 'style'); - setAttrib(elm, 'class', getSelectValue(formObj, 'classlist')); - setAttrib(elm, 'align', getSelectValue(formObj, 'align')); - - //tinyMCEPopup.execCommand("mceRepaint"); - - // Repaint if dimensions changed - if (formObj.width.value != orgImageWidth || formObj.height.value != orgImageHeight) - inst.repaint(); - - // Refresh in old MSIE - if (tinyMCE.isMSIE5) - elm.outerHTML = elm.outerHTML; - } else { - var html = "' -} - -function updateImageData(start) { - var formObj = document.forms[0]; - - preloadImg = document.getElementById('previewImg'); - - if (!start && formObj.width.value == "") - formObj.width.value = preloadImg.width; - - if (!start && formObj.height.value == "") - formObj.height.value = preloadImg.height; - - updateStyle(); -} - -function resetImageData() { - var formObj = document.forms[0]; - formObj.width.value = formObj.height.value = ""; -} - -function getSelectValue(form_obj, field_name) { - var elm = form_obj.elements[field_name]; - - if (elm == null || elm.options == null) - return ""; - - return elm.options[elm.selectedIndex].value; -} - -function getImageListHTML(elm_id, target_form_element, onchange_func) { - if (typeof(tinyMCEImageList) == "undefined" || tinyMCEImageList.length == 0) - return ""; - - var html = ""; - - html += ''; - - return html; - - // tinyMCE.debug('-- image list start --', html, '-- image list end --'); -} - -// While loading -preinit(); +/* Functions for the advimage plugin popup */ + +var preloadImg = null; +var orgImageWidth, orgImageHeight; + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); + + // Import external list url javascript + var url = tinyMCE.getParam("external_image_list_url"); + if (url != null) { + // Fix relative + if (url.charAt(0) != '/' && url.indexOf('://') == -1) + url = tinyMCE.documentBasePath + "/" + url; + + document.write(''); + } +} + +function convertURL(url, node, on_save) { + return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);"); +} + +function getImageSrc(str) { + var pos = -1; + + if (!str) + return ""; + + if ((pos = str.indexOf('this.src=')) != -1) { + var src = str.substring(pos + 10); + + src = src.substring(0, src.indexOf('\'')); + + if (tinyMCE.getParam('convert_urls')) + src = convertURL(src, null, true); + + return src; + } + + return ""; +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var formObj = document.forms[0]; + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + var action = "insert"; + var html = ""; + + // Image list src + html = getImageListHTML('imagelistsrc','src','onSelectMainImage'); + if (html == "") + document.getElementById("imagelistsrcrow").style.display = 'none'; + else + document.getElementById("imagelistsrccontainer").innerHTML = html; + + // Image list oversrc + html = getImageListHTML('imagelistover','onmouseoversrc'); + if (html == "") + document.getElementById("imagelistoverrow").style.display = 'none'; + else + document.getElementById("imagelistovercontainer").innerHTML = html; + + // Image list outsrc + html = getImageListHTML('imagelistout','onmouseoutsrc'); + if (html == "") + document.getElementById("imagelistoutrow").style.display = 'none'; + else + document.getElementById("imagelistoutcontainer").innerHTML = html; + + // Src browser + html = getBrowserHTML('srcbrowser','src','image','advimage'); + document.getElementById("srcbrowsercontainer").innerHTML = html; + + // Over browser + html = getBrowserHTML('oversrcbrowser','onmouseoversrc','image','advimage'); + document.getElementById("onmouseoversrccontainer").innerHTML = html; + + // Out browser + html = getBrowserHTML('outsrcbrowser','onmouseoutsrc','image','advimage'); + document.getElementById("onmouseoutsrccontainer").innerHTML = html; + + // Longdesc browser + html = getBrowserHTML('longdescbrowser','longdesc','file','advimage'); + document.getElementById("longdesccontainer").innerHTML = html; + + // Resize some elements + if (isVisible('srcbrowser')) + document.getElementById('src').style.width = '260px'; + + if (isVisible('oversrcbrowser')) + document.getElementById('onmouseoversrc').style.width = '260px'; + + if (isVisible('outsrcbrowser')) + document.getElementById('onmouseoutsrc').style.width = '260px'; + + if (isVisible('longdescbrowser')) + document.getElementById('longdesc').style.width = '180px'; + + // Check action + if (elm != null && elm.nodeName == "IMG") + action = "update"; + + formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); + + if (action == "update") { + var src = tinyMCE.getAttrib(elm, 'src'); + var onmouseoversrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); + var onmouseoutsrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); + + src = convertURL(src, elm, true); + + // Use mce_src if found + var mceRealSrc = tinyMCE.getAttrib(elm, 'mce_src'); + if (mceRealSrc != "") { + src = mceRealSrc; + + if (tinyMCE.getParam('convert_urls')) + src = convertURL(src, elm, true); + } + + if (onmouseoversrc != "" && tinyMCE.getParam('convert_urls')) + onmouseoversrc = convertURL(onmouseoversrc, elm, true); + + if (onmouseoutsrc != "" && tinyMCE.getParam('convert_urls')) + onmouseoutsrc = convertURL(onmouseoutsrc, elm, true); + + // Setup form data + var style = tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")); + + // Store away old size + orgImageWidth = trimSize(getStyle(elm, 'width')) + orgImageHeight = trimSize(getStyle(elm, 'height')); + + formObj.src.value = src; + formObj.alt.value = tinyMCE.getAttrib(elm, 'alt'); + formObj.title.value = tinyMCE.getAttrib(elm, 'title'); + formObj.border.value = trimSize(getStyle(elm, 'border', 'borderWidth')); + formObj.vspace.value = tinyMCE.getAttrib(elm, 'vspace'); + formObj.hspace.value = tinyMCE.getAttrib(elm, 'hspace'); + formObj.width.value = orgImageWidth; + formObj.height.value = orgImageHeight; + formObj.onmouseoversrc.value = onmouseoversrc; + formObj.onmouseoutsrc.value = onmouseoutsrc; + formObj.id.value = tinyMCE.getAttrib(elm, 'id'); + formObj.dir.value = tinyMCE.getAttrib(elm, 'dir'); + formObj.lang.value = tinyMCE.getAttrib(elm, 'lang'); + formObj.longdesc.value = tinyMCE.getAttrib(elm, 'longdesc'); + formObj.usemap.value = tinyMCE.getAttrib(elm, 'usemap'); + formObj.style.value = tinyMCE.serializeStyle(style); + + // Select by the values + if (tinyMCE.isMSIE) + selectByValue(formObj, 'align', getStyle(elm, 'align', 'styleFloat')); + else + selectByValue(formObj, 'align', getStyle(elm, 'align', 'cssFloat')); + + addClassesToList('classlist', 'advimage_styles'); + + selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class')); + selectByValue(formObj, 'imagelistsrc', src); + selectByValue(formObj, 'imagelistover', onmouseoversrc); + selectByValue(formObj, 'imagelistout', onmouseoutsrc); + + updateStyle(); + showPreviewImage(src, true); + changeAppearance(); + + window.focus(); + } else + addClassesToList('classlist', 'advimage_styles'); + + // If option enabled default contrain proportions to checked + if (tinyMCE.getParam("advimage_constrain_proportions", true)) + formObj.constrain.checked = true; + + // Check swap image if valid data + if (formObj.onmouseoversrc.value != "" || formObj.onmouseoutsrc.value != "") + setSwapImageDisabled(false); + else + setSwapImageDisabled(true); +} + +function setSwapImageDisabled(state) { + var formObj = document.forms[0]; + + formObj.onmousemovecheck.checked = !state; + + setBrowserDisabled('overbrowser', state); + setBrowserDisabled('outbrowser', state); + + if (formObj.imagelistover) + formObj.imagelistover.disabled = state; + + if (formObj.imagelistout) + formObj.imagelistout.disabled = state; + + formObj.onmouseoversrc.disabled = state; + formObj.onmouseoutsrc.disabled = state; +} + +function setAttrib(elm, attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value != "") { + elm.setAttribute(attrib, value); + + if (attrib == "style") + attrib = "style.cssText"; + + if (attrib == "longdesc") + attrib = "longDesc"; + + if (attrib == "width") { + attrib = "style.width"; + value = value + "px"; + value = value.replace(/%px/g, 'px'); + } + + if (attrib == "height") { + attrib = "style.height"; + value = value + "px"; + value = value.replace(/%px/g, 'px'); + } + + if (attrib == "class") + attrib = "className"; + + eval('elm.' + attrib + "=value;"); + } else { + if (attrib == 'class') + elm.className = ''; + + elm.removeAttribute(attrib); + } +} + +function makeAttrib(attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value == "") + return ""; + + // XML encode it + value = value.replace(/&/g, '&'); + value = value.replace(/\"/g, '"'); + value = value.replace(//g, '>'); + + return ' ' + attrib + '="' + value + '"'; +} + +function insertAction() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + var formObj = document.forms[0]; + var src = formObj.src.value; + var onmouseoversrc = formObj.onmouseoversrc.value; + var onmouseoutsrc = formObj.onmouseoutsrc.value; + + if (!AutoValidator.validate(formObj)) { + alert(tinyMCE.getLang('lang_invalid_data')); + return false; + } + + if (tinyMCE.getParam("accessibility_warnings")) { + if (formObj.alt.value == "" && !confirm(tinyMCE.getLang('lang_advimage_missing_alt', '', true))) + return; + } + + if (onmouseoversrc && onmouseoversrc != "") + onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';"; + + if (onmouseoutsrc && onmouseoutsrc != "") + onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';"; + + if (elm != null && elm.nodeName == "IMG") { + setAttrib(elm, 'src', convertURL(src, tinyMCE.imgElement)); + setAttrib(elm, 'mce_src', src); + setAttrib(elm, 'alt'); + setAttrib(elm, 'title'); + setAttrib(elm, 'border'); + setAttrib(elm, 'vspace'); + setAttrib(elm, 'hspace'); + setAttrib(elm, 'width'); + setAttrib(elm, 'height'); + setAttrib(elm, 'onmouseover', onmouseoversrc); + setAttrib(elm, 'onmouseout', onmouseoutsrc); + setAttrib(elm, 'id'); + setAttrib(elm, 'dir'); + setAttrib(elm, 'lang'); + setAttrib(elm, 'longdesc'); + setAttrib(elm, 'usemap'); + setAttrib(elm, 'style'); + setAttrib(elm, 'class', getSelectValue(formObj, 'classlist')); + setAttrib(elm, 'align', getSelectValue(formObj, 'align')); + + //tinyMCEPopup.execCommand("mceRepaint"); + + // Repaint if dimensions changed + if (formObj.width.value != orgImageWidth || formObj.height.value != orgImageHeight) + inst.repaint(); + + // Refresh in old MSIE + if (tinyMCE.isMSIE5) + elm.outerHTML = elm.outerHTML; + } else { + var html = "' +} + +function updateImageData(start) { + var formObj = document.forms[0]; + + preloadImg = document.getElementById('previewImg'); + + if (!start && formObj.width.value == "") + formObj.width.value = preloadImg.width; + + if (!start && formObj.height.value == "") + formObj.height.value = preloadImg.height; + + updateStyle(); +} + +function resetImageData() { + var formObj = document.forms[0]; + formObj.width.value = formObj.height.value = ""; +} + +function getSelectValue(form_obj, field_name) { + var elm = form_obj.elements[field_name]; + + if (elm == null || elm.options == null) + return ""; + + return elm.options[elm.selectedIndex].value; +} + +function getImageListHTML(elm_id, target_form_element, onchange_func) { + if (typeof(tinyMCEImageList) == "undefined" || tinyMCEImageList.length == 0) + return ""; + + var html = ""; + + html += ''; + + return html; + + // tinyMCE.debug('-- image list start --', html, '-- image list end --'); +} + +// While loading +preinit(); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en.js index ffd7e30c5..a73acd47a 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en.js @@ -1,27 +1,27 @@ -// UK lang variables - -tinyMCE.addToLang('advimage',{ -tab_general : 'General', -tab_appearance : 'Appearance', -tab_advanced : 'Advanced', -general : 'General', -title : 'Title', -preview : 'Preview', -constrain_proportions : 'Constrain proportions', -langdir : 'Language direction', -langcode : 'Language code', -long_desc : 'Long description link', -style : 'Style', -classes : 'Classes', -ltr : 'Left to right', -rtl : 'Right to left', -id : 'Id', -image_map : 'Image map', -swap_image : 'Swap image', -alt_image : 'Alternative image', -mouseover : 'for mouse over', -mouseout : 'for mouse out', -misc : 'Miscellaneous', -example_img : 'Appearance preview image', -missing_alt : 'Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.' -}); +// UK lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'General', +tab_appearance : 'Appearance', +tab_advanced : 'Advanced', +general : 'General', +title : 'Title', +preview : 'Preview', +constrain_proportions : 'Constrain proportions', +langdir : 'Language direction', +langcode : 'Language code', +long_desc : 'Long description link', +style : 'Style', +classes : 'Classes', +ltr : 'Left to right', +rtl : 'Right to left', +id : 'Id', +image_map : 'Image map', +swap_image : 'Swap image', +alt_image : 'Alternative image', +mouseover : 'for mouse over', +mouseout : 'for mouse out', +misc : 'Miscellaneous', +example_img : 'Appearance preview image', +missing_alt : 'Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.' +}); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/readme.txt similarity index 98% rename from lib/tinymce/jscripts/tiny_mce/plugins/advimage/readme.txt rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/readme.txt index 4fdb78aec..6bc6d7def 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advimage/readme.txt +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advimage/readme.txt @@ -1 +1 @@ -Check the TinyMCE documentation for details on this plugin. +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css similarity index 94% rename from lib/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css index 0cb37bd20..246162df2 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css @@ -1,35 +1,35 @@ -/* CSS file for advimage plugin popup */ - -.mceLinkList, .mceAnchorList, #targetlist { - width: 280px; -} - -.mceActionPanel { - margin-top: 7px; -} - -.panel_wrapper div.current { - height: 320px; -} - -#classlist, #title, #href { - width: 280px; -} - -#popupurl, #popupname { - width: 200px; -} - -#popupwidth, #popupheight, #popupleft, #popuptop { - width: 30px; - vertical-align: middle; - text-align: center; -} - -#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey { - width: 200px; -} - -#events_panel input { - width: 200px; -} +/* CSS file for advimage plugin popup */ + +.mceLinkList, .mceAnchorList, #targetlist { + width: 280px; +} + +.mceActionPanel { + margin-top: 7px; +} + +.panel_wrapper div.current { + height: 320px; +} + +#classlist, #title, #href { + width: 280px; +} + +#popupurl, #popupname { + width: 200px; +} + +#popupwidth, #popupheight, #popupleft, #popuptop { + width: 30px; + vertical-align: middle; + text-align: center; +} + +#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey { + width: 200px; +} + +#events_panel input { + width: 200px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js index f7e55dba5..c7eba8e56 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js @@ -1,80 +1,80 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('advlink'); - -var TinyMCE_AdvancedLinkPlugin = { - getInfo : function() { - return { - longname : 'Advanced link', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - inst.addShortcut('ctrl', 'k', 'lang_advlink_desc', 'mceAdvLink'); - }, - - getControlHTML : function(cn) { - switch (cn) { - case "link": - return tinyMCE.getButtonHTML(cn, 'lang_link_desc', '{$themeurl}/images/link.gif', 'mceAdvLink'); - } - - return ""; - }, - - execCommand : function(editor_id, element, command, user_interface, value) { - switch (command) { - case "mceAdvLink": - var inst = tinyMCE.getInstanceById(editor_id), anySelection = !inst.selection.isCollapsed(); - var focusElm = inst.getFocusElement(), selectedText = inst.selection.getSelectedText(); - - if (anySelection || (focusElm != null && focusElm.nodeName == "A")) { - tinyMCE.openWindow({ - file : '../../plugins/advlink/link.htm', - width : 480 + tinyMCE.getLang('lang_advlink_delta_width', 0), - height : 400 + tinyMCE.getLang('lang_advlink_delta_height', 0) - }, { - editor_id : editor_id, - inline : "yes" - }); - } - - return true; - } - - return false; - }, - - handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { - if (node == null) - return; - - do { - if (node.nodeName == "A" && tinyMCE.getAttrib(node, 'href') != "") { - tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonSelected'); - return true; - } - } while ((node = node.parentNode)); - - if (any_selection) { - tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonNormal'); - return true; - } - - tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonDisabled'); - - return true; - } -}; - -tinyMCE.addPlugin("advlink", TinyMCE_AdvancedLinkPlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('advlink'); + +var TinyMCE_AdvancedLinkPlugin = { + getInfo : function() { + return { + longname : 'Advanced link', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + inst.addShortcut('ctrl', 'k', 'lang_advlink_desc', 'mceAdvLink'); + }, + + getControlHTML : function(cn) { + switch (cn) { + case "link": + return tinyMCE.getButtonHTML(cn, 'lang_link_desc', '{$themeurl}/images/link.gif', 'mceAdvLink'); + } + + return ""; + }, + + execCommand : function(editor_id, element, command, user_interface, value) { + switch (command) { + case "mceAdvLink": + var inst = tinyMCE.getInstanceById(editor_id), anySelection = !inst.selection.isCollapsed(); + var focusElm = inst.getFocusElement(), selectedText = inst.selection.getSelectedText(); + + if (anySelection || (focusElm != null && focusElm.nodeName == "A")) { + tinyMCE.openWindow({ + file : '../../plugins/advlink/link.htm', + width : 480 + tinyMCE.getLang('lang_advlink_delta_width', 0), + height : 400 + tinyMCE.getLang('lang_advlink_delta_height', 0) + }, { + editor_id : editor_id, + inline : "yes" + }); + } + + return true; + } + + return false; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + if (node == null) + return; + + do { + if (node.nodeName == "A" && tinyMCE.getAttrib(node, 'href') != "") { + tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonSelected'); + return true; + } + } while ((node = node.parentNode)); + + if (any_selection) { + tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonNormal'); + return true; + } + + tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonDisabled'); + + return true; + } +}; + +tinyMCE.addPlugin("advlink", TinyMCE_AdvancedLinkPlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/jscripts/functions.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/jscripts/functions.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/advlink/jscripts/functions.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/jscripts/functions.js index 681259620..a3d8c4784 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/jscripts/functions.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/jscripts/functions.js @@ -1,587 +1,587 @@ -/* Functions for the advlink plugin popup */ - -var templates = { - "window.open" : "window.open('${url}','${target}','${options}')" -}; - -function preinit() { - // Initialize - tinyMCE.setWindowArg('mce_windowresize', false); - - // Import external list url javascript - var url = tinyMCE.getParam("external_link_list_url"); - if (url != null) { - // Fix relative - if (url.charAt(0) != '/' && url.indexOf('://') == -1) - url = tinyMCE.documentBasePath + "/" + url; - - document.write(''); - } -} - -function changeClass() { - var formObj = document.forms[0]; - formObj.classes.value = getSelectValue(formObj, 'classlist'); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - var formObj = document.forms[0]; - var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); - var elm = inst.getFocusElement(); - var action = "insert"; - var html; - - document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink'); - document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink'); - document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href'); - document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href'); - document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target'); - - // Link list - html = getLinkListHTML('linklisthref','href'); - if (html == "") - document.getElementById("linklisthrefrow").style.display = 'none'; - else - document.getElementById("linklisthrefcontainer").innerHTML = html; - - // Resize some elements - if (isVisible('hrefbrowser')) - document.getElementById('href').style.width = '260px'; - - if (isVisible('popupurlbrowser')) - document.getElementById('popupurl').style.width = '180px'; - - elm = tinyMCE.getParentElement(elm, "a"); - if (elm != null && elm.nodeName == "A") - action = "update"; - - formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); - - setPopupControlsDisabled(true); - - if (action == "update") { - var href = tinyMCE.getAttrib(elm, 'href'); - - href = convertURL(href, elm, true); - - // Use mce_href if found - var mceRealHref = tinyMCE.getAttrib(elm, 'mce_href'); - if (mceRealHref != "") { - href = mceRealHref; - - if (tinyMCE.getParam('convert_urls')) - href = convertURL(href, elm, true); - } - - var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick')); - - // Setup form data - setFormValue('href', href); - setFormValue('title', tinyMCE.getAttrib(elm, 'title')); - setFormValue('id', tinyMCE.getAttrib(elm, 'id')); - setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")))); - setFormValue('rel', tinyMCE.getAttrib(elm, 'rel')); - setFormValue('rev', tinyMCE.getAttrib(elm, 'rev')); - setFormValue('charset', tinyMCE.getAttrib(elm, 'charset')); - setFormValue('hreflang', tinyMCE.getAttrib(elm, 'hreflang')); - setFormValue('dir', tinyMCE.getAttrib(elm, 'dir')); - setFormValue('lang', tinyMCE.getAttrib(elm, 'lang')); - setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); - setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); - setFormValue('type', tinyMCE.getAttrib(elm, 'type')); - setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus'))); - setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur'))); - setFormValue('onclick', onclick); - setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick'))); - setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown'))); - setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup'))); - setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); - setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove'))); - setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); - setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress'))); - setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown'))); - setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup'))); - setFormValue('target', tinyMCE.getAttrib(elm, 'target')); - setFormValue('classes', tinyMCE.getAttrib(elm, 'class')); - - // Parse onclick data - if (onclick != null && onclick.indexOf('window.open') != -1) - parseWindowOpen(onclick); - else - parseFunction(onclick); - - // Select by the values - selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir')); - selectByValue(formObj, 'rel', tinyMCE.getAttrib(elm, 'rel')); - selectByValue(formObj, 'rev', tinyMCE.getAttrib(elm, 'rev')); - selectByValue(formObj, 'linklisthref', href); - - if (href.charAt(0) == '#') - selectByValue(formObj, 'anchorlist', href); - - addClassesToList('classlist', 'advlink_styles'); - - selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'), true); - selectByValue(formObj, 'targetlist', tinyMCE.getAttrib(elm, 'target'), true); - } else - addClassesToList('classlist', 'advlink_styles'); - - window.focus(); -} - -function checkPrefix(n) { - if (!Validator.isEmpty(n) && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCE.getLang('lang_is_email'))) - n.value = 'mailto:' + n.value; - - if (/^\s*www./i.test(n.value) && confirm(tinyMCE.getLang('lang_is_external'))) - n.value = 'http://' + n.value; -} - -function setFormValue(name, value) { - document.forms[0].elements[name].value = value; -} - -function convertURL(url, node, on_save) { - return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);"); -} - -function parseWindowOpen(onclick) { - var formObj = document.forms[0]; - - // Preprocess center code - if (onclick.indexOf('return false;') != -1) { - formObj.popupreturn.checked = true; - onclick = onclick.replace('return false;', ''); - } else - formObj.popupreturn.checked = false; - - var onClickData = parseLink(onclick); - - if (onClickData != null) { - formObj.ispopup.checked = true; - setPopupControlsDisabled(false); - - var onClickWindowOptions = parseOptions(onClickData['options']); - var url = onClickData['url']; - - if (tinyMCE.getParam('convert_urls')) - url = convertURL(url, null, true); - - formObj.popupname.value = onClickData['target']; - formObj.popupurl.value = url; - formObj.popupwidth.value = getOption(onClickWindowOptions, 'width'); - formObj.popupheight.value = getOption(onClickWindowOptions, 'height'); - - formObj.popupleft.value = getOption(onClickWindowOptions, 'left'); - formObj.popuptop.value = getOption(onClickWindowOptions, 'top'); - - if (formObj.popupleft.value.indexOf('screen') != -1) - formObj.popupleft.value = "c"; - - if (formObj.popuptop.value.indexOf('screen') != -1) - formObj.popuptop.value = "c"; - - formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes"; - formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes"; - formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes"; - formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes"; - formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes"; - formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes"; - formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes"; - - buildOnClick(); - } -} - -function parseFunction(onclick) { - var formObj = document.forms[0]; - var onClickData = parseLink(onclick); - - // TODO: Add stuff here -} - -function getOption(opts, name) { - return typeof(opts[name]) == "undefined" ? "" : opts[name]; -} - -function setPopupControlsDisabled(state) { - var formObj = document.forms[0]; - - formObj.popupname.disabled = state; - formObj.popupurl.disabled = state; - formObj.popupwidth.disabled = state; - formObj.popupheight.disabled = state; - formObj.popupleft.disabled = state; - formObj.popuptop.disabled = state; - formObj.popuplocation.disabled = state; - formObj.popupscrollbars.disabled = state; - formObj.popupmenubar.disabled = state; - formObj.popupresizable.disabled = state; - formObj.popuptoolbar.disabled = state; - formObj.popupstatus.disabled = state; - formObj.popupreturn.disabled = state; - formObj.popupdependent.disabled = state; - - setBrowserDisabled('popupurlbrowser', state); -} - -function parseLink(link) { - link = link.replace(new RegExp(''', 'g'), "'"); - - var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1"); - - // Is function name a template function - var template = templates[fnName]; - if (template) { - // Build regexp - var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi")); - var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\("; - var replaceStr = ""; - for (var i=0; i'); - for (var i=0; i'; - html += ''; - - for (i=0; i' + name + ''; - } - - html += ''; - - return html; -} - -function insertAction() { - var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); - var elm = inst.getFocusElement(); - - checkPrefix(document.forms[0].href); - - elm = tinyMCE.getParentElement(elm, "a"); - - tinyMCEPopup.execCommand("mceBeginUndoLevel"); - - // Create new anchor elements - if (elm == null) { - if (tinyMCE.isSafari) - tinyMCEPopup.execCommand("mceInsertContent", false, '' + inst.selection.getSelectedHTML() + ''); - else - tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#"); - - var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#"); - for (var i=0; i' + tinyMCELinkList[i][0] + ''; - - html += ''; - - return html; - - // tinyMCE.debug('-- image list start --', html, '-- image list end --'); -} - -function getTargetListHTML(elm_id, target_form_element) { - var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';'); - var html = ''; - - html += ''; - - return html; -} - -// While loading -preinit(); +/* Functions for the advlink plugin popup */ + +var templates = { + "window.open" : "window.open('${url}','${target}','${options}')" +}; + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); + + // Import external list url javascript + var url = tinyMCE.getParam("external_link_list_url"); + if (url != null) { + // Fix relative + if (url.charAt(0) != '/' && url.indexOf('://') == -1) + url = tinyMCE.documentBasePath + "/" + url; + + document.write(''); + } +} + +function changeClass() { + var formObj = document.forms[0]; + formObj.classes.value = getSelectValue(formObj, 'classlist'); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var formObj = document.forms[0]; + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + var action = "insert"; + var html; + + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink'); + document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink'); + document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href'); + document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href'); + document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target'); + + // Link list + html = getLinkListHTML('linklisthref','href'); + if (html == "") + document.getElementById("linklisthrefrow").style.display = 'none'; + else + document.getElementById("linklisthrefcontainer").innerHTML = html; + + // Resize some elements + if (isVisible('hrefbrowser')) + document.getElementById('href').style.width = '260px'; + + if (isVisible('popupurlbrowser')) + document.getElementById('popupurl').style.width = '180px'; + + elm = tinyMCE.getParentElement(elm, "a"); + if (elm != null && elm.nodeName == "A") + action = "update"; + + formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); + + setPopupControlsDisabled(true); + + if (action == "update") { + var href = tinyMCE.getAttrib(elm, 'href'); + + href = convertURL(href, elm, true); + + // Use mce_href if found + var mceRealHref = tinyMCE.getAttrib(elm, 'mce_href'); + if (mceRealHref != "") { + href = mceRealHref; + + if (tinyMCE.getParam('convert_urls')) + href = convertURL(href, elm, true); + } + + var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick')); + + // Setup form data + setFormValue('href', href); + setFormValue('title', tinyMCE.getAttrib(elm, 'title')); + setFormValue('id', tinyMCE.getAttrib(elm, 'id')); + setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")))); + setFormValue('rel', tinyMCE.getAttrib(elm, 'rel')); + setFormValue('rev', tinyMCE.getAttrib(elm, 'rev')); + setFormValue('charset', tinyMCE.getAttrib(elm, 'charset')); + setFormValue('hreflang', tinyMCE.getAttrib(elm, 'hreflang')); + setFormValue('dir', tinyMCE.getAttrib(elm, 'dir')); + setFormValue('lang', tinyMCE.getAttrib(elm, 'lang')); + setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); + setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); + setFormValue('type', tinyMCE.getAttrib(elm, 'type')); + setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus'))); + setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur'))); + setFormValue('onclick', onclick); + setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick'))); + setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown'))); + setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup'))); + setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); + setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove'))); + setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); + setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress'))); + setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown'))); + setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup'))); + setFormValue('target', tinyMCE.getAttrib(elm, 'target')); + setFormValue('classes', tinyMCE.getAttrib(elm, 'class')); + + // Parse onclick data + if (onclick != null && onclick.indexOf('window.open') != -1) + parseWindowOpen(onclick); + else + parseFunction(onclick); + + // Select by the values + selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir')); + selectByValue(formObj, 'rel', tinyMCE.getAttrib(elm, 'rel')); + selectByValue(formObj, 'rev', tinyMCE.getAttrib(elm, 'rev')); + selectByValue(formObj, 'linklisthref', href); + + if (href.charAt(0) == '#') + selectByValue(formObj, 'anchorlist', href); + + addClassesToList('classlist', 'advlink_styles'); + + selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'), true); + selectByValue(formObj, 'targetlist', tinyMCE.getAttrib(elm, 'target'), true); + } else + addClassesToList('classlist', 'advlink_styles'); + + window.focus(); +} + +function checkPrefix(n) { + if (!Validator.isEmpty(n) && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCE.getLang('lang_is_email'))) + n.value = 'mailto:' + n.value; + + if (/^\s*www./i.test(n.value) && confirm(tinyMCE.getLang('lang_is_external'))) + n.value = 'http://' + n.value; +} + +function setFormValue(name, value) { + document.forms[0].elements[name].value = value; +} + +function convertURL(url, node, on_save) { + return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);"); +} + +function parseWindowOpen(onclick) { + var formObj = document.forms[0]; + + // Preprocess center code + if (onclick.indexOf('return false;') != -1) { + formObj.popupreturn.checked = true; + onclick = onclick.replace('return false;', ''); + } else + formObj.popupreturn.checked = false; + + var onClickData = parseLink(onclick); + + if (onClickData != null) { + formObj.ispopup.checked = true; + setPopupControlsDisabled(false); + + var onClickWindowOptions = parseOptions(onClickData['options']); + var url = onClickData['url']; + + if (tinyMCE.getParam('convert_urls')) + url = convertURL(url, null, true); + + formObj.popupname.value = onClickData['target']; + formObj.popupurl.value = url; + formObj.popupwidth.value = getOption(onClickWindowOptions, 'width'); + formObj.popupheight.value = getOption(onClickWindowOptions, 'height'); + + formObj.popupleft.value = getOption(onClickWindowOptions, 'left'); + formObj.popuptop.value = getOption(onClickWindowOptions, 'top'); + + if (formObj.popupleft.value.indexOf('screen') != -1) + formObj.popupleft.value = "c"; + + if (formObj.popuptop.value.indexOf('screen') != -1) + formObj.popuptop.value = "c"; + + formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes"; + formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes"; + formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes"; + formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes"; + formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes"; + formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes"; + formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes"; + + buildOnClick(); + } +} + +function parseFunction(onclick) { + var formObj = document.forms[0]; + var onClickData = parseLink(onclick); + + // TODO: Add stuff here +} + +function getOption(opts, name) { + return typeof(opts[name]) == "undefined" ? "" : opts[name]; +} + +function setPopupControlsDisabled(state) { + var formObj = document.forms[0]; + + formObj.popupname.disabled = state; + formObj.popupurl.disabled = state; + formObj.popupwidth.disabled = state; + formObj.popupheight.disabled = state; + formObj.popupleft.disabled = state; + formObj.popuptop.disabled = state; + formObj.popuplocation.disabled = state; + formObj.popupscrollbars.disabled = state; + formObj.popupmenubar.disabled = state; + formObj.popupresizable.disabled = state; + formObj.popuptoolbar.disabled = state; + formObj.popupstatus.disabled = state; + formObj.popupreturn.disabled = state; + formObj.popupdependent.disabled = state; + + setBrowserDisabled('popupurlbrowser', state); +} + +function parseLink(link) { + link = link.replace(new RegExp(''', 'g'), "'"); + + var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1"); + + // Is function name a template function + var template = templates[fnName]; + if (template) { + // Build regexp + var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi")); + var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\("; + var replaceStr = ""; + for (var i=0; i'); + for (var i=0; i'; + html += ''; + + for (i=0; i' + name + ''; + } + + html += ''; + + return html; +} + +function insertAction() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + + checkPrefix(document.forms[0].href); + + elm = tinyMCE.getParentElement(elm, "a"); + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + + // Create new anchor elements + if (elm == null) { + if (tinyMCE.isSafari) + tinyMCEPopup.execCommand("mceInsertContent", false, '' + inst.selection.getSelectedHTML() + ''); + else + tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#"); + + var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#"); + for (var i=0; i' + tinyMCELinkList[i][0] + ''; + + html += ''; + + return html; + + // tinyMCE.debug('-- image list start --', html, '-- image list end --'); +} + +function getTargetListHTML(elm_id, target_form_element) { + var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';'); + var html = ''; + + html += ''; + + return html; +} + +// While loading +preinit(); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en.js index 1d50e4e89..6f886c056 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en.js @@ -1,46 +1,46 @@ -// UK lang variables - -tinyMCE.addToLang('advlink',{ -general_tab : 'General', -popup_tab : 'Popup', -events_tab : 'Events', -advanced_tab : 'Advanced', -general_props : 'General properties', -popup_props : 'Popup properties', -event_props : 'Events', -advanced_props : 'Advanced properties', -popup_opts : 'Options', -anchor_names : 'Anchors', -target_same : 'Open in this window / frame', -target_parent : 'Open in parent window / frame', -target_top : 'Open in top frame (replaces all frames)', -target_blank : 'Open in new window', -popup : 'Javascript popup', -popup_url : 'Popup URL', -popup_name : 'Window name', -popup_return : 'Insert \'return false\'', -popup_scrollbars : 'Show scrollbars', -popup_statusbar : 'Show status bar', -popup_toolbar : 'Show toolbars', -popup_menubar : 'Show menu bar', -popup_location : 'Show location bar', -popup_resizable : 'Make window resizable', -popup_dependent : 'Dependent (Mozilla/Firefox only)', -popup_size : 'Size', -popup_position : 'Position (X/Y)', -id : 'Id', -style: 'Style', -classes : 'Classes', -target_name : 'Target name', -langdir : 'Language direction', -target_langcode : 'Target language', -langcode : 'Language code', -encoding : 'Target character encoding', -mime : 'Target MIME type', -rel : 'Relationship page to target', -rev : 'Relationship target to page', -tabindex : 'Tabindex', -accesskey : 'Accesskey', -ltr : 'Left to right', -rtl : 'Right to left' +// UK lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'General', +popup_tab : 'Popup', +events_tab : 'Events', +advanced_tab : 'Advanced', +general_props : 'General properties', +popup_props : 'Popup properties', +event_props : 'Events', +advanced_props : 'Advanced properties', +popup_opts : 'Options', +anchor_names : 'Anchors', +target_same : 'Open in this window / frame', +target_parent : 'Open in parent window / frame', +target_top : 'Open in top frame (replaces all frames)', +target_blank : 'Open in new window', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'Window name', +popup_return : 'Insert \'return false\'', +popup_scrollbars : 'Show scrollbars', +popup_statusbar : 'Show status bar', +popup_toolbar : 'Show toolbars', +popup_menubar : 'Show menu bar', +popup_location : 'Show location bar', +popup_resizable : 'Make window resizable', +popup_dependent : 'Dependent (Mozilla/Firefox only)', +popup_size : 'Size', +popup_position : 'Position (X/Y)', +id : 'Id', +style: 'Style', +classes : 'Classes', +target_name : 'Target name', +langdir : 'Language direction', +target_langcode : 'Target language', +langcode : 'Language code', +encoding : 'Target character encoding', +mime : 'Target MIME type', +rel : 'Relationship page to target', +rev : 'Relationship target to page', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Left to right', +rtl : 'Right to left' }); \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm index 95d89a12a..290b485fa 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm @@ -1,338 +1,338 @@ - - - {$lang_insert_link_title} - - - - - - - - - -
- - -
-
-
- {$lang_advlink_general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
 
 
 
 
- -
-
-
- - - -
-
- {$lang_advlink_advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-
-
-
- -
-
- {$lang_advlink_event_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_insert_link_title} + + + + + + + + + +
+ + +
+
+
+ {$lang_advlink_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
 
 
 
+ +
+
+
+ + + +
+
+ {$lang_advlink_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ {$lang_advlink_event_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/autosave/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/readme.txt similarity index 98% rename from lib/tinymce/jscripts/tiny_mce/plugins/autosave/readme.txt rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/readme.txt index 4fdb78aec..6bc6d7def 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/autosave/readme.txt +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/advlink/readme.txt @@ -1 +1 @@ -Check the TinyMCE documentation for details on this plugin. +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js index 21b04aa11..cd0473044 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js @@ -1,46 +1,46 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('autosave'); - -var TinyMCE_AutoSavePlugin = { - getInfo : function() { - return { - longname : 'Auto save', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - // Private plugin internal methods - - _beforeUnloadHandler : function() { - var n, inst, anyDirty = false, msg = tinyMCE.getLang("lang_autosave_unload_msg"); - - if (tinyMCE.getParam("fullscreen_is_enabled")) - return; - - for (n in tinyMCE.instances) { - inst = tinyMCE.instances[n]; - - if (!tinyMCE.isInstance(inst)) - continue; - - if (inst.isDirty()) - return msg; - } - - return; - } -}; - -window.onbeforeunload = TinyMCE_AutoSavePlugin._beforeUnloadHandler; - -tinyMCE.addPlugin("autosave", TinyMCE_AutoSavePlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('autosave'); + +var TinyMCE_AutoSavePlugin = { + getInfo : function() { + return { + longname : 'Auto save', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + // Private plugin internal methods + + _beforeUnloadHandler : function() { + var n, inst, anyDirty = false, msg = tinyMCE.getLang("lang_autosave_unload_msg"); + + if (tinyMCE.getParam("fullscreen_is_enabled")) + return; + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + if (inst.isDirty()) + return msg; + } + + return; + } +}; + +window.onbeforeunload = TinyMCE_AutoSavePlugin._beforeUnloadHandler; + +tinyMCE.addPlugin("autosave", TinyMCE_AutoSavePlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js index 01951332d..a1849339c 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js @@ -1,5 +1,5 @@ -// EN lang variables - -tinyMCE.addToLang('',{ -autosave_unload_msg : 'The changes you made will be lost if you navigate away from this page.' -}); +// EN lang variables + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'The changes you made will be lost if you navigate away from this page.' +}); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/readme.txt similarity index 98% rename from lib/tinymce/jscripts/tiny_mce/plugins/advlink/readme.txt rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/readme.txt index 4fdb78aec..6bc6d7def 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/advlink/readme.txt +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/autosave/readme.txt @@ -1 +1 @@ -Check the TinyMCE documentation for details on this plugin. +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js index 1d38317e2..99f63f721 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js @@ -1,102 +1,102 @@ -var TinyMCE_BBCodePlugin = { - getInfo : function() { - return { - longname : 'BBCode Plugin', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - cleanup : function(type, content) { - var dialect = tinyMCE.getParam('bbcode_dialect', 'punbb').toLowerCase(); - - switch (type) { - case "insert_to_editor": - content = this['_' + dialect + '_bbcode2html'](content); - break; - - case "get_from_editor": - content = this['_' + dialect + '_html2bbcode'](content); - break; - } - - return content; - }, - - // Private methods - - // HTML -> BBCode in PunBB dialect - _punbb_html2bbcode : function(s) { - s = tinyMCE.trim(s); - - function rep(re, str) { - s = s.replace(re, str); - }; - - // example: to [b] - rep(/(.*?)<\/a>/gi,"[url]$1[/url]"); - rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); - rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); - rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); - rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); - rep(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"); - rep(/(.*?)<\/font>/gi,"$1"); - rep(//gi,"[img]$1[/img]"); - rep(/(.*?)<\/span>/gi,"[code]$1[/code]"); - rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]"); - rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"); - rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"); - rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"); - rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"); - rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"); - rep(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"); - rep(/<\/(strong|b)>/gi,"[/b]"); - rep(/<(strong|b)>/gi,"[b]"); - rep(/<\/(em|i)>/gi,"[/i]"); - rep(/<(em|i)>/gi,"[i]"); - rep(/<\/u>/gi,"[/u]"); - rep(//gi,"[u]"); - rep(/
/gi,"\n"); - rep(//gi,"\n"); - rep(/
/gi,"\n"); - rep(/

/gi,""); - rep(/<\/p>/gi,"\n"); - rep(/ /gi," "); - rep(/"/gi,"\""); - rep(/</gi,"<"); - rep(/>/gi,">"); - rep(/&/gi,"&"); - rep(/&undefined;/gi,"'"); // quickfix - - return s; - }, - - // BBCode -> HTML from PunBB dialect - _punbb_bbcode2html : function(s) { - s = tinyMCE.trim(s); - - function rep(re, str) { - s = s.replace(re, str); - }; - - // example: [b] to - rep(/\n/gi,"
"); - rep(/\[b\]/gi,""); - rep(/\[\/b\]/gi,""); - rep(/\[i\]/gi,""); - rep(/\[\/i\]/gi,""); - rep(/\[u\]/gi,""); - rep(/\[\/u\]/gi,""); - rep(/\[url\](.*?)\[\/url\]/gi,"
$1"); - rep(/\[img\](.*?)\[\/img\]/gi,""); - rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); - rep(/\[code\](.*?)\[\/code\]/gi,"$1 "); - rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 "); - - return s; - } -}; - -tinyMCE.addPlugin("bbcode", TinyMCE_BBCodePlugin); +var TinyMCE_BBCodePlugin = { + getInfo : function() { + return { + longname : 'BBCode Plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + cleanup : function(type, content) { + var dialect = tinyMCE.getParam('bbcode_dialect', 'punbb').toLowerCase(); + + switch (type) { + case "insert_to_editor": + content = this['_' + dialect + '_bbcode2html'](content); + break; + + case "get_from_editor": + content = this['_' + dialect + '_html2bbcode'](content); + break; + } + + return content; + }, + + // Private methods + + // HTML -> BBCode in PunBB dialect + _punbb_html2bbcode : function(s) { + s = tinyMCE.trim(s); + + function rep(re, str) { + s = s.replace(re, str); + }; + + // example: to [b] + rep(/(.*?)<\/a>/gi,"[url]$1[/url]"); + rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); + rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); + rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); + rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); + rep(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"); + rep(/(.*?)<\/font>/gi,"$1"); + rep(//gi,"[img]$1[/img]"); + rep(/(.*?)<\/span>/gi,"[code]$1[/code]"); + rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]"); + rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"); + rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"); + rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"); + rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"); + rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"); + rep(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"); + rep(/<\/(strong|b)>/gi,"[/b]"); + rep(/<(strong|b)>/gi,"[b]"); + rep(/<\/(em|i)>/gi,"[/i]"); + rep(/<(em|i)>/gi,"[i]"); + rep(/<\/u>/gi,"[/u]"); + rep(//gi,"[u]"); + rep(/
/gi,"\n"); + rep(//gi,"\n"); + rep(/
/gi,"\n"); + rep(/

/gi,""); + rep(/<\/p>/gi,"\n"); + rep(/ /gi," "); + rep(/"/gi,"\""); + rep(/</gi,"<"); + rep(/>/gi,">"); + rep(/&/gi,"&"); + rep(/&undefined;/gi,"'"); // quickfix + + return s; + }, + + // BBCode -> HTML from PunBB dialect + _punbb_bbcode2html : function(s) { + s = tinyMCE.trim(s); + + function rep(re, str) { + s = s.replace(re, str); + }; + + // example: [b] to + rep(/\n/gi,"
"); + rep(/\[b\]/gi,""); + rep(/\[\/b\]/gi,""); + rep(/\[i\]/gi,""); + rep(/\[\/i\]/gi,""); + rep(/\[u\]/gi,""); + rep(/\[\/u\]/gi,""); + rep(/\[url\](.*?)\[\/url\]/gi,"
$1"); + rep(/\[img\](.*?)\[\/img\]/gi,""); + rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); + rep(/\[code\](.*?)\[\/code\]/gi,"$1 "); + rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 "); + + return s; + } +}; + +tinyMCE.addPlugin("bbcode", TinyMCE_BBCodePlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin_src.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin_src.js index 0bd2bccff..4db05a7a4 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/cleanup/editor_plugin_src.js @@ -1,10 +1,10 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * Experimental plugin for new Cleanup routine, this logic will be moved into the core ones it's stable enougth. - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Dummy file since cleanup is now moved to core */ +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * Experimental plugin for new Cleanup routine, this logic will be moved into the core ones it's stable enougth. + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Dummy file since cleanup is now moved to core */ diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/cleanup/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/cleanup/readme.txt similarity index 98% rename from lib/tinymce/jscripts/tiny_mce/plugins/cleanup/readme.txt rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/cleanup/readme.txt index d1a646663..7a803b00f 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/cleanup/readme.txt +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/cleanup/readme.txt @@ -1 +1 @@ -Dummy plugin since cleanup is now moved into core. +Dummy plugin since cleanup is now moved into core. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/css/contextmenu.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/css/contextmenu.css similarity index 93% rename from lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/css/contextmenu.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/css/contextmenu.css index fb3721468..a4ad1e9b7 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/css/contextmenu.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/css/contextmenu.css @@ -1,74 +1,74 @@ -.contextMenuIEPopup { - padding: 0; - margin: 0; - border: 0; - overflow: hidden; -} - -.contextMenu { - position: absolute; - cursor: default; - z-index: 1000; - border: 1px solid #D4D0C8; - background-color: #FFFFFF; -} - -.contextMenuItem, .contextMenuItemOver { -} - -.contextMenuSeparator { - width: 100%; - background-color: #D4D0C8; - border: 0; -} - -.contextMenuImage, .contextMenuItemDisabled { - border: 0; -} - -.contextMenuIcon { - background-color: #F0F0EE; -} - -.contextMenuItemOver .contextMenuIcon { - background-color: #B6BDD2; -} - -.contextMenuIcon { - background-color: #F0F0EE; -} - -.contextMenuItemDisabled img { - filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); - -moz-opacity:0.3; - opacity: 0.3; -} - -.contextMenuText { - font-family: Tahoma, Verdana, Arial, Helvetica; - font-size: 11px; - line-height: 20px; -} - -.contextMenuItemDisabled { - color: #AAAAAA; -} - -.contextMenuText a { - display: block; - line-height: 20px; - width: 100%; - text-decoration: none; - color: black; - font-weight: normal; - margin: 0; - padding: 0; -} - -.contextMenuText a:hover { - background-color: #B6BDD2; - text-decoration: none !important; - font-weight: normal; - margin: 0; - padding: 0; -} +.contextMenuIEPopup { + padding: 0; + margin: 0; + border: 0; + overflow: hidden; +} + +.contextMenu { + position: absolute; + cursor: default; + z-index: 1000; + border: 1px solid #D4D0C8; + background-color: #FFFFFF; +} + +.contextMenuItem, .contextMenuItemOver { +} + +.contextMenuSeparator { + width: 100%; + background-color: #D4D0C8; + border: 0; +} + +.contextMenuImage, .contextMenuItemDisabled { + border: 0; +} + +.contextMenuIcon { + background-color: #F0F0EE; +} + +.contextMenuItemOver .contextMenuIcon { + background-color: #B6BDD2; +} + +.contextMenuIcon { + background-color: #F0F0EE; +} + +.contextMenuItemDisabled img { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + -moz-opacity:0.3; + opacity: 0.3; +} + +.contextMenuText { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 11px; + line-height: 20px; +} + +.contextMenuItemDisabled { + color: #AAAAAA; +} + +.contextMenuText a { + display: block; + line-height: 20px; + width: 100%; + text-decoration: none; + color: black; + font-weight: normal; + margin: 0; + padding: 0; +} + +.contextMenuText a:hover { + background-color: #B6BDD2; + text-decoration: none !important; + font-weight: normal; + margin: 0; + padding: 0; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js index bd4c5e04a..ae3b5905d 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js @@ -1,360 +1,360 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -if (!tinyMCE.settings['contextmenu_skip_plugin_css']) { - tinyMCE.loadCSS(tinyMCE.baseURL + "/plugins/contextmenu/css/contextmenu.css"); -} - -var TinyMCE_ContextMenuPlugin = { - // Private fields - _contextMenu : null, - - getInfo : function() { - return { - longname : 'Context menus', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - // Is not working on MSIE 5.0 or Opera no contextmenu event - if (tinyMCE.isMSIE5_0 && tinyMCE.isOpera) - return; - - TinyMCE_ContextMenuPlugin._contextMenu = new TinyMCE_ContextMenu({ - commandhandler : "TinyMCE_ContextMenuPlugin._commandHandler", - spacer_image : tinyMCE.baseURL + "/plugins/contextmenu/images/spacer.gif" - }); - - // Add hide event handles - tinyMCE.addEvent(inst.getDoc(), "click", TinyMCE_ContextMenuPlugin._hideContextMenu); - tinyMCE.addEvent(inst.getDoc(), "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu); - tinyMCE.addEvent(inst.getDoc(), "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu); - tinyMCE.addEvent(document, "click", TinyMCE_ContextMenuPlugin._hideContextMenu); - tinyMCE.addEvent(document, "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu); - tinyMCE.addEvent(document, "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu); - - // Attach contextmenu event - if (tinyMCE.isGecko) { - tinyMCE.addEvent(inst.getDoc(), "contextmenu", function(e) {TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? inst.contentWindow.event : e, inst);}); - } else - tinyMCE.addEvent(inst.getDoc(), "contextmenu", TinyMCE_ContextMenuPlugin._onContextMenu); - }, - - // Private plugin internal methods - - _onContextMenu : function(e) { - var elm = tinyMCE.isMSIE ? e.srcElement : e.target; - var targetInst, body; - - // Find instance - if ((body = tinyMCE.getParentElement(elm, "body")) != null) { - for (var n in tinyMCE.instances) { - var inst = tinyMCE.instances[n]; - if (!tinyMCE.isInstance(inst)) - continue; - - if (body == inst.getBody()) { - targetInst = inst; - break; - } - } - - return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? targetInst.contentWindow.event : e, targetInst); - } - }, - - _showContextMenu : function(e, inst) { - if (e.ctrlKey) - return true; - - function getAttrib(elm, name) { - return elm.getAttribute(name) ? elm.getAttribute(name) : ""; - } - - var x, y, elm, contextMenu; - var pos = tinyMCE.getAbsPosition(inst.iframeElement); - - x = tinyMCE.isMSIE ? e.screenX : pos.absLeft + (e.pageX - inst.getBody().scrollLeft); - y = tinyMCE.isMSIE ? e.screenY : pos.absTop + (e.pageY - inst.getBody().scrollTop); - elm = tinyMCE.isMSIE ? e.srcElement : e.target; - - contextMenu = this._contextMenu; - contextMenu.inst = inst; - - // Mozilla needs some time - window.setTimeout(function () { - var theme = tinyMCE.getParam("theme"); - - contextMenu.clearAll(); - var sel = inst.selection.getSelectedText().length != 0 || elm.nodeName == "IMG"; - - // Default items - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_cut_desc", "Cut", "", !sel); - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_copy_desc", "Copy", "", !sel); - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_paste_desc", "Paste", "", false); - - if (sel || (elm ? (elm.nodeName == 'A' && tinyMCE.getAttrib(elm, 'name') == '') || (elm.nodeName == 'IMG') : false)) { - contextMenu.addSeparator(); - contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/link.gif", "$lang_link_desc", inst.hasPlugin("advlink") ? "mceAdvLink" : "mceLink"); - contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/unlink.gif", "$lang_unlink_desc", "unlink", "", (elm ? (elm.nodeName != 'A') && (elm.nodeName != 'IMG') : true)); - } - - // Get element - elm = tinyMCE.getParentElement(elm, "img,table,td" + (inst.hasPlugin("advhr") ? ',hr' : '')); - if (elm) { - switch (elm.nodeName) { - case "IMG": - contextMenu.addSeparator(); - - // If flash - if (tinyMCE.hasPlugin('flash') && tinyMCE.getAttrib(elm, 'class').indexOf('mceItemFlash') != -1) - contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_flash_props", "mceFlash"); - else if (tinyMCE.hasPlugin('media') && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm, 'class'))) - contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_media_title", "mceMedia"); - else - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/image.gif", "$lang_image_props_desc", inst.hasPlugin("advimage") ? "mceAdvImage" : "mceImage"); - break; - - case "HR": - contextMenu.addSeparator(); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/advhr/images/advhr.gif", "$lang_insert_advhr_desc", "mceAdvancedHr"); - break; - - case "TABLE": - case "TD": - // Is table plugin loaded - if (inst.hasPlugin("table")) { - var colspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "colspan"); - var rowspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "rowspan"); - - colspan = colspan == "" ? "1" : colspan; - rowspan = rowspan == "" ? "1" : rowspan; - - contextMenu.addSeparator(); - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_table_cut_row_desc", "mceTableCutRow"); - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_table_copy_row_desc", "mceTableCopyRow"); - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_before_desc", "mceTablePasteRowBefore", "", inst.tableRowClipboard == null); - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_after_desc", "mceTablePasteRowAfter", "", inst.tableRowClipboard == null); - - /* contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyleft.gif", "$lang_justifyleft_desc", "JustifyLeft", "", false); - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifycenter.gif", "$lang_justifycenter_desc", "JustifyCenter", "", false); - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyright.gif", "$lang_justifyright_desc", "JustifyRight", "", false); - contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyfull.gif", "$lang_justifyfull_desc", "JustifyFull", "", false);*/ - contextMenu.addSeparator(); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert"); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_props_desc", "mceInsertTable"); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_cell_props.gif", "$lang_table_cell_desc", "mceTableCellProps"); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete.gif", "$lang_table_del", "mceTableDelete"); - contextMenu.addSeparator(); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_row_props.gif", "$lang_table_row_desc", "mceTableRowProps"); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_before.gif", "$lang_table_row_before_desc", "mceTableInsertRowBefore"); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_after.gif", "$lang_table_row_after_desc", "mceTableInsertRowAfter"); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_row.gif", "$lang_table_delete_row_desc", "mceTableDeleteRow"); - contextMenu.addSeparator(); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_before.gif", "$lang_table_col_before_desc", "mceTableInsertColBefore"); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_after.gif", "$lang_table_col_after_desc", "mceTableInsertColAfter"); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_col.gif", "$lang_table_delete_col_desc", "mceTableDeleteCol"); - contextMenu.addSeparator(); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_split_cells.gif", "$lang_table_split_cells_desc", "mceTableSplitCells", "", (colspan == "1" && rowspan == "1")); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_merge_cells.gif", "$lang_table_merge_cells_desc", "mceTableMergeCells", "", false); - } - break; - } - } else { - // Add table specific - if (inst.hasPlugin("table")) { - contextMenu.addSeparator(); - contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert"); - } - } - - contextMenu.show(x, y); - }, 10); - - // Cancel default handeling - tinyMCE.cancelEvent(e); - return false; - }, - - _hideContextMenu : function() { - if (TinyMCE_ContextMenuPlugin._contextMenu) - TinyMCE_ContextMenuPlugin._contextMenu.hide(); - }, - - _commandHandler : function(command, value) { - var cm = TinyMCE_ContextMenuPlugin._contextMenu; - - cm.hide(); - - // UI must be true on these - var ui = false; - if (command == "mceInsertTable" || command == "mceTableCellProps" || command == "mceTableRowProps" || command == "mceTableMergeCells") - ui = true; - - if (command == "Paste") - value = null; - - if (tinyMCE.getParam("dialog_type") == "modal" && tinyMCE.isMSIE) { - // Cell properties will generate access denied error is this isn't done?! - window.setTimeout(function() { - cm.inst.execCommand(command, ui, value); - }, 100); - } else - cm.inst.execCommand(command, ui, value); - } -}; - -tinyMCE.addPlugin("contextmenu", TinyMCE_ContextMenuPlugin); - -// Context menu class - -function TinyMCE_ContextMenu(settings) { - var doc, self = this; - - // Default value function - function defParam(key, def_val) { - settings[key] = typeof(settings[key]) != "undefined" ? settings[key] : def_val; - } - - this.isMSIE = (navigator.appName == "Microsoft Internet Explorer"); - - // Setup contextmenu div - this.contextMenuDiv = document.createElement("div"); - this.contextMenuDiv.className = "contextMenu"; - this.contextMenuDiv.setAttribute("class", "contextMenu"); - this.contextMenuDiv.style.display = "none"; - this.contextMenuDiv.style.position = 'absolute'; - this.contextMenuDiv.style.zindex = 1000; - this.contextMenuDiv.style.left = '0'; - this.contextMenuDiv.style.top = '0'; - this.contextMenuDiv.unselectable = "on"; - - document.body.appendChild(this.contextMenuDiv); - - // Setup default values - defParam("commandhandler", ""); - defParam("spacer_image", "images/spacer.gif"); - - this.items = new Array(); - this.settings = settings; - this.html = ""; - - // IE Popup - if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) { - this.pop = window.createPopup(); - doc = this.pop.document; - doc.open(); - doc.write(''); - doc.close(); - } -}; - -TinyMCE_ContextMenu.prototype = { - clearAll : function() { - this.html = ""; - this.contextMenuDiv.innerHTML = ""; - }, - - addSeparator : function() { - this.html += '

'; - html += this.html; - html += '
'; - - this.contextMenuDiv.innerHTML = html; - - // Get dimensions - this.contextMenuDiv.style.display = "block"; - width = this.contextMenuDiv.offsetWidth; - height = this.contextMenuDiv.offsetHeight; - this.contextMenuDiv.style.display = "none"; - - if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) { - // Setup popup and show - this.pop.document.body.innerHTML = '
' + html + "
"; - this.pop.document.tinyMCE = tinyMCE; - this.pop.document.contextMenu = this; - this.pop.show(x, y, width, height); - } else { - vp = this.getViewPort(); - yo = tinyMCE.isMSIE5_0 ? document.body.scrollTop : self.pageYOffset; - this.contextMenuDiv.style.left = (x > vp.left + vp.width - width ? vp.left + vp.width - width : x) + 'px'; - this.contextMenuDiv.style.top = (y > vp.top + vp.height - height ? vp.top + vp.height - height : y) + 'px'; - this.contextMenuDiv.style.display = "block"; - } - }, - - getViewPort : function() { - return { - left : self.pageXOffset || self.document.documentElement.scrollLeft || self.document.body.scrollLeft, - top: self.pageYOffset || self.document.documentElement.scrollTop || self.document.body.scrollTop, - width : document.documentElement.offsetWidth || document.body.offsetWidth, - height : self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight - }; - }, - - hide : function() { - if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) - this.pop.hide(); - else - this.contextMenuDiv.style.display = "none"; - }, - - execCommand : function(command, value) { - eval(this.settings['commandhandler'] + "(command, value);"); - } -}; +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +if (!tinyMCE.settings['contextmenu_skip_plugin_css']) { + tinyMCE.loadCSS(tinyMCE.baseURL + "/plugins/contextmenu/css/contextmenu.css"); +} + +var TinyMCE_ContextMenuPlugin = { + // Private fields + _contextMenu : null, + + getInfo : function() { + return { + longname : 'Context menus', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + // Is not working on MSIE 5.0 or Opera no contextmenu event + if (tinyMCE.isMSIE5_0 && tinyMCE.isOpera) + return; + + TinyMCE_ContextMenuPlugin._contextMenu = new TinyMCE_ContextMenu({ + commandhandler : "TinyMCE_ContextMenuPlugin._commandHandler", + spacer_image : tinyMCE.baseURL + "/plugins/contextmenu/images/spacer.gif" + }); + + // Add hide event handles + tinyMCE.addEvent(inst.getDoc(), "click", TinyMCE_ContextMenuPlugin._hideContextMenu); + tinyMCE.addEvent(inst.getDoc(), "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu); + tinyMCE.addEvent(inst.getDoc(), "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu); + tinyMCE.addEvent(document, "click", TinyMCE_ContextMenuPlugin._hideContextMenu); + tinyMCE.addEvent(document, "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu); + tinyMCE.addEvent(document, "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu); + + // Attach contextmenu event + if (tinyMCE.isGecko) { + tinyMCE.addEvent(inst.getDoc(), "contextmenu", function(e) {TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? inst.contentWindow.event : e, inst);}); + } else + tinyMCE.addEvent(inst.getDoc(), "contextmenu", TinyMCE_ContextMenuPlugin._onContextMenu); + }, + + // Private plugin internal methods + + _onContextMenu : function(e) { + var elm = tinyMCE.isMSIE ? e.srcElement : e.target; + var targetInst, body; + + // Find instance + if ((body = tinyMCE.getParentElement(elm, "body")) != null) { + for (var n in tinyMCE.instances) { + var inst = tinyMCE.instances[n]; + if (!tinyMCE.isInstance(inst)) + continue; + + if (body == inst.getBody()) { + targetInst = inst; + break; + } + } + + return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? targetInst.contentWindow.event : e, targetInst); + } + }, + + _showContextMenu : function(e, inst) { + if (e.ctrlKey) + return true; + + function getAttrib(elm, name) { + return elm.getAttribute(name) ? elm.getAttribute(name) : ""; + } + + var x, y, elm, contextMenu; + var pos = tinyMCE.getAbsPosition(inst.iframeElement); + + x = tinyMCE.isMSIE ? e.screenX : pos.absLeft + (e.pageX - inst.getBody().scrollLeft); + y = tinyMCE.isMSIE ? e.screenY : pos.absTop + (e.pageY - inst.getBody().scrollTop); + elm = tinyMCE.isMSIE ? e.srcElement : e.target; + + contextMenu = this._contextMenu; + contextMenu.inst = inst; + + // Mozilla needs some time + window.setTimeout(function () { + var theme = tinyMCE.getParam("theme"); + + contextMenu.clearAll(); + var sel = inst.selection.getSelectedText().length != 0 || elm.nodeName == "IMG"; + + // Default items + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_cut_desc", "Cut", "", !sel); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_copy_desc", "Copy", "", !sel); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_paste_desc", "Paste", "", false); + + if (sel || (elm ? (elm.nodeName == 'A' && tinyMCE.getAttrib(elm, 'name') == '') || (elm.nodeName == 'IMG') : false)) { + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/link.gif", "$lang_link_desc", inst.hasPlugin("advlink") ? "mceAdvLink" : "mceLink"); + contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/unlink.gif", "$lang_unlink_desc", "unlink", "", (elm ? (elm.nodeName != 'A') && (elm.nodeName != 'IMG') : true)); + } + + // Get element + elm = tinyMCE.getParentElement(elm, "img,table,td" + (inst.hasPlugin("advhr") ? ',hr' : '')); + if (elm) { + switch (elm.nodeName) { + case "IMG": + contextMenu.addSeparator(); + + // If flash + if (tinyMCE.hasPlugin('flash') && tinyMCE.getAttrib(elm, 'class').indexOf('mceItemFlash') != -1) + contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_flash_props", "mceFlash"); + else if (tinyMCE.hasPlugin('media') && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm, 'class'))) + contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_media_title", "mceMedia"); + else + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/image.gif", "$lang_image_props_desc", inst.hasPlugin("advimage") ? "mceAdvImage" : "mceImage"); + break; + + case "HR": + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/advhr/images/advhr.gif", "$lang_insert_advhr_desc", "mceAdvancedHr"); + break; + + case "TABLE": + case "TD": + // Is table plugin loaded + if (inst.hasPlugin("table")) { + var colspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "colspan"); + var rowspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "rowspan"); + + colspan = colspan == "" ? "1" : colspan; + rowspan = rowspan == "" ? "1" : rowspan; + + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_table_cut_row_desc", "mceTableCutRow"); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_table_copy_row_desc", "mceTableCopyRow"); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_before_desc", "mceTablePasteRowBefore", "", inst.tableRowClipboard == null); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_after_desc", "mceTablePasteRowAfter", "", inst.tableRowClipboard == null); + + /* contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyleft.gif", "$lang_justifyleft_desc", "JustifyLeft", "", false); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifycenter.gif", "$lang_justifycenter_desc", "JustifyCenter", "", false); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyright.gif", "$lang_justifyright_desc", "JustifyRight", "", false); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyfull.gif", "$lang_justifyfull_desc", "JustifyFull", "", false);*/ + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_props_desc", "mceInsertTable"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_cell_props.gif", "$lang_table_cell_desc", "mceTableCellProps"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete.gif", "$lang_table_del", "mceTableDelete"); + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_row_props.gif", "$lang_table_row_desc", "mceTableRowProps"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_before.gif", "$lang_table_row_before_desc", "mceTableInsertRowBefore"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_after.gif", "$lang_table_row_after_desc", "mceTableInsertRowAfter"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_row.gif", "$lang_table_delete_row_desc", "mceTableDeleteRow"); + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_before.gif", "$lang_table_col_before_desc", "mceTableInsertColBefore"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_after.gif", "$lang_table_col_after_desc", "mceTableInsertColAfter"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_col.gif", "$lang_table_delete_col_desc", "mceTableDeleteCol"); + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_split_cells.gif", "$lang_table_split_cells_desc", "mceTableSplitCells", "", (colspan == "1" && rowspan == "1")); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_merge_cells.gif", "$lang_table_merge_cells_desc", "mceTableMergeCells", "", false); + } + break; + } + } else { + // Add table specific + if (inst.hasPlugin("table")) { + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert"); + } + } + + contextMenu.show(x, y); + }, 10); + + // Cancel default handeling + tinyMCE.cancelEvent(e); + return false; + }, + + _hideContextMenu : function() { + if (TinyMCE_ContextMenuPlugin._contextMenu) + TinyMCE_ContextMenuPlugin._contextMenu.hide(); + }, + + _commandHandler : function(command, value) { + var cm = TinyMCE_ContextMenuPlugin._contextMenu; + + cm.hide(); + + // UI must be true on these + var ui = false; + if (command == "mceInsertTable" || command == "mceTableCellProps" || command == "mceTableRowProps" || command == "mceTableMergeCells") + ui = true; + + if (command == "Paste") + value = null; + + if (tinyMCE.getParam("dialog_type") == "modal" && tinyMCE.isMSIE) { + // Cell properties will generate access denied error is this isn't done?! + window.setTimeout(function() { + cm.inst.execCommand(command, ui, value); + }, 100); + } else + cm.inst.execCommand(command, ui, value); + } +}; + +tinyMCE.addPlugin("contextmenu", TinyMCE_ContextMenuPlugin); + +// Context menu class + +function TinyMCE_ContextMenu(settings) { + var doc, self = this; + + // Default value function + function defParam(key, def_val) { + settings[key] = typeof(settings[key]) != "undefined" ? settings[key] : def_val; + } + + this.isMSIE = (navigator.appName == "Microsoft Internet Explorer"); + + // Setup contextmenu div + this.contextMenuDiv = document.createElement("div"); + this.contextMenuDiv.className = "contextMenu"; + this.contextMenuDiv.setAttribute("class", "contextMenu"); + this.contextMenuDiv.style.display = "none"; + this.contextMenuDiv.style.position = 'absolute'; + this.contextMenuDiv.style.zindex = 1000; + this.contextMenuDiv.style.left = '0'; + this.contextMenuDiv.style.top = '0'; + this.contextMenuDiv.unselectable = "on"; + + document.body.appendChild(this.contextMenuDiv); + + // Setup default values + defParam("commandhandler", ""); + defParam("spacer_image", "images/spacer.gif"); + + this.items = new Array(); + this.settings = settings; + this.html = ""; + + // IE Popup + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) { + this.pop = window.createPopup(); + doc = this.pop.document; + doc.open(); + doc.write(''); + doc.close(); + } +}; + +TinyMCE_ContextMenu.prototype = { + clearAll : function() { + this.html = ""; + this.contextMenuDiv.innerHTML = ""; + }, + + addSeparator : function() { + this.html += ''; + }, + + addItem : function(icon, title, command, value, disabled) { + if (title.charAt(0) == '$') + title = tinyMCE.getLang(title.substring(1)); + + var onMouseDown = ''; + var html = ''; + + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0) + onMouseDown = 'contextMenu.execCommand(\'' + command + '\', \'' + value + '\');return false;'; + else + onMouseDown = this.settings['commandhandler'] + '(\'' + command + '\', \'' + value + '\');return false;'; + + if (icon == "") + icon = this.settings['spacer_image']; + + if (!disabled) + html += ''; + else + html += ''; + + html += ''; + html += ''; + html += ''; + + // Add to main + this.html += html; + }, + + show : function(x, y) { + var vp, width, height, yo; + + if (this.html == "") + return; + + var html = ''; + + html += ''; + html += this.html; + html += '
'; + + this.contextMenuDiv.innerHTML = html; + + // Get dimensions + this.contextMenuDiv.style.display = "block"; + width = this.contextMenuDiv.offsetWidth; + height = this.contextMenuDiv.offsetHeight; + this.contextMenuDiv.style.display = "none"; + + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) { + // Setup popup and show + this.pop.document.body.innerHTML = '
' + html + "
"; + this.pop.document.tinyMCE = tinyMCE; + this.pop.document.contextMenu = this; + this.pop.show(x, y, width, height); + } else { + vp = this.getViewPort(); + yo = tinyMCE.isMSIE5_0 ? document.body.scrollTop : self.pageYOffset; + this.contextMenuDiv.style.left = (x > vp.left + vp.width - width ? vp.left + vp.width - width : x) + 'px'; + this.contextMenuDiv.style.top = (y > vp.top + vp.height - height ? vp.top + vp.height - height : y) + 'px'; + this.contextMenuDiv.style.display = "block"; + } + }, + + getViewPort : function() { + return { + left : self.pageXOffset || self.document.documentElement.scrollLeft || self.document.body.scrollLeft, + top: self.pageYOffset || self.document.documentElement.scrollTop || self.document.body.scrollTop, + width : document.documentElement.offsetWidth || document.body.offsetWidth, + height : self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight + }; + }, + + hide : function() { + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) + this.pop.hide(); + else + this.contextMenuDiv.style.display = "none"; + }, + + execCommand : function(command, value) { + eval(this.settings['commandhandler'] + "(command, value);"); + } +}; diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/images/spacer.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/images/spacer.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/contextmenu/images/spacer.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/images/spacer.gif diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/contextmenu/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit.css similarity index 91% rename from lib/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit.css index 27eaac070..dc01a0829 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit.css @@ -1,117 +1,117 @@ -body { - overflow: hidden; -} - -h1 { - font-size: 14px; - margin: 0 0 10px 0; -} - -h2 { - font-size: 12px; - margin: 3px 0 3px 0; -} - -h3 { - font-size: 11px; - margin: 3px 0 3px 0; -} - -#log { - font-family: Verdana; - border: 1px solid gray; - width: 100%; height: 240px; - overflow: scroll; - white-space: nowrap; -} - -#log span { - display: block; -} - -#log span.msg { - float: left; -} - -#log span.time { - float: left; -} - -#log br { - clear: both; -} - -#logfilter { - width: 350px; -} - -#logenabled { - border: 0; -} - -#settings_panel span, #info_panel span, #content_panel span, #command_states_panel span, #undo_redo_panel span { - display: block; - margin: 5px 0 5px 0; -} - -div.data { - width: 100%; height: 240px; - overflow: scroll; - border: 1px solid gray; -} - -#misc_panel div.data { - height: 270px; -} - -.data input { - width: 265px; - border: 0; -} - -.data h2 { - margin-left: 5px; -} - -.data h3 { - margin-left: 7px; -} - -.data div { - margin-left: 7px; -} - -.data table { - margin: 0 0 15px 15px; -} - -.data p { - margin: 0; padding: 0; - margin-top: 5px; - margin-left: 5px; -} - -table, td { - border: 1px solid gray; - border-collapse: collapse; -} - -#flip { - position: absolute; - left: 295; top: 384px; -} - -.bspec { - color: gray; -} - -.dep { - color: #880000; -} - -.col1 { - width: 265px; -} - -div.undodata { -} +body { + overflow: hidden; +} + +h1 { + font-size: 14px; + margin: 0 0 10px 0; +} + +h2 { + font-size: 12px; + margin: 3px 0 3px 0; +} + +h3 { + font-size: 11px; + margin: 3px 0 3px 0; +} + +#log { + font-family: Verdana; + border: 1px solid gray; + width: 100%; height: 240px; + overflow: scroll; + white-space: nowrap; +} + +#log span { + display: block; +} + +#log span.msg { + float: left; +} + +#log span.time { + float: left; +} + +#log br { + clear: both; +} + +#logfilter { + width: 350px; +} + +#logenabled { + border: 0; +} + +#settings_panel span, #info_panel span, #content_panel span, #command_states_panel span, #undo_redo_panel span { + display: block; + margin: 5px 0 5px 0; +} + +div.data { + width: 100%; height: 240px; + overflow: scroll; + border: 1px solid gray; +} + +#misc_panel div.data { + height: 270px; +} + +.data input { + width: 265px; + border: 0; +} + +.data h2 { + margin-left: 5px; +} + +.data h3 { + margin-left: 7px; +} + +.data div { + margin-left: 7px; +} + +.data table { + margin: 0 0 15px 15px; +} + +.data p { + margin: 0; padding: 0; + margin-top: 5px; + margin-left: 5px; +} + +table, td { + border: 1px solid gray; + border-collapse: collapse; +} + +#flip { + position: absolute; + left: 295; top: 384px; +} + +.bspec { + color: gray; +} + +.dep { + color: #880000; +} + +.col1 { + width: 265px; +} + +div.undodata { +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit_ui.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit_ui.css similarity index 93% rename from lib/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit_ui.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit_ui.css index 6713abc85..32bbaf98f 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit_ui.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/css/devkit_ui.css @@ -1,15 +1,15 @@ -#devkit { - position: absolute; - top: -385px; right: 0; - width: 640px; height: 390px; - border: 1px solid black; - z-index: 10000; -} - -.devkitup { - top: -385px !important; -} - -.devkitdown { - top: 0 !important; -} +#devkit { + position: absolute; + top: -385px; right: 0; + width: 640px; height: 390px; + border: 1px solid black; + z-index: 10000; +} + +.devkitup { + top: -385px !important; +} + +.devkitdown { + top: 0 !important; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/devkit.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/devkit.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/devkit/devkit.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/devkit.htm index 92a339bd8..df2889dd1 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/devkit.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/devkit.htm @@ -1,140 +1,140 @@ - - - {$lang_devkit_title} - - - - - - - - - -
-

{$lang_devkit_title}

- - - -
-
-
- {$lang_devkit_log_tab} - -
- -
- -
- -
- - - -
- -
-
- - -
-
- -
-
- {$lang_devkit_info_tab} - - [{$lang_devkit_refresh}] - -
-

{$lang_devkit_info_help}

-
-
-
- -
-
- {$lang_devkit_settings_tab} - - [{$lang_devkit_refresh}] - -
-

{$lang_devkit_settings_help}

-
-
-
- -
-
- {$lang_devkit_content_tab} - - [{$lang_devkit_refresh}] - -
-

{$lang_devkit_content_help}

-
-
-
- -
-
- {$lang_devkit_command_states_tab} - - [{$lang_devkit_refresh}] - -
-

{$lang_devkit_command_states_help}

-
-
-
- -
-
- {$lang_devkit_undo_redo_tab} - - [{$lang_devkit_refresh}] - -
-

{$lang_devkit_undo_redo_help}

-
- - -
-
- -
-
- {$lang_devkit_misc_tab} - -
-

{$lang_devkit_misc_help}

-
-

Selection: [Store selection] [Restore selection]

-
-
Insert custom HTML content
-
- -
-
Eval JS:
-
- -
-
-
-
-
- -
- - + + + {$lang_devkit_title} + + + + + + + + + +
+

{$lang_devkit_title}

+ + + +
+
+
+ {$lang_devkit_log_tab} + +
+ +
+ +
+ +
+ + + +
+ +
+
+ + +
+
+ +
+
+ {$lang_devkit_info_tab} + + [{$lang_devkit_refresh}] + +
+

{$lang_devkit_info_help}

+
+
+
+ +
+
+ {$lang_devkit_settings_tab} + + [{$lang_devkit_refresh}] + +
+

{$lang_devkit_settings_help}

+
+
+
+ +
+
+ {$lang_devkit_content_tab} + + [{$lang_devkit_refresh}] + +
+

{$lang_devkit_content_help}

+
+
+
+ +
+
+ {$lang_devkit_command_states_tab} + + [{$lang_devkit_refresh}] + +
+

{$lang_devkit_command_states_help}

+
+
+
+ +
+
+ {$lang_devkit_undo_redo_tab} + + [{$lang_devkit_refresh}] + +
+

{$lang_devkit_undo_redo_help}

+
+ + +
+
+ +
+
+ {$lang_devkit_misc_tab} + +
+

{$lang_devkit_misc_help}

+
+

Selection: [Store selection] [Restore selection]

+
+
Insert custom HTML content
+
+ +
+
Eval JS:
+
+ +
+
+
+
+
+ +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin_src.js index c9183b28e..4cb4de3ad 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/editor_plugin_src.js @@ -1,325 +1,325 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -tinyMCE.importPluginLanguagePack('devkit'); - -var TinyMCE_DevKitPlugin = { - _logFilter : '\\[(importCSS|execCommand|execInstanceCommand|debug)\\]', - _logPadding : '', - _startTime : null, - _benchMark : false, - _winLoaded : false, - _isDebugEvents : false, - - getInfo : function() { - return { - longname : 'Development Kit', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/devkit', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - this._setup(); - }, - - _setup : function() { - if (this._loaded) - return; - - this._loaded = true; - - // Register a document reference for more easy access in the FF DOM inspector - document.___TinyMCE = tinyMCE; - - // Setup devkit by settings - this._logFilter = tinyMCE.getParam('devkit_log_filter', this._logFilter); - this._benchMark = tinyMCE.getParam('devkit_bench_mark', false); - - var ifr = document.createElement('iframe'); - - ifr.setAttribute("id", "devkit"); - ifr.setAttribute("frameBorder", "0"); - ifr.setAttribute("src", tinyMCE.baseURL + '/plugins/devkit/devkit.htm'); - - document.body.appendChild(ifr); - - // Workaround for strange IE reload bug - //if (tinyMCE.isRealIE) - // document.getElementById('devkit').outerHTML = document.getElementById('devkit').outerHTML; - - tinyMCE.importCSS(document, tinyMCE.baseURL + '/plugins/devkit/css/devkit_ui.css'); - }, - - _start : function() { - this._logPadding += '\u00a0'; - - return new Date().getTime(); - }, - - _end : function(st) { - if (this._logPadding.length > 0) - this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1); - - if (this._benchMark) - this._log("benchmark", "Execution time: " + (new Date().getTime() - st)); - }, - - _log : function(t) { - var m, a, i, e = document.getElementById('devkit'), now = new Date().getTime(); - - if (!this._startTime) - this._startTime = now; - - m = (this._logPadding.length > 1 ? this._logPadding : '') + '[' + (now - this._startTime) + '] [' + t + '] '; - - a = this._log.arguments; - for (i=1; i 1) - m += ', '; - - m += a[i]; - } - - if (!new RegExp(this._logFilter, 'gi').test(m)) { - if (this._logPadding.length > 0) - this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1); - - return; - } - - if (!this._winLoaded) - tinyMCE.log[tinyMCE.log.length] = m; - else - e.contentWindow.debug(m); - }, - - _debugEvents : function(s) { - var i, ld, inst, n, ev = ['CheckboxStateChange','DOMAttrModified','DOMMenuItemActive', - 'DOMMenuItemInactive','DOMMouseScroll','DOMNodeInserted','DOMNodeRemoved', - 'RadioStateChange','blur','broadcast','change','click','close','command', - 'commandupdate','contextmenu','dblclick','dragdrop','dragenter','dragexit', - 'draggesture','dragover','focus','input','keydown','keypress','keyup','load', - 'mousedown','mouseout','mouseover','mouseup','overflow','overflowchanged','popuphidden', - 'popuphiding','popupshowing','popupshown','select','syncfrompreference','synctopreference', - 'underflow','unload','abort','activate','afterprint','afterupdate','beforeactivate', - 'beforecopy','beforecut','beforedeactivate','beforeeditfocus','beforepaste','beforeprint', - 'beforeunload','beforeupdate','bounce','cellchange','controlselect','copy','cut', - 'dataavailable','datasetchanged','datasetcomplete','deactivate','dragend','dragleave', - 'dragstart','drop','error','errorupdate','filterchange','finish','focusin','focusout', - 'help','layoutcomplete','losecapture','mouseenter','mouseleave','mousewheel', - 'move','moveend','movestart','paste','propertychange','readystatechange','reset','resize', - 'resizeend','resizestart','rowenter','rowexit','rowsdelete','rowsinserted','scroll', - 'selectionchange','selectstart','start','stop','submit']; - // mousemove - - if (TinyMCE_DevKitPlugin._isDebugEvents == s) - return; - - TinyMCE_DevKitPlugin._isDebugEvents = s; - - for (n in tinyMCE.instances) { - inst = tinyMCE.instances[n]; - - if (!tinyMCE.isInstance(inst) || inst.getDoc() == ld) - continue; - - ld = inst.getDoc(); - - for (i=0; i 0 ? ',' : '') + 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; - } -}; - -// Patch and piggy back functions -tinyMCE.__debug = tinyMCE.debug; -tinyMCE.debug = function() { - var a, i, m = '', now = new Date().getTime(), start = TinyMCE_DevKitPlugin._startTime; - - if (!start) - TinyMCE_DevKitPlugin._startTime = start = now; - - a = this.debug.arguments; - for (i=0; i 0) - m += ', '; - - m += a[i]; - } - - TinyMCE_DevKitPlugin._log('debug', m); -}; - -tinyMCE.dump = function(o) { - tinyMCE.debug(TinyMCE_DevKitPlugin._serialize(o)); -}; - -tinyMCE.sleep = function(t) { - var s = new Date().getTime(), b; - - while (new Date().getTime() - s < t) b=1; -}; - -tinyMCE.__execCommand = tinyMCE.execCommand; -tinyMCE.execCommand = function(command, user_interface, value) { - var r, st, dk = TinyMCE_DevKitPlugin; - - st = dk._start(); - dk._log('execCommand', command, user_interface, value); - r = tinyMCE.__execCommand(command, user_interface, value); - dk._end(st); - - return r; -}; - -tinyMCE.__execInstanceCommand = tinyMCE.execInstanceCommand; -tinyMCE.execInstanceCommand = function(editor_id, command, user_interface, value, focus) { - var r, st, dk = TinyMCE_DevKitPlugin; - - st = dk._start(); - dk._log('execInstanceCommand', editor_id, command, user_interface, value); - r = tinyMCE.__execInstanceCommand(editor_id, command, user_interface, value); - dk._end(st); - - return r; -}; - -TinyMCE_Engine.prototype.__handleEvent = TinyMCE_Engine.prototype.handleEvent; -TinyMCE_Engine.prototype.handleEvent = function(e) { - var r, st, dk = TinyMCE_DevKitPlugin; - - st = dk._start(); - dk._log('handleEvent', e.type); - r = tinyMCE.__handleEvent(e); - dk._end(st); - - return r; -}; - -tinyMCE.__importCSS = tinyMCE.importCSS; -tinyMCE.importCSS = function(doc, css) { - var r, st, dk = TinyMCE_DevKitPlugin; - - st = dk._start(); - dk._log('importCSS', doc, css); - r = tinyMCE.__importCSS(doc, css); - dk._end(st); - - return r; -}; - -tinyMCE.__triggerNodeChange = tinyMCE.triggerNodeChange; -tinyMCE.triggerNodeChange = function(focus, setup_content) { - var r, st, dk = TinyMCE_DevKitPlugin; - - st = dk._start(); - dk._log('triggerNodeChange', focus, setup_content); - r = tinyMCE.__triggerNodeChange(focus, setup_content); - dk._end(st); - - return r; -}; - -tinyMCE.__dispatchCallback = tinyMCE.dispatchCallback; -tinyMCE.dispatchCallback = function(i, p, n) { - var r, st, dk = TinyMCE_DevKitPlugin; - - st = dk._start(); - dk._log('dispatchCallback', i, p, n); - r = tinyMCE.__dispatchCallback(i, p, n); - dk._end(st); - - return r; -}; - -tinyMCE.__executeCallback = tinyMCE.executeCallback; -tinyMCE.executeCallback = function(i, p, n) { - var r, st, dk = TinyMCE_DevKitPlugin; - - st = dk._start(); - dk._log('executeCallback', i, p, n); - r = tinyMCE.__executeCallback(i, p, n); - dk._end(st); - - return r; -}; - -tinyMCE.__execCommandCallback = tinyMCE.execCommandCallback; -tinyMCE.execCommandCallback = function(i, p, n) { - var r, st, dk = TinyMCE_DevKitPlugin; - - st = dk._start(); - dk._log('execCommandCallback', i, p, n); - r = tinyMCE.__execCommandCallback(i, p, n); - dk._end(st); - - return r; -}; - -tinyMCE.addPlugin("devkit", TinyMCE_DevKitPlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +tinyMCE.importPluginLanguagePack('devkit'); + +var TinyMCE_DevKitPlugin = { + _logFilter : '\\[(importCSS|execCommand|execInstanceCommand|debug)\\]', + _logPadding : '', + _startTime : null, + _benchMark : false, + _winLoaded : false, + _isDebugEvents : false, + + getInfo : function() { + return { + longname : 'Development Kit', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/devkit', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + this._setup(); + }, + + _setup : function() { + if (this._loaded) + return; + + this._loaded = true; + + // Register a document reference for more easy access in the FF DOM inspector + document.___TinyMCE = tinyMCE; + + // Setup devkit by settings + this._logFilter = tinyMCE.getParam('devkit_log_filter', this._logFilter); + this._benchMark = tinyMCE.getParam('devkit_bench_mark', false); + + var ifr = document.createElement('iframe'); + + ifr.setAttribute("id", "devkit"); + ifr.setAttribute("frameBorder", "0"); + ifr.setAttribute("src", tinyMCE.baseURL + '/plugins/devkit/devkit.htm'); + + document.body.appendChild(ifr); + + // Workaround for strange IE reload bug + //if (tinyMCE.isRealIE) + // document.getElementById('devkit').outerHTML = document.getElementById('devkit').outerHTML; + + tinyMCE.importCSS(document, tinyMCE.baseURL + '/plugins/devkit/css/devkit_ui.css'); + }, + + _start : function() { + this._logPadding += '\u00a0'; + + return new Date().getTime(); + }, + + _end : function(st) { + if (this._logPadding.length > 0) + this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1); + + if (this._benchMark) + this._log("benchmark", "Execution time: " + (new Date().getTime() - st)); + }, + + _log : function(t) { + var m, a, i, e = document.getElementById('devkit'), now = new Date().getTime(); + + if (!this._startTime) + this._startTime = now; + + m = (this._logPadding.length > 1 ? this._logPadding : '') + '[' + (now - this._startTime) + '] [' + t + '] '; + + a = this._log.arguments; + for (i=1; i 1) + m += ', '; + + m += a[i]; + } + + if (!new RegExp(this._logFilter, 'gi').test(m)) { + if (this._logPadding.length > 0) + this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1); + + return; + } + + if (!this._winLoaded) + tinyMCE.log[tinyMCE.log.length] = m; + else + e.contentWindow.debug(m); + }, + + _debugEvents : function(s) { + var i, ld, inst, n, ev = ['CheckboxStateChange','DOMAttrModified','DOMMenuItemActive', + 'DOMMenuItemInactive','DOMMouseScroll','DOMNodeInserted','DOMNodeRemoved', + 'RadioStateChange','blur','broadcast','change','click','close','command', + 'commandupdate','contextmenu','dblclick','dragdrop','dragenter','dragexit', + 'draggesture','dragover','focus','input','keydown','keypress','keyup','load', + 'mousedown','mouseout','mouseover','mouseup','overflow','overflowchanged','popuphidden', + 'popuphiding','popupshowing','popupshown','select','syncfrompreference','synctopreference', + 'underflow','unload','abort','activate','afterprint','afterupdate','beforeactivate', + 'beforecopy','beforecut','beforedeactivate','beforeeditfocus','beforepaste','beforeprint', + 'beforeunload','beforeupdate','bounce','cellchange','controlselect','copy','cut', + 'dataavailable','datasetchanged','datasetcomplete','deactivate','dragend','dragleave', + 'dragstart','drop','error','errorupdate','filterchange','finish','focusin','focusout', + 'help','layoutcomplete','losecapture','mouseenter','mouseleave','mousewheel', + 'move','moveend','movestart','paste','propertychange','readystatechange','reset','resize', + 'resizeend','resizestart','rowenter','rowexit','rowsdelete','rowsinserted','scroll', + 'selectionchange','selectstart','start','stop','submit']; + // mousemove + + if (TinyMCE_DevKitPlugin._isDebugEvents == s) + return; + + TinyMCE_DevKitPlugin._isDebugEvents = s; + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst) || inst.getDoc() == ld) + continue; + + ld = inst.getDoc(); + + for (i=0; i 0 ? ',' : '') + 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; + } +}; + +// Patch and piggy back functions +tinyMCE.__debug = tinyMCE.debug; +tinyMCE.debug = function() { + var a, i, m = '', now = new Date().getTime(), start = TinyMCE_DevKitPlugin._startTime; + + if (!start) + TinyMCE_DevKitPlugin._startTime = start = now; + + a = this.debug.arguments; + for (i=0; i 0) + m += ', '; + + m += a[i]; + } + + TinyMCE_DevKitPlugin._log('debug', m); +}; + +tinyMCE.dump = function(o) { + tinyMCE.debug(TinyMCE_DevKitPlugin._serialize(o)); +}; + +tinyMCE.sleep = function(t) { + var s = new Date().getTime(), b; + + while (new Date().getTime() - s < t) b=1; +}; + +tinyMCE.__execCommand = tinyMCE.execCommand; +tinyMCE.execCommand = function(command, user_interface, value) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('execCommand', command, user_interface, value); + r = tinyMCE.__execCommand(command, user_interface, value); + dk._end(st); + + return r; +}; + +tinyMCE.__execInstanceCommand = tinyMCE.execInstanceCommand; +tinyMCE.execInstanceCommand = function(editor_id, command, user_interface, value, focus) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('execInstanceCommand', editor_id, command, user_interface, value); + r = tinyMCE.__execInstanceCommand(editor_id, command, user_interface, value); + dk._end(st); + + return r; +}; + +TinyMCE_Engine.prototype.__handleEvent = TinyMCE_Engine.prototype.handleEvent; +TinyMCE_Engine.prototype.handleEvent = function(e) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('handleEvent', e.type); + r = tinyMCE.__handleEvent(e); + dk._end(st); + + return r; +}; + +tinyMCE.__importCSS = tinyMCE.importCSS; +tinyMCE.importCSS = function(doc, css) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('importCSS', doc, css); + r = tinyMCE.__importCSS(doc, css); + dk._end(st); + + return r; +}; + +tinyMCE.__triggerNodeChange = tinyMCE.triggerNodeChange; +tinyMCE.triggerNodeChange = function(focus, setup_content) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('triggerNodeChange', focus, setup_content); + r = tinyMCE.__triggerNodeChange(focus, setup_content); + dk._end(st); + + return r; +}; + +tinyMCE.__dispatchCallback = tinyMCE.dispatchCallback; +tinyMCE.dispatchCallback = function(i, p, n) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('dispatchCallback', i, p, n); + r = tinyMCE.__dispatchCallback(i, p, n); + dk._end(st); + + return r; +}; + +tinyMCE.__executeCallback = tinyMCE.executeCallback; +tinyMCE.executeCallback = function(i, p, n) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('executeCallback', i, p, n); + r = tinyMCE.__executeCallback(i, p, n); + dk._end(st); + + return r; +}; + +tinyMCE.__execCommandCallback = tinyMCE.execCommandCallback; +tinyMCE.execCommandCallback = function(i, p, n) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('execCommandCallback', i, p, n); + r = tinyMCE.__execCommandCallback(i, p, n); + dk._end(st); + + return r; +}; + +tinyMCE.addPlugin("devkit", TinyMCE_DevKitPlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/images/flip_down.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/images/flip_down.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/devkit/images/flip_down.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/images/flip_down.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/images/flip_up.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/images/flip_up.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/devkit/images/flip_up.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/images/flip_up.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/devkit.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/devkit.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/devkit.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/devkit.js index 022540568..33d414983 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/devkit.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/devkit.js @@ -1,331 +1,331 @@ -var devkit = parent.tinyMCE.plugins['devkit'], logEnabled = true, flip = false, book = null; - -function init() { - var log, i, f = document.forms[0]; - - devkit._winLoaded = true; - - log = tinyMCE.log; - - for (i=0; i'; - h += ''; - - h += addRenderInfo('editorId', inst.editorId); - h += addRenderInfo('visualAid', inst.visualAid); - h += addRenderInfo('foreColor', inst.foreColor); - h += addRenderInfo('backColor', inst.backColor); - h += addRenderInfo('formTargetElementId', inst.formTargetElementId); - h += addRenderInfo('formElement', inst.formElement ? inst.formElement.nodeName : null); - h += addRenderInfo('oldTargetElement', inst.oldTargetElement ? inst.oldTargetElement.nodeName : null); - h += addRenderInfo('linkElement', inst.linkElement ? inst.linkElement.nodeName : null, 'dep'); - h += addRenderInfo('imgElement', inst.imgElement ? inst.imgElement.nodeName : null, 'dep'); - h += addRenderInfo('selectedNode', inst.selectedNode ? inst.selectedNode.nodeName : null, 'dep'); - h += addRenderInfo('targetElement', inst.targetElement ? inst.targetElement.nodeName : null); - h += addRenderInfo('getBody().nodeName', inst.getBody() ? inst.getBody().nodeName : null); - h += addRenderInfo('getBody().getAttribute("id")', inst.getBody() ? inst.getBody().getAttribute("id") : null); - h += addRenderInfo('getDoc().location', inst.getDoc() ? inst.getDoc().location : null); - h += addRenderInfo('startContent', inst.startContent); - h += addRenderInfo('isHidden()', inst.isHidden()); - h += addRenderInfo('isDirty()', inst.isDirty()); - h += addRenderInfo('undoRedo.undoLevels.length', inst.undoRedo.undoLevels.length); - h += addRenderInfo('undoRedo.undoIndex', inst.undoRedo.undoIndex); - h += addRenderInfo('selection.getSelectedHTML()', inst.selection.getSelectedHTML()); - h += addRenderInfo('selection.isCollapsed()', inst.selection.isCollapsed() || 'false'); - h += addRenderInfo('selection.getSelectedText()', inst.selection.getSelectedText()); - h += addRenderInfo('selection.getFocusElement().nodeName', inst.selection.getFocusElement().nodeName); - h += addRenderInfo('selection.getFocusElement().outerHTML', tinyMCE.getOuterHTML(inst.selection.getFocusElement())); - - if ((tinyMCE.isGecko || tinyMCE.isOpera) && sel && rng) { - h += addRenderInfo('selection.getSel().anchorNode.nodeName', sel.anchorNode ? sel.anchorNode.nodeName : null, 'bspec'); - h += addRenderInfo('selection.getSel().anchorOffset', sel.anchorOffset, 'bspec'); - h += addRenderInfo('selection.getSel().focusNode.nodeName', sel.focusNode ? sel.focusNode.nodeName : null, 'bspec'); - h += addRenderInfo('selection.getSel().focusOffset', sel.focusOffset, 'bspec'); - h += addRenderInfo('selection.getRng().startContainer.nodeName', rng.startContainer ? rng.startContainer.nodeName : null, 'bspec'); - h += addRenderInfo('selection.getRng().startOffset', rng.startOffset, 'bspec'); - h += addRenderInfo('selection.getRng().endContainer.nodeName', rng.endContainer ? rng.endContainer.nodeName : null, 'bspec'); - h += addRenderInfo('selection.getRng().endOffset', rng.endOffset, 'bspec'); - } - - if (typeof(rng.item) != 'undefined' || typeof(rng.htmlText) != 'undefined') { - if (!rng.item) { - h += addRenderInfo('selection.getSel().type', sel.type, 'bspec'); - h += addRenderInfo('selection.getRng().htmlText', rng.htmlText, 'bspec'); - h += addRenderInfo('selection.getRng().text', rng.text, 'bspec'); - } else - h += addRenderInfo('selection.getRng().item(0).nodeName', rng.item(0).nodeName, 'bspec'); - } - - h += '
'; - } - - h += '

Fields marked in gray is not cross browser and should be used with care.

'; - h += '

Fields marked red are marked deprecated and will be removed in the future.


'; - - se.innerHTML = h; -} - -function addRenderInfo(n, v, c) { - return '' + n + ''; -} - -function renderSettings() { - var se = document.getElementById('settings'), n, sn, inst, h = '', v; - - for (n in tinyMCE.instances) { - inst = tinyMCE.instances[n]; - - if (!tinyMCE.isInstance(inst)) - continue; - - h += '

Instance id: ' + inst.editorId + '

'; - h += ''; - - for (sn in inst.settings) { - v = inst.settings[sn]; - - h += ''; - } - - h += '
' + tinyMCE.xmlEncode(sn) + '
'; - } - - se.innerHTML = h; -} - -function renderContent() { - var se = document.getElementById('content'), n, inst, h = ''; - - for (n in tinyMCE.instances) { - inst = tinyMCE.instances[n]; - - if (!tinyMCE.isInstance(inst)) - continue; - - h += '

Instance id: ' + inst.editorId + '

'; - - h += '

Start content - inst.startContent:

'; - h += '
' + tinyMCE.xmlEncode(inst.startContent) + '
'; - - h += '

Raw content - inst.getBody().innerHTML or inst.getHTML(true):

'; - h += '
' + tinyMCE.xmlEncode(inst.getHTML(true)) + '
'; - - h += '

Cleaned content - inst.getHTML():

'; - h += '
' + tinyMCE.xmlEncode(inst.getHTML()) + '
'; - - if (inst.serializedHTML) { - h += '

Serialized HTML content - inst.serializedHTML:

'; - h += '
' + tinyMCE.xmlEncode(inst.serializedHTML) + '
'; - } - } - - se.innerHTML = h; -} - -function renderCommandStates() { - var se = document.getElementById('command_states'), n, inst, h = '', v, ex; - var cmds = new Array('2D-Position','AbsolutePosition','BackColor','BlockDirLTR','BlockDirRTL','Bold','BrowseMode','Copy','CreateBookmark','CreateLink','Cut','Delete','DirLTR','DirRTL','EditMode','enableInlineTableEditing','enableObjectResizing','FontName','FontSize','ForeColor','FormatBlock','Indent','InsertButton','InsertFieldset','InsertHorizontalRule','InsertIFrame','InsertImage','InsertInputButton','InsertInputCheckbox','InsertInputFileUpload','InsertInputHidden','InsertInputImage','InsertInputPassword','InsertInputRadio','InsertInputReset','InsertInputSubmit','InsertInputText','InsertMarquee','InsertOrderedList','InsertParagraph','InsertSelectDropdown','InsertSelectListbox','InsertTextArea','InsertUnorderedList','Italic','JustifyCenter','JustifyFull','JustifyLeft','JustifyNone','JustifyRight','LiveResize','MultipleSelection','Open','Outdent','OverWrite','Paste','PlayImage','Redo','Refresh','RemoveFormat','SaveAs','SelectAll','SizeToControl','SizeToControlHeight','SizeToControlWidth','Stop','StopImage','StrikeThrough','styleWithCSS','Subscript','Superscript','UnBookmark','Underline','Undo','Unlink','Unselect'), i; - - for (n in tinyMCE.instances) { - inst = tinyMCE.instances[n]; - - if (!tinyMCE.isInstance(inst)) - continue; - - h += '

Instance id: ' + inst.editorId + '

'; - h += ''; - - for (i=0; i'; - } - - h += '
'; - } - - se.innerHTML = h; -} - -function renderUndoRedo() { - var se = document.getElementById('undo_redo'), inst, n, h = '', i, le, id, d, ur; - var f = document.forms[0]; - - if (tinyMCE.undoLevels) { - le = tinyMCE.undoLevels; - - h += '

Global undo/redo

'; - h += ''; - h += ''; - h += ''; - h += '
undoLevels.length' + le.length + '
undoIndex' + tinyMCE.undoIndex + '
'; - - for (i=0; i'; - } - - for (n in tinyMCE.instances) { - inst = tinyMCE.instances[n]; - - if (!tinyMCE.isInstance(inst)) - continue; - - ur = inst.undoRedo; - le = ur.undoLevels; - - h += '

Instance id: ' + inst.editorId + '

'; - h += ''; - h += ''; - h += ''; - h += ''; - h += ''; - h += '
undoLevels.length' + le.length + '
undoIndex' + ur.undoIndex + '
typingUndoIndex' + ur.typingUndoIndex + '
undoRedo' + ur.undoRedo + '
'; - - for (i=0; i'; - h += '
' + tinyMCE.xmlEncode(le[i].content) + '
'; - - if (i > 0 && f.undo_diff.checked) { - d = diff_main(i > 0 ? le[i-1].content.replace(/[\r\n]+/g, '') : null, le[i].content.replace(/[\r\n]+/g, ''), false); - diff_cleanup_semantic(d); - h += '

Diff ' + (i-1) + ',' + i + '

' + diff_prettyhtml(d) + '
'; - } - } - } - - se.innerHTML = h; -} - -function clearLog() { - document.getElementById('log').innerHTML = ''; - devkit._startTime = null; -} - -function cancelAction() { - parent.document.getElementById('devkit').style.display = 'none'; -} - -function toggleDebugEvents(s) { - devkit._debugEvents(s); -} - -function storeSelection() { - book = tinyMCE.selectedInstance.selection.getBookmark(); - - return false; -} - -function restoreSelection() { - tinyMCE.selectedInstance.selection.moveToBookmark(book); - - return false; +var devkit = parent.tinyMCE.plugins['devkit'], logEnabled = true, flip = false, book = null; + +function init() { + var log, i, f = document.forms[0]; + + devkit._winLoaded = true; + + log = tinyMCE.log; + + for (i=0; i'; + h += ''; + + h += addRenderInfo('editorId', inst.editorId); + h += addRenderInfo('visualAid', inst.visualAid); + h += addRenderInfo('foreColor', inst.foreColor); + h += addRenderInfo('backColor', inst.backColor); + h += addRenderInfo('formTargetElementId', inst.formTargetElementId); + h += addRenderInfo('formElement', inst.formElement ? inst.formElement.nodeName : null); + h += addRenderInfo('oldTargetElement', inst.oldTargetElement ? inst.oldTargetElement.nodeName : null); + h += addRenderInfo('linkElement', inst.linkElement ? inst.linkElement.nodeName : null, 'dep'); + h += addRenderInfo('imgElement', inst.imgElement ? inst.imgElement.nodeName : null, 'dep'); + h += addRenderInfo('selectedNode', inst.selectedNode ? inst.selectedNode.nodeName : null, 'dep'); + h += addRenderInfo('targetElement', inst.targetElement ? inst.targetElement.nodeName : null); + h += addRenderInfo('getBody().nodeName', inst.getBody() ? inst.getBody().nodeName : null); + h += addRenderInfo('getBody().getAttribute("id")', inst.getBody() ? inst.getBody().getAttribute("id") : null); + h += addRenderInfo('getDoc().location', inst.getDoc() ? inst.getDoc().location : null); + h += addRenderInfo('startContent', inst.startContent); + h += addRenderInfo('isHidden()', inst.isHidden()); + h += addRenderInfo('isDirty()', inst.isDirty()); + h += addRenderInfo('undoRedo.undoLevels.length', inst.undoRedo.undoLevels.length); + h += addRenderInfo('undoRedo.undoIndex', inst.undoRedo.undoIndex); + h += addRenderInfo('selection.getSelectedHTML()', inst.selection.getSelectedHTML()); + h += addRenderInfo('selection.isCollapsed()', inst.selection.isCollapsed() || 'false'); + h += addRenderInfo('selection.getSelectedText()', inst.selection.getSelectedText()); + h += addRenderInfo('selection.getFocusElement().nodeName', inst.selection.getFocusElement().nodeName); + h += addRenderInfo('selection.getFocusElement().outerHTML', tinyMCE.getOuterHTML(inst.selection.getFocusElement())); + + if ((tinyMCE.isGecko || tinyMCE.isOpera) && sel && rng) { + h += addRenderInfo('selection.getSel().anchorNode.nodeName', sel.anchorNode ? sel.anchorNode.nodeName : null, 'bspec'); + h += addRenderInfo('selection.getSel().anchorOffset', sel.anchorOffset, 'bspec'); + h += addRenderInfo('selection.getSel().focusNode.nodeName', sel.focusNode ? sel.focusNode.nodeName : null, 'bspec'); + h += addRenderInfo('selection.getSel().focusOffset', sel.focusOffset, 'bspec'); + h += addRenderInfo('selection.getRng().startContainer.nodeName', rng.startContainer ? rng.startContainer.nodeName : null, 'bspec'); + h += addRenderInfo('selection.getRng().startOffset', rng.startOffset, 'bspec'); + h += addRenderInfo('selection.getRng().endContainer.nodeName', rng.endContainer ? rng.endContainer.nodeName : null, 'bspec'); + h += addRenderInfo('selection.getRng().endOffset', rng.endOffset, 'bspec'); + } + + if (typeof(rng.item) != 'undefined' || typeof(rng.htmlText) != 'undefined') { + if (!rng.item) { + h += addRenderInfo('selection.getSel().type', sel.type, 'bspec'); + h += addRenderInfo('selection.getRng().htmlText', rng.htmlText, 'bspec'); + h += addRenderInfo('selection.getRng().text', rng.text, 'bspec'); + } else + h += addRenderInfo('selection.getRng().item(0).nodeName', rng.item(0).nodeName, 'bspec'); + } + + h += '
'; + } + + h += '

Fields marked in gray is not cross browser and should be used with care.

'; + h += '

Fields marked red are marked deprecated and will be removed in the future.


'; + + se.innerHTML = h; +} + +function addRenderInfo(n, v, c) { + return '' + n + ''; +} + +function renderSettings() { + var se = document.getElementById('settings'), n, sn, inst, h = '', v; + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + h += '

Instance id: ' + inst.editorId + '

'; + h += ''; + + for (sn in inst.settings) { + v = inst.settings[sn]; + + h += ''; + } + + h += '
' + tinyMCE.xmlEncode(sn) + '
'; + } + + se.innerHTML = h; +} + +function renderContent() { + var se = document.getElementById('content'), n, inst, h = ''; + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + h += '

Instance id: ' + inst.editorId + '

'; + + h += '

Start content - inst.startContent:

'; + h += '
' + tinyMCE.xmlEncode(inst.startContent) + '
'; + + h += '

Raw content - inst.getBody().innerHTML or inst.getHTML(true):

'; + h += '
' + tinyMCE.xmlEncode(inst.getHTML(true)) + '
'; + + h += '

Cleaned content - inst.getHTML():

'; + h += '
' + tinyMCE.xmlEncode(inst.getHTML()) + '
'; + + if (inst.serializedHTML) { + h += '

Serialized HTML content - inst.serializedHTML:

'; + h += '
' + tinyMCE.xmlEncode(inst.serializedHTML) + '
'; + } + } + + se.innerHTML = h; +} + +function renderCommandStates() { + var se = document.getElementById('command_states'), n, inst, h = '', v, ex; + var cmds = new Array('2D-Position','AbsolutePosition','BackColor','BlockDirLTR','BlockDirRTL','Bold','BrowseMode','Copy','CreateBookmark','CreateLink','Cut','Delete','DirLTR','DirRTL','EditMode','enableInlineTableEditing','enableObjectResizing','FontName','FontSize','ForeColor','FormatBlock','Indent','InsertButton','InsertFieldset','InsertHorizontalRule','InsertIFrame','InsertImage','InsertInputButton','InsertInputCheckbox','InsertInputFileUpload','InsertInputHidden','InsertInputImage','InsertInputPassword','InsertInputRadio','InsertInputReset','InsertInputSubmit','InsertInputText','InsertMarquee','InsertOrderedList','InsertParagraph','InsertSelectDropdown','InsertSelectListbox','InsertTextArea','InsertUnorderedList','Italic','JustifyCenter','JustifyFull','JustifyLeft','JustifyNone','JustifyRight','LiveResize','MultipleSelection','Open','Outdent','OverWrite','Paste','PlayImage','Redo','Refresh','RemoveFormat','SaveAs','SelectAll','SizeToControl','SizeToControlHeight','SizeToControlWidth','Stop','StopImage','StrikeThrough','styleWithCSS','Subscript','Superscript','UnBookmark','Underline','Undo','Unlink','Unselect'), i; + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + h += '

Instance id: ' + inst.editorId + '

'; + h += ''; + + for (i=0; i'; + } + + h += '
'; + } + + se.innerHTML = h; +} + +function renderUndoRedo() { + var se = document.getElementById('undo_redo'), inst, n, h = '', i, le, id, d, ur; + var f = document.forms[0]; + + if (tinyMCE.undoLevels) { + le = tinyMCE.undoLevels; + + h += '

Global undo/redo

'; + h += ''; + h += ''; + h += ''; + h += '
undoLevels.length' + le.length + '
undoIndex' + tinyMCE.undoIndex + '
'; + + for (i=0; i'; + } + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + ur = inst.undoRedo; + le = ur.undoLevels; + + h += '

Instance id: ' + inst.editorId + '

'; + h += ''; + h += ''; + h += ''; + h += ''; + h += ''; + h += '
undoLevels.length' + le.length + '
undoIndex' + ur.undoIndex + '
typingUndoIndex' + ur.typingUndoIndex + '
undoRedo' + ur.undoRedo + '
'; + + for (i=0; i'; + h += '
' + tinyMCE.xmlEncode(le[i].content) + '
'; + + if (i > 0 && f.undo_diff.checked) { + d = diff_main(i > 0 ? le[i-1].content.replace(/[\r\n]+/g, '') : null, le[i].content.replace(/[\r\n]+/g, ''), false); + diff_cleanup_semantic(d); + h += '

Diff ' + (i-1) + ',' + i + '

' + diff_prettyhtml(d) + '
'; + } + } + } + + se.innerHTML = h; +} + +function clearLog() { + document.getElementById('log').innerHTML = ''; + devkit._startTime = null; +} + +function cancelAction() { + parent.document.getElementById('devkit').style.display = 'none'; +} + +function toggleDebugEvents(s) { + devkit._debugEvents(s); +} + +function storeSelection() { + book = tinyMCE.selectedInstance.selection.getBookmark(); + + return false; +} + +function restoreSelection() { + tinyMCE.selectedInstance.selection.moveToBookmark(book); + + return false; } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/diff.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/diff.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/diff.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/diff.js index 87b96cc2b..13d7fad8c 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/diff.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/devkit/jscripts/diff.js @@ -1,1192 +1,1192 @@ -// Diff_Match_Patch v1.3 -// Computes the difference between two texts to create a patch. -// Applies the patch onto another text, allowing for errors. -// Copyright (C) 2006 Neil Fraser -// http://neil.fraser.name/software/diff_match_patch/ - -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License (www.gnu.org) for more details. - - -// Constants. -// Redefine these in your program to override the defaults. - -// Number of seconds to map a diff before giving up. (0 for infinity) -var DIFF_TIMEOUT = 1.0; -// Cost of an empty edit operation in terms of edit characters. -var DIFF_EDIT_COST = 4; -// Tweak the relative importance (0.0 = accuracy, 1.0 = proximity) -var MATCH_BALANCE = 0.5; -// At what point is no match declared (0.0 = perfection, 1.0 = very loose) -var MATCH_THRESHOLD = 0.5; -// The min and max cutoffs used when computing text lengths. -var MATCH_MINLENGTH = 100; -var MATCH_MAXLENGTH = 1000; -// Chunk size for context length. -var PATCH_MARGIN = 4; - - - ////////////////////////////////////////////////////////////////////// - // Diff // -////////////////////////////////////////////////////////////////////// - -// The data structure representing a diff is an array of tuples: -// [[-1, "Hello"], [1, "Goodbye"], [0, " world."]] -// which means: delete "Hello", add "Goodbye" and keep " world." - - -function diff_main(text1, text2, checklines) { - // Find the differences between two texts. Return an array of changes. - // If checklines is present and false, then don't run a line-level diff first to identify the changed areas. - // Check for equality (speedup) - if (text1 == text2) - return [[0, text1]]; - - if (typeof checklines == 'undefined') - checklines = true; - - var a; - // Trim off common prefix (speedup) - a = diff_prefix(text1, text2); - text1 = a[0]; - text2 = a[1]; - var commonprefix = a[2]; - - // Trim off common suffix (speedup) - a = diff_suffix(text1, text2); - text1 = a[0]; - text2 = a[1]; - var commonsuffix = a[2]; - - var diff, i; - var longtext = text1.length > text2.length ? text1 : text2; - var shorttext = text1.length > text2.length ? text2 : text1; - - if (!text1) { // Just add some text (speedup) - diff = [[1, text2]]; - } else if (!text2) { // Just delete some text (speedup) - diff = [[-1, text1]]; - } else if ((i = longtext.indexOf(shorttext)) != -1) { - // Shorter text is inside the longer text (speedup) - diff = [[1, longtext.substring(0, i)], [0, shorttext], [1, longtext.substring(i+shorttext.length)]]; - // Swap insertions for deletions if diff is reversed. - if (text1.length > text2.length) - diff[0][0] = diff[2][0] = -1; - } else { - longtext = shorttext = null; // Garbage collect - // Check to see if the problem can be split in two. - var hm = diff_halfmatch(text1, text2); - if (hm) { - // A half-match was found, sort out the return data. - var text1_a = hm[0]; - var text1_b = hm[1]; - var text2_a = hm[2]; - var text2_b = hm[3]; - var mid_common = hm[4]; - // Send both pairs off for separate processing. - var diff_a = diff_main(text1_a, text2_a, checklines); - var diff_b = diff_main(text1_b, text2_b, checklines); - // Merge the results. - diff = diff_a.concat([[0, mid_common]], diff_b); - } else { - // Perform a real diff. - if (checklines && text1.length + text2.length < 250) - checklines = false; // Too trivial for the overhead. - if (checklines) { - // Scan the text on a line-by-line basis first. - a = diff_lines2chars(text1, text2); - text1 = a[0]; - text2 = a[1]; - var linearray = a[2]; - } - diff = diff_map(text1, text2); - if (!diff) // No acceptable result. - diff = [[-1, text1], [1, text2]]; - if (checklines) { - diff_chars2lines(diff, linearray); // Convert the diff back to original text. - diff_cleanup_semantic(diff); // Eliminate freak matches (e.g. blank lines) - - // Rediff any replacement blocks, this time on character-by-character basis. - diff.push([0, '']); // Add a dummy entry at the end. - var pointer = 0; - var count_delete = 0; - var count_insert = 0; - var text_delete = ''; - var text_insert = ''; - while(pointer < diff.length) { - if (diff[pointer][0] == 1) { - count_insert++; - text_insert += diff[pointer][1]; - } else if (diff[pointer][0] == -1) { - count_delete++; - text_delete += diff[pointer][1]; - } else { // Upon reaching an equality, check for prior redundancies. - if (count_delete >= 1 && count_insert >= 1) { - // Delete the offending records and add the merged ones. - a = diff_main(text_delete, text_insert, false); - diff.splice(pointer - count_delete - count_insert, count_delete + count_insert); - pointer = pointer - count_delete - count_insert; - for (i=a.length-1; i>=0; i--) - diff.splice(pointer, 0, a[i]); - pointer = pointer + a.length; - } - count_insert = 0; - count_delete = 0; - text_delete = ''; - text_insert = ''; - } - pointer++; - } - diff.pop(); // Remove the dummy entry at the end. - - } - } - } - - if (commonprefix) - diff.unshift([0, commonprefix]); - if (commonsuffix) - diff.push([0, commonsuffix]); - diff_cleanup_merge(diff); - return diff; -} - - -function diff_lines2chars(text1, text2) { - // Split text into an array of strings. - // Reduce the texts to a string of hashes where each character represents one line. - var linearray = new Array(); // linearray[4] == "Hello\n" - var linehash = new Object(); // linehash["Hello\n"] == 4 - - // "\x00" is a valid JavaScript character, but the Venkman debugger doesn't like it (bug 335098) - // So we'll insert a junk entry to avoid generating a null character. - linearray.push(''); - - function diff_lines2chars_munge(text) { - // My first ever closure! - var i, line; - var chars = ''; - while (text) { - i = text.indexOf('\n'); - if (i == -1) - i = text.length; - line = text.substring(0, i+1); - text = text.substring(i+1); - if (linehash.hasOwnProperty ? linehash.hasOwnProperty(line) : (linehash[line] !== undefined)) { - chars += String.fromCharCode(linehash[line]); - } else { - linearray.push(line); - linehash[line] = linearray.length - 1; - chars += String.fromCharCode(linearray.length - 1); - } - } - return chars; - } - - var chars1 = diff_lines2chars_munge(text1); - var chars2 = diff_lines2chars_munge(text2); - return [chars1, chars2, linearray]; -} - - -function diff_chars2lines(diff, linearray) { - // Rehydrate the text in a diff from a string of line hashes to real lines of text. - var chars, text; - for (var x=0; x 0 && now.getTime() > ms_end) // Timeout reached - return null; - - // Walk the front path one step. - v_map1[d] = new Object(); - for (var k=-d; k<=d; k+=2) { - if (k == -d || k != d && v1[k-1] < v1[k+1]) - x = v1[k+1]; - else - x = v1[k-1]+1; - y = x - k; - footstep = x+","+y; - if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) - done = true; - if (!front) - footsteps[footstep] = d; - while (!done && x < text1.length && y < text2.length && text1.charAt(x) == text2.charAt(y)) { - x++; y++; - footstep = x+","+y; - if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) - done = true; - if (!front) - footsteps[footstep] = d; - } - v1[k] = x; - v_map1[d][x+","+y] = true; - if (done) { - // Front path ran over reverse path. - v_map2 = v_map2.slice(0, footsteps[footstep]+1); - var a = diff_path1(v_map1, text1.substring(0, x), text2.substring(0, y)); - return a.concat(diff_path2(v_map2, text1.substring(x), text2.substring(y))); - } - } - - // Walk the reverse path one step. - v_map2[d] = new Object(); - for (var k=-d; k<=d; k+=2) { - if (k == -d || k != d && v2[k-1] < v2[k+1]) - x = v2[k+1]; - else - x = v2[k-1]+1; - y = x - k; - footstep = (text1.length-x)+","+(text2.length-y); - if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) - done = true; - if (front) - footsteps[footstep] = d; - while (!done && x < text1.length && y < text2.length && text1.charAt(text1.length-x-1) == text2.charAt(text2.length-y-1)) { - x++; y++; - footstep = (text1.length-x)+","+(text2.length-y); - if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) - done = true; - if (front) - footsteps[footstep] = d; - } - v2[k] = x; - v_map2[d][x+","+y] = true; - if (done) { - // Reverse path ran over front path. - v_map1 = v_map1.slice(0, footsteps[footstep]+1); - var a = diff_path1(v_map1, text1.substring(0, text1.length-x), text2.substring(0, text2.length-y)); - return a.concat(diff_path2(v_map2, text1.substring(text1.length-x), text2.substring(text2.length-y))); - } - } - } - // Number of diffs equals number of characters, no commonality at all. - return null; -} - - -function diff_path1(v_map, text1, text2) { - // Work from the middle back to the start to determine the path. - var path = []; - var x = text1.length; - var y = text2.length; - var last_op = null; - for (var d=v_map.length-2; d>=0; d--) { - while(1) { - if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) { - x--; - if (last_op === -1) - path[0][1] = text1.charAt(x) + path[0][1]; - else - path.unshift([-1, text1.charAt(x)]); - last_op = -1; - break; - } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) { - y--; - if (last_op === 1) - path[0][1] = text2.charAt(y) + path[0][1]; - else - path.unshift([1, text2.charAt(y)]); - last_op = 1; - break; - } else { - x--; - y--; - //if (text1.charAt(x) != text2.charAt(y)) - // return alert("No diagonal. Can't happen. (diff_path1)"); - if (last_op === 0) - path[0][1] = text1.charAt(x) + path[0][1]; - else - path.unshift([0, text1.charAt(x)]); - last_op = 0; - } - } - } - return path; -} - - -function diff_path2(v_map, text1, text2) { - // Work from the middle back to the end to determine the path. - var path = []; - var x = text1.length; - var y = text2.length; - var last_op = null; - for (var d=v_map.length-2; d>=0; d--) { - while(1) { - if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) { - x--; - if (last_op === -1) - path[path.length-1][1] += text1.charAt(text1.length-x-1); - else - path.push([-1, text1.charAt(text1.length-x-1)]); - last_op = -1; - break; - } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) { - y--; - if (last_op === 1) - path[path.length-1][1] += text2.charAt(text2.length-y-1); - else - path.push([1, text2.charAt(text2.length-y-1)]); - last_op = 1; - break; - } else { - x--; - y--; - //if (text1.charAt(text1.length-x-1) != text2.charAt(text2.length-y-1)) - // return alert("No diagonal. Can't happen. (diff_path2)"); - if (last_op === 0) - path[path.length-1][1] += text1.charAt(text1.length-x-1); - else - path.push([0, text1.charAt(text1.length-x-1)]); - last_op = 0; - } - } - } - return path; -} - - -function diff_prefix(text1, text2) { - // Trim off common prefix - var pointermin = 0; - var pointermax = Math.min(text1.length, text2.length); - var pointermid = pointermax; - while(pointermin < pointermid) { - if (text1.substring(0, pointermid) == text2.substring(0, pointermid)) - pointermin = pointermid; - else - pointermax = pointermid; - pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); - } - var commonprefix = text1.substring(0, pointermid); - text1 = text1.substring(pointermid); - text2 = text2.substring(pointermid); - return [text1, text2, commonprefix]; -} - - -function diff_suffix(text1, text2) { - // Trim off common suffix - var pointermin = 0; - var pointermax = Math.min(text1.length, text2.length); - var pointermid = pointermax; - while(pointermin < pointermid) { - if (text1.substring(text1.length-pointermid) == text2.substring(text2.length-pointermid)) - pointermin = pointermid; - else - pointermax = pointermid; - pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); - } - var commonsuffix = text1.substring(text1.length-pointermid); - text1 = text1.substring(0, text1.length-pointermid); - text2 = text2.substring(0, text2.length-pointermid); - return [text1, text2, commonsuffix]; -} - - -function diff_halfmatch(text1, text2) { - // Do the two texts share a substring which is at least half the length of the longer text? - var longtext = text1.length > text2.length ? text1 : text2; - var shorttext = text1.length > text2.length ? text2 : text1; - if (longtext.length < 10 || shorttext.length < 1) - return null; // Pointless. - - function diff_halfmatch_i(longtext, shorttext, i) { - // Start with a 1/4 length substring at position i as a seed. - var seed = longtext.substring(i, i+Math.floor(longtext.length/4)); - var j = -1; - var best_common = ''; - var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b; - while ((j = shorttext.indexOf(seed, j+1)) != -1) { - var my_prefix = diff_prefix(longtext.substring(i), shorttext.substring(j)); - var my_suffix = diff_suffix(longtext.substring(0, i), shorttext.substring(0, j)); - if (best_common.length < (my_suffix[2] + my_prefix[2]).length) { - best_common = my_suffix[2] + my_prefix[2]; - best_longtext_a = my_suffix[0]; - best_longtext_b = my_prefix[0]; - best_shorttext_a = my_suffix[1]; - best_shorttext_b = my_prefix[1]; - } - } - if (best_common.length >= longtext.length/2) - return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common]; - else - return null; - } - - // First check if the second quarter is the seed for a half-match. - var hm1 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/4)); - // Check again based on the third quarter. - var hm2 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/2)); - var hm; - if (!hm1 && !hm2) - return null; - else if (!hm2) - hm = hm1; - else if (!hm1) - hm = hm2; - else // Both matched. Select the longest. - hm = hm1[4].length > hm2[4].length ? hm1 : hm2; - - // A half-match was found, sort out the return data. - if (text1.length > text2.length) { - var text1_a = hm[0]; - var text1_b = hm[1]; - var text2_a = hm[2]; - var text2_b = hm[3]; - } else { - var text2_a = hm[0]; - var text2_b = hm[1]; - var text1_a = hm[2]; - var text1_b = hm[3]; - } - var mid_common = hm[4]; - return [text1_a, text1_b, text2_a, text2_b, mid_common]; -} - - -function diff_cleanup_semantic(diff) { - // Reduce the number of edits by eliminating semantically trivial equalities. - var changes = false; - var equalities = []; // Stack of indices where equalities are found. - var lastequality = null; // Always equal to equalities[equalities.length-1][1] - var pointer = 0; // Index of current position. - var length_changes1 = 0; // Number of characters that changed prior to the equality. - var length_changes2 = 0; // Number of characters that changed after the equality. - while (pointer < diff.length) { - if (diff[pointer][0] == 0) { // equality found - equalities.push(pointer); - length_changes1 = length_changes2; - length_changes2 = 0; - lastequality = diff[pointer][1]; - } else { // an insertion or deletion - length_changes2 += diff[pointer][1].length; - if (lastequality != null && (lastequality.length <= length_changes1) && (lastequality.length <= length_changes2)) { - //alert("Splitting: '"+lastequality+"'"); - diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record - diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert. - equalities.pop(); // Throw away the equality we just deleted; - equalities.pop(); // Throw away the previous equality; - pointer = equalities.length ? equalities[equalities.length-1] : -1; - length_changes1 = 0; // Reset the counters. - length_changes2 = 0; - lastequality = null; - changes = true; - } - } - pointer++; - } - - if (changes) - diff_cleanup_merge(diff); -} - - -function diff_cleanup_efficiency(diff) { - // Reduce the number of edits by eliminating operationally trivial equalities. - var changes = false; - var equalities = []; // Stack of indices where equalities are found. - var lastequality = ''; // Always equal to equalities[equalities.length-1][1] - var pointer = 0; // Index of current position. - var pre_ins = false; // Is there an insertion operation before the last equality. - var pre_del = false; // Is there an deletion operation before the last equality. - var post_ins = false; // Is there an insertion operation after the last equality. - var post_del = false; // Is there an deletion operation after the last equality. - while (pointer < diff.length) { - if (diff[pointer][0] == 0) { // equality found - if (diff[pointer][1].length < DIFF_EDIT_COST && (post_ins || post_del)) { - // Candidate found. - equalities.push(pointer); - pre_ins = post_ins; - pre_del = post_del; - lastequality = diff[pointer][1]; - } else { - // Not a candidate, and can never become one. - equalities = []; - lastequality = ''; - } - post_ins = post_del = false; - } else { // an insertion or deletion - if (diff[pointer][0] == -1) - post_del = true; - else - post_ins = true; - // Five types to be split: - // ABXYCD - // AXCD - // ABXC - // AXCD - // ABXC - if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || ((lastequality.length < DIFF_EDIT_COST/2) && (pre_ins + pre_del + post_ins + post_del) == 3))) { - //alert("Splitting: '"+lastequality+"'"); - diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record - diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert. - equalities.pop(); // Throw away the equality we just deleted; - lastequality = ''; - if (pre_ins && pre_del) { - // No changes made which could affect previous entry, keep going. - post_ins = post_del = true; - equalities = []; - } else { - equalities.pop(); // Throw away the previous equality; - pointer = equalities.length ? equalities[equalities.length-1] : -1; - post_ins = post_del = false; - } - changes = true; - } - } - pointer++; - } - - if (changes) - diff_cleanup_merge(diff); -} - - -function diff_cleanup_merge(diff) { - // Reorder and merge like edit sections. Merge equalities. - // Any edit section can move as long as it doesn't cross an equality. - diff.push([0, '']); // Add a dummy entry at the end. - var pointer = 0; - var count_delete = 0; - var count_insert = 0; - var text_delete = ''; - var text_insert = ''; - var record_insert, record_delete; - var my_xfix; - while(pointer < diff.length) { - if (diff[pointer][0] == 1) { - count_insert++; - text_insert += diff[pointer][1]; - pointer++; - } else if (diff[pointer][0] == -1) { - count_delete++; - text_delete += diff[pointer][1]; - pointer++; - } else { // Upon reaching an equality, check for prior redundancies. - if (count_delete > 1 || count_insert > 1) { - if (count_delete > 1 && count_insert > 1) { - // Factor out any common prefixies. - my_xfix = diff_prefix(text_insert, text_delete); - if (my_xfix[2] != '') { - if ((pointer - count_delete - count_insert) > 0 && diff[pointer - count_delete - count_insert - 1][0] == 0) { - text_insert = my_xfix[0]; - text_delete = my_xfix[1]; - diff[pointer - count_delete - count_insert - 1][1] += my_xfix[2]; - } - } - // Factor out any common suffixies. - my_xfix = diff_suffix(text_insert, text_delete); - if (my_xfix[2] != '') { - text_insert = my_xfix[0]; - text_delete = my_xfix[1]; - diff[pointer][1] = my_xfix[2] + diff[pointer][1]; - } - } - // Delete the offending records and add the merged ones. - if (count_delete == 0) - diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [1, text_insert]); - else if (count_insert == 0) - diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete]); - else - diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete], [1, text_insert]); - pointer = pointer - count_delete - count_insert + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1; - } else if (pointer != 0 && diff[pointer-1][0] == 0) { - // Merge this equality with the previous one. - diff[pointer-1][1] += diff[pointer][1]; - diff.splice(pointer, 1); - } else { - pointer++; - } - count_insert = 0; - count_delete = 0; - text_delete = ''; - text_insert = ''; - } - } - if (diff[diff.length-1][1] == '') - diff.pop(); // Remove the dummy entry at the end. -} - - -function diff_addindex(diff) { - // Add an index to each tuple, represents where the tuple is located in text2. - // e.g. [[-1, 'h', 0], [1, 'c', 0], [0, 'at', 1]] - var i = 0; - for (var x=0; x1, 5->8 - var chars1 = 0; - var chars2 = 0; - var last_chars1 = 0; - var last_chars2 = 0; - for (var x=0; x loc) // Overshot the location. - break; - last_chars1 = chars1; - last_chars2 = chars2; - } - if (diff.length != x && diff[x][0] == -1) // The location was deleted. - return last_chars2; - // Add the remaining character length. - return last_chars2 + (loc - last_chars1); -} - - -function diff_prettyhtml(diff) { - // Convert a diff array into a pretty HTML report. - diff_addindex(diff); - var html = ''; - for (var x=0; x/g, ">"); - t = t.replace(/\n/g, "¶
"); - if (m == -1) - html += ""+t+""; - else if (m == 1) - html += ""+t+""; - else - html += ""+t+""; - } - return html; -} - - - ////////////////////////////////////////////////////////////////////// - // Match // -////////////////////////////////////////////////////////////////////// - - -function match_getmaxbits() { - // Compute the number of bits in an int. - // The normal answer for JavaScript is 32. - var maxbits = 0; - var oldi = 1; - var newi = 2; - while (oldi != newi) { - maxbits++; - oldi = newi; - newi = newi << 1; - } - return maxbits; -} -var MATCH_MAXBITS = match_getmaxbits(); - - -function match_main(text, pattern, loc) { - // Locate the best instance of 'pattern' in 'text' near 'loc'. - loc = Math.max(0, Math.min(loc, text.length-pattern.length)); - if (text == pattern) { - // Shortcut (potentially not guaranteed by the algorithm) - return 0; - } else if (text.length == 0) { - // Nothing to match. - return null; - } else if (text.substring(loc, loc + pattern.length) == pattern) { - // Perfect match at the perfect spot! (Includes case of null pattern) - return loc; - } else { - // Do a fuzzy compare. - var match = match_bitap(text, pattern, loc); - return match; - } -} - - -function match_bitap(text, pattern, loc) { - // Locate the best instance of 'pattern' in 'text' near 'loc' using the Bitap algorithm. - if (pattern.length > MATCH_MAXBITS) - return alert("Pattern too long for this browser."); - - // Initialise the alphabet. - var s = match_alphabet(pattern); - - var score_text_length = text.length; - // Coerce the text length between reasonable maximums and minimums. - score_text_length = Math.max(score_text_length, MATCH_MINLENGTH); - score_text_length = Math.min(score_text_length, MATCH_MAXLENGTH); - - function match_bitap_score (e, x) { - // Compute and return the score for a match with e errors and x location. - var d = Math.abs(loc-x); - return (e / pattern.length / MATCH_BALANCE) + (d / score_text_length / (1.0 - MATCH_BALANCE)); - } - - // Highest score beyond which we give up. - var score_threshold = MATCH_THRESHOLD; - // Is there a nearby exact match? (speedup) - var best_loc = text.indexOf(pattern, loc); - if (best_loc != -1) - score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold); - // What about in the other direction? (speedup) - best_loc = text.lastIndexOf(pattern, loc+pattern.length); - if (best_loc != -1) - score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold); - - // Initialise the bit arrays. - var r = Array(); - var d = -1; - var matchmask = Math.pow(2, pattern.length-1); - best_loc = null; - - var bin_min, bin_mid; - var bin_max = Math.max(loc+loc, text.length); - var last_rd; - for (var d=0; d=start; j--) { - // The alphabet (s) is a sparse hash, so the following lines generate warnings. - if (d == 0) // First pass: exact match. - rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)]; - else // Subsequent passes: fuzzy match. - rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)] | ((last_rd[j+1] << 1) | 1) | ((last_rd[j] << 1) | 1) | last_rd[j+1]; - if (rd[j] & matchmask) { - var score = match_bitap_score(d, j); - // This match will almost certainly be better than any existing match. But check anyway. - if (score <= score_threshold) { - // Told you so. - score_threshold = score; - best_loc = j; - if (j > loc) { - // When passing loc, don't exceed our current distance from loc. - start = Math.max(0, loc - (j - loc)); - } else { - // Already passed loc, downhill from here on in. - break; - } - } - } - } - if (match_bitap_score(d+1, loc) > score_threshold) // No hope for a (better) match at greater error levels. - break; - last_rd = rd; - } - return best_loc; -} - - -function match_alphabet(pattern) { - // Initialise the alphabet for the Bitap algorithm. - var s = Object(); - for (var i=0; i 2) { - diff_cleanup_semantic(diff); - diff_cleanup_efficiency(diff); - } - } - if (diff.length == 0) - return []; // Get rid of the null case. - var patches = []; - var patch = new patch_obj(); - var char_count1 = 0; // Number of characters into the text1 string. - var char_count2 = 0; // Number of characters into the text2 string. - var last_type = null; - var prepatch_text = text1; // Recreate the patches to determine context info. - var postpatch_text = text1; - for (var x=0; x= 2*PATCH_MARGIN) { - // Time for a new patch. - if (patch.diffs.length != 0) { - patch_addcontext(patch, prepatch_text); - patches.push(patch); - var patch = new patch_obj(); - last_type = null; - prepatch_text = postpatch_text; - } - } - - // Update the current character count. - if (diff_type != 1) - char_count1 += diff_text.length; - if (diff_type != -1) - char_count2 += diff_text.length; - } - // Pick up the leftover patch if not empty. - if (patch.diffs.length != 0) { - patch_addcontext(patch, prepatch_text); - patches.push(patch); - } - - return patches; -} - - -function patch_apply(patches, text) { - // Merge a set of patches onto the text. - // Return a patched text, as well as a list of true/false values indicating which patches were applied. - patch_splitmax(patches); - var results = []; - var delta = 0; - var expected_loc, start_loc; - var text1, text2; - var diff, mod, index1, index2; - for (var x=0; x MATCH_MAXBITS) { - bigpatch = patches[x]; - // Remove the big old patch. - patches.splice(x, 1); - patch_size = MATCH_MAXBITS; - start1 = bigpatch.start1; - start2 = bigpatch.start2; - precontext = ''; - while (bigpatch.diffs.length != 0) { - // Create one of several smaller patches. - patch = new patch_obj(); - empty = true; - patch.start1 = start1 - precontext.length; - patch.start2 = start2 - precontext.length; - if (precontext != '') { - patch.length1 = patch.length2 = precontext.length; - patch.diffs.push([0, precontext]); - } - while (bigpatch.diffs.length != 0 && patch.length1 < patch_size - PATCH_MARGIN) { - diff_type = bigpatch.diffs[0][0]; - diff_text = bigpatch.diffs[0][1]; - if (diff_type == 1) { - // Insertions are harmless. - patch.length2 += diff_text.length; - start2 += diff_text.length; - patch.diffs.push(bigpatch.diffs.shift()); - empty = false; - } else { - // Deletion or equality. Only take as much as we can stomach. - diff_text = diff_text.substring(0, patch_size - patch.length1 - PATCH_MARGIN); - patch.length1 += diff_text.length; - start1 += diff_text.length; - if (diff_type == 0) { - patch.length2 += diff_text.length; - start2 += diff_text.length; - } else { - empty = false; - } - patch.diffs.push([diff_type, diff_text]); - if (diff_text == bigpatch.diffs[0][1]) - bigpatch.diffs.shift(); - else - bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length); - } - } - // Compute the head context for the next patch. - precontext = patch.text2(); - precontext = precontext.substring(precontext.length - PATCH_MARGIN); - // Append the end context for this patch. - postcontext = bigpatch.text1().substring(0, PATCH_MARGIN); - if (postcontext != '') { - patch.length1 += postcontext.length; - patch.length2 += postcontext.length; - if (patch.diffs.length > 0 && patch.diffs[patch.diffs.length-1][0] == 0) - patch.diffs[patch.diffs.length-1][1] += postcontext; - else - patch.diffs.push([0, postcontext]); - } - if (!empty) - patches.splice(x++, 0, patch); - } - } - } -} - - -function patch_totext(patches) { - // Take a list of patches and return a textual representation. - var text = ''; - for (var x=0; x text2.length ? text1 : text2; + var shorttext = text1.length > text2.length ? text2 : text1; + + if (!text1) { // Just add some text (speedup) + diff = [[1, text2]]; + } else if (!text2) { // Just delete some text (speedup) + diff = [[-1, text1]]; + } else if ((i = longtext.indexOf(shorttext)) != -1) { + // Shorter text is inside the longer text (speedup) + diff = [[1, longtext.substring(0, i)], [0, shorttext], [1, longtext.substring(i+shorttext.length)]]; + // Swap insertions for deletions if diff is reversed. + if (text1.length > text2.length) + diff[0][0] = diff[2][0] = -1; + } else { + longtext = shorttext = null; // Garbage collect + // Check to see if the problem can be split in two. + var hm = diff_halfmatch(text1, text2); + if (hm) { + // A half-match was found, sort out the return data. + var text1_a = hm[0]; + var text1_b = hm[1]; + var text2_a = hm[2]; + var text2_b = hm[3]; + var mid_common = hm[4]; + // Send both pairs off for separate processing. + var diff_a = diff_main(text1_a, text2_a, checklines); + var diff_b = diff_main(text1_b, text2_b, checklines); + // Merge the results. + diff = diff_a.concat([[0, mid_common]], diff_b); + } else { + // Perform a real diff. + if (checklines && text1.length + text2.length < 250) + checklines = false; // Too trivial for the overhead. + if (checklines) { + // Scan the text on a line-by-line basis first. + a = diff_lines2chars(text1, text2); + text1 = a[0]; + text2 = a[1]; + var linearray = a[2]; + } + diff = diff_map(text1, text2); + if (!diff) // No acceptable result. + diff = [[-1, text1], [1, text2]]; + if (checklines) { + diff_chars2lines(diff, linearray); // Convert the diff back to original text. + diff_cleanup_semantic(diff); // Eliminate freak matches (e.g. blank lines) + + // Rediff any replacement blocks, this time on character-by-character basis. + diff.push([0, '']); // Add a dummy entry at the end. + var pointer = 0; + var count_delete = 0; + var count_insert = 0; + var text_delete = ''; + var text_insert = ''; + while(pointer < diff.length) { + if (diff[pointer][0] == 1) { + count_insert++; + text_insert += diff[pointer][1]; + } else if (diff[pointer][0] == -1) { + count_delete++; + text_delete += diff[pointer][1]; + } else { // Upon reaching an equality, check for prior redundancies. + if (count_delete >= 1 && count_insert >= 1) { + // Delete the offending records and add the merged ones. + a = diff_main(text_delete, text_insert, false); + diff.splice(pointer - count_delete - count_insert, count_delete + count_insert); + pointer = pointer - count_delete - count_insert; + for (i=a.length-1; i>=0; i--) + diff.splice(pointer, 0, a[i]); + pointer = pointer + a.length; + } + count_insert = 0; + count_delete = 0; + text_delete = ''; + text_insert = ''; + } + pointer++; + } + diff.pop(); // Remove the dummy entry at the end. + + } + } + } + + if (commonprefix) + diff.unshift([0, commonprefix]); + if (commonsuffix) + diff.push([0, commonsuffix]); + diff_cleanup_merge(diff); + return diff; +} + + +function diff_lines2chars(text1, text2) { + // Split text into an array of strings. + // Reduce the texts to a string of hashes where each character represents one line. + var linearray = new Array(); // linearray[4] == "Hello\n" + var linehash = new Object(); // linehash["Hello\n"] == 4 + + // "\x00" is a valid JavaScript character, but the Venkman debugger doesn't like it (bug 335098) + // So we'll insert a junk entry to avoid generating a null character. + linearray.push(''); + + function diff_lines2chars_munge(text) { + // My first ever closure! + var i, line; + var chars = ''; + while (text) { + i = text.indexOf('\n'); + if (i == -1) + i = text.length; + line = text.substring(0, i+1); + text = text.substring(i+1); + if (linehash.hasOwnProperty ? linehash.hasOwnProperty(line) : (linehash[line] !== undefined)) { + chars += String.fromCharCode(linehash[line]); + } else { + linearray.push(line); + linehash[line] = linearray.length - 1; + chars += String.fromCharCode(linearray.length - 1); + } + } + return chars; + } + + var chars1 = diff_lines2chars_munge(text1); + var chars2 = diff_lines2chars_munge(text2); + return [chars1, chars2, linearray]; +} + + +function diff_chars2lines(diff, linearray) { + // Rehydrate the text in a diff from a string of line hashes to real lines of text. + var chars, text; + for (var x=0; x 0 && now.getTime() > ms_end) // Timeout reached + return null; + + // Walk the front path one step. + v_map1[d] = new Object(); + for (var k=-d; k<=d; k+=2) { + if (k == -d || k != d && v1[k-1] < v1[k+1]) + x = v1[k+1]; + else + x = v1[k-1]+1; + y = x - k; + footstep = x+","+y; + if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) + done = true; + if (!front) + footsteps[footstep] = d; + while (!done && x < text1.length && y < text2.length && text1.charAt(x) == text2.charAt(y)) { + x++; y++; + footstep = x+","+y; + if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) + done = true; + if (!front) + footsteps[footstep] = d; + } + v1[k] = x; + v_map1[d][x+","+y] = true; + if (done) { + // Front path ran over reverse path. + v_map2 = v_map2.slice(0, footsteps[footstep]+1); + var a = diff_path1(v_map1, text1.substring(0, x), text2.substring(0, y)); + return a.concat(diff_path2(v_map2, text1.substring(x), text2.substring(y))); + } + } + + // Walk the reverse path one step. + v_map2[d] = new Object(); + for (var k=-d; k<=d; k+=2) { + if (k == -d || k != d && v2[k-1] < v2[k+1]) + x = v2[k+1]; + else + x = v2[k-1]+1; + y = x - k; + footstep = (text1.length-x)+","+(text2.length-y); + if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) + done = true; + if (front) + footsteps[footstep] = d; + while (!done && x < text1.length && y < text2.length && text1.charAt(text1.length-x-1) == text2.charAt(text2.length-y-1)) { + x++; y++; + footstep = (text1.length-x)+","+(text2.length-y); + if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) + done = true; + if (front) + footsteps[footstep] = d; + } + v2[k] = x; + v_map2[d][x+","+y] = true; + if (done) { + // Reverse path ran over front path. + v_map1 = v_map1.slice(0, footsteps[footstep]+1); + var a = diff_path1(v_map1, text1.substring(0, text1.length-x), text2.substring(0, text2.length-y)); + return a.concat(diff_path2(v_map2, text1.substring(text1.length-x), text2.substring(text2.length-y))); + } + } + } + // Number of diffs equals number of characters, no commonality at all. + return null; +} + + +function diff_path1(v_map, text1, text2) { + // Work from the middle back to the start to determine the path. + var path = []; + var x = text1.length; + var y = text2.length; + var last_op = null; + for (var d=v_map.length-2; d>=0; d--) { + while(1) { + if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) { + x--; + if (last_op === -1) + path[0][1] = text1.charAt(x) + path[0][1]; + else + path.unshift([-1, text1.charAt(x)]); + last_op = -1; + break; + } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) { + y--; + if (last_op === 1) + path[0][1] = text2.charAt(y) + path[0][1]; + else + path.unshift([1, text2.charAt(y)]); + last_op = 1; + break; + } else { + x--; + y--; + //if (text1.charAt(x) != text2.charAt(y)) + // return alert("No diagonal. Can't happen. (diff_path1)"); + if (last_op === 0) + path[0][1] = text1.charAt(x) + path[0][1]; + else + path.unshift([0, text1.charAt(x)]); + last_op = 0; + } + } + } + return path; +} + + +function diff_path2(v_map, text1, text2) { + // Work from the middle back to the end to determine the path. + var path = []; + var x = text1.length; + var y = text2.length; + var last_op = null; + for (var d=v_map.length-2; d>=0; d--) { + while(1) { + if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) { + x--; + if (last_op === -1) + path[path.length-1][1] += text1.charAt(text1.length-x-1); + else + path.push([-1, text1.charAt(text1.length-x-1)]); + last_op = -1; + break; + } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) { + y--; + if (last_op === 1) + path[path.length-1][1] += text2.charAt(text2.length-y-1); + else + path.push([1, text2.charAt(text2.length-y-1)]); + last_op = 1; + break; + } else { + x--; + y--; + //if (text1.charAt(text1.length-x-1) != text2.charAt(text2.length-y-1)) + // return alert("No diagonal. Can't happen. (diff_path2)"); + if (last_op === 0) + path[path.length-1][1] += text1.charAt(text1.length-x-1); + else + path.push([0, text1.charAt(text1.length-x-1)]); + last_op = 0; + } + } + } + return path; +} + + +function diff_prefix(text1, text2) { + // Trim off common prefix + var pointermin = 0; + var pointermax = Math.min(text1.length, text2.length); + var pointermid = pointermax; + while(pointermin < pointermid) { + if (text1.substring(0, pointermid) == text2.substring(0, pointermid)) + pointermin = pointermid; + else + pointermax = pointermid; + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + var commonprefix = text1.substring(0, pointermid); + text1 = text1.substring(pointermid); + text2 = text2.substring(pointermid); + return [text1, text2, commonprefix]; +} + + +function diff_suffix(text1, text2) { + // Trim off common suffix + var pointermin = 0; + var pointermax = Math.min(text1.length, text2.length); + var pointermid = pointermax; + while(pointermin < pointermid) { + if (text1.substring(text1.length-pointermid) == text2.substring(text2.length-pointermid)) + pointermin = pointermid; + else + pointermax = pointermid; + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + var commonsuffix = text1.substring(text1.length-pointermid); + text1 = text1.substring(0, text1.length-pointermid); + text2 = text2.substring(0, text2.length-pointermid); + return [text1, text2, commonsuffix]; +} + + +function diff_halfmatch(text1, text2) { + // Do the two texts share a substring which is at least half the length of the longer text? + var longtext = text1.length > text2.length ? text1 : text2; + var shorttext = text1.length > text2.length ? text2 : text1; + if (longtext.length < 10 || shorttext.length < 1) + return null; // Pointless. + + function diff_halfmatch_i(longtext, shorttext, i) { + // Start with a 1/4 length substring at position i as a seed. + var seed = longtext.substring(i, i+Math.floor(longtext.length/4)); + var j = -1; + var best_common = ''; + var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b; + while ((j = shorttext.indexOf(seed, j+1)) != -1) { + var my_prefix = diff_prefix(longtext.substring(i), shorttext.substring(j)); + var my_suffix = diff_suffix(longtext.substring(0, i), shorttext.substring(0, j)); + if (best_common.length < (my_suffix[2] + my_prefix[2]).length) { + best_common = my_suffix[2] + my_prefix[2]; + best_longtext_a = my_suffix[0]; + best_longtext_b = my_prefix[0]; + best_shorttext_a = my_suffix[1]; + best_shorttext_b = my_prefix[1]; + } + } + if (best_common.length >= longtext.length/2) + return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common]; + else + return null; + } + + // First check if the second quarter is the seed for a half-match. + var hm1 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/4)); + // Check again based on the third quarter. + var hm2 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/2)); + var hm; + if (!hm1 && !hm2) + return null; + else if (!hm2) + hm = hm1; + else if (!hm1) + hm = hm2; + else // Both matched. Select the longest. + hm = hm1[4].length > hm2[4].length ? hm1 : hm2; + + // A half-match was found, sort out the return data. + if (text1.length > text2.length) { + var text1_a = hm[0]; + var text1_b = hm[1]; + var text2_a = hm[2]; + var text2_b = hm[3]; + } else { + var text2_a = hm[0]; + var text2_b = hm[1]; + var text1_a = hm[2]; + var text1_b = hm[3]; + } + var mid_common = hm[4]; + return [text1_a, text1_b, text2_a, text2_b, mid_common]; +} + + +function diff_cleanup_semantic(diff) { + // Reduce the number of edits by eliminating semantically trivial equalities. + var changes = false; + var equalities = []; // Stack of indices where equalities are found. + var lastequality = null; // Always equal to equalities[equalities.length-1][1] + var pointer = 0; // Index of current position. + var length_changes1 = 0; // Number of characters that changed prior to the equality. + var length_changes2 = 0; // Number of characters that changed after the equality. + while (pointer < diff.length) { + if (diff[pointer][0] == 0) { // equality found + equalities.push(pointer); + length_changes1 = length_changes2; + length_changes2 = 0; + lastequality = diff[pointer][1]; + } else { // an insertion or deletion + length_changes2 += diff[pointer][1].length; + if (lastequality != null && (lastequality.length <= length_changes1) && (lastequality.length <= length_changes2)) { + //alert("Splitting: '"+lastequality+"'"); + diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record + diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert. + equalities.pop(); // Throw away the equality we just deleted; + equalities.pop(); // Throw away the previous equality; + pointer = equalities.length ? equalities[equalities.length-1] : -1; + length_changes1 = 0; // Reset the counters. + length_changes2 = 0; + lastequality = null; + changes = true; + } + } + pointer++; + } + + if (changes) + diff_cleanup_merge(diff); +} + + +function diff_cleanup_efficiency(diff) { + // Reduce the number of edits by eliminating operationally trivial equalities. + var changes = false; + var equalities = []; // Stack of indices where equalities are found. + var lastequality = ''; // Always equal to equalities[equalities.length-1][1] + var pointer = 0; // Index of current position. + var pre_ins = false; // Is there an insertion operation before the last equality. + var pre_del = false; // Is there an deletion operation before the last equality. + var post_ins = false; // Is there an insertion operation after the last equality. + var post_del = false; // Is there an deletion operation after the last equality. + while (pointer < diff.length) { + if (diff[pointer][0] == 0) { // equality found + if (diff[pointer][1].length < DIFF_EDIT_COST && (post_ins || post_del)) { + // Candidate found. + equalities.push(pointer); + pre_ins = post_ins; + pre_del = post_del; + lastequality = diff[pointer][1]; + } else { + // Not a candidate, and can never become one. + equalities = []; + lastequality = ''; + } + post_ins = post_del = false; + } else { // an insertion or deletion + if (diff[pointer][0] == -1) + post_del = true; + else + post_ins = true; + // Five types to be split: + // ABXYCD + // AXCD + // ABXC + // AXCD + // ABXC + if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || ((lastequality.length < DIFF_EDIT_COST/2) && (pre_ins + pre_del + post_ins + post_del) == 3))) { + //alert("Splitting: '"+lastequality+"'"); + diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record + diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert. + equalities.pop(); // Throw away the equality we just deleted; + lastequality = ''; + if (pre_ins && pre_del) { + // No changes made which could affect previous entry, keep going. + post_ins = post_del = true; + equalities = []; + } else { + equalities.pop(); // Throw away the previous equality; + pointer = equalities.length ? equalities[equalities.length-1] : -1; + post_ins = post_del = false; + } + changes = true; + } + } + pointer++; + } + + if (changes) + diff_cleanup_merge(diff); +} + + +function diff_cleanup_merge(diff) { + // Reorder and merge like edit sections. Merge equalities. + // Any edit section can move as long as it doesn't cross an equality. + diff.push([0, '']); // Add a dummy entry at the end. + var pointer = 0; + var count_delete = 0; + var count_insert = 0; + var text_delete = ''; + var text_insert = ''; + var record_insert, record_delete; + var my_xfix; + while(pointer < diff.length) { + if (diff[pointer][0] == 1) { + count_insert++; + text_insert += diff[pointer][1]; + pointer++; + } else if (diff[pointer][0] == -1) { + count_delete++; + text_delete += diff[pointer][1]; + pointer++; + } else { // Upon reaching an equality, check for prior redundancies. + if (count_delete > 1 || count_insert > 1) { + if (count_delete > 1 && count_insert > 1) { + // Factor out any common prefixies. + my_xfix = diff_prefix(text_insert, text_delete); + if (my_xfix[2] != '') { + if ((pointer - count_delete - count_insert) > 0 && diff[pointer - count_delete - count_insert - 1][0] == 0) { + text_insert = my_xfix[0]; + text_delete = my_xfix[1]; + diff[pointer - count_delete - count_insert - 1][1] += my_xfix[2]; + } + } + // Factor out any common suffixies. + my_xfix = diff_suffix(text_insert, text_delete); + if (my_xfix[2] != '') { + text_insert = my_xfix[0]; + text_delete = my_xfix[1]; + diff[pointer][1] = my_xfix[2] + diff[pointer][1]; + } + } + // Delete the offending records and add the merged ones. + if (count_delete == 0) + diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [1, text_insert]); + else if (count_insert == 0) + diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete]); + else + diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete], [1, text_insert]); + pointer = pointer - count_delete - count_insert + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1; + } else if (pointer != 0 && diff[pointer-1][0] == 0) { + // Merge this equality with the previous one. + diff[pointer-1][1] += diff[pointer][1]; + diff.splice(pointer, 1); + } else { + pointer++; + } + count_insert = 0; + count_delete = 0; + text_delete = ''; + text_insert = ''; + } + } + if (diff[diff.length-1][1] == '') + diff.pop(); // Remove the dummy entry at the end. +} + + +function diff_addindex(diff) { + // Add an index to each tuple, represents where the tuple is located in text2. + // e.g. [[-1, 'h', 0], [1, 'c', 0], [0, 'at', 1]] + var i = 0; + for (var x=0; x1, 5->8 + var chars1 = 0; + var chars2 = 0; + var last_chars1 = 0; + var last_chars2 = 0; + for (var x=0; x loc) // Overshot the location. + break; + last_chars1 = chars1; + last_chars2 = chars2; + } + if (diff.length != x && diff[x][0] == -1) // The location was deleted. + return last_chars2; + // Add the remaining character length. + return last_chars2 + (loc - last_chars1); +} + + +function diff_prettyhtml(diff) { + // Convert a diff array into a pretty HTML report. + diff_addindex(diff); + var html = ''; + for (var x=0; x/g, ">"); + t = t.replace(/\n/g, "¶
"); + if (m == -1) + html += ""+t+""; + else if (m == 1) + html += ""+t+""; + else + html += ""+t+""; + } + return html; +} + + + ////////////////////////////////////////////////////////////////////// + // Match // +////////////////////////////////////////////////////////////////////// + + +function match_getmaxbits() { + // Compute the number of bits in an int. + // The normal answer for JavaScript is 32. + var maxbits = 0; + var oldi = 1; + var newi = 2; + while (oldi != newi) { + maxbits++; + oldi = newi; + newi = newi << 1; + } + return maxbits; +} +var MATCH_MAXBITS = match_getmaxbits(); + + +function match_main(text, pattern, loc) { + // Locate the best instance of 'pattern' in 'text' near 'loc'. + loc = Math.max(0, Math.min(loc, text.length-pattern.length)); + if (text == pattern) { + // Shortcut (potentially not guaranteed by the algorithm) + return 0; + } else if (text.length == 0) { + // Nothing to match. + return null; + } else if (text.substring(loc, loc + pattern.length) == pattern) { + // Perfect match at the perfect spot! (Includes case of null pattern) + return loc; + } else { + // Do a fuzzy compare. + var match = match_bitap(text, pattern, loc); + return match; + } +} + + +function match_bitap(text, pattern, loc) { + // Locate the best instance of 'pattern' in 'text' near 'loc' using the Bitap algorithm. + if (pattern.length > MATCH_MAXBITS) + return alert("Pattern too long for this browser."); + + // Initialise the alphabet. + var s = match_alphabet(pattern); + + var score_text_length = text.length; + // Coerce the text length between reasonable maximums and minimums. + score_text_length = Math.max(score_text_length, MATCH_MINLENGTH); + score_text_length = Math.min(score_text_length, MATCH_MAXLENGTH); + + function match_bitap_score (e, x) { + // Compute and return the score for a match with e errors and x location. + var d = Math.abs(loc-x); + return (e / pattern.length / MATCH_BALANCE) + (d / score_text_length / (1.0 - MATCH_BALANCE)); + } + + // Highest score beyond which we give up. + var score_threshold = MATCH_THRESHOLD; + // Is there a nearby exact match? (speedup) + var best_loc = text.indexOf(pattern, loc); + if (best_loc != -1) + score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold); + // What about in the other direction? (speedup) + best_loc = text.lastIndexOf(pattern, loc+pattern.length); + if (best_loc != -1) + score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold); + + // Initialise the bit arrays. + var r = Array(); + var d = -1; + var matchmask = Math.pow(2, pattern.length-1); + best_loc = null; + + var bin_min, bin_mid; + var bin_max = Math.max(loc+loc, text.length); + var last_rd; + for (var d=0; d=start; j--) { + // The alphabet (s) is a sparse hash, so the following lines generate warnings. + if (d == 0) // First pass: exact match. + rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)]; + else // Subsequent passes: fuzzy match. + rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)] | ((last_rd[j+1] << 1) | 1) | ((last_rd[j] << 1) | 1) | last_rd[j+1]; + if (rd[j] & matchmask) { + var score = match_bitap_score(d, j); + // This match will almost certainly be better than any existing match. But check anyway. + if (score <= score_threshold) { + // Told you so. + score_threshold = score; + best_loc = j; + if (j > loc) { + // When passing loc, don't exceed our current distance from loc. + start = Math.max(0, loc - (j - loc)); + } else { + // Already passed loc, downhill from here on in. + break; + } + } + } + } + if (match_bitap_score(d+1, loc) > score_threshold) // No hope for a (better) match at greater error levels. + break; + last_rd = rd; + } + return best_loc; +} + + +function match_alphabet(pattern) { + // Initialise the alphabet for the Bitap algorithm. + var s = Object(); + for (var i=0; i 2) { + diff_cleanup_semantic(diff); + diff_cleanup_efficiency(diff); + } + } + if (diff.length == 0) + return []; // Get rid of the null case. + var patches = []; + var patch = new patch_obj(); + var char_count1 = 0; // Number of characters into the text1 string. + var char_count2 = 0; // Number of characters into the text2 string. + var last_type = null; + var prepatch_text = text1; // Recreate the patches to determine context info. + var postpatch_text = text1; + for (var x=0; x= 2*PATCH_MARGIN) { + // Time for a new patch. + if (patch.diffs.length != 0) { + patch_addcontext(patch, prepatch_text); + patches.push(patch); + var patch = new patch_obj(); + last_type = null; + prepatch_text = postpatch_text; + } + } + + // Update the current character count. + if (diff_type != 1) + char_count1 += diff_text.length; + if (diff_type != -1) + char_count2 += diff_text.length; + } + // Pick up the leftover patch if not empty. + if (patch.diffs.length != 0) { + patch_addcontext(patch, prepatch_text); + patches.push(patch); + } + + return patches; +} + + +function patch_apply(patches, text) { + // Merge a set of patches onto the text. + // Return a patched text, as well as a list of true/false values indicating which patches were applied. + patch_splitmax(patches); + var results = []; + var delta = 0; + var expected_loc, start_loc; + var text1, text2; + var diff, mod, index1, index2; + for (var x=0; x MATCH_MAXBITS) { + bigpatch = patches[x]; + // Remove the big old patch. + patches.splice(x, 1); + patch_size = MATCH_MAXBITS; + start1 = bigpatch.start1; + start2 = bigpatch.start2; + precontext = ''; + while (bigpatch.diffs.length != 0) { + // Create one of several smaller patches. + patch = new patch_obj(); + empty = true; + patch.start1 = start1 - precontext.length; + patch.start2 = start2 - precontext.length; + if (precontext != '') { + patch.length1 = patch.length2 = precontext.length; + patch.diffs.push([0, precontext]); + } + while (bigpatch.diffs.length != 0 && patch.length1 < patch_size - PATCH_MARGIN) { + diff_type = bigpatch.diffs[0][0]; + diff_text = bigpatch.diffs[0][1]; + if (diff_type == 1) { + // Insertions are harmless. + patch.length2 += diff_text.length; + start2 += diff_text.length; + patch.diffs.push(bigpatch.diffs.shift()); + empty = false; + } else { + // Deletion or equality. Only take as much as we can stomach. + diff_text = diff_text.substring(0, patch_size - patch.length1 - PATCH_MARGIN); + patch.length1 += diff_text.length; + start1 += diff_text.length; + if (diff_type == 0) { + patch.length2 += diff_text.length; + start2 += diff_text.length; + } else { + empty = false; + } + patch.diffs.push([diff_type, diff_text]); + if (diff_text == bigpatch.diffs[0][1]) + bigpatch.diffs.shift(); + else + bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length); + } + } + // Compute the head context for the next patch. + precontext = patch.text2(); + precontext = precontext.substring(precontext.length - PATCH_MARGIN); + // Append the end context for this patch. + postcontext = bigpatch.text1().substring(0, PATCH_MARGIN); + if (postcontext != '') { + patch.length1 += postcontext.length; + patch.length2 += postcontext.length; + if (patch.diffs.length > 0 && patch.diffs[patch.diffs.length-1][0] == 0) + patch.diffs[patch.diffs.length-1][1] += postcontext; + else + patch.diffs.push([0, postcontext]); + } + if (!empty) + patches.splice(x++, 0, patch); + } + } + } +} + + +function patch_totext(patches) { + // Take a list of patches and return a textual representation. + var text = ''; + for (var x=0; x - - {$lang_emotions_title} - - - - - -
-
{$lang_emotions_title}:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
{$lang_emotions_cool}{$lang_emotions_cry}{$lang_emotions_embarassed}{$lang_emotions_foot_in_mouth}
{$lang_emotions_frown}{$lang_emotions_innocent}{$lang_emotions_kiss}{$lang_emotions_laughing}
{$lang_emotions_money_mouth}{$lang_emotions_sealed}{$lang_emotions_smile}{$lang_emotions_surprised}
{$lang_emotions_tongue-out}{$lang_emotions_undecided}{$lang_emotions_wink}{$lang_emotions_yell}
-
- - + + + {$lang_emotions_title} + + + + + +
+
{$lang_emotions_title}:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang_emotions_cool}{$lang_emotions_cry}{$lang_emotions_embarassed}{$lang_emotions_foot_in_mouth}
{$lang_emotions_frown}{$lang_emotions_innocent}{$lang_emotions_kiss}{$lang_emotions_laughing}
{$lang_emotions_money_mouth}{$lang_emotions_sealed}{$lang_emotions_smile}{$lang_emotions_surprised}
{$lang_emotions_tongue-out}{$lang_emotions_undecided}{$lang_emotions_wink}{$lang_emotions_yell}
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/emotions.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/emotions.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/emotions.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/emotions.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/readme.txt similarity index 98% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/readme.txt rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/readme.txt index a3cea1b68..cc2cf3fea 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/readme.txt +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/readme.txt @@ -1,2 +1,2 @@ -These emotions where taken from Mozilla Thunderbird. -I hope they don't get angry if I use them here after all this is a open source project aswell. +These emotions where taken from Mozilla Thunderbird. +I hope they don't get angry if I use them here after all this is a open source project aswell. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cry.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cry.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cry.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cry.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-frown.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-frown.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-frown.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-frown.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-kiss.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-kiss.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-kiss.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-kiss.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-sealed.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-sealed.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-sealed.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-sealed.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-smile.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-smile.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-smile.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-smile.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-surprised.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-surprised.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-surprised.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-surprised.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-yell.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-yell.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-yell.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-yell.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/jscripts/functions.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/jscripts/functions.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/jscripts/functions.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/jscripts/functions.js index 95a9eafe8..a4e38d9ba 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/jscripts/functions.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/jscripts/functions.js @@ -1,21 +1,21 @@ -function init() { - tinyMCEPopup.resizeToInnerSize(); -} - -function insertEmotion(file_name, title) { - title = tinyMCE.getLang(title); - - if (title == null) - title = ""; - - // XML encode - title = title.replace(/&/g, '&'); - title = title.replace(/\"/g, '"'); - title = title.replace(//g, '>'); - - var html = '' + title + ''; - - tinyMCE.execCommand('mceInsertContent', false, html); - tinyMCEPopup.close(); -} +function init() { + tinyMCEPopup.resizeToInnerSize(); +} + +function insertEmotion(file_name, title) { + title = tinyMCE.getLang(title); + + if (title == null) + title = ""; + + // XML encode + title = title.replace(/&/g, '&'); + title = title.replace(/\"/g, '"'); + title = title.replace(//g, '>'); + + var html = '' + title + ''; + + tinyMCE.execCommand('mceInsertContent', false, html); + tinyMCEPopup.close(); +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en.js similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en.js index 3cdd67517..5d9ee6040 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en.js @@ -1,22 +1,22 @@ -// UK lang variables - -tinyMCE.addToLang('emotions',{ -title : 'Insert emotion', -desc : 'Emotions', -cool : 'Cool', -cry : 'Cry', -embarassed : 'Embarassed', -foot_in_mouth : 'Foot in mouth', -frown : 'Frown', -innocent : 'Innocent', -kiss : 'Kiss', -laughing : 'Laughing', -money_mouth : 'Money mouth', -sealed : 'Sealed', -smile : 'Smile', -surprised : 'Surprised', -tongue_out : 'Tongue out', -undecided : 'Undecided', -wink : 'Wink', -yell : 'Yell' -}); +// UK lang variables + +tinyMCE.addToLang('emotions',{ +title : 'Insert emotion', +desc : 'Emotions', +cool : 'Cool', +cry : 'Cry', +embarassed : 'Embarassed', +foot_in_mouth : 'Foot in mouth', +frown : 'Frown', +innocent : 'Innocent', +kiss : 'Kiss', +laughing : 'Laughing', +money_mouth : 'Money mouth', +sealed : 'Sealed', +smile : 'Smile', +surprised : 'Surprised', +tongue_out : 'Tongue out', +undecided : 'Undecided', +wink : 'Wink', +yell : 'Yell' +}); diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/emotions/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/flash/css/content.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/css/content.css similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/flash/css/content.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/css/content.css index 843258b79..998021787 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/flash/css/content.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/css/content.css @@ -1,7 +1,7 @@ -.mceItemFlash { - border: 1px dotted #cc0000; - background-image: url('../images/flash.gif'); - background-position: center; - background-repeat: no-repeat; - background-color: #ffffcc; -} +.mceItemFlash { + border: 1px dotted #cc0000; + background-image: url('../images/flash.gif'); + background-position: center; + background-repeat: no-repeat; + background-color: #ffffcc; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/flash/css/flash.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/css/flash.css similarity index 90% rename from lib/tinymce/jscripts/tiny_mce/plugins/flash/css/flash.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/css/flash.css index d3e88e1a2..2fa558ee3 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/flash/css/flash.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/css/flash.css @@ -1,11 +1,11 @@ -.panel_wrapper div.current { - height: 100px; -} - -#width, #height { - width: 50px; -} - -#file { - width: 250px; -} +.panel_wrapper div.current { + height: 100px; +} + +#width, #height { + width: 50px; +} + +#file { + width: 250px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin_src.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin_src.js index 8f7cda781..bd00bd13b 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin_src.js @@ -1,285 +1,285 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('flash'); - -var TinyMCE_FlashPlugin = { - getInfo : function() { - return { - longname : 'Flash', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/flash', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - if (!tinyMCE.settings['flash_skip_plugin_css']) - tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/flash/css/content.css"); - }, - - getControlHTML : function(cn) { - switch (cn) { - case "flash": - return tinyMCE.getButtonHTML(cn, 'lang_flash_desc', '{$pluginurl}/images/flash.gif', 'mceFlash'); - } - - return ""; - }, - - execCommand : function(editor_id, element, command, user_interface, value) { - // Handle commands - switch (command) { - case "mceFlash": - var name = "", swffile = "", swfwidth = "", swfheight = "", action = "insert"; - var template = new Array(); - var inst = tinyMCE.getInstanceById(editor_id); - var focusElm = inst.getFocusElement(); - - template['file'] = '../../plugins/flash/flash.htm'; // Relative to theme - template['width'] = 430; - template['height'] = 175; - - template['width'] += tinyMCE.getLang('lang_flash_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_flash_delta_height', 0); - - // Is selection a image - if (focusElm != null && focusElm.nodeName.toLowerCase() == "img") { - name = tinyMCE.getAttrib(focusElm, 'class'); - - if (name.indexOf('mceItemFlash') == -1) // Not a Flash - return true; - - // Get rest of Flash items - swffile = tinyMCE.getAttrib(focusElm, 'alt'); - - if (tinyMCE.getParam('convert_urls')) - swffile = eval(tinyMCE.settings['urlconverter_callback'] + "(swffile, null, true);"); - - swfwidth = tinyMCE.getAttrib(focusElm, 'width'); - swfheight = tinyMCE.getAttrib(focusElm, 'height'); - action = "update"; - } - - tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", swffile : swffile, swfwidth : swfwidth, swfheight : swfheight, action : action}); - return true; - } - - // Pass to next handler in chain - return false; - }, - - cleanup : function(type, content) { - switch (type) { - case "insert_to_editor_dom": - // Force relative/absolute - if (tinyMCE.getParam('convert_urls')) { - var imgs = content.getElementsByTagName("img"); - for (var i=0; i','gi'),''); - content = content.replace(new RegExp('<[ ]*object','gi'),'','gi'),''); - - // Parse all embed tags - while ((startPos = content.indexOf('', startPos); - var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 6, endPos)); - embedList[embedList.length] = attribs; - } - - // Parse all object tags and replace them with images from the embed data - var index = 0; - while ((startPos = content.indexOf('= embedList.length) - break; - - var attribs = embedList[index]; - - // Find end of object - endPos = content.indexOf('', startPos); - endPos += 9; - - // Insert image - var contentAfter = content.substring(endPos); - content = content.substring(0, startPos); - content += '' + content.substring(endPos); - content += contentAfter; - index++; - - startPos++; - } - - // Parse all embed tags and replace them with images from the embed data - var index = 0; - while ((startPos = content.indexOf('= embedList.length) - break; - - var attribs = embedList[index]; - - // Find end of embed - endPos = content.indexOf('>', startPos); - endPos += 9; - - // Insert image - var contentAfter = content.substring(endPos); - content = content.substring(0, startPos); - content += '' + content.substring(endPos); - content += contentAfter; - index++; - - startPos++; - } - - break; - - case "get_from_editor": - // Parse all img tags and replace them with object+embed - var startPos = -1; - - while ((startPos = content.indexOf('', startPos); - var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 4, endPos)); - - // Is not flash, skip it - if (attribs['class'] != "mceItemFlash") - continue; - - endPos += 2; - - var embedHTML = ''; - var wmode = tinyMCE.getParam("flash_wmode", ""); - var quality = tinyMCE.getParam("flash_quality", "high"); - var menu = tinyMCE.getParam("flash_menu", "false"); - - // Insert object + embed - embedHTML += ''; - embedHTML += ''; - embedHTML += ''; - embedHTML += ''; - embedHTML += ''; - embedHTML += ''; - - // Insert embed/object chunk - chunkBefore = content.substring(0, startPos); - chunkAfter = content.substring(endPos); - content = chunkBefore + embedHTML + chunkAfter; - } - break; - } - - // Pass through to next handler in chain - return content; - }, - - handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { - if (node == null) - return; - - do { - if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItemFlash') == 0) { - tinyMCE.switchClass(editor_id + '_flash', 'mceButtonSelected'); - return true; - } - } while ((node = node.parentNode)); - - tinyMCE.switchClass(editor_id + '_flash', 'mceButtonNormal'); - - return true; - }, - - // Private plugin internal functions - - _parseAttributes : function(attribute_string) { - var attributeName = ""; - var attributeValue = ""; - var withInName; - var withInValue; - var attributes = new Array(); - var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g'); - - if (attribute_string == null || attribute_string.length < 2) - return null; - - withInName = withInValue = false; - - for (var i=0; i','gi'),''); + content = content.replace(new RegExp('<[ ]*object','gi'),'','gi'),''); + + // Parse all embed tags + while ((startPos = content.indexOf('', startPos); + var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 6, endPos)); + embedList[embedList.length] = attribs; + } + + // Parse all object tags and replace them with images from the embed data + var index = 0; + while ((startPos = content.indexOf('= embedList.length) + break; + + var attribs = embedList[index]; + + // Find end of object + endPos = content.indexOf('', startPos); + endPos += 9; + + // Insert image + var contentAfter = content.substring(endPos); + content = content.substring(0, startPos); + content += '' + content.substring(endPos); + content += contentAfter; + index++; + + startPos++; + } + + // Parse all embed tags and replace them with images from the embed data + var index = 0; + while ((startPos = content.indexOf('= embedList.length) + break; + + var attribs = embedList[index]; + + // Find end of embed + endPos = content.indexOf('>', startPos); + endPos += 9; + + // Insert image + var contentAfter = content.substring(endPos); + content = content.substring(0, startPos); + content += '' + content.substring(endPos); + content += contentAfter; + index++; + + startPos++; + } + + break; + + case "get_from_editor": + // Parse all img tags and replace them with object+embed + var startPos = -1; + + while ((startPos = content.indexOf('', startPos); + var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 4, endPos)); + + // Is not flash, skip it + if (attribs['class'] != "mceItemFlash") + continue; + + endPos += 2; + + var embedHTML = ''; + var wmode = tinyMCE.getParam("flash_wmode", ""); + var quality = tinyMCE.getParam("flash_quality", "high"); + var menu = tinyMCE.getParam("flash_menu", "false"); + + // Insert object + embed + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + + // Insert embed/object chunk + chunkBefore = content.substring(0, startPos); + chunkAfter = content.substring(endPos); + content = chunkBefore + embedHTML + chunkAfter; + } + break; + } + + // Pass through to next handler in chain + return content; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + if (node == null) + return; + + do { + if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItemFlash') == 0) { + tinyMCE.switchClass(editor_id + '_flash', 'mceButtonSelected'); + return true; + } + } while ((node = node.parentNode)); + + tinyMCE.switchClass(editor_id + '_flash', 'mceButtonNormal'); + + return true; + }, + + // Private plugin internal functions + + _parseAttributes : function(attribute_string) { + var attributeName = ""; + var attributeValue = ""; + var withInName; + var withInValue; + var attributes = new Array(); + var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g'); + + if (attribute_string == null || attribute_string.length < 2) + return null; + + withInName = withInValue = false; + + for (var i=0; i -
- - -
-
-
- {$lang_flash_general} - - - - - - - - - - - - - - -
- - - - - -
 
-
 
- -  x  - -
-
-
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_flash_title} + + + + + + + + +
+ + +
+
+
+ {$lang_flash_general} + + + + + + + + + + + + + + +
+ + + + + +
 
+
 
+ +  x  + +
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/flash/images/flash.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/images/flash.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/flash/images/flash.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/images/flash.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/flash/jscripts/flash.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/jscripts/flash.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/flash/jscripts/flash.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/jscripts/flash.js index 4f0807726..950956c86 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/flash/jscripts/flash.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/jscripts/flash.js @@ -1,107 +1,107 @@ -var url = tinyMCE.getParam("flash_external_list_url"); -if (url != null) { - // Fix relative - if (url.charAt(0) != '/' && url.indexOf('://') == -1) - url = tinyMCE.documentBasePath + "/" + url; - - document.write(''); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - document.getElementById("filebrowsercontainer").innerHTML = getBrowserHTML('filebrowser','file','flash','flash'); - - // Image list outsrc - var html = getFlashListHTML('filebrowser','file','flash','flash'); - if (html == "") - document.getElementById("linklistrow").style.display = 'none'; - else - document.getElementById("linklistcontainer").innerHTML = html; - - var formObj = document.forms[0]; - var swffile = tinyMCE.getWindowArg('swffile'); - var swfwidth = '' + tinyMCE.getWindowArg('swfwidth'); - var swfheight = '' + tinyMCE.getWindowArg('swfheight'); - - if (swfwidth.indexOf('%')!=-1) { - formObj.width2.value = "%"; - formObj.width.value = swfwidth.substring(0,swfwidth.length-1); - } else { - formObj.width2.value = "px"; - formObj.width.value = swfwidth; - } - - if (swfheight.indexOf('%')!=-1) { - formObj.height2.value = "%"; - formObj.height.value = swfheight.substring(0,swfheight.length-1); - } else { - formObj.height2.value = "px"; - formObj.height.value = swfheight; - } - - formObj.file.value = swffile; - formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); - - selectByValue(formObj, 'linklist', swffile); - - // Handle file browser - if (isVisible('filebrowser')) - document.getElementById('file').style.width = '230px'; - - // Auto select flash in list - if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) { - for (var i=0; i 0) { - var html = ""; - - html += ''; - - return html; - } - - return ""; -} - -function insertFlash() { - var formObj = document.forms[0]; - var html = ''; - var file = formObj.file.value; - var width = formObj.width.value; - var height = formObj.height.value; - if (formObj.width2.value=='%') { - width = width + '%'; - } - if (formObj.height2.value=='%') { - height = height + '%'; - } - - if (width == "") - width = 100; - - if (height == "") - height = 100; - - html += '' - + '' + file + ''; - - tinyMCEPopup.execCommand("mceInsertContent", true, html); - tinyMCE.selectedInstance.repaint(); - - tinyMCEPopup.close(); -} +var url = tinyMCE.getParam("flash_external_list_url"); +if (url != null) { + // Fix relative + if (url.charAt(0) != '/' && url.indexOf('://') == -1) + url = tinyMCE.documentBasePath + "/" + url; + + document.write(''); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById("filebrowsercontainer").innerHTML = getBrowserHTML('filebrowser','file','flash','flash'); + + // Image list outsrc + var html = getFlashListHTML('filebrowser','file','flash','flash'); + if (html == "") + document.getElementById("linklistrow").style.display = 'none'; + else + document.getElementById("linklistcontainer").innerHTML = html; + + var formObj = document.forms[0]; + var swffile = tinyMCE.getWindowArg('swffile'); + var swfwidth = '' + tinyMCE.getWindowArg('swfwidth'); + var swfheight = '' + tinyMCE.getWindowArg('swfheight'); + + if (swfwidth.indexOf('%')!=-1) { + formObj.width2.value = "%"; + formObj.width.value = swfwidth.substring(0,swfwidth.length-1); + } else { + formObj.width2.value = "px"; + formObj.width.value = swfwidth; + } + + if (swfheight.indexOf('%')!=-1) { + formObj.height2.value = "%"; + formObj.height.value = swfheight.substring(0,swfheight.length-1); + } else { + formObj.height2.value = "px"; + formObj.height.value = swfheight; + } + + formObj.file.value = swffile; + formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); + + selectByValue(formObj, 'linklist', swffile); + + // Handle file browser + if (isVisible('filebrowser')) + document.getElementById('file').style.width = '230px'; + + // Auto select flash in list + if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) { + for (var i=0; i 0) { + var html = ""; + + html += ''; + + return html; + } + + return ""; +} + +function insertFlash() { + var formObj = document.forms[0]; + var html = ''; + var file = formObj.file.value; + var width = formObj.width.value; + var height = formObj.height.value; + if (formObj.width2.value=='%') { + width = width + '%'; + } + if (formObj.height2.value=='%') { + height = height + '%'; + } + + if (width == "") + width = 100; + + if (height == "") + height = 100; + + html += '' + + '' + file + ''; + + tinyMCEPopup.execCommand("mceInsertContent", true, html); + tinyMCE.selectedInstance.repaint(); + + tinyMCEPopup.close(); +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/flash/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/langs/en.js similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/plugins/flash/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/langs/en.js index 67272bc97..03ccdff37 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/flash/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/langs/en.js @@ -1,11 +1,11 @@ -// UK lang variables - -tinyMCE.addToLang('flash',{ -title : 'Insert / edit Flash Movie', -desc : 'Insert / edit Flash Movie', -file : 'Flash-File (.swf)', -size : 'Size', -list : 'Flash files', -props : 'Flash properties', -general : 'General' -}); +// UK lang variables + +tinyMCE.addToLang('flash',{ +title : 'Insert / edit Flash Movie', +desc : 'Insert / edit Flash Movie', +file : 'Flash-File (.swf)', +size : 'Size', +list : 'Flash files', +props : 'Flash properties', +general : 'General' +}); diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/flash/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/blank.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/blank.htm similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/blank.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/blank.htm index 1e5876a27..5d77b1db5 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/blank.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/blank.htm @@ -1,9 +1,9 @@ - - - blank_page - - - - - - + + + blank_page + + + + + + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css similarity index 93% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css index 19f74f48b..fea3a437b 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css @@ -1,176 +1,176 @@ -/* Hide the advanced tab */ -#advanced_tab { - display: none; -} - -#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright { - width: 280px; -} - -#doctype, #docencoding { - width: 200px; -} - -#langcode { - width: 30px; -} - -#bgimage { - width: 220px; -} - -#fontface { - width: 240px; -} - -#leftmargin, #rightmargin, #topmargin, #bottommargin { - width: 50px; -} - -.panel_wrapper div.current { - height: 400px; -} - -#stylesheet, #style { - width: 240px; -} - -/* Head list classes */ - -.headlistwrapper { - width: 100%; -} - -.addbutton, .removebutton, .moveupbutton, .movedownbutton { - border-top: 1px solid; - border-left: 1px solid; - border-bottom: 1px solid; - border-right: 1px solid; - border-color: #F0F0EE; - cursor: default; - display: block; - width: 20px; - height: 20px; -} - -.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover { - border: 1px solid #0A246A; - background-color: #B6BDD2; -} - -.addbutton { - background-image: url('../images/add.gif'); - float: left; - margin-right: 3px; -} - -.removebutton { - background-image: url('../images/remove.gif'); - float: left; -} - -.moveupbutton { - background-image: url('../images/move_up.gif'); - float: left; - margin-right: 3px; -} - -.movedownbutton { - background-image: url('../images/move_down.gif'); - float: left; -} - -.selected { - border: 1px solid #0A246A; - background-color: #B6BDD2; -} - -.toolbar { - width: 100%; -} - -#headlist { - width: 100%; - margin-top: 3px; - font-size: 11px; -} - -#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element { - display: none; -} - -#addmenu { - position: absolute; - border: 1px solid gray; - display: none; - z-index: 100; - background-color: white; -} - -#addmenu a { - display: block; - width: 100%; - line-height: 20px; - text-decoration: none; - background-color: white; -} - -#addmenu a:hover { - background-color: #B6BDD2; - color: black; -} - -#addmenu span { - padding-left: 10px; - padding-right: 10px; -} - -#updateElementPanel { - display: none; -} - -#script_element .panel_wrapper div.current { - height: 108px; -} - -#style_element .panel_wrapper div.current { - height: 108px; -} - -#link_element .panel_wrapper div.current { - height: 140px; -} - -#element_script_value { - width: 100%; - height: 100px; -} - -#element_comment_value { - width: 100%; - height: 120px; -} - -#element_style_value { - width: 100%; - height: 100px; -} - -#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title { - width: 250px; -} - -.updateElementButton { - margin-top: 3px; -} - -/* MSIE specific styles */ - -* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton { - width: 22px; - height: 22px; -} - -textarea { - height: 55px; +/* Hide the advanced tab */ +#advanced_tab { + display: none; +} + +#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright { + width: 280px; +} + +#doctype, #docencoding { + width: 200px; +} + +#langcode { + width: 30px; +} + +#bgimage { + width: 220px; +} + +#fontface { + width: 240px; +} + +#leftmargin, #rightmargin, #topmargin, #bottommargin { + width: 50px; +} + +.panel_wrapper div.current { + height: 400px; +} + +#stylesheet, #style { + width: 240px; +} + +/* Head list classes */ + +.headlistwrapper { + width: 100%; +} + +.addbutton, .removebutton, .moveupbutton, .movedownbutton { + border-top: 1px solid; + border-left: 1px solid; + border-bottom: 1px solid; + border-right: 1px solid; + border-color: #F0F0EE; + cursor: default; + display: block; + width: 20px; + height: 20px; +} + +.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover { + border: 1px solid #0A246A; + background-color: #B6BDD2; +} + +.addbutton { + background-image: url('../images/add.gif'); + float: left; + margin-right: 3px; +} + +.removebutton { + background-image: url('../images/remove.gif'); + float: left; +} + +.moveupbutton { + background-image: url('../images/move_up.gif'); + float: left; + margin-right: 3px; +} + +.movedownbutton { + background-image: url('../images/move_down.gif'); + float: left; +} + +.selected { + border: 1px solid #0A246A; + background-color: #B6BDD2; +} + +.toolbar { + width: 100%; +} + +#headlist { + width: 100%; + margin-top: 3px; + font-size: 11px; +} + +#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element { + display: none; +} + +#addmenu { + position: absolute; + border: 1px solid gray; + display: none; + z-index: 100; + background-color: white; +} + +#addmenu a { + display: block; + width: 100%; + line-height: 20px; + text-decoration: none; + background-color: white; +} + +#addmenu a:hover { + background-color: #B6BDD2; + color: black; +} + +#addmenu span { + padding-left: 10px; + padding-right: 10px; +} + +#updateElementPanel { + display: none; +} + +#script_element .panel_wrapper div.current { + height: 108px; +} + +#style_element .panel_wrapper div.current { + height: 108px; +} + +#link_element .panel_wrapper div.current { + height: 140px; +} + +#element_script_value { + width: 100%; + height: 100px; +} + +#element_comment_value { + width: 100%; + height: 120px; +} + +#element_style_value { + width: 100%; + height: 100px; +} + +#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title { + width: 250px; +} + +.updateElementButton { + margin-top: 3px; +} + +/* MSIE specific styles */ + +* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton { + width: 22px; + height: 22px; +} + +textarea { + height: 55px; } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js index 8c56d26f0..aa10d8675 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js @@ -1,235 +1,235 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('fullpage'); - -var TinyMCE_FullPagePlugin = { - getInfo : function() { - return { - longname : 'Fullpage', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - getControlHTML : function(cn) { - switch (cn) { - case "fullpage": - return tinyMCE.getButtonHTML(cn, 'lang_fullpage_desc', '{$pluginurl}/images/fullpage.gif', 'mceFullPageProperties'); - } - - return ""; - }, - - execCommand : function(editor_id, element, command, user_interface, value) { - // Handle commands - switch (command) { - case "mceFullPageProperties": - var template = new Array(); - - template['file'] = '../../plugins/fullpage/fullpage.htm'; - template['width'] = 430; - template['height'] = 485 + (tinyMCE.isOpera ? 5 : 0); - - template['width'] += tinyMCE.getLang('lang_fullpage_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_fullpage_delta_height', 0); - - tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); - return true; - - case "mceFullPageUpdate": - TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id)); - return true; - } - - // Pass to next handler in chain - return false; - }, - - cleanup : function(type, content, inst) { - switch (type) { - case "insert_to_editor": - var tmp = content.toLowerCase(); - var pos = tmp.indexOf('', pos); - pos2 = tmp.lastIndexOf(''); - inst.fullpageTopContent = content.substring(0, pos + 1); - content = content.substring(pos + 1, pos2); - // tinyMCE.debug(inst.fullpageTopContent, content); - } else { - if (!inst.fullpageTopContent) { - var docType = tinyMCE.getParam("fullpage_default_doctype", ''); - var enc = tinyMCE.getParam("fullpage_default_encoding", 'utf-8'); - var title = tinyMCE.getParam("fullpage_default_title", 'Untitled document'); - var lang = tinyMCE.getParam("fullpage_default_langcode", 'en'); - var pi = tinyMCE.getParam("fullpage_default_xml_pi", true); - var ff = tinyMCE.getParam("fullpage_default_font_family", ""); - var fz = tinyMCE.getParam("fullpage_default_font_size", ""); - var ds = tinyMCE.getParam("fullpage_default_style", ""); - var dtc = tinyMCE.getParam("fullpage_default_text_color", ""); - - // Xml encode it - title = title.replace(/&/g, '&'); - title = title.replace(/\"/g, '"'); - title = title.replace(//g, '>'); - - tmp = ''; - - // Make default chunk - if (pi) - tmp += '\n'; - - tmp += docType + '\n'; - tmp += '\n'; - tmp += '\n'; - tmp += '\t' + title + '\n'; - tmp += '\t\n'; - tmp += '\n'; - tmp += ']+(\s|\>)/i, ''); // Remove internal stuff - content = inst.fullpageTopContent + content + "\n\n"; - } - - break; - - case "submit_content": - if (inst.fullpageTopContent && tinyMCE.getParam("fullpage_hide_in_source_view", false)) - content = inst.fullpageTopContent + content + "\n\n"; - - break; - } - - // Pass through to next handler in chain - return content; - }, - - // Private plugin internal methods - - _addToHead : function(inst) { - var doc = inst.getDoc(); - var head = doc.getElementsByTagName("head")[0]; - var body = doc.body; - var h = inst.fullpageTopContent; - var e = doc.createElement("body"); - var nl, i, le, tmp; - - // Remove stuff we don't want - h = h.replace(/(\r|\n)/gi, ''); - h = h.replace(/<\?[^\>]*\>/gi, ''); - h = h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi, ''); - h = h.replace(//gi, ''); - h = h.replace(//gi, ''); - h = h.replace(/<(meta|base)[^>]*>/gi, ''); - - // Make link and style elements into pre - h = h.replace(/]*)\/>/gi, '
');
-		//h = h.replace(/]*)>(.*?)<\/style>/gi, '
$2
'); - - // Make body a div - h = h.replace(/ 0) { - body.style.cssText = tinyMCE.getAttrib(nl[0], 'style'); - - if ((tmp = tinyMCE.getAttrib(nl[0], 'leftmargin')) != '' && body.style.marginLeft == '') - body.style.marginLeft = tmp + "px"; - - if ((tmp = tinyMCE.getAttrib(nl[0], 'rightmargin')) != '' && body.style.marginRight == '') - body.style.marginRight = tmp + "px"; - - if ((tmp = tinyMCE.getAttrib(nl[0], 'topmargin')) != '' && body.style.marginTop == '') - body.style.marginTop = tmp + "px"; - - if ((tmp = tinyMCE.getAttrib(nl[0], 'bottommargin')) != '' && body.style.marginBottom == '') - body.style.marginBottom = tmp + "px"; - - body.dir = tinyMCE.getAttrib(nl[0], 'dir'); - body.vLink = tinyMCE.getAttrib(nl[0], 'vlink'); - body.aLink = tinyMCE.getAttrib(nl[0], 'alink'); - body.link = tinyMCE.getAttrib(nl[0], 'link'); - body.text = tinyMCE.getAttrib(nl[0], 'text'); - - if ((tmp = tinyMCE.getAttrib(nl[0], 'background')) != '') - body.style.backgroundImage = "url('" + tmp + "')"; - - if ((tmp = tinyMCE.getAttrib(nl[0], 'bgcolor')) != '') - body.style.backgroundColor = tmp; - } - } -}; - -tinyMCE.addPlugin("fullpage", TinyMCE_FullPagePlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('fullpage'); + +var TinyMCE_FullPagePlugin = { + getInfo : function() { + return { + longname : 'Fullpage', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + getControlHTML : function(cn) { + switch (cn) { + case "fullpage": + return tinyMCE.getButtonHTML(cn, 'lang_fullpage_desc', '{$pluginurl}/images/fullpage.gif', 'mceFullPageProperties'); + } + + return ""; + }, + + execCommand : function(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceFullPageProperties": + var template = new Array(); + + template['file'] = '../../plugins/fullpage/fullpage.htm'; + template['width'] = 430; + template['height'] = 485 + (tinyMCE.isOpera ? 5 : 0); + + template['width'] += tinyMCE.getLang('lang_fullpage_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_fullpage_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + return true; + + case "mceFullPageUpdate": + TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id)); + return true; + } + + // Pass to next handler in chain + return false; + }, + + cleanup : function(type, content, inst) { + switch (type) { + case "insert_to_editor": + var tmp = content.toLowerCase(); + var pos = tmp.indexOf('', pos); + pos2 = tmp.lastIndexOf(''); + inst.fullpageTopContent = content.substring(0, pos + 1); + content = content.substring(pos + 1, pos2); + // tinyMCE.debug(inst.fullpageTopContent, content); + } else { + if (!inst.fullpageTopContent) { + var docType = tinyMCE.getParam("fullpage_default_doctype", ''); + var enc = tinyMCE.getParam("fullpage_default_encoding", 'utf-8'); + var title = tinyMCE.getParam("fullpage_default_title", 'Untitled document'); + var lang = tinyMCE.getParam("fullpage_default_langcode", 'en'); + var pi = tinyMCE.getParam("fullpage_default_xml_pi", true); + var ff = tinyMCE.getParam("fullpage_default_font_family", ""); + var fz = tinyMCE.getParam("fullpage_default_font_size", ""); + var ds = tinyMCE.getParam("fullpage_default_style", ""); + var dtc = tinyMCE.getParam("fullpage_default_text_color", ""); + + // Xml encode it + title = title.replace(/&/g, '&'); + title = title.replace(/\"/g, '"'); + title = title.replace(//g, '>'); + + tmp = ''; + + // Make default chunk + if (pi) + tmp += '\n'; + + tmp += docType + '\n'; + tmp += '\n'; + tmp += '\n'; + tmp += '\t' + title + '\n'; + tmp += '\t\n'; + tmp += '\n'; + tmp += ']+(\s|\>)/i, ''); // Remove internal stuff + content = inst.fullpageTopContent + content + "\n\n"; + } + + break; + + case "submit_content": + if (inst.fullpageTopContent && tinyMCE.getParam("fullpage_hide_in_source_view", false)) + content = inst.fullpageTopContent + content + "\n\n"; + + break; + } + + // Pass through to next handler in chain + return content; + }, + + // Private plugin internal methods + + _addToHead : function(inst) { + var doc = inst.getDoc(); + var head = doc.getElementsByTagName("head")[0]; + var body = doc.body; + var h = inst.fullpageTopContent; + var e = doc.createElement("body"); + var nl, i, le, tmp; + + // Remove stuff we don't want + h = h.replace(/(\r|\n)/gi, ''); + h = h.replace(/<\?[^\>]*\>/gi, ''); + h = h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi, ''); + h = h.replace(//gi, ''); + h = h.replace(//gi, ''); + h = h.replace(/<(meta|base)[^>]*>/gi, ''); + + // Make link and style elements into pre + h = h.replace(/]*)\/>/gi, '
');
+		//h = h.replace(/]*)>(.*?)<\/style>/gi, '
$2
'); + + // Make body a div + h = h.replace(/ 0) { + body.style.cssText = tinyMCE.getAttrib(nl[0], 'style'); + + if ((tmp = tinyMCE.getAttrib(nl[0], 'leftmargin')) != '' && body.style.marginLeft == '') + body.style.marginLeft = tmp + "px"; + + if ((tmp = tinyMCE.getAttrib(nl[0], 'rightmargin')) != '' && body.style.marginRight == '') + body.style.marginRight = tmp + "px"; + + if ((tmp = tinyMCE.getAttrib(nl[0], 'topmargin')) != '' && body.style.marginTop == '') + body.style.marginTop = tmp + "px"; + + if ((tmp = tinyMCE.getAttrib(nl[0], 'bottommargin')) != '' && body.style.marginBottom == '') + body.style.marginBottom = tmp + "px"; + + body.dir = tinyMCE.getAttrib(nl[0], 'dir'); + body.vLink = tinyMCE.getAttrib(nl[0], 'vlink'); + body.aLink = tinyMCE.getAttrib(nl[0], 'alink'); + body.link = tinyMCE.getAttrib(nl[0], 'link'); + body.text = tinyMCE.getAttrib(nl[0], 'text'); + + if ((tmp = tinyMCE.getAttrib(nl[0], 'background')) != '') + body.style.backgroundImage = "url('" + tmp + "')"; + + if ((tmp = tinyMCE.getAttrib(nl[0], 'bgcolor')) != '') + body.style.backgroundColor = tmp; + } + } +}; + +tinyMCE.addPlugin("fullpage", TinyMCE_FullPagePlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm index 2781581ff..cb81705dc 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm @@ -1,577 +1,577 @@ - - - {$lang_fullpage_title} - - - - - - - - - -
- - -
-
-
- {$lang_fullpage_meta_props} - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
 
 
 
 
  - -
-
- -
- {$lang_fullpage_langprops} - - - - - - - - - - - - - - - - - - - - - - -
- -
  - -
 
- -
 
-
-
- -
-
- {$lang_fullpage_appearance_textprops} - - - - - - - - - - - - - - - - -
- -
- -
- - - - - -
 
-
-
- -
- {$lang_fullpage_appearance_bgprops} - - - - - - - - - - -
- - - - - -
 
-
- - - - - -
 
-
-
- -
- {$lang_fullpage_appearance_marginprops} - - - - - - - - - - - - - - -
-
- -
- {$lang_fullpage_appearance_linkprops} - - - - - - - - - - - - - - - - - - - -
- - - - - -
-
- - - - - -
 
-
- - - - - -
 
-
  
-
- -
- {$lang_fullpage_appearance_style} - - - - - - - - - - -
- - - - -
 
-
-
- -
- - -
- {$lang_fullpage_head_elements} - -
-
-
- - -
-
- - -
-
-
- -
-
- -
- {$lang_fullpage_meta_element} - - - - - - - - - - - - - - -
- - -
- -
- {$lang_fullpage_title_element} - - - - - - -
- - -
- -
- {$lang_fullpage_script_element} - - - -
- -
-
- - - - - - - - - - - - - - - - - -
- - - - -
 
-
- -
- -
-
- - -
- -
- {$lang_fullpage_style_element} - - - -
- -
-
- - - - - - - - - -
-
- -
- -
-
- - -
- -
- {$lang_fullpage_base_element} - - - - - - - - - - -
- - -
- - - -
- {$lang_fullpage_comment_element} - - - - -
-
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_fullpage_title} + + + + + + + + + +
+ + +
+
+
+ {$lang_fullpage_meta_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
 
 
 
 
  + +
+
+ +
+ {$lang_fullpage_langprops} + + + + + + + + + + + + + + + + + + + + + + +
+ +
  + +
 
+ +
 
+
+
+ +
+
+ {$lang_fullpage_appearance_textprops} + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+
+ +
+ {$lang_fullpage_appearance_bgprops} + + + + + + + + + + +
+ + + + + +
 
+
+ + + + + +
 
+
+
+ +
+ {$lang_fullpage_appearance_marginprops} + + + + + + + + + + + + + + +
+
+ +
+ {$lang_fullpage_appearance_linkprops} + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
 
+
+ + + + + +
 
+
  
+
+ +
+ {$lang_fullpage_appearance_style} + + + + + + + + + + +
+ + + + +
 
+
+
+ +
+ + +
+ {$lang_fullpage_head_elements} + +
+
+
+ + +
+
+ + +
+
+
+ +
+
+ +
+ {$lang_fullpage_meta_element} + + + + + + + + + + + + + + +
+ + +
+ +
+ {$lang_fullpage_title_element} + + + + + + +
+ + +
+ +
+ {$lang_fullpage_script_element} + + + +
+ +
+
+ + + + + + + + + + + + + + + + + +
+ + + + +
 
+
+ +
+ +
+
+ + +
+ +
+ {$lang_fullpage_style_element} + + + +
+ +
+
+ + + + + + + + + +
+
+ +
+ +
+
+ + +
+ +
+ {$lang_fullpage_base_element} + + + + + + + + + + +
+ + +
+ + + +
+ {$lang_fullpage_comment_element} + + + + +
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/images/add.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/images/add.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/images/add.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/images/add.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/images/fullpage.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/images/fullpage.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/images/fullpage.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/images/fullpage.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/images/move_down.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/images/move_down.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/images/move_down.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/images/move_down.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/images/move_up.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/images/move_up.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/images/move_up.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/images/move_up.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/images/remove.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/images/remove.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/images/remove.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/images/remove.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js index 6f766b509..e27e38563 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js @@ -1,580 +1,580 @@ -// - -var defaultDocTypes = - 'XHTML 1.0 Transitional=,' + - 'XHTML 1.0 Frameset=,' + - 'XHTML 1.0 Strict=,' + - 'XHTML 1.1=,' + - 'HTML 4.01 Transitional=,' + - 'HTML 4.01 Strict=,' + - 'HTML 4.01 Frameset='; - -var defaultEncodings = - 'Western european (iso-8859-1)=iso-8859-1,' + - 'Central European (iso-8859-2)=iso-8859-2,' + - 'Unicode (UTF-8)=utf-8,' + - 'Chinese traditional (Big5)=big5,' + - 'Cyrillic (iso-8859-5)=iso-8859-5,' + - 'Japanese (iso-2022-jp)=iso-2022-jp,' + - 'Greek (iso-8859-7)=iso-8859-7,' + - 'Korean (iso-2022-kr)=iso-2022-kr,' + - 'ASCII (us-ascii)=us-ascii'; - -var defaultMediaTypes = - 'all=all,' + - 'screen=screen,' + - 'print=print,' + - 'tty=tty,' + - 'tv=tv,' + - 'projection=projection,' + - 'handheld=handheld,' + - 'braille=braille,' + - 'aural=aural'; - -var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings'; -var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px'; - -var addMenuLayer = new MCLayer("addmenu"); -var lastElementType = null; -var topDoc; - -function init() { - var f = document.forms['fullpage']; - var i, p, doctypes, encodings, mediaTypes, fonts; - var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); - - // Setup doctype select box - doctypes = tinyMCE.getParam("fullpage_doctypes", defaultDocTypes).split(','); - for (i=0; i 1) - addSelectValue(f, 'doctypes', p[0], p[1]); - } - - // Setup fonts select box - fonts = tinyMCE.getParam("fullpage_fonts", defaultFontNames).split(';'); - for (i=0; i 1) - addSelectValue(f, 'fontface', p[0], p[1]); - } - - // Setup fontsize select box - fonts = tinyMCE.getParam("fullpage_fontsizes", defaultFontSizes).split(','); - for (i=0; i 1) { - addSelectValue(f, 'element_style_media', p[0], p[1]); - addSelectValue(f, 'element_link_media', p[0], p[1]); - } - } - - // Setup encodings select box - encodings = tinyMCE.getParam("fullpage_encodings", defaultEncodings).split(','); - for (i=0; i 1) { - addSelectValue(f, 'docencoding', p[0], p[1]); - addSelectValue(f, 'element_script_charset', p[0], p[1]); - addSelectValue(f, 'element_link_charset', p[0], p[1]); - } - } - - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color'); - //document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color'); - document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color'); - document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color'); - document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor'); - document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage'); - document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage'); - document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage'); - document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage'); - - // Resize some elements - if (isVisible('stylesheetbrowser')) - document.getElementById('stylesheet').style.width = '220px'; - - if (isVisible('link_href_browser')) - document.getElementById('element_link_href').style.width = '230px'; - - if (isVisible('bgimage_browser')) - document.getElementById('bgimage').style.width = '210px'; - - // Create iframe - var iframe = document.createElement('iframe'); - - iframe.id = 'tempFrame'; - iframe.style.display = 'none'; - iframe.src = tinyMCE.baseURL + "/plugins/fullpage/blank.htm"; - - document.body.appendChild(iframe); - - tinyMCEPopup.resizeToInnerSize(); -} - -function setupIframe(doc) { - var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); - var hc = inst.fullpageTopContent; - var f = document.forms[0]; - var xmlVer, xmlEnc, docType; - var nodes, i, x, name, value, tmp, l; - - // Keep it from not loading/executing stuff - hc = hc.replace(/ - - - - -
- -
- - + + + {$lang_fullscreen_title} + + + + + + +
+ +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/en.js similarity index 94% rename from lib/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/en.js index c5ad4ca93..cd9a948b7 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullscreen/langs/en.js @@ -1,5 +1,5 @@ -// UK lang variables - -tinyMCE.addToLang('',{ -fullscreen_desc : 'Toggle fullscreen mode' -}); +// UK lang variables + +tinyMCE.addToLang('',{ +fullscreen_desc : 'Toggle fullscreen mode' +}); diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullscreen/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullscreen/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/fullscreen/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js index 52246ce83..e7d5a6046 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js @@ -1,58 +1,58 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('iespell'); - -var TinyMCE_IESpellPlugin = { - getInfo : function() { - return { - longname : 'IESpell (MSIE Only)', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - /** - * Returns the HTML contents of the iespell control. - */ - getControlHTML : function(cn) { - // Is it the iespell control and is the brower MSIE. - if (cn == "iespell" && (tinyMCE.isMSIE && !tinyMCE.isOpera)) - return tinyMCE.getButtonHTML(cn, 'lang_iespell_desc', '{$pluginurl}/images/iespell.gif', 'mceIESpell'); - - return ""; - }, - - /** - * Executes the mceIESpell command. - */ - execCommand : function(editor_id, element, command, user_interface, value) { - // Handle ieSpellCommand - if (command == "mceIESpell") { - try { - var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension"); - ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement); - } catch (e) { - if (e.number == -2146827859) { - if (confirm(tinyMCE.getLang("lang_iespell_download", "", true))) - window.open('http://www.iespell.com/download.php', 'ieSpellDownload', ''); - } else - alert("Error Loading ieSpell: Exception " + e.number); - } - - return true; - } - - // Pass to next handler in chain - return false; - } -}; - -tinyMCE.addPlugin("iespell", TinyMCE_IESpellPlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('iespell'); + +var TinyMCE_IESpellPlugin = { + getInfo : function() { + return { + longname : 'IESpell (MSIE Only)', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + /** + * Returns the HTML contents of the iespell control. + */ + getControlHTML : function(cn) { + // Is it the iespell control and is the brower MSIE. + if (cn == "iespell" && (tinyMCE.isMSIE && !tinyMCE.isOpera)) + return tinyMCE.getButtonHTML(cn, 'lang_iespell_desc', '{$pluginurl}/images/iespell.gif', 'mceIESpell'); + + return ""; + }, + + /** + * Executes the mceIESpell command. + */ + execCommand : function(editor_id, element, command, user_interface, value) { + // Handle ieSpellCommand + if (command == "mceIESpell") { + try { + var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension"); + ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement); + } catch (e) { + if (e.number == -2146827859) { + if (confirm(tinyMCE.getLang("lang_iespell_download", "", true))) + window.open('http://www.iespell.com/download.php', 'ieSpellDownload', ''); + } else + alert("Error Loading ieSpell: Exception " + e.number); + } + + return true; + } + + // Pass to next handler in chain + return false; + } +}; + +tinyMCE.addPlugin("iespell", TinyMCE_IESpellPlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/iespell/images/iespell.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/images/iespell.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/iespell/images/iespell.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/images/iespell.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/iespell/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/langs/en.js similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/plugins/iespell/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/langs/en.js index c3688e946..119bce9d0 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/iespell/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/langs/en.js @@ -1,7 +1,7 @@ -// UK lang variables - -tinyMCE.addToLang('',{ -iespell_desc : 'Run spell checking', -iespell_download : "ieSpell not detected. Click OK to go to download page." -}); - +// UK lang variables + +tinyMCE.addToLang('',{ +iespell_desc : 'Run spell checking', +iespell_download : "ieSpell not detected. Click OK to go to download page." +}); + diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/iespell/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css similarity index 93% rename from lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css index 43be823cd..4c774a97d 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css @@ -1,69 +1,69 @@ -/* Window classes */ - -.mceWindow { - position: absolute; - left: 0; - top: 0; - border: 1px solid black; - background-color: #D4D0C8; -} - -.mceWindowHead { - background-color: #334F8D; - width: 100%; - height: 18px; - cursor: move; - overflow: hidden; -} - -.mceWindowBody { - clear: both; - background-color: white; -} - -.mceWindowStatusbar { - background-color: #D4D0C8; - height: 12px; - border-top: 1px solid black; -} - -.mceWindowTitle { - float: left; - font-family: "MS Sans Serif"; - font-size: 9pt; - font-weight: bold; - line-height: 18px; - color: white; - margin-left: 2px; - overflow: hidden; -} - -.mceWindowHeadTools { - margin-right: 2px; -} - -.mceWindowClose, .mceWindowMinimize, .mceWindowMaximize { - display: block; - float: right; - overflow: hidden; - margin-top: 2px; -} - -.mceWindowClose { - margin-left: 2px; -} - -.mceWindowMinimize { -} - -.mceWindowMaximize { -} - -.mceWindowResize { - display: block; - float: right; - overflow: hidden; - cursor: se-resize; - width: 12px; - height: 12px; -} +/* Window classes */ + +.mceWindow { + position: absolute; + left: 0; + top: 0; + border: 1px solid black; + background-color: #D4D0C8; +} + +.mceWindowHead { + background-color: #334F8D; + width: 100%; + height: 18px; + cursor: move; + overflow: hidden; +} + +.mceWindowBody { + clear: both; + background-color: white; +} + +.mceWindowStatusbar { + background-color: #D4D0C8; + height: 12px; + border-top: 1px solid black; +} + +.mceWindowTitle { + float: left; + font-family: "MS Sans Serif"; + font-size: 9pt; + font-weight: bold; + line-height: 18px; + color: white; + margin-left: 2px; + overflow: hidden; +} + +.mceWindowHeadTools { + margin-right: 2px; +} + +.mceWindowClose, .mceWindowMinimize, .mceWindowMaximize { + display: block; + float: right; + overflow: hidden; + margin-top: 2px; +} + +.mceWindowClose { + margin-left: 2px; +} + +.mceWindowMinimize { +} + +.mceWindowMaximize { +} + +.mceWindowResize { + display: block; + float: right; + overflow: hidden; + cursor: se-resize; + width: 12px; + height: 12px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/spacer.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/spacer.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/spacer.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/spacer.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_close.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_close.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_close.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_close.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_maximize.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_maximize.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_maximize.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_maximize.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_resize.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_resize.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_resize.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/images/window_resize.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js index e59330f7b..e80169919 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js @@ -1,453 +1,453 @@ -/** - * $Id: mcwindows.js 3831 2007-12-11 23:14:32Z brian $ - * - * Moxiecode DHTML Windows script. - * - * @author Moxiecode - * @copyright Copyright © 2004, Moxiecode Systems AB, All rights reserved. - */ - -// Windows handler -function MCWindows() { - this.settings = new Array(); - this.windows = new Array(); - this.isMSIE = (navigator.appName == "Microsoft Internet Explorer"); - this.isGecko = navigator.userAgent.indexOf('Gecko') != -1; - this.isSafari = navigator.userAgent.indexOf('Safari') != -1; - this.isMac = navigator.userAgent.indexOf('Mac') != -1; - this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1); - this.action = "none"; - this.selectedWindow = null; - this.zindex = 100; - this.mouseDownScreenX = 0; - this.mouseDownScreenY = 0; - this.mouseDownLayerX = 0; - this.mouseDownLayerY = 0; - this.mouseDownWidth = 0; - this.mouseDownHeight = 0; -}; - -MCWindows.prototype.init = function(settings) { - this.settings = settings; - - if (this.isMSIE) - this.addEvent(document, "mousemove", mcWindows.eventDispatcher); - else - this.addEvent(window, "mousemove", mcWindows.eventDispatcher); - - this.addEvent(document, "mouseup", mcWindows.eventDispatcher); -}; - -MCWindows.prototype.getParam = function(name, default_value) { - var value = null; - - value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name]; - - // Fix bool values - if (value == "true" || value == "false") - return (value == "true"); - - return value; -}; - -MCWindows.prototype.eventDispatcher = function(e) { - e = typeof(e) == "undefined" ? window.event : e; - - if (mcWindows.selectedWindow == null) - return; - - // Switch focus - if (mcWindows.isGecko && e.type == "mousedown") { - var elm = e.currentTarget; - - for (var n in mcWindows.windows) { - var win = mcWindows.windows[n]; - if (typeof(win) == 'function') - continue; - - if (win.headElement == elm || win.resizeElement == elm) { - win.focus(); - break; - } - } - } - - switch (e.type) { - case "mousemove": - mcWindows.selectedWindow.onMouseMove(e); - break; - - case "mouseup": - mcWindows.selectedWindow.onMouseUp(e); - break; - - case "mousedown": - mcWindows.selectedWindow.onMouseDown(e); - break; - - case "focus": - mcWindows.selectedWindow.onFocus(e); - break; - } -} - -MCWindows.prototype.addEvent = function(obj, name, handler) { - if (this.isMSIE) - obj.attachEvent("on" + name, handler); - else - obj.addEventListener(name, handler, true); -}; - -MCWindows.prototype.cancelEvent = function(e) { - if (this.isMSIE) { - e.returnValue = false; - e.cancelBubble = true; - } else - e.preventDefault(); -}; - -MCWindows.prototype.parseFeatures = function(opts) { - // Cleanup the options - opts = opts.toLowerCase(); - opts = opts.replace(/;/g, ","); - opts = opts.replace(/[^0-9a-z=,]/g, ""); - - var optionChunks = opts.split(','); - var options = new Array(); - - options['left'] = 10; - options['top'] = 10; - options['width'] = 300; - options['height'] = 300; - options['resizable'] = true; - options['minimizable'] = true; - options['maximizable'] = true; - options['close'] = true; - options['movable'] = true; - - if (opts == "") - return options; - - for (var i=0; i'; - - html += '
'; - html += '
'; - html += '
'; -// html += ' '; -// html += ' '; - html += '
'; - html += '
'; - html += '
'; - html += '
'; - html += '
'; - html += '
'; - html += '
'; - - html += ''; - html += ''; - - // Create iframe - this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html); -}; - -// Gets called when wrapper iframe is initialized -MCWindows.prototype.onLoad = function(name) { - var win = mcWindows.windows[name]; - var id = "mcWindow_" + name; - var wrapperIframe = window.frames[id + "_iframe"].frames[0]; - var wrapperDoc = window.frames[id + "_iframe"].document; - var doc = window.frames[id + "_iframe"].document; - var winDiv = document.getElementById("mcWindow_" + name + "_div"); - var realIframe = window.frames[id + "_iframe"].frames[0]; - - // Set window data - win.id = "mcWindow_" + name + "_iframe"; - win.winElement = winDiv; - win.bodyElement = doc.getElementById(id + '_body'); - win.iframeElement = doc.getElementById(id + '_iframe'); - win.headElement = doc.getElementById(id + '_head'); - win.titleElement = doc.getElementById(id + '_title'); - win.resizeElement = doc.getElementById(id + '_resize'); - win.containerElement = doc.getElementById(id + '_container'); - win.left = win.features['left']; - win.top = win.features['top']; - win.frame = window.frames[id + '_iframe'].frames[0]; - win.wrapperFrame = window.frames[id + '_iframe']; - win.wrapperIFrameElement = document.getElementById(id + "_iframe"); - - // Add event handlers - mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher); - mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher); - - if (mcWindows.isMSIE) { - mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher); - mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher); - } else { - mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher); - mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher); - mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher); - } - - for (var i=0; i'; + + html += '
'; + html += '
'; + html += '
'; +// html += ' '; +// html += ' '; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + + html += ''; + html += ''; + + // Create iframe + this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html); +}; + +// Gets called when wrapper iframe is initialized +MCWindows.prototype.onLoad = function(name) { + var win = mcWindows.windows[name]; + var id = "mcWindow_" + name; + var wrapperIframe = window.frames[id + "_iframe"].frames[0]; + var wrapperDoc = window.frames[id + "_iframe"].document; + var doc = window.frames[id + "_iframe"].document; + var winDiv = document.getElementById("mcWindow_" + name + "_div"); + var realIframe = window.frames[id + "_iframe"].frames[0]; + + // Set window data + win.id = "mcWindow_" + name + "_iframe"; + win.winElement = winDiv; + win.bodyElement = doc.getElementById(id + '_body'); + win.iframeElement = doc.getElementById(id + '_iframe'); + win.headElement = doc.getElementById(id + '_head'); + win.titleElement = doc.getElementById(id + '_title'); + win.resizeElement = doc.getElementById(id + '_resize'); + win.containerElement = doc.getElementById(id + '_container'); + win.left = win.features['left']; + win.top = win.features['top']; + win.frame = window.frames[id + '_iframe'].frames[0]; + win.wrapperFrame = window.frames[id + '_iframe']; + win.wrapperIFrameElement = document.getElementById(id + "_iframe"); + + // Add event handlers + mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher); + mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher); + + if (mcWindows.isMSIE) { + mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher); + } else { + mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher); + } + + for (var i=0; i -1) { - nl[ci].style.zIndex = z[fi]; - nl[fi].style.zIndex = z[ci]; - } else { - if (z[ci] > 0) - nl[ci].style.zIndex = z[ci] - 1; - } - } else { - // Move forward - - // Try find a higher one - for (i=0; i z[ci]) { - fi = i; - break; - } - } - - if (fi > -1) { - nl[ci].style.zIndex = z[fi]; - nl[fi].style.zIndex = z[ci]; - } else - nl[ci].style.zIndex = z[ci] + 1; - } - - inst.repaint(); - }, - - _getParentLayer : function(n) { - return tinyMCE.getParentNode(n, function(n) { - return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position); - }); - }, - - _insertLayer : function() { - var inst = tinyMCE.selectedInstance; - var e = tinyMCE.getParentElement(inst.getFocusElement()); - var p = tinyMCE.getAbsPosition(e); - var d = inst.getDoc(); - var ne = d.createElement('div'); - var h = inst.selection.getSelectedHTML(); - - // Move div - ne.style.position = 'absolute'; - ne.style.left = p.absLeft + 'px'; - ne.style.top = (p.absTop > 20 ? p.absTop : 20) + 'px'; - ne.style.width = '100px'; - ne.style.height = '100px'; - ne.className = 'mceVisualAid'; - - if (!h) - h = tinyMCE.getLang('lang_layer_content'); - - ne.innerHTML = h; - - // Add it - d.body.appendChild(ne); - }, - - _toggleAbsolute : function() { - var inst = tinyMCE.selectedInstance; - var le = this._getParentLayer(inst.getFocusElement()); - - if (le == null) - le = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img'); - - if (le) { - if (le.style.position.toLowerCase() == "absolute") { - le.style.position = ""; - le.style.left = ""; - le.style.top = ""; - } else { - le.style.position = "absolute"; - - if (le.style.left == "") - le.style.left = 20 + 'px'; - - if (le.style.top == "") - le.style.top = 20 + 'px'; - - if (le.style.width == "") - le.style.width = le.width ? (le.width + 'px') : '100px'; - - if (le.style.height == "") - le.style.height = le.height ? (le.height + 'px') : '100px'; - - tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); - } - - inst.repaint(); - tinyMCE.triggerNodeChange(); - } - } -}; - -tinyMCE.addPlugin("layer", TinyMCE_LayerPlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('layer'); + +var TinyMCE_LayerPlugin = { + getInfo : function() { + return { + longname : 'Layer', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + if (tinyMCE.isMSIE && !tinyMCE.isOpera) + inst.getDoc().execCommand('2D-Position'); + }, + + handleEvent : function(e) { + var inst = tinyMCE.selectedInstance; + var w = inst.getWin(), le = inst._lastStyleElm, e; + + if (tinyMCE.isGecko) { + e = this._getParentLayer(inst.getFocusElement()); + + if (e) { + if (!inst._lastStyleElm) { + e.style.overflow = 'auto'; + inst._lastStyleElm = e; + } + } else if (le) { + le = inst._lastStyleElm; + le.style.width = le.scrollWidth + 'px'; + le.style.height = le.scrollHeight + 'px'; + le.style.overflow = ''; + inst._lastStyleElm = null; + } + } + + return true; + }, + + handleVisualAid : function(el, deep, state, inst) { + var nl = inst.getDoc().getElementsByTagName("div"), i; + + for (i=0; i -1) { + nl[ci].style.zIndex = z[fi]; + nl[fi].style.zIndex = z[ci]; + } else { + if (z[ci] > 0) + nl[ci].style.zIndex = z[ci] - 1; + } + } else { + // Move forward + + // Try find a higher one + for (i=0; i z[ci]) { + fi = i; + break; + } + } + + if (fi > -1) { + nl[ci].style.zIndex = z[fi]; + nl[fi].style.zIndex = z[ci]; + } else + nl[ci].style.zIndex = z[ci] + 1; + } + + inst.repaint(); + }, + + _getParentLayer : function(n) { + return tinyMCE.getParentNode(n, function(n) { + return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position); + }); + }, + + _insertLayer : function() { + var inst = tinyMCE.selectedInstance; + var e = tinyMCE.getParentElement(inst.getFocusElement()); + var p = tinyMCE.getAbsPosition(e); + var d = inst.getDoc(); + var ne = d.createElement('div'); + var h = inst.selection.getSelectedHTML(); + + // Move div + ne.style.position = 'absolute'; + ne.style.left = p.absLeft + 'px'; + ne.style.top = (p.absTop > 20 ? p.absTop : 20) + 'px'; + ne.style.width = '100px'; + ne.style.height = '100px'; + ne.className = 'mceVisualAid'; + + if (!h) + h = tinyMCE.getLang('lang_layer_content'); + + ne.innerHTML = h; + + // Add it + d.body.appendChild(ne); + }, + + _toggleAbsolute : function() { + var inst = tinyMCE.selectedInstance; + var le = this._getParentLayer(inst.getFocusElement()); + + if (le == null) + le = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img'); + + if (le) { + if (le.style.position.toLowerCase() == "absolute") { + le.style.position = ""; + le.style.left = ""; + le.style.top = ""; + } else { + le.style.position = "absolute"; + + if (le.style.left == "") + le.style.left = 20 + 'px'; + + if (le.style.top == "") + le.style.top = 20 + 'px'; + + if (le.style.width == "") + le.style.width = le.width ? (le.width + 'px') : '100px'; + + if (le.style.height == "") + le.style.height = le.height ? (le.height + 'px') : '100px'; + + tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); + } + + inst.repaint(); + tinyMCE.triggerNodeChange(); + } + } +}; + +tinyMCE.addPlugin("layer", TinyMCE_LayerPlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/layer/images/absolute.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/absolute.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/layer/images/absolute.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/absolute.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/layer/images/backward.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/backward.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/layer/images/backward.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/backward.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/layer/images/forward.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/forward.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/layer/images/forward.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/forward.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/layer/images/insert_layer.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/insert_layer.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/layer/images/insert_layer.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/insert_layer.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/layer/images/insertlayer.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/insertlayer.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/layer/images/insertlayer.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/insertlayer.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/layer/images/movebackward.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/movebackward.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/layer/images/movebackward.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/movebackward.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/layer/images/moveforward.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/moveforward.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/layer/images/moveforward.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/images/moveforward.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/layer/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/langs/en.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/layer/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/langs/en.js index cdd8c22b2..f01a30a81 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/layer/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/langs/en.js @@ -1,9 +1,9 @@ -// UK lang variables - -tinyMCE.addToLang('layer',{ -insertlayer_desc : 'Insert new layer', -forward_desc : 'Move forward', -backward_desc : 'Move backward', -absolute_desc : 'Toggle absolute positioning', -content : 'New layer...' -}); +// UK lang variables + +tinyMCE.addToLang('layer',{ +insertlayer_desc : 'Insert new layer', +forward_desc : 'Move forward', +backward_desc : 'Move backward', +absolute_desc : 'Toggle absolute positioning', +content : 'New layer...' +}); diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/layer/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/media/css/content.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/media/css/content.css similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/plugins/media/css/content.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/media/css/content.css index 1f667e633..7873235e7 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/media/css/content.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/media/css/content.css @@ -1,26 +1,26 @@ -.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia { - border: 1px dotted #cc0000; - background-position: center; - background-repeat: no-repeat; - background-color: #ffffcc; -} - -.mceItemShockWave { - background-image: url('../images/shockwave.gif'); -} - -.mceItemFlash { - background-image: url('../images/flash.gif'); -} - -.mceItemQuickTime { - background-image: url('../images/quicktime.gif'); -} - -.mceItemWindowsMedia { - background-image: url('../images/windowsmedia.gif'); -} - -.mceItemRealMedia { - background-image: url('../images/realmedia.gif'); -} +.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia { + border: 1px dotted #cc0000; + background-position: center; + background-repeat: no-repeat; + background-color: #ffffcc; +} + +.mceItemShockWave { + background-image: url('../images/shockwave.gif'); +} + +.mceItemFlash { + background-image: url('../images/flash.gif'); +} + +.mceItemQuickTime { + background-image: url('../images/quicktime.gif'); +} + +.mceItemWindowsMedia { + background-image: url('../images/windowsmedia.gif'); +} + +.mceItemRealMedia { + background-image: url('../images/realmedia.gif'); +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/media/css/media.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/media/css/media.css similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/plugins/media/css/media.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/media/css/media.css index 89c6bd5a0..62d666a5f 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/media/css/media.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/media/css/media.css @@ -1,68 +1,68 @@ -#id, #name, #hspace, #vspace, #class_name, #align { - width: 100px; -} - -#hspace, #vspace { - width: 50px; -} - -#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { - width: 100px; -} - -#flash_base, #flash_flashvars { - width: 240px; -} - -#width, #height { - width: 40px; -} - -#src, #media_type { - width: 250px; -} - -#class { - width: 120px; -} - -#prev { - margin: 0; - border: 1px solid black; - width: 99%; - height: 230px; - overflow: auto; -} - -.panel_wrapper div.current { - height: 390px; - overflow: auto; -} - -#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { - display: none; -} - -.mceAddSelectValue { - background-color: #DDDDDD; -} - -#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { - width: 70px; -} - -#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { - width: 70px; -} - -#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { - width: 70px; -} - -#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { - width: 90px; -} - -#qt_qtsrc { - width: 200px; -} +#id, #name, #hspace, #vspace, #class_name, #align { + width: 100px; +} + +#hspace, #vspace { + width: 50px; +} + +#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { + width: 100px; +} + +#flash_base, #flash_flashvars { + width: 240px; +} + +#width, #height { + width: 40px; +} + +#src, #media_type { + width: 250px; +} + +#class { + width: 120px; +} + +#prev { + margin: 0; + border: 1px solid black; + width: 99%; + height: 230px; + overflow: auto; +} + +.panel_wrapper div.current { + height: 390px; + overflow: auto; +} + +#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { + display: none; +} + +.mceAddSelectValue { + background-color: #DDDDDD; +} + +#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { + width: 70px; +} + +#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { + width: 70px; +} + +#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { + width: 70px; +} + +#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { + width: 90px; +} + +#qt_qtsrc { + width: 200px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js index f974b3602..a51ebe1eb 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js @@ -1,432 +1,432 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('media'); - -var TinyMCE_MediaPlugin = { - getInfo : function() { - return { - longname : 'Media', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - // Warn if user has flash plugin and media plugin at the same time - if (inst.hasPlugin('flash') && !tinyMCE.flashWarn) { - alert('Flash plugin is deprecated and should not be used together with the media plugin.'); - tinyMCE.flashWarn = true; - } - - if (!tinyMCE.settings['media_skip_plugin_css']) - tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/media/css/content.css"); - }, - - getControlHTML : function(cn) { - switch (cn) { - case "media": - return tinyMCE.getButtonHTML(cn, 'lang_media_desc', '{$pluginurl}/images/media.gif', 'mceMedia'); - } - - return ""; - }, - - execCommand : function(editor_id, element, command, user_interface, value) { - // Handle commands - switch (command) { - case "mceMedia": - tinyMCE.openWindow({ - file : '../../plugins/media/media.htm', - width : 430 + tinyMCE.getLang('lang_media_delta_width', 0), - height : 470 + tinyMCE.getLang('lang_media_delta_height', 0) - }, { - editor_id : editor_id, - inline : "yes" - }); - - return true; - } - - // Pass to next handler in chain - return false; - }, - - cleanup : function(type, content, inst) { - var nl, img, i, ne, d, s, ci; - - switch (type) { - case "insert_to_editor": - img = tinyMCE.getParam("theme_href") + '/images/spacer.gif'; - content = content.replace(/]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, ''); - content = content.replace(/]*)>/gi, '
'); - content = content.replace(/]*)>/gi, '
'); - content = content.replace(/<\/(object|embed)([^>]*)>/gi, '
'); - content = content.replace(/]*)>/gi, '
'); - content = content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>', 'gi'), 'class="mceItemParam">
'); - break; - - case "insert_to_editor_dom": - d = inst.getDoc(); - nl = content.getElementsByTagName("img"); - for (i=0; i', startPos); - attribs = TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos + 4, endPos)); - - // Is not flash, skip it - if (!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class'])) - continue; - - endPos += 2; - - // Parse attributes - at = attribs['title']; - if (at) { - at = at.replace(/&(#39|apos);/g, "'"); - at = at.replace(/&#quot;/g, '"'); - - try { - pl = eval('x={' + at + '};'); - } catch (ex) { - pl = {}; - } - } - - // Use object/embed - if (!tinyMCE.getParam('media_use_script', false)) { - switch (attribs['class']) { - case 'mceItemFlash': - ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000'; - cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; - mt = 'application/x-shockwave-flash'; - break; - - case 'mceItemShockWave': - ci = '166B1BCA-3F9C-11CF-8075-444553540000'; - cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; - mt = 'application/x-director'; - break; - - case 'mceItemWindowsMedia': - ci = tinyMCE.getParam('media_wmp6_compatible') ? '05589FA1-C356-11CE-BF01-00AA0055595A' : '6BF52A52-394A-11D3-B153-00C04F79FAA6'; - cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; - mt = 'application/x-mplayer2'; - break; - - case 'mceItemQuickTime': - ci = '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'; - cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; - mt = 'video/quicktime'; - break; - - case 'mceItemRealMedia': - ci = 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'; - cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; - mt = 'audio/x-pn-realaudio-plugin'; - break; - } - - // Convert the URL - pl.src = tinyMCE.convertURL(pl.src, null, true); - - embedHTML = TinyMCE_MediaPlugin._getEmbed(ci, cb, mt, pl, attribs); - } else { - // Use script version - switch (attribs['class']) { - case 'mceItemFlash': - s = 'writeFlash'; - break; - - case 'mceItemShockWave': - s = 'writeShockWave'; - break; - - case 'mceItemWindowsMedia': - s = 'writeWindowsMedia'; - break; - - case 'mceItemQuickTime': - s = 'writeQuickTime'; - break; - - case 'mceItemRealMedia': - s = 'writeRealMedia'; - break; - } - - if (attribs.width) - at = at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g, "width:'" + attribs.width + "'"); - - if (attribs.height) - at = at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g, "height:'" + attribs.height + "'"); - - // Force absolute URL - pl.src = tinyMCE.convertURL(pl.src, null, true); - at = at.replace(new RegExp("src:'[^']*'", "g"), "src:'" + pl.src + "'"); - - embedHTML = ''; - } - - // Insert embed/object chunk - chunkBefore = content.substring(0, startPos); - chunkAfter = content.substring(endPos); - content = chunkBefore + embedHTML + chunkAfter; - } - break; - } - - return content; - }, - - handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { - if (node == null) - return; - - do { - if (node.nodeName == "IMG" && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node, 'class'))) { - tinyMCE.switchClass(editor_id + '_media', 'mceButtonSelected'); - return true; - } - } while ((node = node.parentNode)); - - tinyMCE.switchClass(editor_id + '_media', 'mceButtonNormal'); - - return true; - }, - - _createImgFromEmbed : function(n, d, cl) { - var ne, at, i, ti = '', an; - - ne = d.createElement('img'); - ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif'; - ne.width = tinyMCE.getAttrib(n, 'width'); - ne.height = tinyMCE.getAttrib(n, 'height'); - ne.className = cl; - - at = n.attributes; - for (i=0; i 0 ? ti.substring(0, ti.length - 1) : ti; - ne.title = ti; - - n.parentNode.replaceChild(ne, n); - }, - - _createImg : function(cl, d, n) { - var i, nl, ti = "", an, av, al = new Array(); - - ne = d.createElement('img'); - ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif'; - ne.width = tinyMCE.getAttrib(n, 'width'); - ne.height = tinyMCE.getAttrib(n, 'height'); - ne.className = cl; - - al.id = tinyMCE.getAttrib(n, 'id'); - al.name = tinyMCE.getAttrib(n, 'name'); - al.width = tinyMCE.getAttrib(n, 'width'); - al.height = tinyMCE.getAttrib(n, 'height'); - al.bgcolor = tinyMCE.getAttrib(n, 'bgcolor'); - al.align = tinyMCE.getAttrib(n, 'align'); - al.class_name = tinyMCE.getAttrib(n, 'mce_class'); - - nl = n.getElementsByTagName('div'); - for (i=0; i 0 ? ti.substring(0, ti.length - 1) : ti; - ne.title = ti; - - return ne; - }, - - _getEmbed : function(cls, cb, mt, p, at) { - var h = '', n; - - p.width = at.width ? at.width : p.width; - p.height = at.height ? at.height : p.height; - - h += ''; - - // Add extra url parameter if it's an absolute URL on WMP - if (n == 'src' && p[n].indexOf('://') != -1 && mt == 'application/x-mplayer2') - h += ''; - } - } - - h += ']*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, ''); + content = content.replace(/]*)>/gi, '
'); + content = content.replace(/]*)>/gi, '
'); + content = content.replace(/<\/(object|embed)([^>]*)>/gi, '
'); + content = content.replace(/]*)>/gi, '
'); + content = content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>', 'gi'), 'class="mceItemParam">
'); + break; + + case "insert_to_editor_dom": + d = inst.getDoc(); + nl = content.getElementsByTagName("img"); + for (i=0; i', startPos); + attribs = TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos + 4, endPos)); + + // Is not flash, skip it + if (!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class'])) + continue; + + endPos += 2; + + // Parse attributes + at = attribs['title']; + if (at) { + at = at.replace(/&(#39|apos);/g, "'"); + at = at.replace(/&#quot;/g, '"'); + + try { + pl = eval('x={' + at + '};'); + } catch (ex) { + pl = {}; + } + } + + // Use object/embed + if (!tinyMCE.getParam('media_use_script', false)) { + switch (attribs['class']) { + case 'mceItemFlash': + ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000'; + cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; + mt = 'application/x-shockwave-flash'; + break; + + case 'mceItemShockWave': + ci = '166B1BCA-3F9C-11CF-8075-444553540000'; + cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; + mt = 'application/x-director'; + break; + + case 'mceItemWindowsMedia': + ci = tinyMCE.getParam('media_wmp6_compatible') ? '05589FA1-C356-11CE-BF01-00AA0055595A' : '6BF52A52-394A-11D3-B153-00C04F79FAA6'; + cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; + mt = 'application/x-mplayer2'; + break; + + case 'mceItemQuickTime': + ci = '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'; + cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; + mt = 'video/quicktime'; + break; + + case 'mceItemRealMedia': + ci = 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'; + cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; + mt = 'audio/x-pn-realaudio-plugin'; + break; + } + + // Convert the URL + pl.src = tinyMCE.convertURL(pl.src, null, true); + + embedHTML = TinyMCE_MediaPlugin._getEmbed(ci, cb, mt, pl, attribs); + } else { + // Use script version + switch (attribs['class']) { + case 'mceItemFlash': + s = 'writeFlash'; + break; + + case 'mceItemShockWave': + s = 'writeShockWave'; + break; + + case 'mceItemWindowsMedia': + s = 'writeWindowsMedia'; + break; + + case 'mceItemQuickTime': + s = 'writeQuickTime'; + break; + + case 'mceItemRealMedia': + s = 'writeRealMedia'; + break; + } + + if (attribs.width) + at = at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g, "width:'" + attribs.width + "'"); + + if (attribs.height) + at = at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g, "height:'" + attribs.height + "'"); + + // Force absolute URL + pl.src = tinyMCE.convertURL(pl.src, null, true); + at = at.replace(new RegExp("src:'[^']*'", "g"), "src:'" + pl.src + "'"); + + embedHTML = ''; + } + + // Insert embed/object chunk + chunkBefore = content.substring(0, startPos); + chunkAfter = content.substring(endPos); + content = chunkBefore + embedHTML + chunkAfter; + } + break; + } + + return content; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + if (node == null) + return; + + do { + if (node.nodeName == "IMG" && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node, 'class'))) { + tinyMCE.switchClass(editor_id + '_media', 'mceButtonSelected'); + return true; + } + } while ((node = node.parentNode)); + + tinyMCE.switchClass(editor_id + '_media', 'mceButtonNormal'); + + return true; + }, + + _createImgFromEmbed : function(n, d, cl) { + var ne, at, i, ti = '', an; + + ne = d.createElement('img'); + ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif'; + ne.width = tinyMCE.getAttrib(n, 'width'); + ne.height = tinyMCE.getAttrib(n, 'height'); + ne.className = cl; + + at = n.attributes; + for (i=0; i 0 ? ti.substring(0, ti.length - 1) : ti; + ne.title = ti; + + n.parentNode.replaceChild(ne, n); + }, + + _createImg : function(cl, d, n) { + var i, nl, ti = "", an, av, al = new Array(); + + ne = d.createElement('img'); + ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif'; + ne.width = tinyMCE.getAttrib(n, 'width'); + ne.height = tinyMCE.getAttrib(n, 'height'); + ne.className = cl; + + al.id = tinyMCE.getAttrib(n, 'id'); + al.name = tinyMCE.getAttrib(n, 'name'); + al.width = tinyMCE.getAttrib(n, 'width'); + al.height = tinyMCE.getAttrib(n, 'height'); + al.bgcolor = tinyMCE.getAttrib(n, 'bgcolor'); + al.align = tinyMCE.getAttrib(n, 'align'); + al.class_name = tinyMCE.getAttrib(n, 'mce_class'); + + nl = n.getElementsByTagName('div'); + for (i=0; i 0 ? ti.substring(0, ti.length - 1) : ti; + ne.title = ti; + + return ne; + }, + + _getEmbed : function(cls, cb, mt, p, at) { + var h = '', n; + + p.width = at.width ? at.width : p.width; + p.height = at.height ? at.height : p.height; + + h += ''; + + // Add extra url parameter if it's an absolute URL on WMP + if (n == 'src' && p[n].indexOf('://') != -1 && mt == 'application/x-mplayer2') + h += ''; + } + } + + h += ''; - - h += ''; + + h += ''); -} - -function init() { - var pl = "", f, val; - var type = "flash", fe, i; - - tinyMCEPopup.resizeToInnerSize(); - f = document.forms[0] - - fe = tinyMCE.selectedInstance.getFocusElement(); - if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) { - pl = "x={" + fe.title + "};"; - - switch (tinyMCE.getAttrib(fe, 'class')) { - case 'mceItemFlash': - type = 'flash'; - break; - - case 'mceItemShockWave': - type = 'shockwave'; - break; - - case 'mceItemWindowsMedia': - type = 'wmp'; - break; - - case 'mceItemQuickTime': - type = 'qt'; - break; - - case 'mceItemRealMedia': - type = 'rmp'; - break; - } - - document.forms[0].insert.value = tinyMCE.getLang('lang_update', 'Insert', true); - } - - document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media'); - document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media'); - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - - var html = getMediaListHTML('filebrowser','src','media','media'); - if (html == "") - document.getElementById("linklistrow").style.display = 'none'; - else - document.getElementById("linklistcontainer").innerHTML = html; - - // Resize some elements - if (isVisible('filebrowsercontainer')) - document.getElementById('src').style.width = '230px'; - - // Setup form - if (pl != "") { - pl = eval(pl); - - switch (type) { - case "flash": - setBool(pl, 'flash', 'play'); - setBool(pl, 'flash', 'loop'); - setBool(pl, 'flash', 'menu'); - setBool(pl, 'flash', 'swliveconnect'); - setStr(pl, 'flash', 'quality'); - setStr(pl, 'flash', 'scale'); - setStr(pl, 'flash', 'salign'); - setStr(pl, 'flash', 'wmode'); - setStr(pl, 'flash', 'base'); - setStr(pl, 'flash', 'flashvars'); - break; - - case "qt": - setBool(pl, 'qt', 'loop'); - setBool(pl, 'qt', 'autoplay'); - setBool(pl, 'qt', 'cache'); - setBool(pl, 'qt', 'controller'); - setBool(pl, 'qt', 'correction'); - setBool(pl, 'qt', 'enablejavascript'); - setBool(pl, 'qt', 'kioskmode'); - setBool(pl, 'qt', 'autohref'); - setBool(pl, 'qt', 'playeveryframe'); - setBool(pl, 'qt', 'tarsetcache'); - setStr(pl, 'qt', 'scale'); - setStr(pl, 'qt', 'starttime'); - setStr(pl, 'qt', 'endtime'); - setStr(pl, 'qt', 'tarset'); - setStr(pl, 'qt', 'qtsrcchokespeed'); - setStr(pl, 'qt', 'volume'); - setStr(pl, 'qt', 'qtsrc'); - break; - - case "shockwave": - setBool(pl, 'shockwave', 'sound'); - setBool(pl, 'shockwave', 'progress'); - setBool(pl, 'shockwave', 'autostart'); - setBool(pl, 'shockwave', 'swliveconnect'); - setStr(pl, 'shockwave', 'swvolume'); - setStr(pl, 'shockwave', 'swstretchstyle'); - setStr(pl, 'shockwave', 'swstretchhalign'); - setStr(pl, 'shockwave', 'swstretchvalign'); - break; - - case "wmp": - setBool(pl, 'wmp', 'autostart'); - setBool(pl, 'wmp', 'enabled'); - setBool(pl, 'wmp', 'enablecontextmenu'); - setBool(pl, 'wmp', 'fullscreen'); - setBool(pl, 'wmp', 'invokeurls'); - setBool(pl, 'wmp', 'mute'); - setBool(pl, 'wmp', 'stretchtofit'); - setBool(pl, 'wmp', 'windowlessvideo'); - setStr(pl, 'wmp', 'balance'); - setStr(pl, 'wmp', 'baseurl'); - setStr(pl, 'wmp', 'captioningid'); - setStr(pl, 'wmp', 'currentmarker'); - setStr(pl, 'wmp', 'currentposition'); - setStr(pl, 'wmp', 'defaultframe'); - setStr(pl, 'wmp', 'playcount'); - setStr(pl, 'wmp', 'rate'); - setStr(pl, 'wmp', 'uimode'); - setStr(pl, 'wmp', 'volume'); - break; - - case "rmp": - setBool(pl, 'rmp', 'autostart'); - setBool(pl, 'rmp', 'loop'); - setBool(pl, 'rmp', 'autogotourl'); - setBool(pl, 'rmp', 'center'); - setBool(pl, 'rmp', 'imagestatus'); - setBool(pl, 'rmp', 'maintainaspect'); - setBool(pl, 'rmp', 'nojava'); - setBool(pl, 'rmp', 'prefetch'); - setBool(pl, 'rmp', 'shuffle'); - setStr(pl, 'rmp', 'console'); - setStr(pl, 'rmp', 'controls'); - setStr(pl, 'rmp', 'numloop'); - setStr(pl, 'rmp', 'scriptcallbacks'); - break; - } - - setStr(pl, null, 'src'); - setStr(pl, null, 'id'); - setStr(pl, null, 'name'); - setStr(pl, null, 'vspace'); - setStr(pl, null, 'hspace'); - setStr(pl, null, 'bgcolor'); - setStr(pl, null, 'align'); - setStr(pl, null, 'width'); - setStr(pl, null, 'height'); - - if ((val = tinyMCE.getAttrib(fe, "width")) != "") - pl.width = f.width.value = val; - - if ((val = tinyMCE.getAttrib(fe, "height")) != "") - pl.height = f.height.value = val; - - oldWidth = pl.width ? parseInt(pl.width) : 0; - oldHeight = pl.height ? parseInt(pl.height) : 0; - } else - oldWidth = oldHeight = 0; - - selectByValue(f, 'media_type', type); - changedType(type); - updateColor('bgcolor_pick', 'bgcolor'); - - TinyMCE_EditableSelects.init(); - generatePreview(); -} - -function insertMedia() { - var fe, f = document.forms[0], h; - - if (!AutoValidator.validate(f)) { - alert(tinyMCE.getLang('lang_invalid_data')); - return false; - } - - f.width.value = f.width.value == "" ? 100 : f.width.value; - f.height.value = f.height.value == "" ? 100 : f.height.value; - - fe = tinyMCE.selectedInstance.getFocusElement(); - if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) { - switch (f.media_type.options[f.media_type.selectedIndex].value) { - case "flash": - fe.className = "mceItemFlash"; - break; - - case "shockwave": - fe.className = "mceItemShockWave"; - break; - - case "qt": - fe.className = "mceItemQuickTime"; - break; - - case "wmp": - fe.className = "mceItemWindowsMedia"; - break; - - case "rmp": - fe.className = "mceItemRealMedia"; - break; - } - - if (fe.width != f.width.value || fe.height != f.height.height) - tinyMCE.selectedInstance.repaint(); - - fe.title = serializeParameters(); - fe.width = f.width.value; - fe.height = f.height.value; - fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : ''); - fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : ''); - fe.align = f.align.options[f.align.selectedIndex].value; - } else { - h = ' 0) { - var html = ""; - - html += ''; - - return html; - } - - return ""; -} - -function getType(v) { - var fo, i, c, el, x, f = document.forms[0]; - - fo = tinyMCE.getParam("media_types", "flash=swf;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';'); - - // YouTube - if (v.indexOf('http://www.youtube.com/watch?v=') == 0 || v.indexOf('http://youtube.com/watch?v=') == 0) { - f.width.value = '425'; - f.height.value = '350'; - - v = v.replace('http://youtube.com/watch?v=', ''); - v = v.replace('http://www.youtube.com/watch?v=', ''); - - f.src.value = 'http://www.youtube.com/v/' + v; - return 'flash'; - } - - // Google video - if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) { - f.width.value = '425'; - f.height.value = '326'; - f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en'; - return 'flash'; - } - - for (i=0; i 0 ? s.substring(0, s.length - 1) : s; - - return s; -} - -function setBool(pl, p, n) { - if (typeof(pl[n]) == "undefined") - return; - - document.forms[0].elements[p + "_" + n].checked = pl[n]; -} - -function setStr(pl, p, n) { - var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n]; - - if (typeof(pl[n]) == "undefined") - return; - - if (e.type == "text") - e.value = pl[n]; - else - selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]); -} - -function getBool(p, n, d, tv, fv) { - var v = document.forms[0].elements[p + "_" + n].checked; - - tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'"; - fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'"; - - return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ','); -} - -function getStr(p, n, d) { - var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; - var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; - - return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',"); -} - -function getInt(p, n, d) { - var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; - var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; - - return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ","); -} - -function jsEncode(s) { - s = s.replace(new RegExp('\\\\', 'g'), '\\\\'); - s = s.replace(new RegExp('"', 'g'), '\\"'); - s = s.replace(new RegExp("'", 'g'), "\\'"); - - return s; -} - -function generatePreview(c) { - var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh; - - p.innerHTML = ''; - - nw = parseInt(f.width.value); - nh = parseInt(f.height.value); - - if (f.width.value != "" && f.height.value != "") { - if (f.constrain.checked) { - if (c == 'width' && oldWidth != 0) { - wp = nw / oldWidth; - nh = Math.round(wp * nh); - f.height.value = nh; - } else if (c == 'height' && oldHeight != 0) { - hp = nh / oldHeight; - nw = Math.round(hp * nw); - f.width.value = nw; - } - } - } - - if (f.width.value != "") - oldWidth = nw; - - if (f.height.value != "") - oldHeight = nh; - - // After constrain - pl = serializeParameters(); - - switch (f.media_type.options[f.media_type.selectedIndex].value) { - case "flash": - cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; - codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; - type = 'application/x-shockwave-flash'; - break; - - case "shockwave": - cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000'; - codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; - type = 'application/x-director'; - break; - - case "qt": - cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'; - codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; - type = 'video/quicktime'; - break; - - case "wmp": - cls = tinyMCE.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6'; - codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; - type = 'application/x-mplayer2'; - break; - - case "rmp": - cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'; - codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; - type = 'audio/x-pn-realaudio-plugin'; - break; - } - - if (pl == '') { - p.innerHTML = ''; - return; - } - - pl = eval('x={' + pl + '};'); - - if (!pl.src) { - p.innerHTML = ''; - return; - } - - pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src); - pl.width = !pl.width ? 100 : pl.width; - pl.height = !pl.height ? 100 : pl.height; - pl.id = !pl.id ? 'obj' : pl.id; - pl.name = !pl.name ? 'eobj' : pl.name; - pl.align = !pl.align ? '' : pl.align; - - h += ''; - - for (n in pl) { - h += ''; - - // Add extra url parameter if it's an absolute URL - if (n == 'src' && pl[n].indexOf('://') != -1) - h += ''; - } - - h += ''); +} + +function init() { + var pl = "", f, val; + var type = "flash", fe, i; + + tinyMCEPopup.resizeToInnerSize(); + f = document.forms[0] + + fe = tinyMCE.selectedInstance.getFocusElement(); + if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) { + pl = "x={" + fe.title + "};"; + + switch (tinyMCE.getAttrib(fe, 'class')) { + case 'mceItemFlash': + type = 'flash'; + break; + + case 'mceItemShockWave': + type = 'shockwave'; + break; + + case 'mceItemWindowsMedia': + type = 'wmp'; + break; + + case 'mceItemQuickTime': + type = 'qt'; + break; + + case 'mceItemRealMedia': + type = 'rmp'; + break; + } + + document.forms[0].insert.value = tinyMCE.getLang('lang_update', 'Insert', true); + } + + document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media'); + document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + + var html = getMediaListHTML('filebrowser','src','media','media'); + if (html == "") + document.getElementById("linklistrow").style.display = 'none'; + else + document.getElementById("linklistcontainer").innerHTML = html; + + // Resize some elements + if (isVisible('filebrowsercontainer')) + document.getElementById('src').style.width = '230px'; + + // Setup form + if (pl != "") { + pl = eval(pl); + + switch (type) { + case "flash": + setBool(pl, 'flash', 'play'); + setBool(pl, 'flash', 'loop'); + setBool(pl, 'flash', 'menu'); + setBool(pl, 'flash', 'swliveconnect'); + setStr(pl, 'flash', 'quality'); + setStr(pl, 'flash', 'scale'); + setStr(pl, 'flash', 'salign'); + setStr(pl, 'flash', 'wmode'); + setStr(pl, 'flash', 'base'); + setStr(pl, 'flash', 'flashvars'); + break; + + case "qt": + setBool(pl, 'qt', 'loop'); + setBool(pl, 'qt', 'autoplay'); + setBool(pl, 'qt', 'cache'); + setBool(pl, 'qt', 'controller'); + setBool(pl, 'qt', 'correction'); + setBool(pl, 'qt', 'enablejavascript'); + setBool(pl, 'qt', 'kioskmode'); + setBool(pl, 'qt', 'autohref'); + setBool(pl, 'qt', 'playeveryframe'); + setBool(pl, 'qt', 'tarsetcache'); + setStr(pl, 'qt', 'scale'); + setStr(pl, 'qt', 'starttime'); + setStr(pl, 'qt', 'endtime'); + setStr(pl, 'qt', 'tarset'); + setStr(pl, 'qt', 'qtsrcchokespeed'); + setStr(pl, 'qt', 'volume'); + setStr(pl, 'qt', 'qtsrc'); + break; + + case "shockwave": + setBool(pl, 'shockwave', 'sound'); + setBool(pl, 'shockwave', 'progress'); + setBool(pl, 'shockwave', 'autostart'); + setBool(pl, 'shockwave', 'swliveconnect'); + setStr(pl, 'shockwave', 'swvolume'); + setStr(pl, 'shockwave', 'swstretchstyle'); + setStr(pl, 'shockwave', 'swstretchhalign'); + setStr(pl, 'shockwave', 'swstretchvalign'); + break; + + case "wmp": + setBool(pl, 'wmp', 'autostart'); + setBool(pl, 'wmp', 'enabled'); + setBool(pl, 'wmp', 'enablecontextmenu'); + setBool(pl, 'wmp', 'fullscreen'); + setBool(pl, 'wmp', 'invokeurls'); + setBool(pl, 'wmp', 'mute'); + setBool(pl, 'wmp', 'stretchtofit'); + setBool(pl, 'wmp', 'windowlessvideo'); + setStr(pl, 'wmp', 'balance'); + setStr(pl, 'wmp', 'baseurl'); + setStr(pl, 'wmp', 'captioningid'); + setStr(pl, 'wmp', 'currentmarker'); + setStr(pl, 'wmp', 'currentposition'); + setStr(pl, 'wmp', 'defaultframe'); + setStr(pl, 'wmp', 'playcount'); + setStr(pl, 'wmp', 'rate'); + setStr(pl, 'wmp', 'uimode'); + setStr(pl, 'wmp', 'volume'); + break; + + case "rmp": + setBool(pl, 'rmp', 'autostart'); + setBool(pl, 'rmp', 'loop'); + setBool(pl, 'rmp', 'autogotourl'); + setBool(pl, 'rmp', 'center'); + setBool(pl, 'rmp', 'imagestatus'); + setBool(pl, 'rmp', 'maintainaspect'); + setBool(pl, 'rmp', 'nojava'); + setBool(pl, 'rmp', 'prefetch'); + setBool(pl, 'rmp', 'shuffle'); + setStr(pl, 'rmp', 'console'); + setStr(pl, 'rmp', 'controls'); + setStr(pl, 'rmp', 'numloop'); + setStr(pl, 'rmp', 'scriptcallbacks'); + break; + } + + setStr(pl, null, 'src'); + setStr(pl, null, 'id'); + setStr(pl, null, 'name'); + setStr(pl, null, 'vspace'); + setStr(pl, null, 'hspace'); + setStr(pl, null, 'bgcolor'); + setStr(pl, null, 'align'); + setStr(pl, null, 'width'); + setStr(pl, null, 'height'); + + if ((val = tinyMCE.getAttrib(fe, "width")) != "") + pl.width = f.width.value = val; + + if ((val = tinyMCE.getAttrib(fe, "height")) != "") + pl.height = f.height.value = val; + + oldWidth = pl.width ? parseInt(pl.width) : 0; + oldHeight = pl.height ? parseInt(pl.height) : 0; + } else + oldWidth = oldHeight = 0; + + selectByValue(f, 'media_type', type); + changedType(type); + updateColor('bgcolor_pick', 'bgcolor'); + + TinyMCE_EditableSelects.init(); + generatePreview(); +} + +function insertMedia() { + var fe, f = document.forms[0], h; + + if (!AutoValidator.validate(f)) { + alert(tinyMCE.getLang('lang_invalid_data')); + return false; + } + + f.width.value = f.width.value == "" ? 100 : f.width.value; + f.height.value = f.height.value == "" ? 100 : f.height.value; + + fe = tinyMCE.selectedInstance.getFocusElement(); + if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) { + switch (f.media_type.options[f.media_type.selectedIndex].value) { + case "flash": + fe.className = "mceItemFlash"; + break; + + case "shockwave": + fe.className = "mceItemShockWave"; + break; + + case "qt": + fe.className = "mceItemQuickTime"; + break; + + case "wmp": + fe.className = "mceItemWindowsMedia"; + break; + + case "rmp": + fe.className = "mceItemRealMedia"; + break; + } + + if (fe.width != f.width.value || fe.height != f.height.height) + tinyMCE.selectedInstance.repaint(); + + fe.title = serializeParameters(); + fe.width = f.width.value; + fe.height = f.height.value; + fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : ''); + fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : ''); + fe.align = f.align.options[f.align.selectedIndex].value; + } else { + h = ' 0) { + var html = ""; + + html += ''; + + return html; + } + + return ""; +} + +function getType(v) { + var fo, i, c, el, x, f = document.forms[0]; + + fo = tinyMCE.getParam("media_types", "flash=swf;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';'); + + // YouTube + if (v.indexOf('http://www.youtube.com/watch?v=') == 0 || v.indexOf('http://youtube.com/watch?v=') == 0) { + f.width.value = '425'; + f.height.value = '350'; + + v = v.replace('http://youtube.com/watch?v=', ''); + v = v.replace('http://www.youtube.com/watch?v=', ''); + + f.src.value = 'http://www.youtube.com/v/' + v; + return 'flash'; + } + + // Google video + if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) { + f.width.value = '425'; + f.height.value = '326'; + f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en'; + return 'flash'; + } + + for (i=0; i 0 ? s.substring(0, s.length - 1) : s; + + return s; +} + +function setBool(pl, p, n) { + if (typeof(pl[n]) == "undefined") + return; + + document.forms[0].elements[p + "_" + n].checked = pl[n]; +} + +function setStr(pl, p, n) { + var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n]; + + if (typeof(pl[n]) == "undefined") + return; + + if (e.type == "text") + e.value = pl[n]; + else + selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]); +} + +function getBool(p, n, d, tv, fv) { + var v = document.forms[0].elements[p + "_" + n].checked; + + tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'"; + fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'"; + + return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ','); +} + +function getStr(p, n, d) { + var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; + var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; + + return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',"); +} + +function getInt(p, n, d) { + var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; + var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; + + return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ","); +} + +function jsEncode(s) { + s = s.replace(new RegExp('\\\\', 'g'), '\\\\'); + s = s.replace(new RegExp('"', 'g'), '\\"'); + s = s.replace(new RegExp("'", 'g'), "\\'"); + + return s; +} + +function generatePreview(c) { + var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh; + + p.innerHTML = ''; + + nw = parseInt(f.width.value); + nh = parseInt(f.height.value); + + if (f.width.value != "" && f.height.value != "") { + if (f.constrain.checked) { + if (c == 'width' && oldWidth != 0) { + wp = nw / oldWidth; + nh = Math.round(wp * nh); + f.height.value = nh; + } else if (c == 'height' && oldHeight != 0) { + hp = nh / oldHeight; + nw = Math.round(hp * nw); + f.width.value = nw; + } + } + } + + if (f.width.value != "") + oldWidth = nw; + + if (f.height.value != "") + oldHeight = nh; + + // After constrain + pl = serializeParameters(); + + switch (f.media_type.options[f.media_type.selectedIndex].value) { + case "flash": + cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; + codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; + type = 'application/x-shockwave-flash'; + break; + + case "shockwave": + cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000'; + codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; + type = 'application/x-director'; + break; + + case "qt": + cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'; + codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; + type = 'video/quicktime'; + break; + + case "wmp": + cls = tinyMCE.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6'; + codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; + type = 'application/x-mplayer2'; + break; + + case "rmp": + cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'; + codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; + type = 'audio/x-pn-realaudio-plugin'; + break; + } + + if (pl == '') { + p.innerHTML = ''; + return; + } + + pl = eval('x={' + pl + '};'); + + if (!pl.src) { + p.innerHTML = ''; + return; + } + + pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src); + pl.width = !pl.width ? 100 : pl.width; + pl.height = !pl.height ? 100 : pl.height; + pl.id = !pl.id ? 'obj' : pl.id; + pl.name = !pl.name ? 'eobj' : pl.name; + pl.align = !pl.align ? '' : pl.align; + + h += ''; + + for (n in pl) { + h += ''; + + // Add extra url parameter if it's an absolute URL + if (n == 'src' && pl[n].indexOf('://') != -1) + h += ''; + } + + h += ' - - {$lang_media_title} - - - - - - - - - - -
- - -
-
-
- {$lang_media_general} - - - - - - - - - - - - - - - - - -
- -
- - - - - -
 
-
 
- - - - - - -
x   
-
-
- -
- {$lang_media_preview} - -
-
- -
-
- {$lang_media_advanced} - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - -
 
-
-
- -
- {$lang_media_flash_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - -
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - - - - - - - -
-
- -
- {$lang_media_qt_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
-  
- - - - - -
 
-
-
- -
- {$lang_media_wmp_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
-
- -
- {$lang_media_rmp_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
-   -
-
- -
- {$lang_media_shockwave_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
-
-
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_media_title} + + + + + + + + + + +
+ + +
+
+
+ {$lang_media_general} + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
 
+
 
+ + + + + + +
x   
+
+
+ +
+ {$lang_media_preview} + +
+
+ +
+
+ {$lang_media_advanced} + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
 
+
+
+ +
+ {$lang_media_flash_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + + + + + + + +
+
+ +
+ {$lang_media_qt_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+  
+ + + + + +
 
+
+
+ +
+ {$lang_media_wmp_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+ +
+ {$lang_media_rmp_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+   +
+
+ +
+ {$lang_media_shockwave_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js index 5c2b7ed1a..0f532b90c 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js @@ -1,62 +1,62 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('nonbreaking'); - -var TinyMCE_NonBreakingPlugin = { - getInfo : function() { - return { - longname : 'Nonbreaking space', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - getControlHTML : function(cn) { - switch (cn) { - case "nonbreaking": - return tinyMCE.getButtonHTML(cn, 'lang_nonbreaking_desc', '{$pluginurl}/images/nonbreaking.gif', 'mceNonBreaking', false); - } - - return ""; - }, - - - execCommand : function(editor_id, element, command, user_interface, value) { - var inst = tinyMCE.getInstanceById(editor_id), h; - - switch (command) { - case "mceNonBreaking": - h = (inst.visualChars && inst.visualChars.state) ? '·' : ' '; - tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, h); - return true; - } - - return false; - }, - - handleEvent : function(e) { - var inst, h; - - if (!tinyMCE.isOpera && e.type == 'keydown' && e.keyCode == 9 && tinyMCE.getParam('nonbreaking_force_tab', false)) { - inst = tinyMCE.selectedInstance; - - h = (inst.visualChars && inst.visualChars.state) ? '···' : '   '; - tinyMCE.execInstanceCommand(inst.editorId, 'mceInsertContent', false, h); - - tinyMCE.cancelEvent(e); - return false; - } - - return true; - } -}; - -tinyMCE.addPlugin("nonbreaking", TinyMCE_NonBreakingPlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('nonbreaking'); + +var TinyMCE_NonBreakingPlugin = { + getInfo : function() { + return { + longname : 'Nonbreaking space', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + getControlHTML : function(cn) { + switch (cn) { + case "nonbreaking": + return tinyMCE.getButtonHTML(cn, 'lang_nonbreaking_desc', '{$pluginurl}/images/nonbreaking.gif', 'mceNonBreaking', false); + } + + return ""; + }, + + + execCommand : function(editor_id, element, command, user_interface, value) { + var inst = tinyMCE.getInstanceById(editor_id), h; + + switch (command) { + case "mceNonBreaking": + h = (inst.visualChars && inst.visualChars.state) ? '·' : ' '; + tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, h); + return true; + } + + return false; + }, + + handleEvent : function(e) { + var inst, h; + + if (!tinyMCE.isOpera && e.type == 'keydown' && e.keyCode == 9 && tinyMCE.getParam('nonbreaking_force_tab', false)) { + inst = tinyMCE.selectedInstance; + + h = (inst.visualChars && inst.visualChars.state) ? '···' : '   '; + tinyMCE.execInstanceCommand(inst.editorId, 'mceInsertContent', false, h); + + tinyMCE.cancelEvent(e); + return false; + } + + return true; + } +}; + +tinyMCE.addPlugin("nonbreaking", TinyMCE_NonBreakingPlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/nonbreaking/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/langs/en.js similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/plugins/nonbreaking/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/langs/en.js index fd49a646c..8aa2715af 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/nonbreaking/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/nonbreaking/langs/en.js @@ -1,5 +1,5 @@ -// UK lang variables - -tinyMCE.addToLang('nonbreaking',{ -desc : 'Insert non-breaking space character' -}); +// UK lang variables + +tinyMCE.addToLang('nonbreaking',{ +desc : 'Insert non-breaking space character' +}); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/noneditable/css/noneditable.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/noneditable/css/noneditable.css similarity index 94% rename from lib/tinymce/jscripts/tiny_mce/plugins/noneditable/css/noneditable.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/noneditable/css/noneditable.css index be0ab65a2..60a76cf12 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/noneditable/css/noneditable.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/noneditable/css/noneditable.css @@ -1,9 +1,9 @@ -/* This is the CSS file for the noneditable elements plugin */ - -.mceEditable { - /*border: 1px dotted #0000cc;*/ -} - -.mceNonEditable { - /*border: 1px dotted #cc0000;*/ -} +/* This is the CSS file for the noneditable elements plugin */ + +.mceEditable { + /*border: 1px dotted #0000cc;*/ +} + +.mceNonEditable { + /*border: 1px dotted #cc0000;*/ +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js index ed36215e6..45cfa2a67 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js @@ -1,153 +1,153 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -var TinyMCE_NonEditablePlugin = { - getInfo : function() { - return { - longname : 'Non editable elements', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/noneditable/css/noneditable.css"); - - // Ugly hack - if (tinyMCE.isMSIE5_0) - tinyMCE.settings['plugins'] = tinyMCE.settings['plugins'].replace(/noneditable/gi, 'Noneditable'); - }, - - handleEvent : function(e) { - return this._moveSelection(e, tinyMCE.selectedInstance); - }, - - cleanup : function(type, content, inst) { - switch (type) { - case "insert_to_editor_dom": - var nodes, i, editClass, nonEditClass, editable, elm; - - // Pass through Gecko - if (tinyMCE.isGecko) - return content; - - nodes = tinyMCE.getNodeTree(content, [], 1); - - editClass = tinyMCE.getParam("noneditable_editable_class", "mceEditable"); - nonEditClass = tinyMCE.getParam("noneditable_noneditable_class", "mceNonEditable"); - - for (i=0; i - - blank_page - - - - - - - - - + + + blank_page + + + + + + + + + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/paste/css/blank.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/css/blank.css similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/paste/css/blank.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/css/blank.css index eca411a42..89b0303c4 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/paste/css/blank.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/css/blank.css @@ -1,13 +1,13 @@ -body { - background-color: #FFFFFF; - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; - scrollbar-3dlight-color: #F0F0EE; - scrollbar-arrow-color: #676662; - scrollbar-base-color: #F0F0EE; - scrollbar-darkshadow-color: #DDDDDD; - scrollbar-face-color: #E0E0DD; - scrollbar-highlight-color: #F0F0EE; - scrollbar-shadow-color: #F0F0EE; - scrollbar-track-color: #F5F5F5; -} +body { + background-color: #FFFFFF; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css similarity index 93% rename from lib/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css index b3be6270b..77685fd2e 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/css/pasteword.css @@ -1,3 +1,3 @@ -.sourceIframe { - border: 1px solid #808080; -} +.sourceIframe { + border: 1px solid #808080; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js index 643fcdbb2..6b54eac83 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js @@ -1,395 +1,395 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('paste'); - -var TinyMCE_PastePlugin = { - getInfo : function() { - return { - longname : 'Paste text/word', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - if (tinyMCE.isMSIE && tinyMCE.getParam("paste_auto_cleanup_on_paste", false)) - tinyMCE.addEvent(inst.getBody(), "paste", TinyMCE_PastePlugin._handlePasteEvent); - }, - - handleEvent : function(e) { - // Force paste dialog if non IE browser - if (!tinyMCE.isRealIE && tinyMCE.getParam("paste_auto_cleanup_on_paste", false) && e.ctrlKey && e.keyCode == 86 && e.type == "keydown") { - window.setTimeout('tinyMCE.selectedInstance.execCommand("mcePasteText",true)', 1); - return tinyMCE.cancelEvent(e); - } - - return true; - }, - - getControlHTML : function(cn) { - switch (cn) { - case "pastetext": - return tinyMCE.getButtonHTML(cn, 'lang_paste_text_desc', '{$pluginurl}/images/pastetext.gif', 'mcePasteText', true); - - case "pasteword": - return tinyMCE.getButtonHTML(cn, 'lang_paste_word_desc', '{$pluginurl}/images/pasteword.gif', 'mcePasteWord', true); - - case "selectall": - return tinyMCE.getButtonHTML(cn, 'lang_selectall_desc', '{$pluginurl}/images/selectall.gif', 'mceSelectAll', true); - } - - return ''; - }, - - execCommand : function(editor_id, element, command, user_interface, value) { - switch (command) { - case "mcePasteText": - if (user_interface) { - if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false)) - TinyMCE_PastePlugin._insertText(clipboardData.getData("Text"), true); - else { - var template = new Array(); - template['file'] = '../../plugins/paste/pastetext.htm'; // Relative to theme - template['width'] = 450; - template['height'] = 400; - var plain_text = ""; - tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'}); - } - } else - TinyMCE_PastePlugin._insertText(value['html'], value['linebreaks']); - - return true; - - case "mcePasteWord": - if (user_interface) { - if ((tinyMCE.isMSIE && !tinyMCE.isOpera) && !tinyMCE.getParam('paste_use_dialog', false)) { - TinyMCE_PastePlugin._insertWordContent(TinyMCE_PastePlugin._clipboardHTML()); - } else { - var template = new Array(); - template['file'] = '../../plugins/paste/pasteword.htm'; // Relative to theme - template['width'] = 450; - template['height'] = 400; - var plain_text = ""; - tinyMCE.openWindow(template, {editor_id : editor_id, plain_text: plain_text, resizable : "yes", scrollbars : "no", inline : "yes", mceDo : 'insert'}); - } - } else - TinyMCE_PastePlugin._insertWordContent(value); - - return true; - - case "mceSelectAll": - tinyMCE.execInstanceCommand(editor_id, 'selectall'); - return true; - - } - - // Pass to next handler in chain - return false; - }, - - // Private plugin internal methods - - _handlePasteEvent : function(e) { - switch (e.type) { - case "paste": - var html = TinyMCE_PastePlugin._clipboardHTML(); - var r, inst = tinyMCE.selectedInstance; - - // Removes italic, strong etc, the if was needed due to bug #1437114 - if (inst && (r = inst.getRng()) && r.text.length > 0) - tinyMCE.execCommand('delete'); - - if (html && html.length > 0) - tinyMCE.execCommand('mcePasteWord', false, html); - - tinyMCE.cancelEvent(e); - return false; - } - - return true; - }, - - _insertText : function(content, bLinebreaks) { - if (content && content.length > 0) { - if (bLinebreaks) { - // Special paragraph treatment - if (tinyMCE.getParam("paste_create_paragraphs", true)) { - var rl = tinyMCE.getParam("paste_replace_list", '\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(','); - for (var i=0; i

", "gi"); - content = tinyMCE.regexpReplace(content, "\r\r", "

", "gi"); - content = tinyMCE.regexpReplace(content, "\n\n", "

", "gi"); - - // Has paragraphs - if ((pos = content.indexOf('

')) != -1) { - tinyMCE.execCommand("Delete"); - - var node = tinyMCE.selectedInstance.getFocusElement(); - - // Get list of elements to break - var breakElms = new Array(); - - do { - if (node.nodeType == 1) { - // Don't break tables and break at body - if (node.nodeName == "TD" || node.nodeName == "BODY") - break; - - breakElms[breakElms.length] = node; - } - } while(node = node.parentNode); - - var before = "", after = "

"; - before += content.substring(0, pos); - - for (var i=0; i"; - after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">"; - } - - before += "

"; - content = before + content.substring(pos+7) + after; - } - } - - if (tinyMCE.getParam("paste_create_linebreaks", true)) { - content = tinyMCE.regexpReplace(content, "\r\n", "
", "gi"); - content = tinyMCE.regexpReplace(content, "\r", "
", "gi"); - content = tinyMCE.regexpReplace(content, "\n", "
", "gi"); - } - } - - tinyMCE.execCommand("mceInsertRawHTML", false, content); - } - }, - - _insertWordContent : function(content) { - if (content && content.length > 0) { - // Cleanup Word content - var bull = String.fromCharCode(8226); - var middot = String.fromCharCode(183); - var cb; - - if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "") - content = eval(cb + "('before', content)"); - - var rl = tinyMCE.getParam("paste_replace_list", '\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(','); - for (var i=0; i(.*?)<\/p>', 'gi'), '

$1

'); - } - - content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--"); - content = content.replace(new RegExp(bull + "(.*?)
", "gi"), "

" + middot + "$1

"); - content = content.replace(new RegExp('', 'gi'), "" + bull); // Covert to bull list - content = content.replace(/<\/o:p>/gi, ""); - content = content.replace(new RegExp('
]*>/gi, ""); - - if (tinyMCE.getParam("paste_remove_styles", true)) - content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3"); - - content = content.replace(/<\/?font[^>]*>/gi, ""); - - // Strips class attributes. - switch (tinyMCE.getParam("paste_strip_class_attributes", "all")) { - case "all": - content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3"); - break; - - case "mso": - content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3"); - break; - } - - content = content.replace(new RegExp('href="?' + TinyMCE_PastePlugin._reEscape("" + document.location) + '', 'gi'), 'href="' + tinyMCE.settings['document_base_url']); - content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3"); - content = content.replace(/<\\?\?xml[^>]*>/gi, ""); - content = content.replace(/<\/?\w+:[^>]*>/gi, ""); - content = content.replace(/-- page break --\s*

 <\/p>/gi, ""); // Remove pagebreaks - content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks - - // content = content.replace(/\/? */gi, "");   - // content = content.replace(/

 <\/p>/gi, ''); - - if (!tinyMCE.settings['force_p_newlines']) { - content = content.replace('', '' ,'gi'); - content = content.replace('

', '

' ,'gi'); - } - - if (!tinyMCE.isMSIE && !tinyMCE.settings['force_p_newlines']) { - content = content.replace(/<\/?p[^>]*>/gi, ""); - } - - content = content.replace(/<\/?div[^>]*>/gi, ""); - - // Convert all middlot lists to UL lists - if (tinyMCE.getParam("paste_convert_middot_lists", true)) { - var div = document.createElement("div"); - div.innerHTML = content; - - // Convert all middot paragraphs to li elements - var className = tinyMCE.getParam("paste_unindented_list_class", "unIndentedList"); - - while (TinyMCE_PastePlugin._convertMiddots(div, "--list--")) ; // bull - while (TinyMCE_PastePlugin._convertMiddots(div, middot, className)) ; // Middot - while (TinyMCE_PastePlugin._convertMiddots(div, bull)) ; // bull - - content = div.innerHTML; - } - - // Replace all headers with strong and fix some other issues - if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) { - content = content.replace(/ <\/h[1-6]>/gi, '

  

'); - content = content.replace(//gi, '

'); - content = content.replace(/<\/h[1-6]>/gi, '

'); - content = content.replace(/ <\/b>/gi, '  '); - content = content.replace(/^( )*/gi, ''); - } - - content = content.replace(/--list--/gi, ""); // Remove --list-- - - if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "") - content = eval(cb + "('after', content)"); - - // Insert cleaned content - tinyMCE.execCommand("mceInsertContent", false, content); - - if (tinyMCE.getParam('paste_force_cleanup_wordpaste', true)) - window.setTimeout('tinyMCE.execCommand("mceCleanup");', 1); // Do normal cleanup detached from this thread - } - }, - - _reEscape : function(s) { - var l = "?.\\*[](){}+^$:"; - var o = ""; - - for (var i=0; i 0) + tinyMCE.execCommand('delete'); + + if (html && html.length > 0) + tinyMCE.execCommand('mcePasteWord', false, html); + + tinyMCE.cancelEvent(e); + return false; + } + + return true; + }, + + _insertText : function(content, bLinebreaks) { + if (content && content.length > 0) { + if (bLinebreaks) { + // Special paragraph treatment + if (tinyMCE.getParam("paste_create_paragraphs", true)) { + var rl = tinyMCE.getParam("paste_replace_list", '\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(','); + for (var i=0; i

", "gi"); + content = tinyMCE.regexpReplace(content, "\r\r", "

", "gi"); + content = tinyMCE.regexpReplace(content, "\n\n", "

", "gi"); + + // Has paragraphs + if ((pos = content.indexOf('

')) != -1) { + tinyMCE.execCommand("Delete"); + + var node = tinyMCE.selectedInstance.getFocusElement(); + + // Get list of elements to break + var breakElms = new Array(); + + do { + if (node.nodeType == 1) { + // Don't break tables and break at body + if (node.nodeName == "TD" || node.nodeName == "BODY") + break; + + breakElms[breakElms.length] = node; + } + } while(node = node.parentNode); + + var before = "", after = "

"; + before += content.substring(0, pos); + + for (var i=0; i"; + after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">"; + } + + before += "

"; + content = before + content.substring(pos+7) + after; + } + } + + if (tinyMCE.getParam("paste_create_linebreaks", true)) { + content = tinyMCE.regexpReplace(content, "\r\n", "
", "gi"); + content = tinyMCE.regexpReplace(content, "\r", "
", "gi"); + content = tinyMCE.regexpReplace(content, "\n", "
", "gi"); + } + } + + tinyMCE.execCommand("mceInsertRawHTML", false, content); + } + }, + + _insertWordContent : function(content) { + if (content && content.length > 0) { + // Cleanup Word content + var bull = String.fromCharCode(8226); + var middot = String.fromCharCode(183); + var cb; + + if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "") + content = eval(cb + "('before', content)"); + + var rl = tinyMCE.getParam("paste_replace_list", '\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(','); + for (var i=0; i(.*?)<\/p>', 'gi'), '

$1

'); + } + + content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--"); + content = content.replace(new RegExp(bull + "(.*?)
", "gi"), "

" + middot + "$1

"); + content = content.replace(new RegExp('', 'gi'), "" + bull); // Covert to bull list + content = content.replace(/<\/o:p>/gi, ""); + content = content.replace(new RegExp('
]*>/gi, ""); + + if (tinyMCE.getParam("paste_remove_styles", true)) + content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3"); + + content = content.replace(/<\/?font[^>]*>/gi, ""); + + // Strips class attributes. + switch (tinyMCE.getParam("paste_strip_class_attributes", "all")) { + case "all": + content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3"); + break; + + case "mso": + content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3"); + break; + } + + content = content.replace(new RegExp('href="?' + TinyMCE_PastePlugin._reEscape("" + document.location) + '', 'gi'), 'href="' + tinyMCE.settings['document_base_url']); + content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3"); + content = content.replace(/<\\?\?xml[^>]*>/gi, ""); + content = content.replace(/<\/?\w+:[^>]*>/gi, ""); + content = content.replace(/-- page break --\s*

 <\/p>/gi, ""); // Remove pagebreaks + content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks + + // content = content.replace(/\/? */gi, "");   + // content = content.replace(/

 <\/p>/gi, ''); + + if (!tinyMCE.settings['force_p_newlines']) { + content = content.replace('', '' ,'gi'); + content = content.replace('

', '

' ,'gi'); + } + + if (!tinyMCE.isMSIE && !tinyMCE.settings['force_p_newlines']) { + content = content.replace(/<\/?p[^>]*>/gi, ""); + } + + content = content.replace(/<\/?div[^>]*>/gi, ""); + + // Convert all middlot lists to UL lists + if (tinyMCE.getParam("paste_convert_middot_lists", true)) { + var div = document.createElement("div"); + div.innerHTML = content; + + // Convert all middot paragraphs to li elements + var className = tinyMCE.getParam("paste_unindented_list_class", "unIndentedList"); + + while (TinyMCE_PastePlugin._convertMiddots(div, "--list--")) ; // bull + while (TinyMCE_PastePlugin._convertMiddots(div, middot, className)) ; // Middot + while (TinyMCE_PastePlugin._convertMiddots(div, bull)) ; // bull + + content = div.innerHTML; + } + + // Replace all headers with strong and fix some other issues + if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) { + content = content.replace(/ <\/h[1-6]>/gi, '

  

'); + content = content.replace(//gi, '

'); + content = content.replace(/<\/h[1-6]>/gi, '

'); + content = content.replace(/ <\/b>/gi, '  '); + content = content.replace(/^( )*/gi, ''); + } + + content = content.replace(/--list--/gi, ""); // Remove --list-- + + if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "") + content = eval(cb + "('after', content)"); + + // Insert cleaned content + tinyMCE.execCommand("mceInsertContent", false, content); + + if (tinyMCE.getParam('paste_force_cleanup_wordpaste', true)) + window.setTimeout('tinyMCE.execCommand("mceCleanup");', 1); // Do normal cleanup detached from this thread + } + }, + + _reEscape : function(s) { + var l = "?.\\*[](){}+^$:"; + var o = ""; + + for (var i=0; i - - {$lang_paste_text_desc} - - - - - - -
-
{$lang_paste_text_desc}
- -
- -
- -
- -
{$lang_paste_text_title}
- - - -
-
- -
- -
- -
-
-
- + + + {$lang_paste_text_desc} + + + + + + +
+
{$lang_paste_text_desc}
+ +
+ +
+ +
+ +
{$lang_paste_text_title}
+ + + +
+
+ +
+ +
+ +
+
+
+ \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm index 7acc7f78f..40a86df7e 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm @@ -1,29 +1,29 @@ - - - - {$lang_paste_word_desc} - - - - - - -
-
{$lang_paste_word_desc}
- -
{$lang_paste_word_title}
- -
- -
-
- -
- -
- -
-
-
- - + + + + {$lang_paste_word_desc} + + + + + + +
+
{$lang_paste_word_desc}
+ +
{$lang_paste_word_title}
+ +
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/paste/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/preview/example.html b/code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/example.html similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/preview/example.html rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/example.html index d02eb7379..3a83204eb 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/preview/example.html +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/example.html @@ -1,14 +1,14 @@ - - - - -Example of a custom preview page - - - - -Editor contents:
-{$content} - - - + + + + +Example of a custom preview page + + + + +Editor contents:
+{$content} + + + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/preview/images/preview.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/images/preview.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/preview/images/preview.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/images/preview.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/media/jscripts/embed.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/media/jscripts/embed.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js index f8dc81052..6fe25de09 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/media/jscripts/embed.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js @@ -1,73 +1,73 @@ -/** - * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. - */ - -function writeFlash(p) { - writeEmbed( - 'D27CDB6E-AE6D-11cf-96B8-444553540000', - 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', - 'application/x-shockwave-flash', - p - ); -} - -function writeShockWave(p) { - writeEmbed( - '166B1BCA-3F9C-11CF-8075-444553540000', - 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', - 'application/x-director', - p - ); -} - -function writeQuickTime(p) { - writeEmbed( - '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', - 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', - 'video/quicktime', - p - ); -} - -function writeRealMedia(p) { - writeEmbed( - 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', - 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', - 'audio/x-pn-realaudio-plugin', - p - ); -} - -function writeWindowsMedia(p) { - p.url = p.src; - writeEmbed( - '6BF52A52-394A-11D3-B153-00C04F79FAA6', - 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', - 'application/x-mplayer2', - p - ); -} - -function writeEmbed(cls, cb, mt, p) { - var h = '', n; - - h += ''; - - h += ''; + + h += ' no need to copy any values! - - // copy values from one panel to the other (if they exist there) - var from_panel_name = tab.id.match(/^search/i) ? "replace_panel" : "search_panel"; - var to_panel_name = (from_panel_name == "search_panel") ? "replace_panel" : "search_panel"; - - // find all elements with IDs to copy their values - var elms = document.getElementById(from_panel_name).getElementsByTagName("*"); - for (var i = 0; i < elms.length; i++) { - if (elms[i].id && elms[i].id != "") { - var checked = "undefined"; - if (elms[i].type.toLowerCase() == "checkbox" || elms[i].type.toLowerCase() == "radio") - checked = elms[i].checked; - - // copy values if element exists in other panel - var to_elm_name = to_panel_name + elms[i].id.substring(from_panel_name.length, elms[i].id.length); - var to_elm = document.getElementById(to_elm_name); - if (to_elm) { - if (checked != "undefined") - to_elm.checked = checked; - else - to_elm.value = elms[i].value; - } - } - } - - return false; +function init() { + tinyMCEPopup.resizeToInnerSize(); + + // start with appropiate tab + var task = (tinyMCE.getWindowArg("replacestring") != null) ? "replace" : "search"; + mcTabs.displayTab(task + '_tab', task +'_panel'); + manageReplaceButtons(); + + var formObj = document.forms[0]; + + formObj[task + "_panel_searchstring"].value = tinyMCE.getWindowArg("searchstring"); + formObj["replace_panel_replacestring"].value = (tinyMCE.getWindowArg("replacestring") != null) ? tinyMCE.getWindowArg("replacestring") : ""; + formObj[task + "_panel_casesensitivebox"].checked = tinyMCE.getWindowArg("casesensitive"); + formObj[task + "_panel_backwardsu"].checked = tinyMCE.getWindowArg("backwards"); + formObj[task + "_panel_backwardsd"].checked = !tinyMCE.getWindowArg("backwards"); +} + +function searchNext(replacemode) { + // "search" or "replace" mode of operation? + var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace"; + + var formObj = document.forms[0]; + + if (task == "replace") { + // Whats the point? + if (formObj[task + "_panel_searchstring"].value == "" || formObj[task + "_panel_searchstring"].value == formObj[task + "_panel_replacestring"].value) + return false; + } + + // Do search + tinyMCEPopup.execCommand('mceSearch', false, { + string : formObj[task + "_panel_searchstring"].value, + replacestring : formObj["replace_panel_replacestring"].value, + replacemode : replacemode, + casesensitive : formObj[task + "_panel_casesensitivebox"].checked, + backwards : formObj[task + "_panel_backwardsu"].checked, + win : window + }, false); + + window.focus(); + + return false; +} + +function cancelAction() { + tinyMCEPopup.close(); +} + +function manageReplaceButtons() { + // "search" or "replace" mode of operation? + var task = (document.getElementById("search_tab").className == "current") ? "search" : "replace"; + document.getElementById("replace_buttons").style.visibility = (task == "replace") ? "visible" : "hidden"; +} + +function copyValues(link) { + // check if tab is already active + var tab = link; + while (tab.tagName && tab.tagName.toLowerCase() != "li") tab = tab.parentNode; + if (tab.className) return false; // tab is already active -> no need to copy any values! + + // copy values from one panel to the other (if they exist there) + var from_panel_name = tab.id.match(/^search/i) ? "replace_panel" : "search_panel"; + var to_panel_name = (from_panel_name == "search_panel") ? "replace_panel" : "search_panel"; + + // find all elements with IDs to copy their values + var elms = document.getElementById(from_panel_name).getElementsByTagName("*"); + for (var i = 0; i < elms.length; i++) { + if (elms[i].id && elms[i].id != "") { + var checked = "undefined"; + if (elms[i].type.toLowerCase() == "checkbox" || elms[i].type.toLowerCase() == "radio") + checked = elms[i].checked; + + // copy values if element exists in other panel + var to_elm_name = to_panel_name + elms[i].id.substring(from_panel_name.length, elms[i].id.length); + var to_elm = document.getElementById(to_elm_name); + if (to_elm) { + if (checked != "undefined") + to_elm.checked = checked; + else + to_elm.value = elms[i].value; + } + } + } + + return false; } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en.js index 32af8282e..db241fb13 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en.js @@ -1,21 +1,21 @@ -// UK lang variables - -tinyMCE.addToLang('',{ -searchreplace_search_desc : 'Find', -searchreplace_searchnext_desc : 'Find again', -searchreplace_replace_desc : 'Find/Replace', -searchreplace_notfound : 'The search has been completed. The search string could not be found.', -searchreplace_search_title : 'Find', -searchreplace_replace_title : 'Find/Replace', -searchreplace_allreplaced : 'All occurrences of the search string were replaced.', -searchreplace_findwhat : 'Find what', -searchreplace_replacewith : 'Replace with', -searchreplace_direction : 'Direction', -searchreplace_up : 'Up', -searchreplace_down : 'Down', -searchreplace_case : 'Match case', -searchreplace_findnext : 'Find next', -searchreplace_replace : 'Replace', -searchreplace_replaceall : 'Replace all', -searchreplace_cancel : 'Cancel' -}); +// UK lang variables + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Find', +searchreplace_searchnext_desc : 'Find again', +searchreplace_replace_desc : 'Find/Replace', +searchreplace_notfound : 'The search has been completed. The search string could not be found.', +searchreplace_search_title : 'Find', +searchreplace_replace_title : 'Find/Replace', +searchreplace_allreplaced : 'All occurrences of the search string were replaced.', +searchreplace_findwhat : 'Find what', +searchreplace_replacewith : 'Replace with', +searchreplace_direction : 'Direction', +searchreplace_up : 'Up', +searchreplace_down : 'Down', +searchreplace_case : 'Match case', +searchreplace_findnext : 'Find next', +searchreplace_replace : 'Replace', +searchreplace_replaceall : 'Replace all', +searchreplace_cancel : 'Cancel' +}); diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm index 192e0cbc6..5355f7bd1 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm @@ -1,107 +1,107 @@ - - - {$lang_searchreplace_replace_title} - - - - - - - - -
- - -
- -
- - - - - - - - - - - -
- - - - - - - - -
-
- - - - - -
-
-
- -
- - - - - - - - - - - - - - - -
- - - - - - - - -
-
- - - - - -
-
-
- -
- -
-
- - - - - -
- -
- -
-
-
- - + + + {$lang_searchreplace_replace_title} + + + + + + + + +
+ + +
+ +
+ + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + +
+
+
+ +
+ + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + +
+
+
+ +
+ +
+
+ + + + + +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/style/css/props.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/css/props.css similarity index 94% rename from lib/tinymce/jscripts/tiny_mce/plugins/style/css/props.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/style/css/props.css index b159b5f82..0c4b8fc71 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/style/css/props.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/css/props.css @@ -1,62 +1,62 @@ -#text_font { - width: 250px; -} - -#text_size { - width: 70px; -} - -.mceAddSelectValue { - background-color: #DDDDDD; -} - -select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left { - width: 70px; -} - -#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex { - width: 70px; -} - -#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left { - width: 70px; -} - -#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left { - width: 70px; -} - -.panel_wrapper div.current { - padding-top: 10px; - height: 230px; -} - -.delim { - border-left: 1px solid gray; -} - -.tdelim { - border-bottom: 1px solid gray; -} - -#block_display { - width: 145px; -} - -#list_type { - width: 115px; -} - -.disabled { - background-color: #EEEEEE; -} - -#apply { - font-weight: bold; - width: 78px; - height: 21px; - border: 0; - background-image: url('../images/apply_button_bg.gif'); - cursor: pointer; -} - +#text_font { + width: 250px; +} + +#text_size { + width: 70px; +} + +.mceAddSelectValue { + background-color: #DDDDDD; +} + +select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left { + width: 70px; +} + +#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex { + width: 70px; +} + +#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left { + width: 70px; +} + +#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left { + width: 70px; +} + +.panel_wrapper div.current { + padding-top: 10px; + height: 230px; +} + +.delim { + border-left: 1px solid gray; +} + +.tdelim { + border-bottom: 1px solid gray; +} + +#block_display { + width: 145px; +} + +#list_type { + width: 115px; +} + +.disabled { + background-color: #EEEEEE; +} + +#apply { + font-weight: bold; + width: 78px; + height: 21px; + border: 0; + background-image: url('../images/apply_button_bg.gif'); + cursor: pointer; +} + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js index fffe400f0..9e51e49fe 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js @@ -1,83 +1,83 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('style'); - -var TinyMCE_StylePlugin = { - getInfo : function() { - return { - longname : 'Style', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - getControlHTML : function(cn) { - switch (cn) { - case "styleprops": - return tinyMCE.getButtonHTML(cn, 'lang_style_styleinfo_desc', '{$pluginurl}/images/styleprops.gif', 'mceStyleProps', true); - } - - return ""; - }, - - execCommand : function(editor_id, element, command, user_interface, value) { - var e, inst; - - // Handle commands - switch (command) { - case "mceStyleProps": - TinyMCE_StylePlugin._styleProps(); - return true; - - case "mceSetElementStyle": - inst = tinyMCE.getInstanceById(editor_id); - e = inst.selection.getFocusElement(); - - if (e) { - e.style.cssText = value; - inst.repaint(); - } - - return true; - } - - // Pass to next handler in chain - return false; - }, - - handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { - if (node.nodeName == 'BODY') - tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonDisabled'); - else - tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonNormal'); - }, - - // Private plugin specific methods - - _styleProps : function() { - var e = tinyMCE.selectedInstance.selection.getFocusElement(); - - if (!e || e.nodeName == 'BODY') - return; - - tinyMCE.openWindow({ - file : '../../plugins/style/props.htm', - width : 480 + tinyMCE.getLang('lang_style_props_delta_width', 0), - height : 320 + tinyMCE.getLang('lang_style_props_delta_height', 0) - }, { - editor_id : tinyMCE.selectedInstance.editorId, - inline : "yes", - style_text : e.style.cssText - }); - } -}; - -tinyMCE.addPlugin("style", TinyMCE_StylePlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('style'); + +var TinyMCE_StylePlugin = { + getInfo : function() { + return { + longname : 'Style', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + getControlHTML : function(cn) { + switch (cn) { + case "styleprops": + return tinyMCE.getButtonHTML(cn, 'lang_style_styleinfo_desc', '{$pluginurl}/images/styleprops.gif', 'mceStyleProps', true); + } + + return ""; + }, + + execCommand : function(editor_id, element, command, user_interface, value) { + var e, inst; + + // Handle commands + switch (command) { + case "mceStyleProps": + TinyMCE_StylePlugin._styleProps(); + return true; + + case "mceSetElementStyle": + inst = tinyMCE.getInstanceById(editor_id); + e = inst.selection.getFocusElement(); + + if (e) { + e.style.cssText = value; + inst.repaint(); + } + + return true; + } + + // Pass to next handler in chain + return false; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + if (node.nodeName == 'BODY') + tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonDisabled'); + else + tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonNormal'); + }, + + // Private plugin specific methods + + _styleProps : function() { + var e = tinyMCE.selectedInstance.selection.getFocusElement(); + + if (!e || e.nodeName == 'BODY') + return; + + tinyMCE.openWindow({ + file : '../../plugins/style/props.htm', + width : 480 + tinyMCE.getLang('lang_style_props_delta_width', 0), + height : 320 + tinyMCE.getLang('lang_style_props_delta_height', 0) + }, { + editor_id : tinyMCE.selectedInstance.editorId, + inline : "yes", + style_text : e.style.cssText + }); + } +}; + +tinyMCE.addPlugin("style", TinyMCE_StylePlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/style/images/apply_button_bg.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/images/apply_button_bg.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/style/images/apply_button_bg.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/style/images/apply_button_bg.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/style/images/style_info.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/images/style_info.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/style/images/style_info.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/style/images/style_info.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/style/images/styleprops.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/images/styleprops.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/style/images/styleprops.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/style/images/styleprops.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/style/jscripts/props.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/jscripts/props.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/style/jscripts/props.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/style/jscripts/props.js index c9883d742..0e9a4660b 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/style/jscripts/props.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/jscripts/props.js @@ -1,633 +1,633 @@ -var defaultFonts = "" + - "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + - "Times New Roman, Times, serif=Times New Roman, Times, serif;" + - "Courier New, Courier, mono=Courier New, Courier, mono;" + - "Times New Roman, Times, serif=Times New Roman, Times, serif;" + - "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + - "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + - "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif"; - -var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger"; -var defaultMeasurement = "+pixels=px;points=pt;in;cm;mm;picas;ems;exs;%"; -var defaultSpacingMeasurement = "pixels=px;points=pt;in;cm;mm;picas;+ems;exs;%"; -var defaultIndentMeasurement = "pixels=px;+points=pt;in;cm;mm;picas;ems;exs;%"; -var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900"; -var defaultTextStyle = "normal;italic;oblique"; -var defaultVariant = "normal;small-caps"; -var defaultLineHeight = "normal"; -var defaultAttachment = "fixed;scroll"; -var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y"; -var defaultPosH = "left;center;right"; -var defaultPosV = "top;center;bottom"; -var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom"; -var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none"; -var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset"; -var defaultBorderWidth = "thin;medium;thick"; -var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none"; - -function init() { - var ce = document.getElementById('container'), h; - - ce.style.cssText = tinyMCEPopup.getWindowArg('style_text'); - - h = getBrowserHTML('background_image_browser','background_image','image','advimage'); - document.getElementById("background_image_browser").innerHTML = h; - - tinyMCEPopup.resizeToInnerSize(); - - document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color'); - document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color'); - document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top'); - document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right'); - document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom'); - document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left'); - - fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true); - fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true); - fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true); - fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true); - fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true); - fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true); - fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true); - fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true); - fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true); - - fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true); - fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true); - - fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true); - fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true); - fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true); - fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true); - fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true); - fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true); - fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true); - fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true); - fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true); - - fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true); - fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true); - fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true); - fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true); - fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true); - fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true); - - fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true); - fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true); - fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true); - fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true); - - fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true); - fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true); - - fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true); - fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true); - - fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true); - - fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true); - - TinyMCE_EditableSelects.init(); - setupFormData(); - showDisabledControls(); -} - -function setupFormData() { - var ce = document.getElementById('container'), f = document.forms[0], s, b, i; - - // Setup text fields - - selectByValue(f, 'text_font', ce.style.fontFamily, true, true); - selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true); - selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize)); - selectByValue(f, 'text_weight', ce.style.fontWeight, true, true); - selectByValue(f, 'text_style', ce.style.fontStyle, true, true); - selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true); - selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight)); - selectByValue(f, 'text_case', ce.style.textTransform, true, true); - selectByValue(f, 'text_variant', ce.style.fontVariant, true, true); - f.text_color.value = ce.style.color; - updateColor('text_color_pick', 'text_color'); - f.text_underline.checked = inStr(ce.style.textDecoration, 'underline'); - f.text_overline.checked = inStr(ce.style.textDecoration, 'overline'); - f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through'); - f.text_blink.checked = inStr(ce.style.textDecoration, 'blink'); - - // Setup background fields - - f.background_color.value = ce.style.backgroundColor; - updateColor('background_color_pick', 'background_color'); - f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); - selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true); - selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true); - selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true); - selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0))); - selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true); - selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1))); - - // Setup block fields - - selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true); - selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing)); - selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true); - selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing)); - selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true); - selectByValue(f, 'block_text_align', ce.style.textAlign, true, true); - f.block_text_indent.value = getNum(ce.style.textIndent); - selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent)); - selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true); - selectByValue(f, 'block_display', ce.style.display, true, true); - - // Setup box fields - - f.box_width.value = getNum(ce.style.width); - selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width)); - - f.box_height.value = getNum(ce.style.height); - selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height)); - - if (tinyMCE.isGecko) - selectByValue(f, 'box_float', ce.style.cssFloat, true, true); - else - selectByValue(f, 'box_float', ce.style.styleFloat, true, true); - - selectByValue(f, 'box_clear', ce.style.clear, true, true); - - setupBox(f, ce, 'box_padding', 'padding', ''); - setupBox(f, ce, 'box_margin', 'margin', ''); - - // Setup border fields - - setupBox(f, ce, 'border_style', 'border', 'Style'); - setupBox(f, ce, 'border_width', 'border', 'Width'); - setupBox(f, ce, 'border_color', 'border', 'Color'); - - updateColor('border_color_top_pick', 'border_color_top'); - updateColor('border_color_right_pick', 'border_color_right'); - updateColor('border_color_bottom_pick', 'border_color_bottom'); - updateColor('border_color_left_pick', 'border_color_left'); - - // Setup list fields - - selectByValue(f, 'list_type', ce.style.listStyleType, true, true); - selectByValue(f, 'list_position', ce.style.listStylePosition, true, true); - f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); - - // Setup box fields - - selectByValue(f, 'positioning_type', ce.style.position, true, true); - selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true); - selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true); - f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : ""; - - f.positioning_width.value = getNum(ce.style.width); - selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width)); - - f.positioning_height.value = getNum(ce.style.height); - selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height)); - - setupBox(f, ce, 'positioning_placement', '', '', new Array('top', 'right', 'bottom', 'left')); - - s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1"); - s = s.replace(/,/g, ' '); - - if (!hasEqualValues(new Array(getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)))) { - f.positioning_clip_top.value = getNum(getVal(s, 0)); - selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); - f.positioning_clip_right.value = getNum(getVal(s, 1)); - selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1))); - f.positioning_clip_bottom.value = getNum(getVal(s, 2)); - selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2))); - f.positioning_clip_left.value = getNum(getVal(s, 3)); - selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3))); - } else { - f.positioning_clip_top.value = getNum(getVal(s, 0)); - selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); - f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value; - } - -// setupBox(f, ce, '', 'border', 'Color'); -} - -function getMeasurement(s) { - return s.replace(/^([0-9]+)(.*)$/, "$2"); -} - -function getNum(s) { - if (new RegExp('^[0-9]+[a-z%]+$', 'gi').test(s)) - return s.replace(/[^0-9]/g, ''); - - return s; -} - -function inStr(s, n) { - return new RegExp(n, 'gi').test(s); -} - -function getVal(s, i) { - var a = tinyMCE.explode(' ', s); - - if (a.length > 1) - return a[i]; - - return ""; -} - -function setValue(f, n, v) { - if (f.elements[n].type == "text") - f.elements[n].value = v; - else - selectByValue(f, n, v, true, true); -} - -function setupBox(f, ce, fp, pr, sf, b) { - if (typeof(b) == "undefined") - b = new Array('Top', 'Right', 'Bottom', 'Left'); - - if (isSame(ce, pr, sf, b)) { - f.elements[fp + "_same"].checked = true; - - setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); - f.elements[fp + "_top"].disabled = false; - - f.elements[fp + "_right"].value = ""; - f.elements[fp + "_right"].disabled = true; - f.elements[fp + "_bottom"].value = ""; - f.elements[fp + "_bottom"].disabled = true; - f.elements[fp + "_left"].value = ""; - f.elements[fp + "_left"].disabled = true; - - if (f.elements[fp + "_top_measurement"]) { - selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); - f.elements[fp + "_left_measurement"].disabled = true; - f.elements[fp + "_bottom_measurement"].disabled = true; - f.elements[fp + "_right_measurement"].disabled = true; - } - } else { - f.elements[fp + "_same"].checked = false; - - setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); - f.elements[fp + "_top"].disabled = false; - - setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf])); - f.elements[fp + "_right"].disabled = false; - - setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf])); - f.elements[fp + "_bottom"].disabled = false; - - setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf])); - f.elements[fp + "_left"].disabled = false; - - if (f.elements[fp + "_top_measurement"]) { - selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); - selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf])); - selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf])); - selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf])); - f.elements[fp + "_left_measurement"].disabled = false; - f.elements[fp + "_bottom_measurement"].disabled = false; - f.elements[fp + "_right_measurement"].disabled = false; - } - } -} - -function isSame(e, pr, sf, b) { - var a = new Array(), i, x; - - if (typeof(b) == "undefined") - b = new Array('Top', 'Right', 'Bottom', 'Left'); - - if (typeof(sf) == "undefined" || sf == null) - sf = ""; - - a[0] = e.style[pr + b[0] + sf]; - a[1] = e.style[pr + b[1] + sf]; - a[2] = e.style[pr + b[2] + sf]; - a[3] = e.style[pr + b[3] + sf]; - - for (i=0; i 0 ? s.substring(1) : s; - - if (f.text_none.checked) - s = "none"; - - ce.style.textDecoration = s; - - // Build background styles - - ce.style.backgroundColor = f.background_color.value; - ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : ""; - ce.style.backgroundRepeat = f.background_repeat.value; - ce.style.backgroundAttachment = f.background_attachment.value; - - if (f.background_hpos.value != "") { - s = ""; - s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " "; - s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : ""); - ce.style.backgroundPosition = s; - } - - // Build block styles - - ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : ""); - ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : ""); - ce.style.verticalAlign = f.block_vertical_alignment.value; - ce.style.textAlign = f.block_text_align.value; - ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : ""); - ce.style.whiteSpace = f.block_whitespace.value; - ce.style.display = f.block_display.value; - - // Build box styles - - ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : ""); - ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : ""); - ce.style.styleFloat = f.box_float.value; - - if (tinyMCE.isGecko) - ce.style.cssFloat = f.box_float.value; - - ce.style.clear = f.box_clear.value; - - if (!f.box_padding_same.checked) { - ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); - ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : ""); - ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : ""); - ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : ""); - } else - ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); - - if (!f.box_margin_same.checked) { - ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); - ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : ""); - ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : ""); - ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : ""); - } else - ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); - - // Build border styles - - if (!f.border_style_same.checked) { - ce.style.borderTopStyle = f.border_style_top.value; - ce.style.borderRightStyle = f.border_style_right.value; - ce.style.borderBottomStyle = f.border_style_bottom.value; - ce.style.borderLeftStyle = f.border_style_left.value; - } else - ce.style.borderStyle = f.border_style_top.value; - - if (!f.border_width_same.checked) { - ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); - ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : ""); - ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : ""); - ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : ""); - } else - ce.style.borderWidth = f.border_width_top.value; - - if (!f.border_color_same.checked) { - ce.style.borderTopColor = f.border_color_top.value; - ce.style.borderRightColor = f.border_color_right.value; - ce.style.borderBottomColor = f.border_color_bottom.value; - ce.style.borderLeftColor = f.border_color_left.value; - } else - ce.style.borderColor = f.border_color_top.value; - - // Build list styles - - ce.style.listStyleType = f.list_type.value; - ce.style.listStylePosition = f.list_position.value; - ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : ""; - - // Build positioning styles - - ce.style.position = f.positioning_type.value; - ce.style.visibility = f.positioning_visibility.value; - - if (ce.style.width == "") - ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : ""); - - if (ce.style.height == "") - ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : ""); - - ce.style.zIndex = f.positioning_zindex.value; - ce.style.overflow = f.positioning_overflow.value; - - if (!f.positioning_placement_same.checked) { - ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); - ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : ""); - ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : ""); - ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : ""); - } else { - s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); - ce.style.top = s; - ce.style.right = s; - ce.style.bottom = s; - ce.style.left = s; - } - - if (!f.positioning_clip_same.checked) { - s = "rect("; - s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " "; - s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " "; - s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " "; - s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto"); - s += ")"; - - if (s != "rect(auto auto auto auto)") - ce.style.clip = s; - } else { - s = "rect("; - t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto"; - s += t + " "; - s += t + " "; - s += t + " "; - s += t + ")"; - - if (s != "rect(auto auto auto auto)") - ce.style.clip = s; - } - - ce.style.cssText = tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText)); -} - -function isNum(s) { - return new RegExp('[0-9]+', 'g').test(s); -} - -function showDisabledControls() { - var f = document.forms, i, a; - - for (i=0; i 1) { - addSelectValue(f, s, p[0], p[1]); - - if (se) - selectByValue(f, s, p[1]); - } else { - addSelectValue(f, s, p[0], p[0]); - - if (se) - selectByValue(f, s, p[0]); - } - } -} - -function toggleSame(ce, pre) { - var el = document.forms[0].elements, i; - - if (ce.checked) { - el[pre + "_top"].disabled = false; - el[pre + "_right"].disabled = true; - el[pre + "_bottom"].disabled = true; - el[pre + "_left"].disabled = true; - - if (el[pre + "_top_measurement"]) { - el[pre + "_top_measurement"].disabled = false; - el[pre + "_right_measurement"].disabled = true; - el[pre + "_bottom_measurement"].disabled = true; - el[pre + "_left_measurement"].disabled = true; - } - } else { - el[pre + "_top"].disabled = false; - el[pre + "_right"].disabled = false; - el[pre + "_bottom"].disabled = false; - el[pre + "_left"].disabled = false; - - if (el[pre + "_top_measurement"]) { - el[pre + "_top_measurement"].disabled = false; - el[pre + "_right_measurement"].disabled = false; - el[pre + "_bottom_measurement"].disabled = false; - el[pre + "_left_measurement"].disabled = false; - } - } - - showDisabledControls(); -} - -function synch(fr, to) { - var f = document.forms[0]; - - f.elements[to].value = f.elements[fr].value; - - if (f.elements[fr + "_measurement"]) - selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value); -} +var defaultFonts = "" + + "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + + "Times New Roman, Times, serif=Times New Roman, Times, serif;" + + "Courier New, Courier, mono=Courier New, Courier, mono;" + + "Times New Roman, Times, serif=Times New Roman, Times, serif;" + + "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + + "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + + "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif"; + +var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger"; +var defaultMeasurement = "+pixels=px;points=pt;in;cm;mm;picas;ems;exs;%"; +var defaultSpacingMeasurement = "pixels=px;points=pt;in;cm;mm;picas;+ems;exs;%"; +var defaultIndentMeasurement = "pixels=px;+points=pt;in;cm;mm;picas;ems;exs;%"; +var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900"; +var defaultTextStyle = "normal;italic;oblique"; +var defaultVariant = "normal;small-caps"; +var defaultLineHeight = "normal"; +var defaultAttachment = "fixed;scroll"; +var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y"; +var defaultPosH = "left;center;right"; +var defaultPosV = "top;center;bottom"; +var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom"; +var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none"; +var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset"; +var defaultBorderWidth = "thin;medium;thick"; +var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none"; + +function init() { + var ce = document.getElementById('container'), h; + + ce.style.cssText = tinyMCEPopup.getWindowArg('style_text'); + + h = getBrowserHTML('background_image_browser','background_image','image','advimage'); + document.getElementById("background_image_browser").innerHTML = h; + + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color'); + document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color'); + document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top'); + document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right'); + document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom'); + document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left'); + + fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true); + fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true); + fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true); + fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true); + fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true); + fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true); + fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true); + fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true); + fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true); + + fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true); + fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true); + + fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true); + fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true); + fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true); + fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true); + fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true); + fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true); + fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true); + fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true); + fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true); + + fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true); + fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true); + fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true); + fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true); + + fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true); + fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true); + + fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true); + fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true); + + fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true); + fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true); + + fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true); + + fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true); + + fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true); + fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true); + + TinyMCE_EditableSelects.init(); + setupFormData(); + showDisabledControls(); +} + +function setupFormData() { + var ce = document.getElementById('container'), f = document.forms[0], s, b, i; + + // Setup text fields + + selectByValue(f, 'text_font', ce.style.fontFamily, true, true); + selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true); + selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize)); + selectByValue(f, 'text_weight', ce.style.fontWeight, true, true); + selectByValue(f, 'text_style', ce.style.fontStyle, true, true); + selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true); + selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight)); + selectByValue(f, 'text_case', ce.style.textTransform, true, true); + selectByValue(f, 'text_variant', ce.style.fontVariant, true, true); + f.text_color.value = ce.style.color; + updateColor('text_color_pick', 'text_color'); + f.text_underline.checked = inStr(ce.style.textDecoration, 'underline'); + f.text_overline.checked = inStr(ce.style.textDecoration, 'overline'); + f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through'); + f.text_blink.checked = inStr(ce.style.textDecoration, 'blink'); + + // Setup background fields + + f.background_color.value = ce.style.backgroundColor; + updateColor('background_color_pick', 'background_color'); + f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true); + selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true); + selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true); + selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0))); + selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true); + selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1))); + + // Setup block fields + + selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true); + selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing)); + selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true); + selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing)); + selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true); + selectByValue(f, 'block_text_align', ce.style.textAlign, true, true); + f.block_text_indent.value = getNum(ce.style.textIndent); + selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent)); + selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true); + selectByValue(f, 'block_display', ce.style.display, true, true); + + // Setup box fields + + f.box_width.value = getNum(ce.style.width); + selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width)); + + f.box_height.value = getNum(ce.style.height); + selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height)); + + if (tinyMCE.isGecko) + selectByValue(f, 'box_float', ce.style.cssFloat, true, true); + else + selectByValue(f, 'box_float', ce.style.styleFloat, true, true); + + selectByValue(f, 'box_clear', ce.style.clear, true, true); + + setupBox(f, ce, 'box_padding', 'padding', ''); + setupBox(f, ce, 'box_margin', 'margin', ''); + + // Setup border fields + + setupBox(f, ce, 'border_style', 'border', 'Style'); + setupBox(f, ce, 'border_width', 'border', 'Width'); + setupBox(f, ce, 'border_color', 'border', 'Color'); + + updateColor('border_color_top_pick', 'border_color_top'); + updateColor('border_color_right_pick', 'border_color_right'); + updateColor('border_color_bottom_pick', 'border_color_bottom'); + updateColor('border_color_left_pick', 'border_color_left'); + + // Setup list fields + + selectByValue(f, 'list_type', ce.style.listStyleType, true, true); + selectByValue(f, 'list_position', ce.style.listStylePosition, true, true); + f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + + // Setup box fields + + selectByValue(f, 'positioning_type', ce.style.position, true, true); + selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true); + selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true); + f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : ""; + + f.positioning_width.value = getNum(ce.style.width); + selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width)); + + f.positioning_height.value = getNum(ce.style.height); + selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height)); + + setupBox(f, ce, 'positioning_placement', '', '', new Array('top', 'right', 'bottom', 'left')); + + s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1"); + s = s.replace(/,/g, ' '); + + if (!hasEqualValues(new Array(getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)))) { + f.positioning_clip_top.value = getNum(getVal(s, 0)); + selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); + f.positioning_clip_right.value = getNum(getVal(s, 1)); + selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1))); + f.positioning_clip_bottom.value = getNum(getVal(s, 2)); + selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2))); + f.positioning_clip_left.value = getNum(getVal(s, 3)); + selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3))); + } else { + f.positioning_clip_top.value = getNum(getVal(s, 0)); + selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); + f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value; + } + +// setupBox(f, ce, '', 'border', 'Color'); +} + +function getMeasurement(s) { + return s.replace(/^([0-9]+)(.*)$/, "$2"); +} + +function getNum(s) { + if (new RegExp('^[0-9]+[a-z%]+$', 'gi').test(s)) + return s.replace(/[^0-9]/g, ''); + + return s; +} + +function inStr(s, n) { + return new RegExp(n, 'gi').test(s); +} + +function getVal(s, i) { + var a = tinyMCE.explode(' ', s); + + if (a.length > 1) + return a[i]; + + return ""; +} + +function setValue(f, n, v) { + if (f.elements[n].type == "text") + f.elements[n].value = v; + else + selectByValue(f, n, v, true, true); +} + +function setupBox(f, ce, fp, pr, sf, b) { + if (typeof(b) == "undefined") + b = new Array('Top', 'Right', 'Bottom', 'Left'); + + if (isSame(ce, pr, sf, b)) { + f.elements[fp + "_same"].checked = true; + + setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); + f.elements[fp + "_top"].disabled = false; + + f.elements[fp + "_right"].value = ""; + f.elements[fp + "_right"].disabled = true; + f.elements[fp + "_bottom"].value = ""; + f.elements[fp + "_bottom"].disabled = true; + f.elements[fp + "_left"].value = ""; + f.elements[fp + "_left"].disabled = true; + + if (f.elements[fp + "_top_measurement"]) { + selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); + f.elements[fp + "_left_measurement"].disabled = true; + f.elements[fp + "_bottom_measurement"].disabled = true; + f.elements[fp + "_right_measurement"].disabled = true; + } + } else { + f.elements[fp + "_same"].checked = false; + + setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); + f.elements[fp + "_top"].disabled = false; + + setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf])); + f.elements[fp + "_right"].disabled = false; + + setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf])); + f.elements[fp + "_bottom"].disabled = false; + + setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf])); + f.elements[fp + "_left"].disabled = false; + + if (f.elements[fp + "_top_measurement"]) { + selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); + selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf])); + selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf])); + selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf])); + f.elements[fp + "_left_measurement"].disabled = false; + f.elements[fp + "_bottom_measurement"].disabled = false; + f.elements[fp + "_right_measurement"].disabled = false; + } + } +} + +function isSame(e, pr, sf, b) { + var a = new Array(), i, x; + + if (typeof(b) == "undefined") + b = new Array('Top', 'Right', 'Bottom', 'Left'); + + if (typeof(sf) == "undefined" || sf == null) + sf = ""; + + a[0] = e.style[pr + b[0] + sf]; + a[1] = e.style[pr + b[1] + sf]; + a[2] = e.style[pr + b[2] + sf]; + a[3] = e.style[pr + b[3] + sf]; + + for (i=0; i 0 ? s.substring(1) : s; + + if (f.text_none.checked) + s = "none"; + + ce.style.textDecoration = s; + + // Build background styles + + ce.style.backgroundColor = f.background_color.value; + ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : ""; + ce.style.backgroundRepeat = f.background_repeat.value; + ce.style.backgroundAttachment = f.background_attachment.value; + + if (f.background_hpos.value != "") { + s = ""; + s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " "; + s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : ""); + ce.style.backgroundPosition = s; + } + + // Build block styles + + ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : ""); + ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : ""); + ce.style.verticalAlign = f.block_vertical_alignment.value; + ce.style.textAlign = f.block_text_align.value; + ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : ""); + ce.style.whiteSpace = f.block_whitespace.value; + ce.style.display = f.block_display.value; + + // Build box styles + + ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : ""); + ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : ""); + ce.style.styleFloat = f.box_float.value; + + if (tinyMCE.isGecko) + ce.style.cssFloat = f.box_float.value; + + ce.style.clear = f.box_clear.value; + + if (!f.box_padding_same.checked) { + ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); + ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : ""); + ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : ""); + ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : ""); + } else + ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); + + if (!f.box_margin_same.checked) { + ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); + ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : ""); + ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : ""); + ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : ""); + } else + ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); + + // Build border styles + + if (!f.border_style_same.checked) { + ce.style.borderTopStyle = f.border_style_top.value; + ce.style.borderRightStyle = f.border_style_right.value; + ce.style.borderBottomStyle = f.border_style_bottom.value; + ce.style.borderLeftStyle = f.border_style_left.value; + } else + ce.style.borderStyle = f.border_style_top.value; + + if (!f.border_width_same.checked) { + ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); + ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : ""); + ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : ""); + ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : ""); + } else + ce.style.borderWidth = f.border_width_top.value; + + if (!f.border_color_same.checked) { + ce.style.borderTopColor = f.border_color_top.value; + ce.style.borderRightColor = f.border_color_right.value; + ce.style.borderBottomColor = f.border_color_bottom.value; + ce.style.borderLeftColor = f.border_color_left.value; + } else + ce.style.borderColor = f.border_color_top.value; + + // Build list styles + + ce.style.listStyleType = f.list_type.value; + ce.style.listStylePosition = f.list_position.value; + ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : ""; + + // Build positioning styles + + ce.style.position = f.positioning_type.value; + ce.style.visibility = f.positioning_visibility.value; + + if (ce.style.width == "") + ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : ""); + + if (ce.style.height == "") + ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : ""); + + ce.style.zIndex = f.positioning_zindex.value; + ce.style.overflow = f.positioning_overflow.value; + + if (!f.positioning_placement_same.checked) { + ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); + ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : ""); + ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : ""); + ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : ""); + } else { + s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); + ce.style.top = s; + ce.style.right = s; + ce.style.bottom = s; + ce.style.left = s; + } + + if (!f.positioning_clip_same.checked) { + s = "rect("; + s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto"); + s += ")"; + + if (s != "rect(auto auto auto auto)") + ce.style.clip = s; + } else { + s = "rect("; + t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto"; + s += t + " "; + s += t + " "; + s += t + " "; + s += t + ")"; + + if (s != "rect(auto auto auto auto)") + ce.style.clip = s; + } + + ce.style.cssText = tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText)); +} + +function isNum(s) { + return new RegExp('[0-9]+', 'g').test(s); +} + +function showDisabledControls() { + var f = document.forms, i, a; + + for (i=0; i 1) { + addSelectValue(f, s, p[0], p[1]); + + if (se) + selectByValue(f, s, p[1]); + } else { + addSelectValue(f, s, p[0], p[0]); + + if (se) + selectByValue(f, s, p[0]); + } + } +} + +function toggleSame(ce, pre) { + var el = document.forms[0].elements, i; + + if (ce.checked) { + el[pre + "_top"].disabled = false; + el[pre + "_right"].disabled = true; + el[pre + "_bottom"].disabled = true; + el[pre + "_left"].disabled = true; + + if (el[pre + "_top_measurement"]) { + el[pre + "_top_measurement"].disabled = false; + el[pre + "_right_measurement"].disabled = true; + el[pre + "_bottom_measurement"].disabled = true; + el[pre + "_left_measurement"].disabled = true; + } + } else { + el[pre + "_top"].disabled = false; + el[pre + "_right"].disabled = false; + el[pre + "_bottom"].disabled = false; + el[pre + "_left"].disabled = false; + + if (el[pre + "_top_measurement"]) { + el[pre + "_top_measurement"].disabled = false; + el[pre + "_right_measurement"].disabled = false; + el[pre + "_bottom_measurement"].disabled = false; + el[pre + "_left_measurement"].disabled = false; + } + } + + showDisabledControls(); +} + +function synch(fr, to) { + var f = document.forms[0]; + + f.elements[to].value = f.elements[fr].value; + + if (f.elements[fr + "_measurement"]) + selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value); +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/style/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/langs/en.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/style/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/style/langs/en.js index 6bed70f72..156ecd464 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/style/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/langs/en.js @@ -1,66 +1,66 @@ -// UK lang variables - -tinyMCE.addToLang('style',{ -title : 'Edit CSS Style', -styleinfo_desc : 'Edit CSS Style', -apply : 'Apply', -text_tab : 'Text', -background_tab : 'Background', -block_tab : 'Block', -box_tab : 'Box', -border_tab : 'Border', -list_tab : 'List', -positioning_tab : 'Positioning', -text_props : 'Text', -text_font : 'Font', -text_size : 'Size', -text_weight : 'Weight', -text_style : 'Style', -text_variant : 'Variant', -text_lineheight : 'Line height', -text_case : 'Case', -text_color : 'Color', -text_decoration : 'Decoration', -text_overline : 'overline', -text_underline : 'underline', -text_striketrough : 'strikethrough', -text_blink : 'blink', -text_none : 'none', -background_color : 'Background color', -background_image : 'Background image', -background_repeat : 'Repeat', -background_attachment : 'Attachment', -background_hpos : 'Horizontal position', -background_vpos : 'Vertical position', -block_wordspacing : 'Word spacing', -block_letterspacing : 'Letter spacing', -block_vertical_alignment : 'Vertical alignment', -block_text_align : 'Text align', -block_text_indent : 'Text indent', -block_whitespace : 'Whitespace', -block_display : 'Display', -box_width : 'Width', -box_height : 'Height', -box_float : 'Float', -box_clear : 'Clear', -padding : 'Padding', -same : 'Same for all', -top : 'Top', -right : 'Right', -bottom : 'Bottom', -left : 'Left', -margin : 'Margin', -style : 'Style', -width : 'Width', -height : 'Height', -color : 'Color', -list_type : 'Type', -bullet_image : 'Bullet image', -position : 'Position', -positioning_type : 'Type', -visibility : 'Visibility', -zindex : 'Z-index', -overflow : 'Overflow', -placement : 'Placement', -clip : 'Clip' -}); +// UK lang variables + +tinyMCE.addToLang('style',{ +title : 'Edit CSS Style', +styleinfo_desc : 'Edit CSS Style', +apply : 'Apply', +text_tab : 'Text', +background_tab : 'Background', +block_tab : 'Block', +box_tab : 'Box', +border_tab : 'Border', +list_tab : 'List', +positioning_tab : 'Positioning', +text_props : 'Text', +text_font : 'Font', +text_size : 'Size', +text_weight : 'Weight', +text_style : 'Style', +text_variant : 'Variant', +text_lineheight : 'Line height', +text_case : 'Case', +text_color : 'Color', +text_decoration : 'Decoration', +text_overline : 'overline', +text_underline : 'underline', +text_striketrough : 'strikethrough', +text_blink : 'blink', +text_none : 'none', +background_color : 'Background color', +background_image : 'Background image', +background_repeat : 'Repeat', +background_attachment : 'Attachment', +background_hpos : 'Horizontal position', +background_vpos : 'Vertical position', +block_wordspacing : 'Word spacing', +block_letterspacing : 'Letter spacing', +block_vertical_alignment : 'Vertical alignment', +block_text_align : 'Text align', +block_text_indent : 'Text indent', +block_whitespace : 'Whitespace', +block_display : 'Display', +box_width : 'Width', +box_height : 'Height', +box_float : 'Float', +box_clear : 'Clear', +padding : 'Padding', +same : 'Same for all', +top : 'Top', +right : 'Right', +bottom : 'Bottom', +left : 'Left', +margin : 'Margin', +style : 'Style', +width : 'Width', +height : 'Height', +color : 'Color', +list_type : 'Type', +bullet_image : 'Bullet image', +position : 'Position', +positioning_type : 'Type', +visibility : 'Visibility', +zindex : 'Z-index', +overflow : 'Overflow', +placement : 'Placement', +clip : 'Clip' +}); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/style/props.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/props.htm similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/style/props.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/style/props.htm diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/style/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/cell.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/cell.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/cell.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/cell.htm index 7171d4faa..14fd0d56b 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/table/cell.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/cell.htm @@ -1,182 +1,182 @@ - - - {$lang_table_cell_title} - - - - - - - - -
- - -
-
-
- {$lang_table_general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- - - -
- -
-
-
- -
-
- {$lang_table_advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- - - - - -
 
-
- - - - - -
 
-
- - - - - -
 
-
-
-
-
- -
-
- -
- -
-
-
- -
- -
-
-
- - + + + {$lang_table_cell_title} + + + + + + + + +
+ + +
+
+
+ {$lang_table_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ +
+
+
+ +
+
+ {$lang_table_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+ + + + + +
 
+
+ + + + + +
 
+
+
+
+
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css similarity index 92% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css index a067ecdfe..a47cc1a1e 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css @@ -1,17 +1,17 @@ -/* CSS file for cell dialog in the table plugin */ - -.panel_wrapper div.current { - height: 200px; -} - -.advfield { - width: 200px; -} - -#action { - margin-bottom: 3px; -} - -#class { - width: 150px; +/* CSS file for cell dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#class { + width: 150px; } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/css/row.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/css/row.css similarity index 91% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/css/row.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/css/row.css index 1f7755daf..0e397db3e 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/table/css/row.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/css/row.css @@ -1,25 +1,25 @@ -/* CSS file for row dialog in the table plugin */ - -.panel_wrapper div.current { - height: 200px; -} - -.advfield { - width: 200px; -} - -#action { - margin-bottom: 3px; -} - -#rowtype,#align,#valign,#class,#height { - width: 150px; -} - -#height { - width: 50px; -} - -.col2 { - padding-left: 20px; -} +/* CSS file for row dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#rowtype,#align,#valign,#class,#height { + width: 150px; +} + +#height { + width: 50px; +} + +.col2 { + padding-left: 20px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/css/table.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/css/table.css similarity index 92% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/css/table.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/css/table.css index 804f766ee..82bb548ca 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/table/css/table.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/css/table.css @@ -1,13 +1,13 @@ -/* CSS file for table dialog in the table plugin */ - -.panel_wrapper div.current { - height: 220px; -} - -.advfield { - width: 200px; -} - -#class { - width: 150px; -} +/* CSS file for table dialog in the table plugin */ + +.panel_wrapper div.current { + height: 220px; +} + +.advfield { + width: 200px; +} + +#class { + width: 150px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js index cd93d6f7c..d184b423e 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js @@ -1,1073 +1,1073 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('table'); - -var TinyMCE_TablePlugin = { - getInfo : function() { - return { - longname : 'Tables', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - if (tinyMCE.isGecko) { - var doc = inst.getDoc(); - tinyMCE.addEvent(doc, "mouseup", TinyMCE_TablePlugin._mouseDownHandler); - } - - inst.tableRowClipboard = null; - }, - - /** - * Returns the HTML contents of the table control. - */ - getControlHTML : function(control_name) { - var controls = new Array( - ['table', 'table.gif', 'lang_table_desc', 'mceInsertTable', true], - ['delete_table', 'table_delete.gif', 'lang_table_del', 'mceTableDelete'], - ['delete_col', 'table_delete_col.gif', 'lang_table_delete_col_desc', 'mceTableDeleteCol'], - ['delete_row', 'table_delete_row.gif', 'lang_table_delete_row_desc', 'mceTableDeleteRow'], - ['col_after', 'table_insert_col_after.gif', 'lang_table_col_after_desc', 'mceTableInsertColAfter'], - ['col_before', 'table_insert_col_before.gif', 'lang_table_col_before_desc', 'mceTableInsertColBefore'], - ['row_after', 'table_insert_row_after.gif', 'lang_table_row_after_desc', 'mceTableInsertRowAfter'], - ['row_before', 'table_insert_row_before.gif', 'lang_table_row_before_desc', 'mceTableInsertRowBefore'], - ['row_props', 'table_row_props.gif', 'lang_table_row_desc', 'mceTableRowProps', true], - ['cell_props', 'table_cell_props.gif', 'lang_table_cell_desc', 'mceTableCellProps', true], - ['split_cells', 'table_split_cells.gif', 'lang_table_split_cells_desc', 'mceTableSplitCells', true], - ['merge_cells', 'table_merge_cells.gif', 'lang_table_merge_cells_desc', 'mceTableMergeCells', true]); - - // Render table control - for (var i=0; i 4 ? but[4] : false) + (but.length > 5 ? ', \'' + but[5] + '\'' : '') + ');return false;'; - - if (but[0] == control_name) - return tinyMCE.getButtonHTML(control_name, but[2], '{$pluginurl}/images/'+ but[1], but[3], (but.length > 4 ? but[4] : false)); - } - - // Special tablecontrols - if (control_name == "tablecontrols") { - var html = ""; - - html += tinyMCE.getControlHTML("table"); - html += tinyMCE.getControlHTML("separator"); - html += tinyMCE.getControlHTML("row_props"); - html += tinyMCE.getControlHTML("cell_props"); - html += tinyMCE.getControlHTML("separator"); - html += tinyMCE.getControlHTML("row_before"); - html += tinyMCE.getControlHTML("row_after"); - html += tinyMCE.getControlHTML("delete_row"); - html += tinyMCE.getControlHTML("separator"); - html += tinyMCE.getControlHTML("col_before"); - html += tinyMCE.getControlHTML("col_after"); - html += tinyMCE.getControlHTML("delete_col"); - html += tinyMCE.getControlHTML("separator"); - html += tinyMCE.getControlHTML("split_cells"); - html += tinyMCE.getControlHTML("merge_cells"); - - return html; - } - - return ""; - }, - - /** - * Executes the table commands. - */ - execCommand : function(editor_id, element, command, user_interface, value) { - // Is table command - switch (command) { - case "mceInsertTable": - case "mceTableRowProps": - case "mceTableCellProps": - case "mceTableSplitCells": - case "mceTableMergeCells": - case "mceTableInsertRowBefore": - case "mceTableInsertRowAfter": - case "mceTableDeleteRow": - case "mceTableInsertColBefore": - case "mceTableInsertColAfter": - case "mceTableDeleteCol": - case "mceTableCutRow": - case "mceTableCopyRow": - case "mceTablePasteRowBefore": - case "mceTablePasteRowAfter": - case "mceTableDelete": - var inst = tinyMCE.getInstanceById(editor_id); - - inst.execCommand('mceBeginUndoLevel'); - TinyMCE_TablePlugin._doExecCommand(editor_id, element, command, user_interface, value); - inst.execCommand('mceEndUndoLevel'); - - return true; - } - - // Pass to next handler in chain - return false; - }, - - handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { - var colspan = "1", rowspan = "1", tdElm; - - var inst = tinyMCE.getInstanceById(editor_id); - - // Reset table controls - tinyMCE.switchClass(editor_id + '_table', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonDisabled'); - - // Within a td element - if (tdElm = tinyMCE.getParentElement(node, "td,th")) { - tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonSelected'); - tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonNormal'); - - colspan = tinyMCE.getAttrib(tdElm, "colspan"); - rowspan = tinyMCE.getAttrib(tdElm, "rowspan"); - - colspan = colspan == "" ? "1" : colspan; - rowspan = rowspan == "" ? "1" : rowspan; - - if (colspan != "1" || rowspan != "1") - tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonNormal'); - } - - // Within a tr element - if (tinyMCE.getParentElement(node, "tr")) - tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonSelected'); - - // Within table - if (tinyMCE.getParentElement(node, "table")) { - tinyMCE.switchClass(editor_id + '_table', 'mceButtonSelected'); - tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonNormal'); - } - }, - - // Private plugin internal methods - - _mouseDownHandler : function(e) { - var elm = tinyMCE.isMSIE ? event.srcElement : e.target; - var focusElm = tinyMCE.selectedInstance.getFocusElement(); - - // If press on special Mozilla create TD/TR thingie - if (elm.nodeName == "BODY" && (focusElm.nodeName == "TD" || focusElm.nodeName == "TH" || (focusElm.parentNode && focusElm.parentNode.nodeName == "TD") ||(focusElm.parentNode && focusElm.parentNode.nodeName == "TH") )) { - window.setTimeout(function() { - var tableElm = tinyMCE.getParentElement(focusElm, "table"); - tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance); - }, 10); - } - }, - - /** - * Executes the table commands. - */ - _doExecCommand : function(editor_id, element, command, user_interface, value) { - var inst = tinyMCE.getInstanceById(editor_id); - var focusElm = inst.getFocusElement(); - var trElm = tinyMCE.getParentElement(focusElm, "tr"); - var tdElm = tinyMCE.getParentElement(focusElm, "td,th"); - var tableElm = tinyMCE.getParentElement(focusElm, "table"); - var doc = inst.contentWindow.document; - var tableBorder = tableElm ? tableElm.getAttribute("border") : ""; - - // Get first TD if no TD found - if (trElm && tdElm == null) - tdElm = trElm.cells[0]; - - // ------- Inner functions --------- - function inArray(ar, v) { - for (var i=0; i 0 && inArray(ar[i], v)) - return true; - - // Found value - if (ar[i] == v) - return true; - } - - return false; - } - - function makeTD() { - var newTD = doc.createElement("td"); - newTD.innerHTML = " "; - } - - function getColRowSpan(td) { - var colspan = tinyMCE.getAttrib(td, "colspan"); - var rowspan = tinyMCE.getAttrib(td, "rowspan"); - - colspan = colspan == "" ? 1 : parseInt(colspan); - rowspan = rowspan == "" ? 1 : parseInt(rowspan); - - return {colspan : colspan, rowspan : rowspan}; - } - - function getCellPos(grid, td) { - var x, y; - - for (y=0; y 1) { // Remove due to colspan - for (var i=x; i 1) - td.rowSpan = sd.rowspan + 1; - - lastElm = td; - } - - deleteMarked(tableElm); - } - } - - function prevElm(node, name) { - while ((node = node.previousSibling) != null) { - if (node.nodeName == name) - return node; - } - - return null; - } - - function nextElm(node, names) { - var namesAr = names.split(','); - - while ((node = node.nextSibling) != null) { - for (var i=0; i 1) { - do { - var nexttd = nextElm(td, "TD,TH"); - - if (td._delete) - td.parentNode.removeChild(td); - } while ((td = nexttd) != null); - } - } while ((tr = next) != null); - } - - function addRows(td_elm, tr_elm, rowspan) { - // Add rows - td_elm.rowSpan = 1; - var trNext = nextElm(tr_elm, "TR"); - for (var i=1; i 1) { - var newTD = cells[x].cloneNode(true); - var sd = getColRowSpan(cells[x]); - - newTD.rowSpan = sd.rowspan - 1; - - var nextTD = nextTR.cells[x]; - - if (nextTD == null) - nextTR.appendChild(newTD); - else - nextTR.insertBefore(newTD, nextTD); - } - } - - // Delete cells - var lastTDElm = null; - for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) { - if (tdElm != lastTDElm) { - var sd = getColRowSpan(tdElm); - - if (sd.rowspan > 1) { - tdElm.rowSpan = sd.rowspan - 1; - } else { - trElm = tdElm.parentNode; - - if (trElm.parentNode) - trElm._delete = true; - } - - lastTDElm = tdElm; - } - } - - deleteMarked(tableElm); - - cpos.rowindex--; - if (cpos.rowindex < 0) - cpos.rowindex = 0; - - // Recalculate grid and select - grid = getTableGrid(tableElm); - inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko - break; - - case "mceTableInsertColBefore": - if (!trElm || !tdElm) - return true; - - var grid = getTableGrid(tableElm); - var cpos = getCellPos(grid, tdElm); - var lastTDElm = null; - - for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { - if (tdElm != lastTDElm) { - var sd = getColRowSpan(tdElm); - - if (sd['colspan'] == 1) { - var newTD = doc.createElement(tdElm.nodeName); - - newTD.innerHTML = " "; - newTD.rowSpan = tdElm.rowSpan; - - tdElm.parentNode.insertBefore(newTD, tdElm); - } else - tdElm.colSpan++; - - lastTDElm = tdElm; - } - } - - grid = getTableGrid(tableElm); - inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex + 1), tinyMCE.isGecko, true); // Only collape on gecko - break; - - case "mceTableInsertColAfter": - if (!trElm || !tdElm) - return true; - - var grid = getTableGrid(tableElm); - var cpos = getCellPos(grid, tdElm); - var lastTDElm = null; - - for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { - if (tdElm != lastTDElm) { - var sd = getColRowSpan(tdElm); - - if (sd['colspan'] == 1) { - var newTD = doc.createElement(tdElm.nodeName); - - newTD.innerHTML = " "; - newTD.rowSpan = tdElm.rowSpan; - - var nextTD = nextElm(tdElm, "TD,TH"); - if (nextTD == null) - tdElm.parentNode.appendChild(newTD); - else - nextTD.parentNode.insertBefore(newTD, nextTD); - } else - tdElm.colSpan++; - - lastTDElm = tdElm; - } - } - - grid = getTableGrid(tableElm); - inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko - break; - - case "mceTableDeleteCol": - if (!trElm || !tdElm) - return true; - - var grid = getTableGrid(tableElm); - var cpos = getCellPos(grid, tdElm); - var lastTDElm = null; - - // Only one col, remove whole table - if (grid.length > 1 && grid[0].length <= 1) { - tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody - tableElm.parentNode.removeChild(tableElm); - return true; - } - - // Delete cells - for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { - if (tdElm != lastTDElm) { - var sd = getColRowSpan(tdElm); - - if (sd['colspan'] > 1) - tdElm.colSpan = sd['colspan'] - 1; - else { - if (tdElm.parentNode) - tdElm.parentNode.removeChild(tdElm); - } - - lastTDElm = tdElm; - } - } - - cpos.cellindex--; - if (cpos.cellindex < 0) - cpos.cellindex = 0; - - // Recalculate grid and select - grid = getTableGrid(tableElm); - inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko - break; - - case "mceTableSplitCells": - if (!trElm || !tdElm) - return true; - - var spandata = getColRowSpan(tdElm); - - var colspan = spandata["colspan"]; - var rowspan = spandata["rowspan"]; - - // Needs splitting - if (colspan > 1 || rowspan > 1) { - // Generate cols - tdElm.colSpan = 1; - for (var i=1; i 1) - addRows(newTD, trElm, rowspan); - } - - addRows(tdElm, trElm, rowspan); - } - - // Apply visual aids - tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); - break; - - case "mceTableMergeCells": - var rows = new Array(); - var sel = inst.getSel(); - var grid = getTableGrid(tableElm); - - if (tinyMCE.isMSIE || sel.rangeCount == 1) { - if (user_interface) { - // Setup template - var template = new Array(); - var sp = getColRowSpan(tdElm); - - template['file'] = '../../plugins/table/merge_cells.htm'; - template['width'] = 250; - template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0); - - // Language specific width and height addons - template['width'] += tinyMCE.getLang('lang_table_merge_cells_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_table_merge_cells_delta_height', 0); - - // Open window - tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : "update", numcols : sp.colspan, numrows : sp.rowspan}); - - return true; - } else { - var numRows = parseInt(value['numrows']); - var numCols = parseInt(value['numcols']); - var cpos = getCellPos(grid, tdElm); - - if (("" + numRows) == "NaN") - numRows = 1; - - if (("" + numCols) == "NaN") - numCols = 1; - - // Get rows and cells - var tRows = tableElm.rows; - for (var y=cpos.rowindex; y 0) - rows[rows.length] = rowCells; - } - - //return true; - } - } else { - var cells = new Array(); - var sel = inst.getSel(); - var lastTR = null; - var curRow = null; - var x1 = -1, y1 = -1, x2, y2; - - // Only one cell selected, whats the point? - if (sel.rangeCount < 2) - return true; - - // Get all selected cells - for (var i=0; i 0) - rows[rows.length] = rowCells; - } - - // Find selected cells in grid and box - var curRow = new Array(); - var lastTR = null; - for (var y=0; y colSpan) - colSpan = rowColSpan; - - lastRowSpan = -1; - } - - // Validate vertical and get total rowspan - var lastColSpan = -1; - for (var x=0; x rowSpan) - rowSpan = colRowSpan; - - lastColSpan = -1; - } - - // Setup td - tdElm = rows[0][0]; - tdElm.rowSpan = rowSpan; - tdElm.colSpan = colSpan; - - // Merge cells - for (var y=0; y 0)) - tdElm.innerHTML += html; - - // Not current cell - if (rows[y][x] != tdElm && !rows[y][x]._deleted) { - var cpos = getCellPos(grid, rows[y][x]); - var tr = rows[y][x].parentNode; - - tr.removeChild(rows[y][x]); - rows[y][x]._deleted = true; - - // Empty TR, remove it - if (!tr.hasChildNodes()) { - tr.parentNode.removeChild(tr); - - var lastCell = null; - for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) { - if (cellElm != lastCell && cellElm.rowSpan > 1) - cellElm.rowSpan--; - - lastCell = cellElm; - } - - if (tdElm.rowSpan > 1) - tdElm.rowSpan--; - } - } - } - } - - break; - } - - tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); - tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance); - tinyMCE.triggerNodeChange(); - inst.repaint(); - } - - return true; - } - - // Pass to next handler in chain - return false; - } -}; - -tinyMCE.addPlugin("table", TinyMCE_TablePlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('table'); + +var TinyMCE_TablePlugin = { + getInfo : function() { + return { + longname : 'Tables', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + if (tinyMCE.isGecko) { + var doc = inst.getDoc(); + tinyMCE.addEvent(doc, "mouseup", TinyMCE_TablePlugin._mouseDownHandler); + } + + inst.tableRowClipboard = null; + }, + + /** + * Returns the HTML contents of the table control. + */ + getControlHTML : function(control_name) { + var controls = new Array( + ['table', 'table.gif', 'lang_table_desc', 'mceInsertTable', true], + ['delete_table', 'table_delete.gif', 'lang_table_del', 'mceTableDelete'], + ['delete_col', 'table_delete_col.gif', 'lang_table_delete_col_desc', 'mceTableDeleteCol'], + ['delete_row', 'table_delete_row.gif', 'lang_table_delete_row_desc', 'mceTableDeleteRow'], + ['col_after', 'table_insert_col_after.gif', 'lang_table_col_after_desc', 'mceTableInsertColAfter'], + ['col_before', 'table_insert_col_before.gif', 'lang_table_col_before_desc', 'mceTableInsertColBefore'], + ['row_after', 'table_insert_row_after.gif', 'lang_table_row_after_desc', 'mceTableInsertRowAfter'], + ['row_before', 'table_insert_row_before.gif', 'lang_table_row_before_desc', 'mceTableInsertRowBefore'], + ['row_props', 'table_row_props.gif', 'lang_table_row_desc', 'mceTableRowProps', true], + ['cell_props', 'table_cell_props.gif', 'lang_table_cell_desc', 'mceTableCellProps', true], + ['split_cells', 'table_split_cells.gif', 'lang_table_split_cells_desc', 'mceTableSplitCells', true], + ['merge_cells', 'table_merge_cells.gif', 'lang_table_merge_cells_desc', 'mceTableMergeCells', true]); + + // Render table control + for (var i=0; i 4 ? but[4] : false) + (but.length > 5 ? ', \'' + but[5] + '\'' : '') + ');return false;'; + + if (but[0] == control_name) + return tinyMCE.getButtonHTML(control_name, but[2], '{$pluginurl}/images/'+ but[1], but[3], (but.length > 4 ? but[4] : false)); + } + + // Special tablecontrols + if (control_name == "tablecontrols") { + var html = ""; + + html += tinyMCE.getControlHTML("table"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("row_props"); + html += tinyMCE.getControlHTML("cell_props"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("row_before"); + html += tinyMCE.getControlHTML("row_after"); + html += tinyMCE.getControlHTML("delete_row"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("col_before"); + html += tinyMCE.getControlHTML("col_after"); + html += tinyMCE.getControlHTML("delete_col"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("split_cells"); + html += tinyMCE.getControlHTML("merge_cells"); + + return html; + } + + return ""; + }, + + /** + * Executes the table commands. + */ + execCommand : function(editor_id, element, command, user_interface, value) { + // Is table command + switch (command) { + case "mceInsertTable": + case "mceTableRowProps": + case "mceTableCellProps": + case "mceTableSplitCells": + case "mceTableMergeCells": + case "mceTableInsertRowBefore": + case "mceTableInsertRowAfter": + case "mceTableDeleteRow": + case "mceTableInsertColBefore": + case "mceTableInsertColAfter": + case "mceTableDeleteCol": + case "mceTableCutRow": + case "mceTableCopyRow": + case "mceTablePasteRowBefore": + case "mceTablePasteRowAfter": + case "mceTableDelete": + var inst = tinyMCE.getInstanceById(editor_id); + + inst.execCommand('mceBeginUndoLevel'); + TinyMCE_TablePlugin._doExecCommand(editor_id, element, command, user_interface, value); + inst.execCommand('mceEndUndoLevel'); + + return true; + } + + // Pass to next handler in chain + return false; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + var colspan = "1", rowspan = "1", tdElm; + + var inst = tinyMCE.getInstanceById(editor_id); + + // Reset table controls + tinyMCE.switchClass(editor_id + '_table', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonDisabled'); + + // Within a td element + if (tdElm = tinyMCE.getParentElement(node, "td,th")) { + tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonSelected'); + tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonNormal'); + + colspan = tinyMCE.getAttrib(tdElm, "colspan"); + rowspan = tinyMCE.getAttrib(tdElm, "rowspan"); + + colspan = colspan == "" ? "1" : colspan; + rowspan = rowspan == "" ? "1" : rowspan; + + if (colspan != "1" || rowspan != "1") + tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonNormal'); + } + + // Within a tr element + if (tinyMCE.getParentElement(node, "tr")) + tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonSelected'); + + // Within table + if (tinyMCE.getParentElement(node, "table")) { + tinyMCE.switchClass(editor_id + '_table', 'mceButtonSelected'); + tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonNormal'); + } + }, + + // Private plugin internal methods + + _mouseDownHandler : function(e) { + var elm = tinyMCE.isMSIE ? event.srcElement : e.target; + var focusElm = tinyMCE.selectedInstance.getFocusElement(); + + // If press on special Mozilla create TD/TR thingie + if (elm.nodeName == "BODY" && (focusElm.nodeName == "TD" || focusElm.nodeName == "TH" || (focusElm.parentNode && focusElm.parentNode.nodeName == "TD") ||(focusElm.parentNode && focusElm.parentNode.nodeName == "TH") )) { + window.setTimeout(function() { + var tableElm = tinyMCE.getParentElement(focusElm, "table"); + tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance); + }, 10); + } + }, + + /** + * Executes the table commands. + */ + _doExecCommand : function(editor_id, element, command, user_interface, value) { + var inst = tinyMCE.getInstanceById(editor_id); + var focusElm = inst.getFocusElement(); + var trElm = tinyMCE.getParentElement(focusElm, "tr"); + var tdElm = tinyMCE.getParentElement(focusElm, "td,th"); + var tableElm = tinyMCE.getParentElement(focusElm, "table"); + var doc = inst.contentWindow.document; + var tableBorder = tableElm ? tableElm.getAttribute("border") : ""; + + // Get first TD if no TD found + if (trElm && tdElm == null) + tdElm = trElm.cells[0]; + + // ------- Inner functions --------- + function inArray(ar, v) { + for (var i=0; i 0 && inArray(ar[i], v)) + return true; + + // Found value + if (ar[i] == v) + return true; + } + + return false; + } + + function makeTD() { + var newTD = doc.createElement("td"); + newTD.innerHTML = " "; + } + + function getColRowSpan(td) { + var colspan = tinyMCE.getAttrib(td, "colspan"); + var rowspan = tinyMCE.getAttrib(td, "rowspan"); + + colspan = colspan == "" ? 1 : parseInt(colspan); + rowspan = rowspan == "" ? 1 : parseInt(rowspan); + + return {colspan : colspan, rowspan : rowspan}; + } + + function getCellPos(grid, td) { + var x, y; + + for (y=0; y 1) { // Remove due to colspan + for (var i=x; i 1) + td.rowSpan = sd.rowspan + 1; + + lastElm = td; + } + + deleteMarked(tableElm); + } + } + + function prevElm(node, name) { + while ((node = node.previousSibling) != null) { + if (node.nodeName == name) + return node; + } + + return null; + } + + function nextElm(node, names) { + var namesAr = names.split(','); + + while ((node = node.nextSibling) != null) { + for (var i=0; i 1) { + do { + var nexttd = nextElm(td, "TD,TH"); + + if (td._delete) + td.parentNode.removeChild(td); + } while ((td = nexttd) != null); + } + } while ((tr = next) != null); + } + + function addRows(td_elm, tr_elm, rowspan) { + // Add rows + td_elm.rowSpan = 1; + var trNext = nextElm(tr_elm, "TR"); + for (var i=1; i 1) { + var newTD = cells[x].cloneNode(true); + var sd = getColRowSpan(cells[x]); + + newTD.rowSpan = sd.rowspan - 1; + + var nextTD = nextTR.cells[x]; + + if (nextTD == null) + nextTR.appendChild(newTD); + else + nextTR.insertBefore(newTD, nextTD); + } + } + + // Delete cells + var lastTDElm = null; + for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd.rowspan > 1) { + tdElm.rowSpan = sd.rowspan - 1; + } else { + trElm = tdElm.parentNode; + + if (trElm.parentNode) + trElm._delete = true; + } + + lastTDElm = tdElm; + } + } + + deleteMarked(tableElm); + + cpos.rowindex--; + if (cpos.rowindex < 0) + cpos.rowindex = 0; + + // Recalculate grid and select + grid = getTableGrid(tableElm); + inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko + break; + + case "mceTableInsertColBefore": + if (!trElm || !tdElm) + return true; + + var grid = getTableGrid(tableElm); + var cpos = getCellPos(grid, tdElm); + var lastTDElm = null; + + for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd['colspan'] == 1) { + var newTD = doc.createElement(tdElm.nodeName); + + newTD.innerHTML = " "; + newTD.rowSpan = tdElm.rowSpan; + + tdElm.parentNode.insertBefore(newTD, tdElm); + } else + tdElm.colSpan++; + + lastTDElm = tdElm; + } + } + + grid = getTableGrid(tableElm); + inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex + 1), tinyMCE.isGecko, true); // Only collape on gecko + break; + + case "mceTableInsertColAfter": + if (!trElm || !tdElm) + return true; + + var grid = getTableGrid(tableElm); + var cpos = getCellPos(grid, tdElm); + var lastTDElm = null; + + for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd['colspan'] == 1) { + var newTD = doc.createElement(tdElm.nodeName); + + newTD.innerHTML = " "; + newTD.rowSpan = tdElm.rowSpan; + + var nextTD = nextElm(tdElm, "TD,TH"); + if (nextTD == null) + tdElm.parentNode.appendChild(newTD); + else + nextTD.parentNode.insertBefore(newTD, nextTD); + } else + tdElm.colSpan++; + + lastTDElm = tdElm; + } + } + + grid = getTableGrid(tableElm); + inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko + break; + + case "mceTableDeleteCol": + if (!trElm || !tdElm) + return true; + + var grid = getTableGrid(tableElm); + var cpos = getCellPos(grid, tdElm); + var lastTDElm = null; + + // Only one col, remove whole table + if (grid.length > 1 && grid[0].length <= 1) { + tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody + tableElm.parentNode.removeChild(tableElm); + return true; + } + + // Delete cells + for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd['colspan'] > 1) + tdElm.colSpan = sd['colspan'] - 1; + else { + if (tdElm.parentNode) + tdElm.parentNode.removeChild(tdElm); + } + + lastTDElm = tdElm; + } + } + + cpos.cellindex--; + if (cpos.cellindex < 0) + cpos.cellindex = 0; + + // Recalculate grid and select + grid = getTableGrid(tableElm); + inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko + break; + + case "mceTableSplitCells": + if (!trElm || !tdElm) + return true; + + var spandata = getColRowSpan(tdElm); + + var colspan = spandata["colspan"]; + var rowspan = spandata["rowspan"]; + + // Needs splitting + if (colspan > 1 || rowspan > 1) { + // Generate cols + tdElm.colSpan = 1; + for (var i=1; i 1) + addRows(newTD, trElm, rowspan); + } + + addRows(tdElm, trElm, rowspan); + } + + // Apply visual aids + tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + break; + + case "mceTableMergeCells": + var rows = new Array(); + var sel = inst.getSel(); + var grid = getTableGrid(tableElm); + + if (tinyMCE.isMSIE || sel.rangeCount == 1) { + if (user_interface) { + // Setup template + var template = new Array(); + var sp = getColRowSpan(tdElm); + + template['file'] = '../../plugins/table/merge_cells.htm'; + template['width'] = 250; + template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0); + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_table_merge_cells_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_table_merge_cells_delta_height', 0); + + // Open window + tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : "update", numcols : sp.colspan, numrows : sp.rowspan}); + + return true; + } else { + var numRows = parseInt(value['numrows']); + var numCols = parseInt(value['numcols']); + var cpos = getCellPos(grid, tdElm); + + if (("" + numRows) == "NaN") + numRows = 1; + + if (("" + numCols) == "NaN") + numCols = 1; + + // Get rows and cells + var tRows = tableElm.rows; + for (var y=cpos.rowindex; y 0) + rows[rows.length] = rowCells; + } + + //return true; + } + } else { + var cells = new Array(); + var sel = inst.getSel(); + var lastTR = null; + var curRow = null; + var x1 = -1, y1 = -1, x2, y2; + + // Only one cell selected, whats the point? + if (sel.rangeCount < 2) + return true; + + // Get all selected cells + for (var i=0; i 0) + rows[rows.length] = rowCells; + } + + // Find selected cells in grid and box + var curRow = new Array(); + var lastTR = null; + for (var y=0; y colSpan) + colSpan = rowColSpan; + + lastRowSpan = -1; + } + + // Validate vertical and get total rowspan + var lastColSpan = -1; + for (var x=0; x rowSpan) + rowSpan = colRowSpan; + + lastColSpan = -1; + } + + // Setup td + tdElm = rows[0][0]; + tdElm.rowSpan = rowSpan; + tdElm.colSpan = colSpan; + + // Merge cells + for (var y=0; y 0)) + tdElm.innerHTML += html; + + // Not current cell + if (rows[y][x] != tdElm && !rows[y][x]._deleted) { + var cpos = getCellPos(grid, rows[y][x]); + var tr = rows[y][x].parentNode; + + tr.removeChild(rows[y][x]); + rows[y][x]._deleted = true; + + // Empty TR, remove it + if (!tr.hasChildNodes()) { + tr.parentNode.removeChild(tr); + + var lastCell = null; + for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) { + if (cellElm != lastCell && cellElm.rowSpan > 1) + cellElm.rowSpan--; + + lastCell = cellElm; + } + + if (tdElm.rowSpan > 1) + tdElm.rowSpan--; + } + } + } + } + + break; + } + + tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance); + tinyMCE.triggerNodeChange(); + inst.repaint(); + } + + return true; + } + + // Pass to next handler in chain + return false; + } +}; + +tinyMCE.addPlugin("table", TinyMCE_TablePlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/buttons.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/buttons.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/buttons.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/buttons.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_cell_props.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_cell_props.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_cell_props.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_cell_props.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete_col.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete_col.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete_col.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete_col.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete_row.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete_row.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete_row.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_delete_row.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_col_after.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_col_after.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_col_after.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_col_after.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_col_before.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_col_before.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_col_before.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_col_before.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_row_after.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_row_after.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_row_after.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_row_after.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_row_before.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_row_before.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_row_before.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_insert_row_before.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_merge_cells.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_merge_cells.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_merge_cells.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_merge_cells.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_row_props.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_row_props.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_row_props.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_row_props.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_split_cells.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_split_cells.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/images/table_split_cells.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/images/table_split_cells.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/jscripts/cell.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/jscripts/cell.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/jscripts/cell.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/jscripts/cell.js index 436eaad17..d0768a04b 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/table/jscripts/cell.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/jscripts/cell.js @@ -1,249 +1,249 @@ -function init() { - tinyMCEPopup.resizeToInnerSize(); - - document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); - document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor') - - var inst = tinyMCE.selectedInstance; - var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th"); - var formObj = document.forms[0]; - var st = tinyMCE.parseStyle(tinyMCE.getAttrib(tdElm, "style")); - - // Get table cell data - var celltype = tdElm.nodeName.toLowerCase(); - var align = tinyMCE.getAttrib(tdElm, 'align'); - var valign = tinyMCE.getAttrib(tdElm, 'valign'); - var width = trimSize(getStyle(tdElm, 'width', 'width')); - var height = trimSize(getStyle(tdElm, 'height', 'height')); - var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor')); - var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor')); - var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm, 'class'), false); - var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");; - var id = tinyMCE.getAttrib(tdElm, 'id'); - var lang = tinyMCE.getAttrib(tdElm, 'lang'); - var dir = tinyMCE.getAttrib(tdElm, 'dir'); - var scope = tinyMCE.getAttrib(tdElm, 'scope'); - - // Setup form - addClassesToList('class', 'table_cell_styles'); - formObj.bordercolor.value = bordercolor; - formObj.bgcolor.value = bgcolor; - formObj.backgroundimage.value = backgroundimage; - formObj.width.value = width; - formObj.height.value = height; - formObj.id.value = id; - formObj.lang.value = lang; - formObj.style.value = tinyMCE.serializeStyle(st); - selectByValue(formObj, 'align', align); - selectByValue(formObj, 'valign', valign); - selectByValue(formObj, 'class', className); - selectByValue(formObj, 'celltype', celltype); - selectByValue(formObj, 'dir', dir); - selectByValue(formObj, 'scope', scope); - - // Resize some elements - if (isVisible('backgroundimagebrowser')) - document.getElementById('backgroundimage').style.width = '180px'; - - updateColor('bordercolor_pick', 'bordercolor'); - updateColor('bgcolor_pick', 'bgcolor'); -} - -function updateAction() { - tinyMCEPopup.restoreSelection(); - - var inst = tinyMCE.selectedInstance; - var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th"); - var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr"); - var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); - var formObj = document.forms[0]; - - inst.execCommand('mceBeginUndoLevel'); - - switch (getSelectValue(formObj, 'action')) { - case "cell": - var celltype = getSelectValue(formObj, 'celltype'); - var scope = getSelectValue(formObj, 'scope'); - - if (tinyMCE.getParam("accessibility_warnings")) { - if (celltype == "th" && scope == "") - var answer = confirm(tinyMCE.getLang('lang_table_missing_scope', '', true)); - else - var answer = true; - - if (!answer) - return; - } - - updateCell(tdElm); - break; - - case "row": - var cell = trElm.firstChild; - - if (cell.nodeName != "TD" && cell.nodeName != "TH") - cell = nextCell(cell); - - do { - cell = updateCell(cell, true); - } while ((cell = nextCell(cell)) != null); - - break; - - case "all": - var rows = tableElm.getElementsByTagName("tr"); - - for (var i=0; i colLimit) { - alert(tinyMCE.getLang('lang_table_col_limit', '', true, {cols : colLimit})); - return false; - } else if (rowLimit && rows > rowLimit) { - alert(tinyMCE.getLang('lang_table_row_limit', '', true, {rows : rowLimit})); - return false; - } else if (cellLimit && cols * rows > cellLimit) { - alert(tinyMCE.getLang('lang_table_cell_limit', '', true, {cells : cellLimit})); - return false; - } - - // Update table - if (action == "update") { - inst.execCommand('mceBeginUndoLevel'); - - tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true); - tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true); - tinyMCE.setAttrib(elm, 'border', border, true); - tinyMCE.setAttrib(elm, 'align', align); - tinyMCE.setAttrib(elm, 'class', className); - tinyMCE.setAttrib(elm, 'style', style); - tinyMCE.setAttrib(elm, 'id', id); - tinyMCE.setAttrib(elm, 'summary', summary); - tinyMCE.setAttrib(elm, 'dir', dir); - tinyMCE.setAttrib(elm, 'lang', lang); - - capEl = elm.getElementsByTagName('caption')[0]; - - if (capEl && !caption) - capEl.parentNode.removeChild(capEl); - - if (!capEl && caption) { - capEl = elm.ownerDocument.createElement('caption'); - capEl.innerHTML = ' '; - elm.insertBefore(capEl, elm.firstChild); - } - - // Not inline styles - if (!tinyMCE.getParam("inline_styles")) - tinyMCE.setAttrib(elm, 'width', width, true); - - // Remove these since they are not valid XHTML - tinyMCE.setAttrib(elm, 'borderColor', ''); - tinyMCE.setAttrib(elm, 'bgColor', ''); - tinyMCE.setAttrib(elm, 'background', ''); - tinyMCE.setAttrib(elm, 'height', ''); - - if (background != '') - elm.style.backgroundImage = "url('" + background + "')"; - else - elm.style.backgroundImage = ''; - - if (tinyMCE.getParam("inline_styles")) - elm.style.borderWidth = border + "px"; - - if (tinyMCE.getParam("inline_styles")) { - if (width != '') - elm.style.width = getCSSSize(width); - } - - if (bordercolor != "") { - elm.style.borderColor = bordercolor; - elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle; - elm.style.borderWidth = border == "" ? "1px" : border; - } else - elm.style.borderColor = ''; - - elm.style.backgroundColor = bgcolor; - elm.style.height = getCSSSize(height); - - tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst); - - // Fix for stange MSIE align bug - tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML; - - tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); - tinyMCE.triggerNodeChange(); - inst.execCommand('mceEndUndoLevel'); - - // Repaint if dimensions changed - if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight) - inst.repaint(); - - tinyMCEPopup.close(); - return true; - } - - // Create new table - html += '/g, '>'); - - return ' ' + attrib + '="' + value + '"'; -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); - document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); - document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - - var cols = 2, rows = 2, border = tinyMCE.getParam('table_default_border', '0'), cellpadding = tinyMCE.getParam('table_default_cellpadding', ''), cellspacing = tinyMCE.getParam('table_default_cellspacing', ''); - var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = ""; - var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = ""; - var inst = tinyMCE.selectedInstance; - var formObj = document.forms[0]; - var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); - - tinyMCE.tableElm = elm; - action = tinyMCE.getWindowArg('action'); - if (action == null) - action = tinyMCE.tableElm ? "update" : "insert"; - - if (tinyMCE.tableElm && action != "insert") { - var rowsAr = tinyMCE.tableElm.rows; - var cols = 0; - for (var i=0; i cols) - cols = rowsAr[i].cells.length; - - cols = cols; - rows = rowsAr.length; - - st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style")); - border = trimSize(getStyle(elm, 'border', 'borderWidth')); - cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', ""); - cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', ""); - width = trimSize(getStyle(elm, 'width', 'width')); - height = trimSize(getStyle(elm, 'height', 'height')); - bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor')); - bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor')); - align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align); - className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false); - id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id'); - summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary'); - style = tinyMCE.serializeStyle(st); - dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir'); - lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang'); - background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); - formObj.caption.checked = tinyMCE.tableElm.getElementsByTagName('caption').length > 0; - - orgTableWidth = width; - orgTableHeight = height; - - action = "update"; - } - - addClassesToList('class', "table_styles"); - - // Update form - selectByValue(formObj, 'align', align); - selectByValue(formObj, 'class', className); - formObj.cols.value = cols; - formObj.rows.value = rows; - formObj.border.value = border; - formObj.cellpadding.value = cellpadding; - formObj.cellspacing.value = cellspacing; - formObj.width.value = width; - formObj.height.value = height; - formObj.bordercolor.value = bordercolor; - formObj.bgcolor.value = bgcolor; - formObj.id.value = id; - formObj.summary.value = summary; - formObj.style.value = style; - formObj.dir.value = dir; - formObj.lang.value = lang; - formObj.backgroundimage.value = background; - formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); - - updateColor('bordercolor_pick', 'bordercolor'); - updateColor('bgcolor_pick', 'bgcolor'); - - // Resize some elements - if (isVisible('backgroundimagebrowser')) - document.getElementById('backgroundimage').style.width = '180px'; - - // Disable some fields in update mode - if (action == "update") { - formObj.cols.disabled = true; - formObj.rows.disabled = true; - } -} - -function changedSize() { - var formObj = document.forms[0]; - var st = tinyMCE.parseStyle(formObj.style.value); - - var width = formObj.width.value; - if (width != "") - st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : ""; - else - st['width'] = ""; - - var height = formObj.height.value; - if (height != "") - st['height'] = getCSSSize(height); - else - st['height'] = ""; - - formObj.style.value = tinyMCE.serializeStyle(st); -} - -function changedBackgroundImage() { - var formObj = document.forms[0]; - var st = tinyMCE.parseStyle(formObj.style.value); - - st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; - - formObj.style.value = tinyMCE.serializeStyle(st); -} - -function changedBorder() { - var formObj = document.forms[0]; - var st = tinyMCE.parseStyle(formObj.style.value); - - // Update border width if the element has a color - if (formObj.border.value != "" && formObj.bordercolor.value != "") - st['border-width'] = formObj.border.value + "px"; - - formObj.style.value = tinyMCE.serializeStyle(st); -} - -function changedColor() { - var formObj = document.forms[0]; - var st = tinyMCE.parseStyle(formObj.style.value); - - st['background-color'] = formObj.bgcolor.value; - - if (formObj.bordercolor.value != "") { - st['border-color'] = formObj.bordercolor.value; - - // Add border-width if it's missing - if (!st['border-width']) - st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px"; - } - - formObj.style.value = tinyMCE.serializeStyle(st); -} - -function changedStyle() { - var formObj = document.forms[0]; - var st = tinyMCE.parseStyle(formObj.style.value); - - if (st['background-image']) - formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); - else - formObj.backgroundimage.value = ''; - - if (st['width']) - formObj.width.value = trimSize(st['width']); - - if (st['height']) - formObj.height.value = trimSize(st['height']); - - if (st['background-color']) { - formObj.bgcolor.value = st['background-color']; - updateColor('bgcolor_pick','bgcolor'); - } - - if (st['border-color']) { - formObj.bordercolor.value = st['border-color']; - updateColor('bordercolor_pick','bordercolor'); - } -} +var action, orgTableWidth, orgTableHeight; + +function insertTable() { + var formObj = document.forms[0]; + var inst = tinyMCE.selectedInstance; + var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption; + var html = '', capEl; + var elm = tinyMCE.tableElm; + var cellLimit, rowLimit, colLimit; + + if (!AutoValidator.validate(formObj)) { + alert(tinyMCE.getLang('lang_invalid_data')); + return false; + } + + tinyMCEPopup.restoreSelection(); + + // Get form data + cols = formObj.elements['cols'].value; + rows = formObj.elements['rows'].value; + border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0; + cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : ""; + cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : ""; + align = formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value; + width = formObj.elements['width'].value; + height = formObj.elements['height'].value; + bordercolor = formObj.elements['bordercolor'].value; + bgcolor = formObj.elements['bgcolor'].value; + className = formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value; + id = formObj.elements['id'].value; + summary = formObj.elements['summary'].value; + style = formObj.elements['style'].value; + dir = formObj.elements['dir'].value; + lang = formObj.elements['lang'].value; + background = formObj.elements['backgroundimage'].value; + caption = formObj.elements['caption'].checked; + + cellLimit = tinyMCE.getParam('table_cell_limit', false); + rowLimit = tinyMCE.getParam('table_row_limit', false); + colLimit = tinyMCE.getParam('table_col_limit', false); + + // Validate table size + if (colLimit && cols > colLimit) { + alert(tinyMCE.getLang('lang_table_col_limit', '', true, {cols : colLimit})); + return false; + } else if (rowLimit && rows > rowLimit) { + alert(tinyMCE.getLang('lang_table_row_limit', '', true, {rows : rowLimit})); + return false; + } else if (cellLimit && cols * rows > cellLimit) { + alert(tinyMCE.getLang('lang_table_cell_limit', '', true, {cells : cellLimit})); + return false; + } + + // Update table + if (action == "update") { + inst.execCommand('mceBeginUndoLevel'); + + tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true); + tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true); + tinyMCE.setAttrib(elm, 'border', border, true); + tinyMCE.setAttrib(elm, 'align', align); + tinyMCE.setAttrib(elm, 'class', className); + tinyMCE.setAttrib(elm, 'style', style); + tinyMCE.setAttrib(elm, 'id', id); + tinyMCE.setAttrib(elm, 'summary', summary); + tinyMCE.setAttrib(elm, 'dir', dir); + tinyMCE.setAttrib(elm, 'lang', lang); + + capEl = elm.getElementsByTagName('caption')[0]; + + if (capEl && !caption) + capEl.parentNode.removeChild(capEl); + + if (!capEl && caption) { + capEl = elm.ownerDocument.createElement('caption'); + capEl.innerHTML = ' '; + elm.insertBefore(capEl, elm.firstChild); + } + + // Not inline styles + if (!tinyMCE.getParam("inline_styles")) + tinyMCE.setAttrib(elm, 'width', width, true); + + // Remove these since they are not valid XHTML + tinyMCE.setAttrib(elm, 'borderColor', ''); + tinyMCE.setAttrib(elm, 'bgColor', ''); + tinyMCE.setAttrib(elm, 'background', ''); + tinyMCE.setAttrib(elm, 'height', ''); + + if (background != '') + elm.style.backgroundImage = "url('" + background + "')"; + else + elm.style.backgroundImage = ''; + + if (tinyMCE.getParam("inline_styles")) + elm.style.borderWidth = border + "px"; + + if (tinyMCE.getParam("inline_styles")) { + if (width != '') + elm.style.width = getCSSSize(width); + } + + if (bordercolor != "") { + elm.style.borderColor = bordercolor; + elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle; + elm.style.borderWidth = border == "" ? "1px" : border; + } else + elm.style.borderColor = ''; + + elm.style.backgroundColor = bgcolor; + elm.style.height = getCSSSize(height); + + tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst); + + // Fix for stange MSIE align bug + tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML; + + tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); + tinyMCE.triggerNodeChange(); + inst.execCommand('mceEndUndoLevel'); + + // Repaint if dimensions changed + if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight) + inst.repaint(); + + tinyMCEPopup.close(); + return true; + } + + // Create new table + html += '/g, '>'); + + return ' ' + attrib + '="' + value + '"'; +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + + var cols = 2, rows = 2, border = tinyMCE.getParam('table_default_border', '0'), cellpadding = tinyMCE.getParam('table_default_cellpadding', ''), cellspacing = tinyMCE.getParam('table_default_cellspacing', ''); + var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = ""; + var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = ""; + var inst = tinyMCE.selectedInstance; + var formObj = document.forms[0]; + var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + + tinyMCE.tableElm = elm; + action = tinyMCE.getWindowArg('action'); + if (action == null) + action = tinyMCE.tableElm ? "update" : "insert"; + + if (tinyMCE.tableElm && action != "insert") { + var rowsAr = tinyMCE.tableElm.rows; + var cols = 0; + for (var i=0; i cols) + cols = rowsAr[i].cells.length; + + cols = cols; + rows = rowsAr.length; + + st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style")); + border = trimSize(getStyle(elm, 'border', 'borderWidth')); + cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', ""); + cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', ""); + width = trimSize(getStyle(elm, 'width', 'width')); + height = trimSize(getStyle(elm, 'height', 'height')); + bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor')); + bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor')); + align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align); + className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false); + id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id'); + summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary'); + style = tinyMCE.serializeStyle(st); + dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir'); + lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang'); + background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + formObj.caption.checked = tinyMCE.tableElm.getElementsByTagName('caption').length > 0; + + orgTableWidth = width; + orgTableHeight = height; + + action = "update"; + } + + addClassesToList('class', "table_styles"); + + // Update form + selectByValue(formObj, 'align', align); + selectByValue(formObj, 'class', className); + formObj.cols.value = cols; + formObj.rows.value = rows; + formObj.border.value = border; + formObj.cellpadding.value = cellpadding; + formObj.cellspacing.value = cellspacing; + formObj.width.value = width; + formObj.height.value = height; + formObj.bordercolor.value = bordercolor; + formObj.bgcolor.value = bgcolor; + formObj.id.value = id; + formObj.summary.value = summary; + formObj.style.value = style; + formObj.dir.value = dir; + formObj.lang.value = lang; + formObj.backgroundimage.value = background; + formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); + + updateColor('bordercolor_pick', 'bordercolor'); + updateColor('bgcolor_pick', 'bgcolor'); + + // Resize some elements + if (isVisible('backgroundimagebrowser')) + document.getElementById('backgroundimage').style.width = '180px'; + + // Disable some fields in update mode + if (action == "update") { + formObj.cols.disabled = true; + formObj.rows.disabled = true; + } +} + +function changedSize() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + var width = formObj.width.value; + if (width != "") + st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : ""; + else + st['width'] = ""; + + var height = formObj.height.value; + if (height != "") + st['height'] = getCSSSize(height); + else + st['height'] = ""; + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedBackgroundImage() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedBorder() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + // Update border width if the element has a color + if (formObj.border.value != "" && formObj.bordercolor.value != "") + st['border-width'] = formObj.border.value + "px"; + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedColor() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + st['background-color'] = formObj.bgcolor.value; + + if (formObj.bordercolor.value != "") { + st['border-color'] = formObj.bordercolor.value; + + // Add border-width if it's missing + if (!st['border-width']) + st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px"; + } + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedStyle() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + if (st['background-image']) + formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + else + formObj.backgroundimage.value = ''; + + if (st['width']) + formObj.width.value = trimSize(st['width']); + + if (st['height']) + formObj.height.value = trimSize(st['height']); + + if (st['background-color']) { + formObj.bgcolor.value = st['background-color']; + updateColor('bgcolor_pick','bgcolor'); + } + + if (st['border-color']) { + formObj.bordercolor.value = st['border-color']; + updateColor('bordercolor_pick','bordercolor'); + } +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/langs/en.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/langs/en.js index e2fbba2e5..fbf16d238 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/table/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/langs/en.js @@ -1,79 +1,79 @@ -// UK lang variables - -tinyMCE.addToLang('table',{ -general_tab : 'General', -advanced_tab : 'Advanced', -general_props : 'General properties', -advanced_props : 'Advanced properties', -desc : 'Inserts a new table', -row_before_desc : 'Insert row before', -row_after_desc : 'Insert row after', -delete_row_desc : 'Delete row', -col_before_desc : 'Insert column before', -col_after_desc : 'Insert column after', -delete_col_desc : 'Remove column', -rowtype : 'Row in table part', -title : 'Insert/Modify table', -width : 'Width', -height : 'Height', -cols : 'Columns', -rows : 'Rows', -cellspacing : 'Cellspacing', -cellpadding : 'Cellpadding', -border : 'Border', -align : 'Alignment', -align_default : 'Default', -align_left : 'Left', -align_right : 'Right', -align_middle : 'Center', -row_title : 'Table row properties', -cell_title : 'Table cell properties', -cell_type : 'Cell type', -row_desc : 'Table row properties', -cell_desc : 'Table cell properties', -valign : 'Vertical alignment', -align_top : 'Top', -align_bottom : 'Bottom', -props_desc : 'Table properties', -bordercolor : 'Border color', -bgcolor : 'Background color', -merge_cells_title : 'Merge table cells', -split_cells_desc : 'Split merged table cells', -merge_cells_desc : 'Merge table cells', -cut_row_desc : 'Cut table row', -copy_row_desc : 'Copy table row', -paste_row_before_desc : 'Paste table row before', -paste_row_after_desc : 'Paste table row after', -id : 'Id', -style: 'Style', -langdir : 'Language direction', -langcode : 'Language code', -mime : 'Target MIME type', -ltr : 'Left to right', -rtl : 'Right to left', -bgimage : 'Background image', -summary : 'Summary', -td : "Data", -th : "Header", -cell_cell : 'Update current cell', -cell_row : 'Update all cells in row', -cell_all : 'Update all cells in table', -row_row : 'Update current row', -row_odd : 'Update odd rows in table', -row_even : 'Update even rows in table', -row_all : 'Update all rows in table', -thead : 'Table Head', -tbody : 'Table Body', -tfoot : 'Table Foot', -del : 'Delete table', -scope : 'Scope', -row : 'Row', -col : 'Col', -rowgroup : 'Row Group', -colgroup : 'Col Group', -col_limit : 'You\'ve exceeded the maximum number of columns of {$cols}.', -row_limit : 'You\'ve exceeded the maximum number of rows of {$rows}.', -cell_limit : 'You\'ve exceeded the maximum number of cells of {$cells}.', -missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.', -caption : 'Table caption' -}); +// UK lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'General', +advanced_tab : 'Advanced', +general_props : 'General properties', +advanced_props : 'Advanced properties', +desc : 'Inserts a new table', +row_before_desc : 'Insert row before', +row_after_desc : 'Insert row after', +delete_row_desc : 'Delete row', +col_before_desc : 'Insert column before', +col_after_desc : 'Insert column after', +delete_col_desc : 'Remove column', +rowtype : 'Row in table part', +title : 'Insert/Modify table', +width : 'Width', +height : 'Height', +cols : 'Columns', +rows : 'Rows', +cellspacing : 'Cellspacing', +cellpadding : 'Cellpadding', +border : 'Border', +align : 'Alignment', +align_default : 'Default', +align_left : 'Left', +align_right : 'Right', +align_middle : 'Center', +row_title : 'Table row properties', +cell_title : 'Table cell properties', +cell_type : 'Cell type', +row_desc : 'Table row properties', +cell_desc : 'Table cell properties', +valign : 'Vertical alignment', +align_top : 'Top', +align_bottom : 'Bottom', +props_desc : 'Table properties', +bordercolor : 'Border color', +bgcolor : 'Background color', +merge_cells_title : 'Merge table cells', +split_cells_desc : 'Split merged table cells', +merge_cells_desc : 'Merge table cells', +cut_row_desc : 'Cut table row', +copy_row_desc : 'Copy table row', +paste_row_before_desc : 'Paste table row before', +paste_row_after_desc : 'Paste table row after', +id : 'Id', +style: 'Style', +langdir : 'Language direction', +langcode : 'Language code', +mime : 'Target MIME type', +ltr : 'Left to right', +rtl : 'Right to left', +bgimage : 'Background image', +summary : 'Summary', +td : "Data", +th : "Header", +cell_cell : 'Update current cell', +cell_row : 'Update all cells in row', +cell_all : 'Update all cells in table', +row_row : 'Update current row', +row_odd : 'Update odd rows in table', +row_even : 'Update even rows in table', +row_all : 'Update all rows in table', +thead : 'Table Head', +tbody : 'Table Body', +tfoot : 'Table Foot', +del : 'Delete table', +scope : 'Scope', +row : 'Row', +col : 'Col', +rowgroup : 'Row Group', +colgroup : 'Col Group', +col_limit : 'You\'ve exceeded the maximum number of columns of {$cols}.', +row_limit : 'You\'ve exceeded the maximum number of rows of {$rows}.', +cell_limit : 'You\'ve exceeded the maximum number of cells of {$cells}.', +missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.', +caption : 'Table caption' +}); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm index 10896bf9e..46e2a1e23 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm @@ -1,38 +1,38 @@ - - - {$lang_table_merge_cells_title} - - - - - - - -
-
- {$lang_table_merge_cells_title} - - - - - - - - - -
{$lang_table_cols}: -
{$lang_table_rows}:
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_table_merge_cells_title} + + + + + + + +
+
+ {$lang_table_merge_cells_title} + + + + + + + + + +
{$lang_table_cols}: +
{$lang_table_rows}:
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/row.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/row.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/row.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/row.htm index 64f2afcb5..ea5e13ddc 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/table/row.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/row.htm @@ -1,159 +1,159 @@ - - - {$lang_table_row_title} - - - - - - - - -
- - -
-
-
- {$lang_table_general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
- -
-
-
- -
-
- {$lang_table_advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- - - - - -
 
-
- - - - - -
 
-
-
-
-
- -
-
- -
- -
-
-
- -
- -
-
-
- - + + + {$lang_table_row_title} + + + + + + + + +
+ + +
+
+
+ {$lang_table_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+
+
+ +
+
+ {$lang_table_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+ + + + + +
 
+
+
+
+
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/table/table.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/table.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/table/table.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/table/table.htm index f48418733..b66463371 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/table/table.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/table/table.htm @@ -1,160 +1,160 @@ - - - {$lang_table_title} - - - - - - - - - -
- - -
-
-
- {$lang_table_general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
-
- -
-
- {$lang_table_advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- - - - - -
 
-
- - - - - -
 
-
- - - - - -
 
-
-
-
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_table_title} + + + + + + + + + +
+ + +
+
+
+ {$lang_table_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ {$lang_table_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+ + + + + +
 
+
+ + + + + +
 
+
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/template/blank.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/blank.htm similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/template/blank.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/template/blank.htm index 44ed22bc3..c50773398 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/template/blank.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/blank.htm @@ -1,23 +1,23 @@ - - - blank_page - - - - - - - + + + blank_page + + + + + + + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/template/css/template.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/css/template.css similarity index 91% rename from lib/tinymce/jscripts/tiny_mce/plugins/template/css/template.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/template/css/template.css index 2d23a4938..0a03f2e5c 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/template/css/template.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/css/template.css @@ -1,23 +1,23 @@ -#frmbody { - padding: 10px; - background-color: #FFF; - border: 1px solid #CCC; -} - -.frmRow { - margin-bottom: 10px; -} - -#templatesrc { - border: none; - width: 320px; - height: 240px; -} - -.title { - padding-bottom: 5px; -} - -.mceActionPanel { - padding-top: 5px; -} +#frmbody { + padding: 10px; + background-color: #FFF; + border: 1px solid #CCC; +} + +.frmRow { + margin-bottom: 10px; +} + +#templatesrc { + border: none; + width: 320px; + height: 240px; +} + +.title { + padding-bottom: 5px; +} + +.mceActionPanel { + padding-top: 5px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js index 7399d0b71..575b001ba 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js @@ -1,551 +1,551 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -tinyMCE.importPluginLanguagePack('template'); - -var TinyMCE_TemplatePlugin = { - getInfo : function() { - return { - longname : 'Template plugin', - author : 'Moxiecode Systems AB', - authorurl : 'http://www.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - var cdate, mdate, content, x = 0, key, value, rvals, ds = inst.getData('template'); - - // ensure the required elements and sttributes are added - //inst.cleanup.addRuleStr('*[' + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + '],div[title,tsrc]'); - - //setup template content functions - // creation date and modified date classes - cdate = tinyMCE.getParam("template_cdate_classes", '').split(/\s+/); - mdate = tinyMCE.getParam("template_mdate_classes", '').split(/\s+/); - - // classes that specify where selected content should go - content = tinyMCE.getParam("template_selected_content_classes", '').split(/\s+/); - - for (x = 0; x < cdate.length; x++) - TinyMCE_TemplatePlugin.functions[cdate[x]] = TinyMCE_TemplatePlugin.functions['cdate']; - - for (x = 0; x < mdate.length; x++) - TinyMCE_TemplatePlugin.functions[mdate[x]] = TinyMCE_TemplatePlugin.functions['mdate']; - - for (x = 0; x < content.length; x++) - TinyMCE_TemplatePlugin.functions[content[x]] = TinyMCE_TemplatePlugin.functions['selectedContent']; - - // special template functions for replacing template content - rvals = tinyMCE.getParam("template_replace_values", false); - for (key in rvals) { - value = rvals[key]; - - if (typeof value == "function") - TinyMCE_TemplatePlugin.functions[key] = value; - else - TinyMCE_TemplatePlugin.functions[key] = TinyMCE_TemplatePlugin.functions['generateReplacer'](value); - } - - // Setup replace_items - rvals = tinyMCE.getParam("template_replace_values", false); - ds.replace_items = {}; - - for (key in rvals) - ds.replace_items[key] = rvals[key]; - - inst.addShortcut('ctrl', 't', 'lang_template_desc', 'mceTemplate'); - - // Setup data storage - ds.currentAction = "insert"; - ds.currentTmplNode = null; - }, - - getControlHTML : function(cn) { - switch (cn) { - case "template": - return tinyMCE.getButtonHTML(cn, 'lang_template_desc', '{$pluginurl}/images/template.gif', 'mceTemplate', true); - } - - return ""; - }, - - execCommand : function(editor_id, element, command, user_interface, value) { - var nodeArray, current, newTmpl, x, inst = tinyMCE.getInstanceById(editor_id), ds = inst.getData('template'), telm; - - switch (command) { - case "mceTemplate": - if (user_interface) { - // called from toolbar button - show the popup - tinyMCE.openWindow({ - file : '../../plugins/template/template.htm', // Relative to theme - width : tinyMCE.getParam('template_popup_width', 750), - height : tinyMCE.getParam('template_popup_height', 600) - }, {editor_id : editor_id, resizable : "yes", scrollbars : "no", pluginObj : TinyMCE_TemplatePlugin}); - } else { - // internal command do the template stuff - - // get the returned HTML string from the pop-up and appened it to a DIV element - telm = TinyMCE_TemplatePlugin._convertToNode(value.body); - - // Find template body - nodeArray = tinyMCE.selectElements(telm, 'div', function(n) { - return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL); - }); - - telm = nodeArray.length > 0 ? nodeArray[0] : null; - nodeArray = []; - - if (ds.currentAction == "insert") { - //insert new template after applying all the template content functions - - // Is it a template or snippet - if (telm) { - tinyMCE.execCommand('mceBeginUndoLevel'); - ds.currentAction = "insert-new"; - TinyMCE_TemplatePlugin._insertTemplate(editor_id, telm, value.title, value.tsrc, true); - ds.currentAction == "insert"; - tinyMCE.execCommand('mceEndUndoLevel'); - tinyMCE.execInstanceCommand(editor_id, 'mceCleanup', false); - } else - tinyMCE.execCommand('mceInsertContent', false, this._replaceValues(value.body)); - } else { - // First collect the selected template in the editor - nodeArray = TinyMCE_TemplatePlugin._collectTemplateElements(ds.currentTmplNode); - current = []; - newTmpl = []; - tinyMCE.getNodeTree(telm, newTmpl); - - for (x=0; x', 'gi'), - '' - ); - - // delete any empty template wrappers - content = content.replace( - new RegExp('
(\s| | )?(|\s)?
', 'gi'), - '' - ); - - // replace the closing wrapper tag - content = content.replace( - new RegExp('', 'gi'), - '' - ); - - break; - - case "insert_to_editor": - // replace HTML comment with DIV wrapper - content = content.replace( - new RegExp('', 'gi'), - '
' - ); - - content = content.replace( - new RegExp('', 'gi'), - '
' - ); - - break; - - case "get_from_editor_dom": - // apply template content replacement functions - nodes = tinyMCE.selectNodes(content, function(n) { - return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT); - } - ); - - TinyMCE_TemplatePlugin._applyFunctions(nodes, type); - - break; - - case "insert_to_editor_dom": - // apply template content replacement functions - nodes = tinyMCE.selectNodes(content, function(n) { - return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT); - } - ); - - TinyMCE_TemplatePlugin._applyFunctions(nodes, type); - - break; - } - - return content; - }, - - // Private plugin internal methods - - /** - * Creates a HTML DIV element and sets the innerHTML to equal the temlate innerHTML so that the template can be manipulated as DOM nodes. - * - * @param {string} Template innerHTML - * @return a HTML Element - * @type HTMLElement - */ - _convertToNode : function(html) { - var elm = document.createElement('div'); - - elm.innerHTML = html; - - return elm; - }, - - /** - * pass an array of template html elements and they will have the template class name added and any template functions applied - * - * @param {array} template HTML elements - * @return array of template HTML elements - * @type array - */ - _prepareTemplateContent : function(elms) { - var x, n, nodes = []; - - if (!elms) - return {}; - - if (!elms.length) - elms = [elms]; - - for (x = 0; x'; - html += elm.innerHTML; - html += ''; - - tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, html); - }, - - /** - * template functions - functions for modifying template content - */ - functions : { - blank : function(elm, editor_event) {}, - - cdate : function(elm, editor_event) { - var d, dsrc; - - if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT) - return; - - d = new Date(); - // find out if the creation date was previously stored - dsrc = elm.innerHTML.match(new RegExp("", "gi")); - - if (dsrc) - d = new Date(RegExp.$1); - - elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_cdate_format", tinyMCE.getLang("lang_template_def_date_format"))); - //now we have to store the date value in a format easily read again, in case a future template change changes the date format... - elm.innerHTML += ""; - }, - - mdate : function(elm, editor_event) { - var d = new Date(); - elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_mdate_format", tinyMCE.getLang("lang_template_def_date_format"))); - }, - - /** - * This will insert the currently selected editor content into the template element. - * It only does this if the template inserted is a new one and if the element does not have the special class. - * The special class name prevents this from happening more than once. - */ - selectedContent : function(elm, editor_event) { - var ds = tinyMCE.selectedInstance.getData('template'); - - if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT) - return; - - if (ds.currentAction == "insert-new" && !tinyMCE.hasCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)) { - elm.innerHTML = tinyMCE.selectedInstance.selection.getSelectedHTML(); - tinyMCE.addCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE); - } - }, - - /** - * When the plugin is initialised this generates the functions that insert configured strings into template elements. - */ - generateReplacer : function(s) { - return function(elm, editor_event) {elm.innerHTML = "" + s;}; - } - }, - - /** - * formats a date according to the format string - straight from the 'insert date/time' plugin - * - * @param {Date} date object - * @param {string} format string - * @return formatted date - * @type string - */ - _getDateTime : function(d,fmt) { - if (!fmt) - return ""; - - function addZeros(value, len) { - var i; - - value = "" + value; - - if (value.length < len) { - for (i=0; i<(len-value.length); i++) - value = "0" + value; - } - - return value; - } - - fmt = fmt.replace("%D", "%m/%d/%y"); - fmt = fmt.replace("%r", "%I:%M:%S %p"); - fmt = fmt.replace("%Y", "" + d.getFullYear()); - fmt = fmt.replace("%y", "" + d.getYear()); - fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); - fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); - fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); - fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); - fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); - fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); - fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); - fmt = fmt.replace("%B", "" + tinyMCE.getLang("lang_template_months_long")[d.getMonth()]); - fmt = fmt.replace("%b", "" + tinyMCE.getLang("lang_template_months_short")[d.getMonth()]); - fmt = fmt.replace("%A", "" + tinyMCE.getLang("lang_template_day_long")[d.getDay()]); - fmt = fmt.replace("%a", "" + tinyMCE.getLang("lang_template_day_short")[d.getDay()]); - fmt = fmt.replace("%%", "%"); - - return fmt; - }, - - TMPL_ELEMENT : 'mceTmplElm', - TMPL : 'mceTmpl', - TMPL_BEGINS : 'mceTmplBegins', - TMPL_SEL_HTML_DONE : 'mceSelHTMLDone', - TMPL_ENDS : 'mceTmplEnds', - TMPL_DATE_SRC_ATTR : 'mcetmpldtesrc', - TMPL_TEMPLATE_EVENT : 'prepare_template' -}; - -tinyMCE.addPlugin("template", TinyMCE_TemplatePlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +tinyMCE.importPluginLanguagePack('template'); + +var TinyMCE_TemplatePlugin = { + getInfo : function() { + return { + longname : 'Template plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://www.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + var cdate, mdate, content, x = 0, key, value, rvals, ds = inst.getData('template'); + + // ensure the required elements and sttributes are added + //inst.cleanup.addRuleStr('*[' + TinyMCE_TemplatePlugin.TMPL_DATE_SRC_ATTR + '],div[title,tsrc]'); + + //setup template content functions + // creation date and modified date classes + cdate = tinyMCE.getParam("template_cdate_classes", '').split(/\s+/); + mdate = tinyMCE.getParam("template_mdate_classes", '').split(/\s+/); + + // classes that specify where selected content should go + content = tinyMCE.getParam("template_selected_content_classes", '').split(/\s+/); + + for (x = 0; x < cdate.length; x++) + TinyMCE_TemplatePlugin.functions[cdate[x]] = TinyMCE_TemplatePlugin.functions['cdate']; + + for (x = 0; x < mdate.length; x++) + TinyMCE_TemplatePlugin.functions[mdate[x]] = TinyMCE_TemplatePlugin.functions['mdate']; + + for (x = 0; x < content.length; x++) + TinyMCE_TemplatePlugin.functions[content[x]] = TinyMCE_TemplatePlugin.functions['selectedContent']; + + // special template functions for replacing template content + rvals = tinyMCE.getParam("template_replace_values", false); + for (key in rvals) { + value = rvals[key]; + + if (typeof value == "function") + TinyMCE_TemplatePlugin.functions[key] = value; + else + TinyMCE_TemplatePlugin.functions[key] = TinyMCE_TemplatePlugin.functions['generateReplacer'](value); + } + + // Setup replace_items + rvals = tinyMCE.getParam("template_replace_values", false); + ds.replace_items = {}; + + for (key in rvals) + ds.replace_items[key] = rvals[key]; + + inst.addShortcut('ctrl', 't', 'lang_template_desc', 'mceTemplate'); + + // Setup data storage + ds.currentAction = "insert"; + ds.currentTmplNode = null; + }, + + getControlHTML : function(cn) { + switch (cn) { + case "template": + return tinyMCE.getButtonHTML(cn, 'lang_template_desc', '{$pluginurl}/images/template.gif', 'mceTemplate', true); + } + + return ""; + }, + + execCommand : function(editor_id, element, command, user_interface, value) { + var nodeArray, current, newTmpl, x, inst = tinyMCE.getInstanceById(editor_id), ds = inst.getData('template'), telm; + + switch (command) { + case "mceTemplate": + if (user_interface) { + // called from toolbar button - show the popup + tinyMCE.openWindow({ + file : '../../plugins/template/template.htm', // Relative to theme + width : tinyMCE.getParam('template_popup_width', 750), + height : tinyMCE.getParam('template_popup_height', 600) + }, {editor_id : editor_id, resizable : "yes", scrollbars : "no", pluginObj : TinyMCE_TemplatePlugin}); + } else { + // internal command do the template stuff + + // get the returned HTML string from the pop-up and appened it to a DIV element + telm = TinyMCE_TemplatePlugin._convertToNode(value.body); + + // Find template body + nodeArray = tinyMCE.selectElements(telm, 'div', function(n) { + return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL); + }); + + telm = nodeArray.length > 0 ? nodeArray[0] : null; + nodeArray = []; + + if (ds.currentAction == "insert") { + //insert new template after applying all the template content functions + + // Is it a template or snippet + if (telm) { + tinyMCE.execCommand('mceBeginUndoLevel'); + ds.currentAction = "insert-new"; + TinyMCE_TemplatePlugin._insertTemplate(editor_id, telm, value.title, value.tsrc, true); + ds.currentAction == "insert"; + tinyMCE.execCommand('mceEndUndoLevel'); + tinyMCE.execInstanceCommand(editor_id, 'mceCleanup', false); + } else + tinyMCE.execCommand('mceInsertContent', false, this._replaceValues(value.body)); + } else { + // First collect the selected template in the editor + nodeArray = TinyMCE_TemplatePlugin._collectTemplateElements(ds.currentTmplNode); + current = []; + newTmpl = []; + tinyMCE.getNodeTree(telm, newTmpl); + + for (x=0; x', 'gi'), + '' + ); + + // delete any empty template wrappers + content = content.replace( + new RegExp('
(\s| | )?(|\s)?
', 'gi'), + '' + ); + + // replace the closing wrapper tag + content = content.replace( + new RegExp('', 'gi'), + '' + ); + + break; + + case "insert_to_editor": + // replace HTML comment with DIV wrapper + content = content.replace( + new RegExp('', 'gi'), + '
' + ); + + content = content.replace( + new RegExp('', 'gi'), + '
' + ); + + break; + + case "get_from_editor_dom": + // apply template content replacement functions + nodes = tinyMCE.selectNodes(content, function(n) { + return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT); + } + ); + + TinyMCE_TemplatePlugin._applyFunctions(nodes, type); + + break; + + case "insert_to_editor_dom": + // apply template content replacement functions + nodes = tinyMCE.selectNodes(content, function(n) { + return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT); + } + ); + + TinyMCE_TemplatePlugin._applyFunctions(nodes, type); + + break; + } + + return content; + }, + + // Private plugin internal methods + + /** + * Creates a HTML DIV element and sets the innerHTML to equal the temlate innerHTML so that the template can be manipulated as DOM nodes. + * + * @param {string} Template innerHTML + * @return a HTML Element + * @type HTMLElement + */ + _convertToNode : function(html) { + var elm = document.createElement('div'); + + elm.innerHTML = html; + + return elm; + }, + + /** + * pass an array of template html elements and they will have the template class name added and any template functions applied + * + * @param {array} template HTML elements + * @return array of template HTML elements + * @type array + */ + _prepareTemplateContent : function(elms) { + var x, n, nodes = []; + + if (!elms) + return {}; + + if (!elms.length) + elms = [elms]; + + for (x = 0; x'; + html += elm.innerHTML; + html += ''; + + tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, html); + }, + + /** + * template functions - functions for modifying template content + */ + functions : { + blank : function(elm, editor_event) {}, + + cdate : function(elm, editor_event) { + var d, dsrc; + + if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT) + return; + + d = new Date(); + // find out if the creation date was previously stored + dsrc = elm.innerHTML.match(new RegExp("", "gi")); + + if (dsrc) + d = new Date(RegExp.$1); + + elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_cdate_format", tinyMCE.getLang("lang_template_def_date_format"))); + //now we have to store the date value in a format easily read again, in case a future template change changes the date format... + elm.innerHTML += ""; + }, + + mdate : function(elm, editor_event) { + var d = new Date(); + elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_mdate_format", tinyMCE.getLang("lang_template_def_date_format"))); + }, + + /** + * This will insert the currently selected editor content into the template element. + * It only does this if the template inserted is a new one and if the element does not have the special class. + * The special class name prevents this from happening more than once. + */ + selectedContent : function(elm, editor_event) { + var ds = tinyMCE.selectedInstance.getData('template'); + + if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT) + return; + + if (ds.currentAction == "insert-new" && !tinyMCE.hasCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)) { + elm.innerHTML = tinyMCE.selectedInstance.selection.getSelectedHTML(); + tinyMCE.addCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE); + } + }, + + /** + * When the plugin is initialised this generates the functions that insert configured strings into template elements. + */ + generateReplacer : function(s) { + return function(elm, editor_event) {elm.innerHTML = "" + s;}; + } + }, + + /** + * formats a date according to the format string - straight from the 'insert date/time' plugin + * + * @param {Date} date object + * @param {string} format string + * @return formatted date + * @type string + */ + _getDateTime : function(d,fmt) { + if (!fmt) + return ""; + + function addZeros(value, len) { + var i; + + value = "" + value; + + if (value.length < len) { + for (i=0; i<(len-value.length); i++) + value = "0" + value; + } + + return value; + } + + fmt = fmt.replace("%D", "%m/%d/%y"); + fmt = fmt.replace("%r", "%I:%M:%S %p"); + fmt = fmt.replace("%Y", "" + d.getFullYear()); + fmt = fmt.replace("%y", "" + d.getYear()); + fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); + fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); + fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); + fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); + fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); + fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); + fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); + fmt = fmt.replace("%B", "" + tinyMCE.getLang("lang_template_months_long")[d.getMonth()]); + fmt = fmt.replace("%b", "" + tinyMCE.getLang("lang_template_months_short")[d.getMonth()]); + fmt = fmt.replace("%A", "" + tinyMCE.getLang("lang_template_day_long")[d.getDay()]); + fmt = fmt.replace("%a", "" + tinyMCE.getLang("lang_template_day_short")[d.getDay()]); + fmt = fmt.replace("%%", "%"); + + return fmt; + }, + + TMPL_ELEMENT : 'mceTmplElm', + TMPL : 'mceTmpl', + TMPL_BEGINS : 'mceTmplBegins', + TMPL_SEL_HTML_DONE : 'mceSelHTMLDone', + TMPL_ENDS : 'mceTmplEnds', + TMPL_DATE_SRC_ATTR : 'mcetmpldtesrc', + TMPL_TEMPLATE_EVENT : 'prepare_template' +}; + +tinyMCE.addPlugin("template", TinyMCE_TemplatePlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/template/images/template.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/images/template.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/template/images/template.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/template/images/template.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/template/jscripts/template.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/jscripts/template.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/template/jscripts/template.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/template/jscripts/template.js index 4c9592739..c7b09df62 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/template/jscripts/template.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/jscripts/template.js @@ -1,143 +1,143 @@ -// Import external list url javascript -var url = tinyMCE.getParam("template_external_list_url"); -if (url != null) { - // Fix relative - if (url.charAt(0) != '/' && url.indexOf('://') == -1) - url = tinyMCE.documentBasePath + "/" + url; - - document.write(''); -} - -var TPU = { //Template Popup Utils - currentTemplateHTML : null, - templates : [], - inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')), - plugin : tinyMCE.getWindowArg('pluginObj'), - data : tinyMCE.selectedInstance.getData('template'), - - init : function() { - document.forms[0].insert.value = tinyMCE.getLang('lang_' + this.data.currentAction, 'Insert', true); - TPU.loadTemplatePaths(); - - if (this.data.currentAction == "update") - document.getElementById('warning').innerHTML = tinyMCE.getLang('lang_template_warning'); - - this.resizeInputs(); - }, - - loadTemplatePaths : function() { - var tsrc, sel, x, u; - - tsrc = tinyMCE.getParam("template_templates", false); - sel = document.getElementById('tpath'); - - // Setup external template list - if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') { - for (x=0, tsrc = []; x' + - 'blank_page' + - '' + - '' + - '' + - this.currentTemplateHTML + - '' + - ''; - }*/ - - // Write HTML to preview iframe - d.body.innerHTML = this.currentTemplateHTML; - - // Display description - for (x = 0; x < TPU.templates.length; x++) { - if (TPU.templates[x].src == o.value) { - document.getElementById('tmpldesc').innerHTML = TPU.templates[x].description; - break; - } - } - }, - - insertTemplate : function() { - var sel, opt; - - sel = document.getElementById('tpath'); - opt = sel.options[sel.selectedIndex]; - - // Is it a template or snippet - if (TPU.currentTemplateHTML.indexOf('mceTmpl')) - tinyMCEPopup.execCommand('mceTemplate', false, {title : opt.text, tsrc : opt.value, body : TPU.currentTemplateHTML}); - else - tinyMCEPopup.execCommand('mceInsertContent', false, TPU.currentTemplateHTML); - - tinyMCEPopup.close(); - }, - - getFileContents : function(u) { - var x, d, t = 'text/plain'; - - function g(s) { - x = 0; - - try { - x = new ActiveXObject(s); - } catch (s) { - } - - return x; - }; - - x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest(); - - // Synchronous AJAX load file - x.overrideMimeType && x.overrideMimeType(t); - x.open("GET", u, false); - x.send(null); - - return x.responseText; - }, - - resizeInputs : function() { - var wHeight, wWidth, elm; - - if (!self.innerWidth) { - wHeight = document.body.clientHeight - 160; - wWidth = document.body.clientWidth - 40; - } else { - wHeight = self.innerHeight - 160; - wWidth = self.innerWidth - 40; - } - - elm = document.getElementById('templatesrc'); - - if (elm) { - elm.style.height = Math.abs(wHeight) + 'px'; - elm.style.width = Math.abs(wWidth - 5) + 'px'; - } - } -}; +// Import external list url javascript +var url = tinyMCE.getParam("template_external_list_url"); +if (url != null) { + // Fix relative + if (url.charAt(0) != '/' && url.indexOf('://') == -1) + url = tinyMCE.documentBasePath + "/" + url; + + document.write(''); +} + +var TPU = { //Template Popup Utils + currentTemplateHTML : null, + templates : [], + inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')), + plugin : tinyMCE.getWindowArg('pluginObj'), + data : tinyMCE.selectedInstance.getData('template'), + + init : function() { + document.forms[0].insert.value = tinyMCE.getLang('lang_' + this.data.currentAction, 'Insert', true); + TPU.loadTemplatePaths(); + + if (this.data.currentAction == "update") + document.getElementById('warning').innerHTML = tinyMCE.getLang('lang_template_warning'); + + this.resizeInputs(); + }, + + loadTemplatePaths : function() { + var tsrc, sel, x, u; + + tsrc = tinyMCE.getParam("template_templates", false); + sel = document.getElementById('tpath'); + + // Setup external template list + if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') { + for (x=0, tsrc = []; x' + + 'blank_page' + + '' + + '' + + '' + + this.currentTemplateHTML + + '' + + ''; + }*/ + + // Write HTML to preview iframe + d.body.innerHTML = this.currentTemplateHTML; + + // Display description + for (x = 0; x < TPU.templates.length; x++) { + if (TPU.templates[x].src == o.value) { + document.getElementById('tmpldesc').innerHTML = TPU.templates[x].description; + break; + } + } + }, + + insertTemplate : function() { + var sel, opt; + + sel = document.getElementById('tpath'); + opt = sel.options[sel.selectedIndex]; + + // Is it a template or snippet + if (TPU.currentTemplateHTML.indexOf('mceTmpl')) + tinyMCEPopup.execCommand('mceTemplate', false, {title : opt.text, tsrc : opt.value, body : TPU.currentTemplateHTML}); + else + tinyMCEPopup.execCommand('mceInsertContent', false, TPU.currentTemplateHTML); + + tinyMCEPopup.close(); + }, + + getFileContents : function(u) { + var x, d, t = 'text/plain'; + + function g(s) { + x = 0; + + try { + x = new ActiveXObject(s); + } catch (s) { + } + + return x; + }; + + x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest(); + + // Synchronous AJAX load file + x.overrideMimeType && x.overrideMimeType(t); + x.open("GET", u, false); + x.send(null); + + return x.responseText; + }, + + resizeInputs : function() { + var wHeight, wWidth, elm; + + if (!self.innerWidth) { + wHeight = document.body.clientHeight - 160; + wWidth = document.body.clientWidth - 40; + } else { + wHeight = self.innerHeight - 160; + wWidth = self.innerWidth - 40; + } + + elm = document.getElementById('templatesrc'); + + if (elm) { + elm.style.height = Math.abs(wHeight) + 'px'; + elm.style.width = Math.abs(wWidth - 5) + 'px'; + } + } +}; diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/template/langs/en.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/langs/en.js similarity index 98% rename from lib/tinymce/jscripts/tiny_mce/plugins/template/langs/en.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/template/langs/en.js index bdbf3ffbb..0cde26670 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/template/langs/en.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/langs/en.js @@ -1,16 +1,16 @@ -// UK lang variables - -tinyMCE.addToLang('template',{ -title : 'Templates', -label : 'Template', -desc_label : 'Description', -desc : 'Insert predefined template content', -select : 'Select a template', -preview : 'Preview', -warning : 'Warning: Updating a template with a different one may cause data loss.', -def_date_format : '%Y-%m-%d %H:%M:%S', -months_long : new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"), -months_short : new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"), -day_long : new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"), -day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") -}); +// UK lang variables + +tinyMCE.addToLang('template',{ +title : 'Templates', +label : 'Template', +desc_label : 'Description', +desc : 'Insert predefined template content', +select : 'Select a template', +preview : 'Preview', +warning : 'Warning: Updating a template with a different one may cause data loss.', +def_date_format : '%Y-%m-%d %H:%M:%S', +months_long : new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"), +months_short : new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"), +day_long : new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"), +day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") +}); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/template/template.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/template.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/template/template.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/template/template.htm index 1e4a98aba..8578a846e 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/template/template.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/template/template.htm @@ -1,37 +1,37 @@ - - - {$lang_template_title} - - - - - - -
-
-
{$lang_template_desc}
-
- -
-
-
-
- {$lang_template_preview} - -
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_template_title} + + + + + + +
+
+
{$lang_template_desc}
+
+ +
+
+
+
+ {$lang_template_preview} + +
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js index 389c6d536..7b7598cd6 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js @@ -1,89 +1,89 @@ -/** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('visualchars'); - -var TinyMCE_VisualCharsPlugin = { - getInfo : function() { - return { - longname : 'Visual characters', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - inst.visualChars = { - state : false - }; - }, - - getControlHTML : function(cn) { - switch (cn) { - case "visualchars": - return tinyMCE.getButtonHTML(cn, 'lang_visualchars_desc', '{$pluginurl}/images/visualchars.gif', 'mceVisualChars', false); - } - - return ""; - }, - - execCommand : function(editor_id, element, command, user_interface, value) { - var inst = tinyMCE.getInstanceById(editor_id); - - switch (command) { - case "mceVisualChars": - this._toggleVisualChars(editor_id, inst); - return true; - } - - return false; - }, - - cleanup : function(type, content, inst) { - if (type == "insert_to_editor_dom" || type == "get_from_editor_dom") { - inst.visualChars.state = true; - this._toggleVisualChars(inst.editorId, inst); - } - - return content; - }, - - // Private plugin internal methods - - _toggleVisualChars : function(editor_id, inst) { - var nl, i, h, d = inst.getDoc(), b = inst.getBody(), nv, s = inst.selection, bo; - - inst.visualChars.state = !inst.visualChars.state; - - bo = s.getBookmark(true); - - tinyMCE.switchClass(editor_id + '_visualchars', inst.visualChars.state ? 'mceButtonSelected' : 'mceButtonNormal'); - - if (inst.visualChars.state) { - nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1;}); - - for (i=0; i$1'); - nv = nv.replace(/\u00a0/g, '\u00b7'); - tinyMCE.setOuterHTML(nl[i], nv, d); - } - } else { - nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 1 && n.nodeName == 'SPAN' && n.className == 'mceItemHiddenVisualChar';}); - - for (i=0; i$1'); + nv = nv.replace(/\u00a0/g, '\u00b7'); + tinyMCE.setOuterHTML(nl[i], nv, d); + } + } else { + nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 1 && n.nodeName == 'SPAN' && n.className == 'mceItemHiddenVisualChar';}); + + for (i=0; i - - {$lang_xhtmlxtras_title_abbr_element} - - - - - - - - - - -
- - -
-
-
- {$lang_xhtmlxtras_fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
: - -
:
: - -
: - -
-
-
-
-
- {$lang_xhtmlxtras_fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
:
:
:
:
:
:
:
:
:
-
-
-
-
-
- -
-
- -
-
- -
-
- -
- - + + + {$lang_xhtmlxtras_title_abbr_element} + + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm index 193760e3e..830307919 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm @@ -1,148 +1,148 @@ - - - {$lang_xhtmlxtras_title_acronym_element} - - - - - - - - - - -
- - -
-
-
- {$lang_xhtmlxtras_fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
: - -
:
: - -
: - -
-
-
-
-
- {$lang_xhtmlxtras_fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
:
:
:
:
:
:
:
:
:
-
-
-
-
-
- -
-
- -
-
- -
-
- -
- - + + + {$lang_xhtmlxtras_title_acronym_element} + + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm index aaf1deee7..2a907ffa0 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm @@ -1,153 +1,153 @@ - - - {$lang_xhtmlxtras_attribs_title} - - - - - - - - - -
- - -
-
-
- {$lang_xhtmlxtras_attribute_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
- -
:
: - -
: - -
-
-
-
-
- {$lang_xhtmlxtras_attribute_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
:
:
:
:
:
:
:
:
:
-
-
-
-
-
- -
-
- -
-
- -
- - + + + {$lang_xhtmlxtras_attribs_title} + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_attribute_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
+ +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_attribute_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm index c72538ca5..2df173900 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm @@ -1,148 +1,148 @@ - - - {$lang_xhtmlxtras_title_cite_element} - - - - - - - - - - -
- - -
-
-
- {$lang_xhtmlxtras_fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
: - -
:
: - -
: - -
-
-
-
-
- {$lang_xhtmlxtras_fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
:
:
:
:
:
:
:
:
:
-
-
-
-
-
- -
-
- -
-
- -
-
- -
- - + + + {$lang_xhtmlxtras_title_cite_element} + + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css similarity index 94% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css index 9a6a235c3..85b1b376d 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css @@ -1,11 +1,11 @@ -.panel_wrapper div.current { - height: 290px; -} - -#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey { - width: 200px; -} - -#events_panel input { - width: 200px; -} +.panel_wrapper div.current { + height: 290px; +} + +#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey { + width: 200px; +} + +#events_panel input { + width: 200px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css similarity index 94% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css index ecdc370a7..778f16902 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css @@ -1,46 +1,46 @@ -a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;} -a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;} - -img { - border: 0; -} - -input.field, select.field { - width: 200px; -} - -input.picker { - width: 179px; - margin-left: 5px; -} - -input.disabled { - border-color: #F2F2F2; -} - -img.picker { - vertical-align: text-bottom; - cursor: pointer; -} - -h1 { - padding: 0 0 5px 0; -} - -#remove { - font-weight: bold; - width: 90px; - height: 21px; - border: 0px; - background-image: url('../images/remove_button_bg.gif'); - cursor: pointer; - margin-left: 3px; -} - -.panel_wrapper div.current { - height: 160px; -} - -#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current { - height: 220px; -} +a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;} +a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;} + +img { + border: 0; +} + +input.field, select.field { + width: 200px; +} + +input.picker { + width: 179px; + margin-left: 5px; +} + +input.disabled { + border-color: #F2F2F2; +} + +img.picker { + vertical-align: text-bottom; + cursor: pointer; +} + +h1 { + padding: 0 0 5px 0; +} + +#remove { + font-weight: bold; + width: 90px; + height: 21px; + border: 0px; + background-image: url('../images/remove_button_bg.gif'); + cursor: pointer; + margin-left: 3px; +} + +.panel_wrapper div.current { + height: 160px; +} + +#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current { + height: 220px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css similarity index 92% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css index 6838d9025..f1887893a 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css @@ -1,24 +1,24 @@ -ins { - border-bottom: 1px solid green; - text-decoration: none; - color: green; -} - -del { - color: Red; - text-decoration: line-through; -} - -cite { - border-bottom: 1px dashed blue; -} - -acronym { - border-bottom: 1px dotted #CCC; - cursor: help; -} - -abbr, html\:abbr { - border-bottom: 1px dashed #CCC; - cursor: help; -} +ins { + border-bottom: 1px solid green; + text-decoration: none; + color: green; +} + +del { + color: Red; + text-decoration: line-through; +} + +cite { + border-bottom: 1px dashed blue; +} + +acronym { + border-bottom: 1px dotted #CCC; + cursor: help; +} + +abbr, html\:abbr { + border-bottom: 1px dashed #CCC; + cursor: help; +} diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm index 11a4d1852..4108ecd3d 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm @@ -1,169 +1,169 @@ - - - {$lang_xhtmlxtras_title_del_element} - - - - - - - - - - -
- - -
-
-
- {$lang_xhtmlxtras_fieldset_general_tab} - - - - - - - - - -
: - - - - - -
{$lang_xhtmlxtras_insert_date}
-
:
-
-
- {$lang_xhtmlxtras_fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
: - -
:
: - -
: - -
-
-
-
-
- {$lang_xhtmlxtras_fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
:
:
:
:
:
:
:
:
:
-
-
-
-
-
- -
-
- -
-
- -
-
- -
- - - + + + {$lang_xhtmlxtras_title_del_element} + + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_fieldset_general_tab} + + + + + + + + + +
: + + + + + +
{$lang_xhtmlxtras_insert_date}
+
:
+
+
+ {$lang_xhtmlxtras_fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js index 618b1c447..5ec018d04 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js @@ -1,199 +1,199 @@ - /** - * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - based on work by Andrew Tetlaw - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import plugin specific language pack */ -tinyMCE.importPluginLanguagePack('xhtmlxtras'); - -var TinyMCE_XHTMLXtrasPlugin = { - getInfo : function() { - return { - longname : 'XHTML Xtras Plugin', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras', - version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion - }; - }, - - initInstance : function(inst) { - tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/xhtmlxtras/css/xhtmlxtras.css"); - }, - - getControlHTML : function(cn) { - switch (cn) { - case "cite": - return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_cite_desc', '{$pluginurl}/images/cite.gif', 'mceCite', true); - - case "acronym": - return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_acronym_desc', '{$pluginurl}/images/acronym.gif', 'mceAcronym', true); - - case "abbr": - return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_abbr_desc', '{$pluginurl}/images/abbr.gif', 'mceAbbr', true); - - case "del": - return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_del_desc', '{$pluginurl}/images/del.gif', 'mceDel', true); - - case "ins": - return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_ins_desc', '{$pluginurl}/images/ins.gif', 'mceIns', true); - - case "attribs": - return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_attribs_desc', '{$pluginurl}/images/attribs.gif', 'mceAttributes', true); - } - - return ""; - }, - - execCommand : function(editor_id, element, command, user_interface, value) { - var template, inst, elm; - - switch (command) { - case "mceCite": - if (!this._anySel(editor_id)) - return true; - - template = new Array(); - template['file'] = '../../plugins/xhtmlxtras/cite.htm'; - template['width'] = 350; - template['height'] = 250; - tinyMCE.openWindow(template, {editor_id : editor_id}); - return true; - - case "mceAcronym": - if (!this._anySel(editor_id)) - return true; - - template = new Array(); - template['file'] = '../../plugins/xhtmlxtras/acronym.htm'; - template['width'] = 350; - template['height'] = 250; - tinyMCE.openWindow(template, {editor_id : editor_id}); - return true; - - case "mceAbbr": - if (!this._anySel(editor_id)) - return true; - - template = new Array(); - template['file'] = '../../plugins/xhtmlxtras/abbr.htm'; - template['width'] = 350; - template['height'] = 250; - tinyMCE.openWindow(template, {editor_id : editor_id}); - return true; - - case "mceIns": - if (!this._anySel(editor_id)) - return true; - - template = new Array(); - template['file'] = '../../plugins/xhtmlxtras/ins.htm'; - template['width'] = 350; - template['height'] = 310; - tinyMCE.openWindow(template, {editor_id : editor_id}); - return true; - - case "mceDel": - if (!this._anySel(editor_id)) - return true; - - template = new Array(); - template['file'] = '../../plugins/xhtmlxtras/del.htm'; - template['width'] = 350; - template['height'] = 310; - tinyMCE.openWindow(template, {editor_id : editor_id}); - return true; - - case "mceAttributes": - inst = tinyMCE.getInstanceById(editor_id); - elm = inst.getFocusElement(); - - if (elm && elm.nodeName !== 'BODY' && elm.className.indexOf('mceItem') == -1) { - tinyMCE.openWindow({ - file : '../../plugins/xhtmlxtras/attributes.htm', - width : 380, - height : 370 - }, {editor_id : editor_id}); - } - - return true; - } - - return false; - }, - - cleanup : function(type, content, inst) { - if (type == 'insert_to_editor' && tinyMCE.isIE && !tinyMCE.isOpera) { - content = content.replace(/]+)>/gi, ''); - content = content.replace(/<\/abbr>/gi, ''); - } - - return content; - }, - - handleNodeChange : function(editor_id, node, undo_index,undo_levels, visual_aid, any_selection) { - var elm = tinyMCE.getParentElement(node); - - if (node == null) - return; - - tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonDisabled'); - - if (!any_selection) { - // Disable the buttons - tinyMCE.switchClass(editor_id + '_cite', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_del', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_ins', 'mceButtonDisabled'); - } else { - // A selection means the buttons should be active. - tinyMCE.switchClass(editor_id + '_cite', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_del', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_ins', 'mceButtonNormal'); - } - - if (elm && elm.nodeName != 'BODY' && elm.className.indexOf('mceItem') == -1) - tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonNormal'); - - switch (node.nodeName) { - case "CITE": - tinyMCE.switchClass(editor_id + '_cite', 'mceButtonSelected'); - return true; - - case "ACRONYM": - tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonSelected'); - return true; - - case "abbr": // IE - case "HTML:ABBR": // FF - case "ABBR": - tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonSelected'); - return true; - - case "DEL": - tinyMCE.switchClass(editor_id + '_del', 'mceButtonSelected'); - return true; - - case "INS": - tinyMCE.switchClass(editor_id + '_ins', 'mceButtonSelected'); - return true; - } - - return true; - }, - - _anySel : function(editor_id) { - var inst = tinyMCE.getInstanceById(editor_id), pe; - - pe = tinyMCE.getParentElement(inst.getFocusElement(), 'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS'); - - return pe || !inst.selection.isCollapsed(); - } -}; - -tinyMCE.addPlugin("xhtmlxtras", TinyMCE_XHTMLXtrasPlugin); + /** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('xhtmlxtras'); + +var TinyMCE_XHTMLXtrasPlugin = { + getInfo : function() { + return { + longname : 'XHTML Xtras Plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/xhtmlxtras/css/xhtmlxtras.css"); + }, + + getControlHTML : function(cn) { + switch (cn) { + case "cite": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_cite_desc', '{$pluginurl}/images/cite.gif', 'mceCite', true); + + case "acronym": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_acronym_desc', '{$pluginurl}/images/acronym.gif', 'mceAcronym', true); + + case "abbr": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_abbr_desc', '{$pluginurl}/images/abbr.gif', 'mceAbbr', true); + + case "del": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_del_desc', '{$pluginurl}/images/del.gif', 'mceDel', true); + + case "ins": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_ins_desc', '{$pluginurl}/images/ins.gif', 'mceIns', true); + + case "attribs": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_attribs_desc', '{$pluginurl}/images/attribs.gif', 'mceAttributes', true); + } + + return ""; + }, + + execCommand : function(editor_id, element, command, user_interface, value) { + var template, inst, elm; + + switch (command) { + case "mceCite": + if (!this._anySel(editor_id)) + return true; + + template = new Array(); + template['file'] = '../../plugins/xhtmlxtras/cite.htm'; + template['width'] = 350; + template['height'] = 250; + tinyMCE.openWindow(template, {editor_id : editor_id}); + return true; + + case "mceAcronym": + if (!this._anySel(editor_id)) + return true; + + template = new Array(); + template['file'] = '../../plugins/xhtmlxtras/acronym.htm'; + template['width'] = 350; + template['height'] = 250; + tinyMCE.openWindow(template, {editor_id : editor_id}); + return true; + + case "mceAbbr": + if (!this._anySel(editor_id)) + return true; + + template = new Array(); + template['file'] = '../../plugins/xhtmlxtras/abbr.htm'; + template['width'] = 350; + template['height'] = 250; + tinyMCE.openWindow(template, {editor_id : editor_id}); + return true; + + case "mceIns": + if (!this._anySel(editor_id)) + return true; + + template = new Array(); + template['file'] = '../../plugins/xhtmlxtras/ins.htm'; + template['width'] = 350; + template['height'] = 310; + tinyMCE.openWindow(template, {editor_id : editor_id}); + return true; + + case "mceDel": + if (!this._anySel(editor_id)) + return true; + + template = new Array(); + template['file'] = '../../plugins/xhtmlxtras/del.htm'; + template['width'] = 350; + template['height'] = 310; + tinyMCE.openWindow(template, {editor_id : editor_id}); + return true; + + case "mceAttributes": + inst = tinyMCE.getInstanceById(editor_id); + elm = inst.getFocusElement(); + + if (elm && elm.nodeName !== 'BODY' && elm.className.indexOf('mceItem') == -1) { + tinyMCE.openWindow({ + file : '../../plugins/xhtmlxtras/attributes.htm', + width : 380, + height : 370 + }, {editor_id : editor_id}); + } + + return true; + } + + return false; + }, + + cleanup : function(type, content, inst) { + if (type == 'insert_to_editor' && tinyMCE.isIE && !tinyMCE.isOpera) { + content = content.replace(/]+)>/gi, ''); + content = content.replace(/<\/abbr>/gi, ''); + } + + return content; + }, + + handleNodeChange : function(editor_id, node, undo_index,undo_levels, visual_aid, any_selection) { + var elm = tinyMCE.getParentElement(node); + + if (node == null) + return; + + tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonDisabled'); + + if (!any_selection) { + // Disable the buttons + tinyMCE.switchClass(editor_id + '_cite', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_del', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_ins', 'mceButtonDisabled'); + } else { + // A selection means the buttons should be active. + tinyMCE.switchClass(editor_id + '_cite', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_del', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_ins', 'mceButtonNormal'); + } + + if (elm && elm.nodeName != 'BODY' && elm.className.indexOf('mceItem') == -1) + tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonNormal'); + + switch (node.nodeName) { + case "CITE": + tinyMCE.switchClass(editor_id + '_cite', 'mceButtonSelected'); + return true; + + case "ACRONYM": + tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonSelected'); + return true; + + case "abbr": // IE + case "HTML:ABBR": // FF + case "ABBR": + tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonSelected'); + return true; + + case "DEL": + tinyMCE.switchClass(editor_id + '_del', 'mceButtonSelected'); + return true; + + case "INS": + tinyMCE.switchClass(editor_id + '_ins', 'mceButtonSelected'); + return true; + } + + return true; + }, + + _anySel : function(editor_id) { + var inst = tinyMCE.getInstanceById(editor_id), pe; + + pe = tinyMCE.getParentElement(inst.getFocusElement(), 'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS'); + + return pe || !inst.selection.isCollapsed(); + } +}; + +tinyMCE.addPlugin("xhtmlxtras", TinyMCE_XHTMLXtrasPlugin); diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/acronym.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/acronym.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/acronym.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/acronym.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/attribs.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/attribs.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/attribs.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/attribs.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/del.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/del.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/del.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/del.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm index 0aeb0768e..9984a6095 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm @@ -1,169 +1,169 @@ - - - {$lang_xhtmlxtras_title_ins_element} - - - - - - - - - - -
- - -
-
-
- {$lang_xhtmlxtras_fieldset_general_tab} - - - - - - - - - -
: - - - - - -
{$lang_xhtmlxtras_insert_date}
-
:
-
-
- {$lang_xhtmlxtras_fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
: - -
:
: - -
: - -
-
-
-
-
- {$lang_xhtmlxtras_fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
:
:
:
:
:
:
:
:
:
:
:
:
-
-
-
-
-
- -
-
- -
-
- -
-
- -
- - - + + + {$lang_xhtmlxtras_title_ins_element} + + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_fieldset_general_tab} + + + + + + + + + +
: + + + + + +
{$lang_xhtmlxtras_insert_date}
+
:
+
+
+ {$lang_xhtmlxtras_fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + + diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js index 9494cade1..06f056981 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js @@ -1,29 +1,29 @@ - /** - * $Id: abbr.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - based on work by Andrew Tetlaw - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -function preinit() { - // Initialize - tinyMCE.setWindowArg('mce_windowresize', false); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - SXE.initElementDialog('abbr'); - if (SXE.currentAction == "update") { - SXE.showRemoveButton(); - } -} - -function insertAbbr() { - SXE.insertElement(tinyMCE.isIE && !tinyMCE.isOpera ? 'html:ABBR' : 'abbr'); - tinyMCEPopup.close(); -} - -function removeAbbr() { - SXE.removeElement('abbr'); - tinyMCEPopup.close(); + /** + * $Id: abbr.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + SXE.initElementDialog('abbr'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertAbbr() { + SXE.insertElement(tinyMCE.isIE && !tinyMCE.isOpera ? 'html:ABBR' : 'abbr'); + tinyMCEPopup.close(); +} + +function removeAbbr() { + SXE.removeElement('abbr'); + tinyMCEPopup.close(); } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js index ad43fe4ed..954cbcd95 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js @@ -1,29 +1,29 @@ - /** - * $Id: acronym.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - based on work by Andrew Tetlaw - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -function preinit() { - // Initialize - tinyMCE.setWindowArg('mce_windowresize', false); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - SXE.initElementDialog('acronym'); - if (SXE.currentAction == "update") { - SXE.showRemoveButton(); - } -} - -function insertAcronym() { - SXE.insertElement('acronym'); - tinyMCEPopup.close(); -} - -function removeAcronym() { - SXE.removeElement('acronym'); - tinyMCEPopup.close(); + /** + * $Id: acronym.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + SXE.initElementDialog('acronym'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertAcronym() { + SXE.insertElement('acronym'); + tinyMCEPopup.close(); +} + +function removeAcronym() { + SXE.removeElement('acronym'); + tinyMCEPopup.close(); } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js index d87664dd2..0c699e590 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js @@ -1,130 +1,130 @@ - /** - * $Id: attributes.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - based on work by Andrew Tetlaw - * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved. - */ - -function preinit() { - // Initialize - tinyMCE.setWindowArg('mce_windowresize', false); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); - var elm = inst.getFocusElement(); - - var f = document.forms[0]; - - var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick')); - - setFormValue('title', tinyMCE.getAttrib(elm, 'title')); - setFormValue('id', tinyMCE.getAttrib(elm, 'id')); - setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")))); - setFormValue('dir', tinyMCE.getAttrib(elm, 'dir')); - setFormValue('lang', tinyMCE.getAttrib(elm, 'lang')); - setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); - setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); - setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus'))); - setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur'))); - setFormValue('onclick', onclick); - setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick'))); - setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown'))); - setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup'))); - setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); - setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove'))); - setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); - setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress'))); - setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown'))); - setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup'))); - - className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(elm, 'class'), false); - - addClassesToList('classlist', 'advlink_styles'); - selectByValue(f, 'classlist', className, true); - - TinyMCE_EditableSelects.init(); -} - -function setFormValue(name, value) { - if(value && document.forms[0].elements[name]){ - document.forms[0].elements[name].value = value; - } -} - -function insertAction() { - var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); - var elm = inst.getFocusElement(); - - tinyMCEPopup.execCommand("mceBeginUndoLevel"); - tinyMCEPopup.restoreSelection(); - - setAllAttribs(elm); - - tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); - tinyMCE._setEventsEnabled(inst.getBody(), false); - tinyMCEPopup.execCommand("mceEndUndoLevel"); - tinyMCEPopup.close(); -} - -function setAttrib(elm, attrib, value) { - var formObj = document.forms[0]; - var valueElm = formObj.elements[attrib.toLowerCase()]; - - if (typeof(value) == "undefined" || value == null) { - value = ""; - - if (valueElm) - value = valueElm.value; - } - - if (value != "") { - tinyMCE.setAttrib(elm, attrib.toLowerCase(), value); - - if (attrib == "style") - attrib = "style.cssText"; - - if (attrib.substring(0, 2) == 'on') - value = 'return true;' + value; - - if (attrib == "class") - attrib = "className"; - - eval('elm.' + attrib + "=value;"); - } else - elm.removeAttribute(attrib); -} - -function setAllAttribs(elm) { - var f = document.forms[0]; - - setAttrib(elm, 'title'); - setAttrib(elm, 'id'); - setAttrib(elm, 'style'); - setAttrib(elm, 'class', getSelectValue(f, 'classlist')); - setAttrib(elm, 'dir'); - setAttrib(elm, 'lang'); - setAttrib(elm, 'tabindex'); - setAttrib(elm, 'accesskey'); - setAttrib(elm, 'onfocus'); - setAttrib(elm, 'onblur'); - setAttrib(elm, 'onclick'); - setAttrib(elm, 'ondblclick'); - setAttrib(elm, 'onmousedown'); - setAttrib(elm, 'onmouseup'); - setAttrib(elm, 'onmouseover'); - setAttrib(elm, 'onmousemove'); - setAttrib(elm, 'onmouseout'); - setAttrib(elm, 'onkeypress'); - setAttrib(elm, 'onkeydown'); - setAttrib(elm, 'onkeyup'); - - // Refresh in old MSIE - if (tinyMCE.isMSIE5) - elm.outerHTML = elm.outerHTML; -} - -function insertAttribute() { - tinyMCEPopup.close(); + /** + * $Id: attributes.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved. + */ + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + + var f = document.forms[0]; + + var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick')); + + setFormValue('title', tinyMCE.getAttrib(elm, 'title')); + setFormValue('id', tinyMCE.getAttrib(elm, 'id')); + setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")))); + setFormValue('dir', tinyMCE.getAttrib(elm, 'dir')); + setFormValue('lang', tinyMCE.getAttrib(elm, 'lang')); + setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); + setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); + setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus'))); + setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur'))); + setFormValue('onclick', onclick); + setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick'))); + setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown'))); + setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup'))); + setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); + setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove'))); + setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); + setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress'))); + setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown'))); + setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup'))); + + className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(elm, 'class'), false); + + addClassesToList('classlist', 'advlink_styles'); + selectByValue(f, 'classlist', className, true); + + TinyMCE_EditableSelects.init(); +} + +function setFormValue(name, value) { + if(value && document.forms[0].elements[name]){ + document.forms[0].elements[name].value = value; + } +} + +function insertAction() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + tinyMCEPopup.restoreSelection(); + + setAllAttribs(elm); + + tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); + tinyMCE._setEventsEnabled(inst.getBody(), false); + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); +} + +function setAttrib(elm, attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib.toLowerCase()]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value != "") { + tinyMCE.setAttrib(elm, attrib.toLowerCase(), value); + + if (attrib == "style") + attrib = "style.cssText"; + + if (attrib.substring(0, 2) == 'on') + value = 'return true;' + value; + + if (attrib == "class") + attrib = "className"; + + eval('elm.' + attrib + "=value;"); + } else + elm.removeAttribute(attrib); +} + +function setAllAttribs(elm) { + var f = document.forms[0]; + + setAttrib(elm, 'title'); + setAttrib(elm, 'id'); + setAttrib(elm, 'style'); + setAttrib(elm, 'class', getSelectValue(f, 'classlist')); + setAttrib(elm, 'dir'); + setAttrib(elm, 'lang'); + setAttrib(elm, 'tabindex'); + setAttrib(elm, 'accesskey'); + setAttrib(elm, 'onfocus'); + setAttrib(elm, 'onblur'); + setAttrib(elm, 'onclick'); + setAttrib(elm, 'ondblclick'); + setAttrib(elm, 'onmousedown'); + setAttrib(elm, 'onmouseup'); + setAttrib(elm, 'onmouseover'); + setAttrib(elm, 'onmousemove'); + setAttrib(elm, 'onmouseout'); + setAttrib(elm, 'onkeypress'); + setAttrib(elm, 'onkeydown'); + setAttrib(elm, 'onkeyup'); + + // Refresh in old MSIE + if (tinyMCE.isMSIE5) + elm.outerHTML = elm.outerHTML; +} + +function insertAttribute() { + tinyMCEPopup.close(); } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js index 9b0243e2a..3212be79d 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js @@ -1,29 +1,29 @@ - /** - * $Id: cite.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - based on work by Andrew Tetlaw - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -function preinit() { - // Initialize - tinyMCE.setWindowArg('mce_windowresize', false); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - SXE.initElementDialog('cite'); - if (SXE.currentAction == "update") { - SXE.showRemoveButton(); - } -} - -function insertCite() { - SXE.insertElement('cite'); - tinyMCEPopup.close(); -} - -function removeCite() { - SXE.removeElement('cite'); - tinyMCEPopup.close(); + /** + * $Id: cite.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + SXE.initElementDialog('cite'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertCite() { + SXE.insertElement('cite'); + tinyMCEPopup.close(); +} + +function removeCite() { + SXE.removeElement('cite'); + tinyMCEPopup.close(); } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js index ffee19cab..f05f6dc44 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js @@ -1,54 +1,54 @@ - /** - * $Id: del.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - based on work by Andrew Tetlaw - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -function preinit() { - // Initialize - tinyMCE.setWindowArg('mce_windowresize', false); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - SXE.initElementDialog('del'); - if (SXE.currentAction == "update") { - setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime')); - setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite')); - SXE.showRemoveButton(); - } -} - -function setElementAttribs(elm) { - setAllCommonAttribs(elm); - setAttrib(elm, 'datetime'); - setAttrib(elm, 'cite'); -} - -function insertDel() { - var elm = tinyMCE.getParentElement(SXE.focusElement, 'del'); - - tinyMCEPopup.execCommand('mceBeginUndoLevel'); - if (elm == null) { - var s = SXE.inst.selection.getSelectedHTML(); - if(s.length > 0) { - tinyMCEPopup.execCommand('mceInsertContent', false, '' + s + ''); - var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'del', 'id', '#sxe_temp_del#'); - for (var i=0; i 0) { + tinyMCEPopup.execCommand('mceInsertContent', false, '' + s + ''); + var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'del', 'id', '#sxe_temp_del#'); + for (var i=0; i 0) { - tagName = element_name; - - if (tinyMCE.isIE && !tinyMCE.isOpera && element_name.indexOf('html:') == 0) - element_name = element_name.substring(5).toLowerCase(); - - h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + ''; - - tinyMCEPopup.execCommand('mceInsertContent', false, h); - - var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), element_name, 'id', '#sxe_temp_' + element_name + '#'); - for (var i=0; i -1) ? true : false; -} - -SXE.removeClass = function(elm,cl) { - if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) { - return true; - } - var classNames = elm.className.split(" "); - var newClassNames = ""; - for (var x = 0, cnl = classNames.length; x < cnl; x++) { - if (classNames[x] != cl) { - newClassNames += (classNames[x] + " "); - } - } - elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end -} - -SXE.addClass = function(elm,cl) { - if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl; - return true; + /** + * $Id: element_common.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +function initCommonAttributes(elm) { + var formObj = document.forms[0]; + + // Setup form data for common element attributes + setFormValue('title', tinyMCE.getAttrib(elm, 'title')); + setFormValue('id', tinyMCE.getAttrib(elm, 'id')); + selectByValue(formObj, 'class', tinyMCE.getAttrib(elm, 'class'), true); + setFormValue('style', tinyMCE.getAttrib(elm, 'style')); + selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir')); + setFormValue('lang', tinyMCE.getAttrib(elm, 'lang')); + setFormValue('onfocus', tinyMCE.getAttrib(elm, 'onfocus')); + setFormValue('onblur', tinyMCE.getAttrib(elm, 'onblur')); + setFormValue('onclick', tinyMCE.getAttrib(elm, 'onclick')); + setFormValue('ondblclick', tinyMCE.getAttrib(elm, 'ondblclick')); + setFormValue('onmousedown', tinyMCE.getAttrib(elm, 'onmousedown')); + setFormValue('onmouseup', tinyMCE.getAttrib(elm, 'onmouseup')); + setFormValue('onmouseover', tinyMCE.getAttrib(elm, 'onmouseover')); + setFormValue('onmousemove', tinyMCE.getAttrib(elm, 'onmousemove')); + setFormValue('onmouseout', tinyMCE.getAttrib(elm, 'onmouseout')); + setFormValue('onkeypress', tinyMCE.getAttrib(elm, 'onkeypress')); + setFormValue('onkeydown', tinyMCE.getAttrib(elm, 'onkeydown')); + setFormValue('onkeyup', tinyMCE.getAttrib(elm, 'onkeyup')); +} + +function setFormValue(name, value) { + if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value; +} + +function insertDateTime(id) { + document.getElementById(id).value = getDateTime(new Date(), "%Y-%m-%dT%H:%M:%S"); +} + +function getDateTime(d, fmt) { + fmt = fmt.replace("%D", "%m/%d/%y"); + fmt = fmt.replace("%r", "%I:%M:%S %p"); + fmt = fmt.replace("%Y", "" + d.getFullYear()); + fmt = fmt.replace("%y", "" + d.getYear()); + fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); + fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); + fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); + fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); + fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); + fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); + fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); + fmt = fmt.replace("%%", "%"); + + return fmt; +} + +function addZeros(value, len) { + var i; + + value = "" + value; + + if (value.length < len) { + for (i=0; i<(len-value.length); i++) + value = "0" + value; + } + + return value; +} + +function selectByValue(form_obj, field_name, value, add_custom, ignore_case) { + if (!form_obj || !form_obj.elements[field_name]) + return; + + var sel = form_obj.elements[field_name]; + + var found = false; + for (var i=0; i 0) { + tagName = element_name; + + if (tinyMCE.isIE && !tinyMCE.isOpera && element_name.indexOf('html:') == 0) + element_name = element_name.substring(5).toLowerCase(); + + h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + ''; + + tinyMCEPopup.execCommand('mceInsertContent', false, h); + + var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), element_name, 'id', '#sxe_temp_' + element_name + '#'); + for (var i=0; i -1) ? true : false; +} + +SXE.removeClass = function(elm,cl) { + if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) { + return true; + } + var classNames = elm.className.split(" "); + var newClassNames = ""; + for (var x = 0, cnl = classNames.length; x < cnl; x++) { + if (classNames[x] != cl) { + newClassNames += (classNames[x] + " "); + } + } + elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end +} + +SXE.addClass = function(elm,cl) { + if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl; + return true; } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js rename to code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js index 288cf78ec..58681f964 100755 --- a/lib/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js @@ -1,53 +1,53 @@ - /** - * $Id: ins.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - based on work by Andrew Tetlaw - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -function preinit() { - // Initialize - tinyMCE.setWindowArg('mce_windowresize', false); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - SXE.initElementDialog('ins'); - if (SXE.currentAction == "update") { - setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime')); - setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite')); - SXE.showRemoveButton(); - } -} - -function setElementAttribs(elm) { - setAllCommonAttribs(elm); - setAttrib(elm, 'datetime'); - setAttrib(elm, 'cite'); -} - -function insertIns() { - var elm = tinyMCE.getParentElement(SXE.focusElement, 'ins'); - tinyMCEPopup.execCommand('mceBeginUndoLevel'); - if (elm == null) { - var s = SXE.inst.selection.getSelectedHTML(); - if(s.length > 0) { - tinyMCEPopup.execCommand('mceInsertContent', false, '' + s + ''); - var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'ins', 'id', '#sxe_temp_ins#'); - for (var i=0; i 0) { + tinyMCEPopup.execCommand('mceInsertContent', false, '' + s + ''); + var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'ins', 'id', '#sxe_temp_ins#'); + for (var i=0; i' + - '' + - '' + - '' + - '' + - ''; - } - - return ""; - }, - - /** - * Executes the mceZoom command. - */ - execCommand : function(editor_id, element, command, user_interface, value) { - // Handle commands - switch (command) { - case "mceZoom": - tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom = value; - tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom = value; - return true; - } - - // Pass to next handler in chain - return false; - } -}; - -tinyMCE.addPlugin("zoom", TinyMCE_ZoomPlugin); +/** + * $Id: editor_plugin_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +var TinyMCE_ZoomPlugin = { + getInfo : function() { + return { + longname : 'Zoom', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/zoom', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + /** + * Returns the HTML contents of the zoom control. + */ + getControlHTML : function(control_name) { + if (!tinyMCE.isMSIE || tinyMCE.isMSIE5_0 || tinyMCE.isOpera) + return ""; + + switch (control_name) { + case "zoom": + return ''; + } + + return ""; + }, + + /** + * Executes the mceZoom command. + */ + execCommand : function(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceZoom": + tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom = value; + tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom = value; + return true; + } + + // Pass to next handler in chain + return false; + } +}; + +tinyMCE.addPlugin("zoom", TinyMCE_ZoomPlugin); diff --git a/code/web/js/tinymce/jscripts/tiny_mce/plugins/zoom/readme.txt b/code/web/js/tinymce/jscripts/tiny_mce/plugins/zoom/readme.txt new file mode 100755 index 000000000..6bc6d7def --- /dev/null +++ b/code/web/js/tinymce/jscripts/tiny_mce/plugins/zoom/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/about.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/about.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/about.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/about.htm index 6918488a2..bb275f0a9 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/about.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/about.htm @@ -1,52 +1,52 @@ - - - {$lang_about_title} - - - - - - - - -
-
-

{$lang_about_title}

-

Version: {$tinymce_version} ({$tinymce_releasedate})

-

TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL - by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

-

Copyright © 2003-2007, Moxiecode Systems AB, All rights reserved.

-

For more information about this software visit the TinyMCE website.

- -
-
- -
-
-

{$lang_loaded_plugins}

- -
-
- -

 

-
-
- -
-
-
-
- -
-
- -
-
- - + + + {$lang_about_title} + + + + + + + + +
+
+

{$lang_about_title}

+

Version: {$tinymce_version} ({$tinymce_releasedate})

+

TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL + by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

+

Copyright © 2003-2007, Moxiecode Systems AB, All rights reserved.

+

For more information about this software visit the TinyMCE website.

+ +
+
+ +
+
+

{$lang_loaded_plugins}

+ +
+
+ +

 

+
+
+ +
+
+
+
+ +
+
+ +
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm index 53d7969f0..988bcb68e 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm @@ -1,33 +1,33 @@ - - - {$lang_insert_anchor_title} - - - - - -
- - - - - - - - - -
{$lang_insert_anchor_title}
{$lang_insert_anchor_name}:
- -
-
- -
- -
- -
-
- -
- - + + + {$lang_insert_anchor_title} + + + + + +
+ + + + + + + + + +
{$lang_insert_anchor_title}
{$lang_insert_anchor_name}:
+ +
+
+ +
+ +
+ +
+
+ +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm index 9aed1d4b5..fbd472b19 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm @@ -1,53 +1,53 @@ - - - {$lang_theme_charmap_title} - - - - - - - - - - - - - - - - - -
{$lang_theme_charmap_title}
- - - - - - - - - -
 
 
-
- - - - - - - - - - - - - - - - -
HTML-Code
 
 
NUM-Code
 
-
- - - + + + {$lang_theme_charmap_title} + + + + + + + + + + + + + + + + + +
{$lang_theme_charmap_title}
+ + + + + + + + + +
 
 
+
+ + + + + + + + + + + + + + + + +
HTML-Code
 
 
NUM-Code
 
+
+ + + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm index 668d744a3..5e2492034 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm @@ -1,74 +1,74 @@ - - - {$lang_theme_colorpicker_title} - - - - - - - - - -
-
-
- {$lang_color_picker} -
- - -
- -
- -
-
-
-
- -
-
- {$lang_web_colors} -
- -
- -
-
-
- -
-
- {$lang_named_colors} -
- -
- -
- -
- {$lang_color_name} -
-
-
-
- -
-
- -
- -
- -
- -
-
- - + + + {$lang_theme_colorpicker_title} + + + + + + + + + +
+
+
+ {$lang_color_picker} +
+ + +
+ +
+ +
+
+
+
+ +
+
+ {$lang_web_colors} +
+ +
+ +
+
+
+ +
+
+ {$lang_named_colors} +
+ +
+ +
+ +
+ {$lang_color_name} +
+
+
+
+ +
+
+ +
+ +
+ +
+ +
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/css/colorpicker.css b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/colorpicker.css similarity index 92% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/css/colorpicker.css rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/colorpicker.css index 4b0360bf1..ae02c6537 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/css/colorpicker.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/colorpicker.css @@ -1,53 +1,53 @@ -/* Colorpicker dialog specific CSS */ - -#preview { - float: right; - width: 50px; - height: 14px; - line-height: 1px; - border: 1px solid black; - margin-left: 5px; -} - -#colorpicker { - float: left; - cursor: crosshair; -} - -#light { - border: 1px solid gray; - margin-left: 5px; - float: left; - width: 15px; - cursor: crosshair; -} - -#light div { - overflow: hidden; -} - -#previewblock { - float: right; - padding-left: 10px; - height: 20px; -} - -.panel_wrapper div.current { - height: 175px; -} - -#namedcolors { - width: 150px; -} - -#namedcolors a { - display: block; - float: left; - width: 10px; height: 10px; - margin: 1px 1px 0 0; - overflow: hidden; -} - -#colornamecontainer { - margin-top: 5px; +/* Colorpicker dialog specific CSS */ + +#preview { + float: right; + width: 50px; + height: 14px; + line-height: 1px; + border: 1px solid black; + margin-left: 5px; +} + +#colorpicker { + float: left; + cursor: crosshair; +} + +#light { + border: 1px solid gray; + margin-left: 5px; + float: left; + width: 15px; + cursor: crosshair; +} + +#light div { + overflow: hidden; +} + +#previewblock { + float: right; + padding-left: 10px; + height: 20px; +} + +.panel_wrapper div.current { + height: 175px; +} + +#namedcolors { + width: 150px; +} + +#namedcolors a { + display: block; + float: left; + width: 10px; height: 10px; + margin: 1px 1px 0 0; + overflow: hidden; +} + +#colornamecontainer { + margin-top: 5px; } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_content.css b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_content.css similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_content.css rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_content.css index 182e79121..5cbe6bbbe 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_content.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_content.css @@ -1,58 +1,58 @@ -/* This file contains the CSS data for the editable area(iframe) of TinyMCE */ -/* You can extend this CSS by adding your own CSS file with the the content_css option */ - -body, td, pre { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; -} - -body { - background-color: #FFFFFF; -} - -.mceVisualAid { - border: 1px dashed #BBBBBB !important; -} - -div.mceVisualAid { - background-image:url('../images/spacer.gif'); - visibility: visible !important; -} - -.mceItemAnchor { - width: 12px; - line-height: 6px; - overflow: hidden; - padding-left: 12px; - background-image: url('../images/anchor_symbol.gif'); - background-position: bottom; - background-repeat: no-repeat; -} - -/* Important is needed in Gecko browsers inorder to style links */ -/* -a { - color: green !important; -} -*/ - -/* Style selection range colors in Gecko browsers */ -/* -::-moz-selection { - background-color: red; - color: green; -} -*/ - -/* MSIE specific */ - -* html body { - scrollbar-3dlight-color: #F0F0EE; - scrollbar-arrow-color: #676662; - scrollbar-base-color: #F0F0EE; - scrollbar-darkshadow-color: #DDDDDD; - scrollbar-face-color: #E0E0DD; - scrollbar-highlight-color: #F0F0EE; - scrollbar-shadow-color: #F0F0EE; - scrollbar-track-color: #F5F5F5; -} +/* This file contains the CSS data for the editable area(iframe) of TinyMCE */ +/* You can extend this CSS by adding your own CSS file with the the content_css option */ + +body, td, pre { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +body { + background-color: #FFFFFF; +} + +.mceVisualAid { + border: 1px dashed #BBBBBB !important; +} + +div.mceVisualAid { + background-image:url('../images/spacer.gif'); + visibility: visible !important; +} + +.mceItemAnchor { + width: 12px; + line-height: 6px; + overflow: hidden; + padding-left: 12px; + background-image: url('../images/anchor_symbol.gif'); + background-position: bottom; + background-repeat: no-repeat; +} + +/* Important is needed in Gecko browsers inorder to style links */ +/* +a { + color: green !important; +} +*/ + +/* Style selection range colors in Gecko browsers */ +/* +::-moz-selection { + background-color: red; + color: green; +} +*/ + +/* MSIE specific */ + +* html body { + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_popup.css b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_popup.css similarity index 94% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_popup.css rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_popup.css index f8d3550ce..de36e719a 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_popup.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_popup.css @@ -1,331 +1,331 @@ -/* This file contains the CSS data for all popups in TinyMCE */ - -body { - background-color: #F0F0EE; - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 11px; - scrollbar-3dlight-color: #F0F0EE; - scrollbar-arrow-color: #676662; - scrollbar-base-color: #F0F0EE; - scrollbar-darkshadow-color: #DDDDDD; - scrollbar-face-color: #E0E0DD; - scrollbar-highlight-color: #F0F0EE; - scrollbar-shadow-color: #F0F0EE; - scrollbar-track-color: #F5F5F5; - margin: 8px; -} - -td { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 11px; -} - -input { - background: #FFFFFF; - border: 1px solid #cccccc; -} - -td, input, select, textarea { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; -} - -input, select, textarea { - border: 1px solid #808080; -} - -.input_noborder { - border: 0; -} - -#insert, .updateButton { - font-weight: bold; - width: 90px; - height: 21px; - border: 0; - background-image: url('../images/insert_button_bg.gif'); - cursor: pointer; -} - -#cancel { - font-weight: bold; - width: 90px; - height: 21px; - border: 0; - background-image: url('../images/cancel_button_bg.gif'); - cursor: pointer; -} - -/* Mozilla only style */ -html>body #insert, html>body #cancel { - padding-bottom: 2px; -} - -.title { - font-size: 12px; - font-weight: bold; - color: #2B6FB6; -} - -table.charmap { - border-style: solid; - border-width: 1px; - border-color: #AAAAAA; -} - -td.charmap, td.charmapOver { - color: #000000; - border-color: #AAAAAA; - border-style: solid; - border-width: 1px; - text-align: center; - font-size: 12px; -} - -td.charmapOver { - background-color: #CCCCCC; - cursor: default; -} - -a.charmap { - color: #000000; - text-decoration: none -} - -.wordWrapCode { - vertical-align: middle; - border: 1px none #000000; - background-color: transparent; -} - -input.radio { - border: 1px none #000000; - background-color: transparent; - vertical-align: middle; -} - -input.checkbox { - border: 1px none #000000; - background-color: transparent; - vertical-align: middle; -} - -.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected { - margin-left: 1px; -} - -.mceButtonNormal { - border-top: 1px solid; - border-left: 1px solid; - border-bottom: 1px solid; - border-right: 1px solid; - border-color: #F0F0EE; - cursor: default; -} - -.mceButtonOver { - border: 1px solid #0A246A; - cursor: default; - background-color: #B6BDD2; -} - -.mceButtonDown { - cursor: default; - border: 1px solid #0A246A; - background-color: #8592B5; -} - -.mceButtonDisabled { - filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); - -moz-opacity:0.3; - opacity: 0.3; - border-top: 1px solid; - border-left: 1px solid; - border-bottom: 1px solid; - border-right: 1px solid; - border-color: #F0F0EE; - cursor: default; -} - -.mceActionPanel { - margin-top: 5px; -} - -/* Tabs classes */ - -.tabs { - float: left; - width: 100%; - line-height: normal; - background-image: url("../images/xp/tabs_bg.gif"); -} - -.tabs ul { - margin: 0; - padding: 0 0 0; - list-style: none; -} - -.tabs li { - float: left; - background: url("../images/xp/tab_bg.gif") no-repeat left top; - margin: 0; - margin-left: 0; - margin-right: 2px; - padding: 0 0 0 10px; - line-height: 18px; -} - -.tabs li.current { - background: url("../images/xp/tab_sel_bg.gif") no-repeat left top; - margin-right: 2px; -} - -.tabs span { - float: left; - display: block; - background: url("../images/xp/tab_end.gif") no-repeat right top; - padding: 0px 10px 0 0; -} - -.tabs .current span { - background: url("../images/xp/tab_sel_end.gif") no-repeat right top; -} - -.tabs a { - text-decoration: none; - font-family: Verdana, Arial; - font-size: 10px; -} - -.tabs a:link, .tabs a:visited, .tabs a:hover { - color: black; -} - -.tabs a:hover { -} - -.tabs .current { -} - -.tabs .current a, .tabs .current a:link, .tabs .current a:visited { -} - -.panel_wrapper div.panel { - display: none; -} - -.panel_wrapper div.current { - display: block; - width: 100%; - height: 300px; - overflow: visible; /* Should be auto but that breaks Safari */ -} - -.panel_wrapper { - border: 1px solid #919B9C; - border-top: 0px; - padding: 10px; - padding-top: 5px; - clear: both; - background-color: white; -} - -fieldset { - border: 1px solid #919B9C; - font-family: Verdana, Arial; - font-size: 10px; - padding: 0; - margin: 0; - padding: 4px; -} - -legend { - color: #2B6FB6; - font-weight: bold; -} - -.properties { - width: 100%; -} - -.properties .column1 { -} - -.properties .column2 { - text-align: left; -} - -a:link, a:visited { - color: black; -} - -a:hover { - color: #2B6FB6; -} - -#plugintable thead { - font-weight: bold; - background-color: #DDDDDD; -} - -#plugintable, #about #plugintable td { - border: 1px solid #919B9C; -} - -#plugintable { - width: 99%; - margin-top: 10px; -} - -#pluginscontainer { - height: 290px; - overflow: auto; -} - -/* MSIE Specific styles */ - -* html .panel_wrapper { - width: 100%; -} - -.column { - float: left; -} - -h1, h2, h3, h4 { - color: #2B6FB6; - margin: 0; - padding: 0; - padding-top: 5px; -} - -h3 { - font-size: 14px; -} - -#link .panel_wrapper, #link div.current { - height: 125px; -} - -#image .panel_wrapper, #image div.current { - height: 190px; -} - -label.msg { display: none; } -label.invalid { color: #EE0000; display: inline; } -input.invalid { border: 1px solid #EE0000; } - -/* Disables the advanced tab in the table plugin. */ -/* -#table #advanced_tab { - display: none; -} -*/ - -/* Disables the border input field and label in the table plugin. */ -/* -#table #border, #table #borderlabel { - display: none; -} -*/ +/* This file contains the CSS data for all popups in TinyMCE */ + +body { + background-color: #F0F0EE; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; + margin: 8px; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; +} + +input { + background: #FFFFFF; + border: 1px solid #cccccc; +} + +td, input, select, textarea { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +input, select, textarea { + border: 1px solid #808080; +} + +.input_noborder { + border: 0; +} + +#insert, .updateButton { + font-weight: bold; + width: 90px; + height: 21px; + border: 0; + background-image: url('../images/insert_button_bg.gif'); + cursor: pointer; +} + +#cancel { + font-weight: bold; + width: 90px; + height: 21px; + border: 0; + background-image: url('../images/cancel_button_bg.gif'); + cursor: pointer; +} + +/* Mozilla only style */ +html>body #insert, html>body #cancel { + padding-bottom: 2px; +} + +.title { + font-size: 12px; + font-weight: bold; + color: #2B6FB6; +} + +table.charmap { + border-style: solid; + border-width: 1px; + border-color: #AAAAAA; +} + +td.charmap, td.charmapOver { + color: #000000; + border-color: #AAAAAA; + border-style: solid; + border-width: 1px; + text-align: center; + font-size: 12px; +} + +td.charmapOver { + background-color: #CCCCCC; + cursor: default; +} + +a.charmap { + color: #000000; + text-decoration: none +} + +.wordWrapCode { + vertical-align: middle; + border: 1px none #000000; + background-color: transparent; +} + +input.radio { + border: 1px none #000000; + background-color: transparent; + vertical-align: middle; +} + +input.checkbox { + border: 1px none #000000; + background-color: transparent; + vertical-align: middle; +} + +.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected { + margin-left: 1px; +} + +.mceButtonNormal { + border-top: 1px solid; + border-left: 1px solid; + border-bottom: 1px solid; + border-right: 1px solid; + border-color: #F0F0EE; + cursor: default; +} + +.mceButtonOver { + border: 1px solid #0A246A; + cursor: default; + background-color: #B6BDD2; +} + +.mceButtonDown { + cursor: default; + border: 1px solid #0A246A; + background-color: #8592B5; +} + +.mceButtonDisabled { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + -moz-opacity:0.3; + opacity: 0.3; + border-top: 1px solid; + border-left: 1px solid; + border-bottom: 1px solid; + border-right: 1px solid; + border-color: #F0F0EE; + cursor: default; +} + +.mceActionPanel { + margin-top: 5px; +} + +/* Tabs classes */ + +.tabs { + float: left; + width: 100%; + line-height: normal; + background-image: url("../images/xp/tabs_bg.gif"); +} + +.tabs ul { + margin: 0; + padding: 0 0 0; + list-style: none; +} + +.tabs li { + float: left; + background: url("../images/xp/tab_bg.gif") no-repeat left top; + margin: 0; + margin-left: 0; + margin-right: 2px; + padding: 0 0 0 10px; + line-height: 18px; +} + +.tabs li.current { + background: url("../images/xp/tab_sel_bg.gif") no-repeat left top; + margin-right: 2px; +} + +.tabs span { + float: left; + display: block; + background: url("../images/xp/tab_end.gif") no-repeat right top; + padding: 0px 10px 0 0; +} + +.tabs .current span { + background: url("../images/xp/tab_sel_end.gif") no-repeat right top; +} + +.tabs a { + text-decoration: none; + font-family: Verdana, Arial; + font-size: 10px; +} + +.tabs a:link, .tabs a:visited, .tabs a:hover { + color: black; +} + +.tabs a:hover { +} + +.tabs .current { +} + +.tabs .current a, .tabs .current a:link, .tabs .current a:visited { +} + +.panel_wrapper div.panel { + display: none; +} + +.panel_wrapper div.current { + display: block; + width: 100%; + height: 300px; + overflow: visible; /* Should be auto but that breaks Safari */ +} + +.panel_wrapper { + border: 1px solid #919B9C; + border-top: 0px; + padding: 10px; + padding-top: 5px; + clear: both; + background-color: white; +} + +fieldset { + border: 1px solid #919B9C; + font-family: Verdana, Arial; + font-size: 10px; + padding: 0; + margin: 0; + padding: 4px; +} + +legend { + color: #2B6FB6; + font-weight: bold; +} + +.properties { + width: 100%; +} + +.properties .column1 { +} + +.properties .column2 { + text-align: left; +} + +a:link, a:visited { + color: black; +} + +a:hover { + color: #2B6FB6; +} + +#plugintable thead { + font-weight: bold; + background-color: #DDDDDD; +} + +#plugintable, #about #plugintable td { + border: 1px solid #919B9C; +} + +#plugintable { + width: 99%; + margin-top: 10px; +} + +#pluginscontainer { + height: 290px; + overflow: auto; +} + +/* MSIE Specific styles */ + +* html .panel_wrapper { + width: 100%; +} + +.column { + float: left; +} + +h1, h2, h3, h4 { + color: #2B6FB6; + margin: 0; + padding: 0; + padding-top: 5px; +} + +h3 { + font-size: 14px; +} + +#link .panel_wrapper, #link div.current { + height: 125px; +} + +#image .panel_wrapper, #image div.current { + height: 190px; +} + +label.msg { display: none; } +label.invalid { color: #EE0000; display: inline; } +input.invalid { border: 1px solid #EE0000; } + +/* Disables the advanced tab in the table plugin. */ +/* +#table #advanced_tab { + display: none; +} +*/ + +/* Disables the border input field and label in the table plugin. */ +/* +#table #border, #table #borderlabel { + display: none; +} +*/ diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_ui.css b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_ui.css similarity index 98% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_ui.css rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_ui.css index 851837d91..145b2d1fd 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_ui.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/css/editor_ui.css @@ -1,97 +1,97 @@ -/* This file contains the CSS data for the editor UI of TinyMCE instances */ - -.mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover {border: 0; margin: 0; padding: 0; background: transparent;} -.mceSeparatorLine {border: 0; padding: 0; margin-left: 4px; margin-right: 2px;} -.mceSelectList {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 7pt !important; font-weight: normal; margin-top: 3px; padding: 0; display: inline; vertical-align: top; background-color: #F0F0EE;} -.mceLabel, .mceLabelDisabled {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt;} -.mceLabel {color: #000000;} -.mceLabelDisabled {cursor: text; color: #999999;} -.mceEditor {background: #F0F0EE; border: 1px solid #cccccc; padding: 0; margin: 0;} -.mceEditorArea { font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; background: #FFFFFF; padding: 0; margin: 0; } -.mceToolbarTop, .mceToolbarBottom {background: #F0F0EE; line-height: 1px; font-size: 1px;} -.mceToolbarTop {border-bottom: 1px solid #cccccc; padding-bottom: 1px;} -.mceToolbarBottom {border-top: 1px solid #cccccc;} -.mceToolbarContainer {display: block; position: relative; left: 0; top: 0; width: 100%;} -.mceStatusbarTop, .mceStatusbarBottom, .mceStatusbar {height: 20px;} -.mceStatusbarTop .mceStatusbarPathText, .mceStatusbarBottom .mceStatusbarPathText, .mceStatusbar .mceStatusbarPathText {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; padding: 2px; line-height: 16px; overflow: visible;} -.mceStatusbarTop {border-bottom: 1px solid #cccccc;} -.mceStatusbarBottom {border-top: 1px solid #cccccc;} -.mceStatusbar {border-bottom: 1px solid #cccccc;} -.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {text-decoration: none; font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; color: #000000;} -.mcePathItem:hover {text-decoration: underline;} -.mceStatusbarPathText {float: left;} -.mceStatusbarResize {float: right; background-image: url('../images/statusbar_resize.gif'); background-repeat: no-repeat; width: 11px; height: 20px; cursor: se-resize;} -.mceResizeBox {width: 10px; height: 10px; display: none; border: 1px dotted gray; margin: 0; padding: 0;} -.mceEditorIframe {border: 0;} - -/* Button CSS rules */ - -a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {width: 20px; height: 20px; cursor: default; margin-top: 1px; margin-left: 1px;} -a.mceButtonDisabled img {border: 0 !important;} -a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;} -a.mceButtonSelected img {border: 1px solid #6779AA !important; background-color: #D4D5D8;} -a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;} -a.mceButtonDisabled img {-moz-opacity:0.3; opacity: 0.3; border: 1px solid #F0F0EE !important; cursor: default;} -a.mceTiledButton img {background-image: url('../images/buttons.gif'); background-repeat: no-repeat;} - -/* Menu button CSS rules */ - -span.mceMenuButton img, span.mceMenuButtonSelected img {border: 1px solid #F0F0EE; margin-left: 1px;} -span.mceMenuButtonSelected img {border: 1px solid #6779AA; background-color: #B6BDD2;} -span.mceMenuButtonSelected img.mceMenuButton {border: 1px solid #F0F0EE; background-color: transparent;} -span.mceMenuButton img.mceMenuButton, span.mceMenuButtonSelected img.mceMenuButton {border-left: 0; margin-left: 0;} -span.mceMenuButton:hover img, span.mceMenuButtonSelected:hover img {border: 1px solid #0A246A; background-color: #B6BDD2;} -span.mceMenuButton:hover img.mceMenuButton, span.mceMenuButtonSelected:hover img.mceMenuButton {border-left: 0;} -span.mceMenuButtonFocus img {border: 1px solid gray; border-right: 0; margin-left: 1px; background-color: #F5F4F2;} -span.mceMenuButtonFocus img.mceMenuButton {border: 1px solid gray; border-left: 1px solid #F5F4F2; margin-left: 0;} -span.mceMenuHover img {border: 1px solid #0A246A; background-color: #B6BDD2;} -span.mceMenuButtonSelected.mceMenuHover img.mceMenuButton {border: 1px solid #0A246A; background-color: #B6BDD2; border-left: 0;} - -/* Menu */ - -.mceMenu {position: absolute; left: 0; top: 0; display: none; z-index: 1000; background-color: white; border: 1px solid gray; font-weight: normal;} -.mceMenu a, .mceMenuTitle, .mceMenuDisabled {display: block; width: 100%; text-decoration: none; background-color: white; font-family: Tahoma, Verdana, Arial, Helvetica; font-size: 11px; line-height: 20px; color: black;} -.mceMenu a:hover {background-color: #B6BDD2; color: black; text-decoration: none !important;} -.mceMenu span {padding-left: 10px; padding-right: 10px; display: block; line-height: 20px;} -.mceMenuSeparator {border-bottom: 1px solid gray; background-color: gray; height: 1px;} -.mceMenuTitle span {padding-left: 5px;} -.mceMenuTitle {background-color: #DDDDDD; font-weight: bold;} -.mceMenuDisabled {color: gray;} -span.mceMenuSelectedItem {background-image: url('../images/menu_check.gif'); background-repeat: no-repeat; background-position: 5px 8px; padding-left: 20px;} -span.mceMenuCheckItem {padding-left: 20px;} -span.mceMenuLine {display: block; position: absolute; left: 0; top: -1px; background-color: #F5F4F2; width: 30px; height: 1px; overflow: hidden; padding-left: 0; padding-right: 0;} -.mceColors table, .mceColors td {margin: 0; padding: 2px;} -a.mceMoreColors {width: auto; padding: 0; margin: 0 3px 3px 3px; text-align: center; border: 1px solid white; text-decoration: none !important;} -.mceColorPreview {position: absolute; overflow:hidden; left: 0; top: 0; margin-left: 3px; margin-top: 15px; width: 16px; height: 4px; background-color: red;} -a.mceMoreColors:hover {border: 1px solid #0A246A;} -.mceColors td a {width: 9px; height: 9px; overflow: hidden; border: 1px solid #808080;} - -/* MSIE 6 specific rules */ - -* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;} -* html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;} -* html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;} -* html a.mceButtonNormal, * html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;} -* html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;} -* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;} -* html .mceSelectList {margin-top: 2px;} -* html span.mceMenuButton, * html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;} -* html span.mceMenuButton img, * html span.mceMenuButtonSelected img, * html span.mceMenuButtonFocus img {position: relative; top: 1px;} -* html a.mceMoreColors {width: auto;} -* html .mceColors td a {width: 10px; height: 10px;} -* html .mceColorPreview {margin-left: 2px; margin-top: 14px;} - -/* MSIE 7 specific rules */ - -*:first-child+html a.mceButtonNormal img, *:first-child+html a.mceButtonSelected img, *:first-child+html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;} -*:first-child+html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;} -*:first-child+html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;} -*:first-child+html a.mceButtonNormal, *:first-child+html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;} -*:first-child+html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;} -*:first-child+html a.mceButtonNormal:hover, *:first-child+html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;} -*:first-child+html .mceSelectList {margin-top: 2px;} -*:first-child+html span.mceMenuButton, *:first-child+html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;} -*:first-child+html span.mceMenuButton img, *:first-child+html span.mceMenuButtonSelected img, *:first-child+html span.mceMenuButtonFocus img {position: relative; top: 1px;} -*:first-child+html a.mceMoreColors {width: 137px;} -*:first-child+html .mceColors td a {width: 10px; height: 10px;} -*:first-child+html .mceColorPreview {margin: 0; padding-left: 4px; margin-top: 14px; width: 14px;} +/* This file contains the CSS data for the editor UI of TinyMCE instances */ + +.mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover {border: 0; margin: 0; padding: 0; background: transparent;} +.mceSeparatorLine {border: 0; padding: 0; margin-left: 4px; margin-right: 2px;} +.mceSelectList {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 7pt !important; font-weight: normal; margin-top: 3px; padding: 0; display: inline; vertical-align: top; background-color: #F0F0EE;} +.mceLabel, .mceLabelDisabled {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt;} +.mceLabel {color: #000000;} +.mceLabelDisabled {cursor: text; color: #999999;} +.mceEditor {background: #F0F0EE; border: 1px solid #cccccc; padding: 0; margin: 0;} +.mceEditorArea { font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; background: #FFFFFF; padding: 0; margin: 0; } +.mceToolbarTop, .mceToolbarBottom {background: #F0F0EE; line-height: 1px; font-size: 1px;} +.mceToolbarTop {border-bottom: 1px solid #cccccc; padding-bottom: 1px;} +.mceToolbarBottom {border-top: 1px solid #cccccc;} +.mceToolbarContainer {display: block; position: relative; left: 0; top: 0; width: 100%;} +.mceStatusbarTop, .mceStatusbarBottom, .mceStatusbar {height: 20px;} +.mceStatusbarTop .mceStatusbarPathText, .mceStatusbarBottom .mceStatusbarPathText, .mceStatusbar .mceStatusbarPathText {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; padding: 2px; line-height: 16px; overflow: visible;} +.mceStatusbarTop {border-bottom: 1px solid #cccccc;} +.mceStatusbarBottom {border-top: 1px solid #cccccc;} +.mceStatusbar {border-bottom: 1px solid #cccccc;} +.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {text-decoration: none; font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; color: #000000;} +.mcePathItem:hover {text-decoration: underline;} +.mceStatusbarPathText {float: left;} +.mceStatusbarResize {float: right; background-image: url('../images/statusbar_resize.gif'); background-repeat: no-repeat; width: 11px; height: 20px; cursor: se-resize;} +.mceResizeBox {width: 10px; height: 10px; display: none; border: 1px dotted gray; margin: 0; padding: 0;} +.mceEditorIframe {border: 0;} + +/* Button CSS rules */ + +a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {width: 20px; height: 20px; cursor: default; margin-top: 1px; margin-left: 1px;} +a.mceButtonDisabled img {border: 0 !important;} +a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;} +a.mceButtonSelected img {border: 1px solid #6779AA !important; background-color: #D4D5D8;} +a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;} +a.mceButtonDisabled img {-moz-opacity:0.3; opacity: 0.3; border: 1px solid #F0F0EE !important; cursor: default;} +a.mceTiledButton img {background-image: url('../images/buttons.gif'); background-repeat: no-repeat;} + +/* Menu button CSS rules */ + +span.mceMenuButton img, span.mceMenuButtonSelected img {border: 1px solid #F0F0EE; margin-left: 1px;} +span.mceMenuButtonSelected img {border: 1px solid #6779AA; background-color: #B6BDD2;} +span.mceMenuButtonSelected img.mceMenuButton {border: 1px solid #F0F0EE; background-color: transparent;} +span.mceMenuButton img.mceMenuButton, span.mceMenuButtonSelected img.mceMenuButton {border-left: 0; margin-left: 0;} +span.mceMenuButton:hover img, span.mceMenuButtonSelected:hover img {border: 1px solid #0A246A; background-color: #B6BDD2;} +span.mceMenuButton:hover img.mceMenuButton, span.mceMenuButtonSelected:hover img.mceMenuButton {border-left: 0;} +span.mceMenuButtonFocus img {border: 1px solid gray; border-right: 0; margin-left: 1px; background-color: #F5F4F2;} +span.mceMenuButtonFocus img.mceMenuButton {border: 1px solid gray; border-left: 1px solid #F5F4F2; margin-left: 0;} +span.mceMenuHover img {border: 1px solid #0A246A; background-color: #B6BDD2;} +span.mceMenuButtonSelected.mceMenuHover img.mceMenuButton {border: 1px solid #0A246A; background-color: #B6BDD2; border-left: 0;} + +/* Menu */ + +.mceMenu {position: absolute; left: 0; top: 0; display: none; z-index: 1000; background-color: white; border: 1px solid gray; font-weight: normal;} +.mceMenu a, .mceMenuTitle, .mceMenuDisabled {display: block; width: 100%; text-decoration: none; background-color: white; font-family: Tahoma, Verdana, Arial, Helvetica; font-size: 11px; line-height: 20px; color: black;} +.mceMenu a:hover {background-color: #B6BDD2; color: black; text-decoration: none !important;} +.mceMenu span {padding-left: 10px; padding-right: 10px; display: block; line-height: 20px;} +.mceMenuSeparator {border-bottom: 1px solid gray; background-color: gray; height: 1px;} +.mceMenuTitle span {padding-left: 5px;} +.mceMenuTitle {background-color: #DDDDDD; font-weight: bold;} +.mceMenuDisabled {color: gray;} +span.mceMenuSelectedItem {background-image: url('../images/menu_check.gif'); background-repeat: no-repeat; background-position: 5px 8px; padding-left: 20px;} +span.mceMenuCheckItem {padding-left: 20px;} +span.mceMenuLine {display: block; position: absolute; left: 0; top: -1px; background-color: #F5F4F2; width: 30px; height: 1px; overflow: hidden; padding-left: 0; padding-right: 0;} +.mceColors table, .mceColors td {margin: 0; padding: 2px;} +a.mceMoreColors {width: auto; padding: 0; margin: 0 3px 3px 3px; text-align: center; border: 1px solid white; text-decoration: none !important;} +.mceColorPreview {position: absolute; overflow:hidden; left: 0; top: 0; margin-left: 3px; margin-top: 15px; width: 16px; height: 4px; background-color: red;} +a.mceMoreColors:hover {border: 1px solid #0A246A;} +.mceColors td a {width: 9px; height: 9px; overflow: hidden; border: 1px solid #808080;} + +/* MSIE 6 specific rules */ + +* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;} +* html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;} +* html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;} +* html a.mceButtonNormal, * html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;} +* html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;} +* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;} +* html .mceSelectList {margin-top: 2px;} +* html span.mceMenuButton, * html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;} +* html span.mceMenuButton img, * html span.mceMenuButtonSelected img, * html span.mceMenuButtonFocus img {position: relative; top: 1px;} +* html a.mceMoreColors {width: auto;} +* html .mceColors td a {width: 10px; height: 10px;} +* html .mceColorPreview {margin-left: 2px; margin-top: 14px;} + +/* MSIE 7 specific rules */ + +*:first-child+html a.mceButtonNormal img, *:first-child+html a.mceButtonSelected img, *:first-child+html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;} +*:first-child+html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;} +*:first-child+html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;} +*:first-child+html a.mceButtonNormal, *:first-child+html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;} +*:first-child+html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;} +*:first-child+html a.mceButtonNormal:hover, *:first-child+html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;} +*:first-child+html .mceSelectList {margin-top: 2px;} +*:first-child+html span.mceMenuButton, *:first-child+html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;} +*:first-child+html span.mceMenuButton img, *:first-child+html span.mceMenuButtonSelected img, *:first-child+html span.mceMenuButtonFocus img {position: relative; top: 1px;} +*:first-child+html a.mceMoreColors {width: 137px;} +*:first-child+html .mceColors td a {width: 10px; height: 10px;} +*:first-child+html .mceColorPreview {margin: 0; padding-left: 4px; margin-top: 14px; width: 14px;} diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/about.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/about.htm similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/about.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/about.htm index a6957a651..b3e434232 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/about.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/about.htm @@ -1,31 +1,31 @@ - - -About TinyMCE - - - - - - - - - - - -
-
-TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla -that enables you to edit HTML contents in a more user friendly way. It has common -features that are found in most word processors and should not be difficult to -use.
-
-
- - - - - - -
- - + + +About TinyMCE + + + + + + + + + + + +
+
+TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla +that enables you to edit HTML contents in a more user friendly way. It has common +features that are found in most word processors and should not be difficult to +use.
+
+
+ + + + + + +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm index 518b28551..3975a88db 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm @@ -1,162 +1,162 @@ - - -Common buttons - - - - - - - - - - - -
-
-Below is a short description about each button. -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Bold text iconBold text style (Ctrl+B).
Italic text iconItalic text style (Ctrl+I).
Underline text icon.Underline text style (Ctrl+U).
Strikethrough text icon.Strikethrough text style.
Align left icon.Align left.
Align center icon.Align center.
Align right icon.Align right.
Align full icon.Align full.
Unordered list/bullet list icon.Unordered list/bullet list.
Ordered list/numbered list icon.Ordered list/numbered list
Outdent/decrease indentation icon.Outdent/decrease indentation.
Indent/increase indentation icon.Indent/increase indentation.
Undo the last operation.Undo the last operation (Ctrl+Z).
Redo the last operation icon.Redo the last operation (Ctrl+Y).
Insert a new link icon.Insert a new link, read more about this function in the Insert - link section.
Unlinks the current selection icon.Unlinks the current selection/removes all selected links.
Insert a new anchor icon.Insert a new anchor, read more about this function in the Insert anchor section.
Insert a new image icon.Insert a new image, read more about this function in the Insert - image section.
Cleanup code icon.Cleanup code/Removes unwanted formating. This function is useful when - you copy contents from for example a office product.
Show help icon.Shows this help window.
Source code editor icon.Opens HTML source code editor.
Insert table icon.Inserts a new table at the current location.
Adds a row above icon.Adds a row above the current one.
Adds a row under icon.Adds a row under the current one.
Remove row icon.Removes the row.
Add column before icon.Adds a column before the current one.
Add column after icon.Adds a column after the current one.
Remove column icon.Removes the current column.
Insert horizontal ruler icon.Inserts a new horizontal ruler
Remove formatting icon.Removes formatting from the selection.
Subscript icon.Makes the selection to be subscript.
Superscript icon.Makes the selection to be superscripted.
-
-
- - - - - - - - + + +Common buttons + + + + + + + + + + + +
+
+Below is a short description about each button. +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Bold text iconBold text style (Ctrl+B).
Italic text iconItalic text style (Ctrl+I).
Underline text icon.Underline text style (Ctrl+U).
Strikethrough text icon.Strikethrough text style.
Align left icon.Align left.
Align center icon.Align center.
Align right icon.Align right.
Align full icon.Align full.
Unordered list/bullet list icon.Unordered list/bullet list.
Ordered list/numbered list icon.Ordered list/numbered list
Outdent/decrease indentation icon.Outdent/decrease indentation.
Indent/increase indentation icon.Indent/increase indentation.
Undo the last operation.Undo the last operation (Ctrl+Z).
Redo the last operation icon.Redo the last operation (Ctrl+Y).
Insert a new link icon.Insert a new link, read more about this function in the Insert + link section.
Unlinks the current selection icon.Unlinks the current selection/removes all selected links.
Insert a new anchor icon.Insert a new anchor, read more about this function in the Insert anchor section.
Insert a new image icon.Insert a new image, read more about this function in the Insert + image section.
Cleanup code icon.Cleanup code/Removes unwanted formating. This function is useful when + you copy contents from for example a office product.
Show help icon.Shows this help window.
Source code editor icon.Opens HTML source code editor.
Insert table icon.Inserts a new table at the current location.
Adds a row above icon.Adds a row above the current one.
Adds a row under icon.Adds a row under the current one.
Remove row icon.Removes the row.
Add column before icon.Adds a column before the current one.
Add column after icon.Adds a column after the current one.
Remove column icon.Removes the current column.
Insert horizontal ruler icon.Inserts a new horizontal ruler
Remove formatting icon.Removes formatting from the selection.
Subscript icon.Makes the selection to be subscript.
Superscript icon.Makes the selection to be superscripted.
+
+
+ + + + + + + + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm similarity index 98% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm index f4070a31d..eacfbe259 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm @@ -1,45 +1,45 @@ - - -Insert table button - - - - - - - - - - - -
-

TinyMCE can create HTML content that will be accessible to all users, including those with disabilities using assistive technologies, as well as those using text-based browsers, or those browsing the Web with images turned off.

- -

Things you can do to make your content accessible:

-
    -
  1. Include an Image Description: Blind users, or others who are unable to view images, will rely on the Image Description (or Alt text) to take the place of the image. If an image contains no meaning, such as a decoration or a spacer image, leave the Image Description empty. TinyMCE will then insert an empty Alt text attribute that will force assistive technologies to ignore the image.

  2. - -
  3. Add Scope to data table header cells: In the table cell editor dialog window, choose a Scope when creating Header cells so the column or row label in that cell becomes explicitely associated with its data cells. Table cell headers will then be announced with each data cell, making it easier for blind users using a screen reader to understand what the content of each cell represents.

  4. - -
  5. Structure content with properly nested headings: In the format selection menu choose Heading 1 to Heading 6 to represent headings in your content, rather than using other font formating options. Blind users using a screen reader can then extract the headings from the page to generate a summary of the content it contains, and use those headings to navigate quickly to subsections within the page.

  6. - -
  7. Include alternate content: Create an alternate page for non-HTML content such as Flash, Java applets, or embedded movies. This might be a static image, with a description of the image, and a description of the content that would have appeared in its place. An alternate HTML page could also be created, and a link to it included next to the non-HTML object. This will ensure that the content will be accessible to users of assistive technologies that can not view or play the content, and ensure the content will be available to those who do not have the appropriate plugin or helper application installed.

  8. - -
  9. Check accessbility: When the AChecker plugin is installed with TinyMCE, click on the Check Accessibility button to generate a report of potential accessibility problems.

  10. - -
- -

See the AChecker Web Site for further details about creating content that will be accessible to all users.
-

- -
- - - - - - - -
- - + + +Insert table button + + + + + + + + + + + +
+

TinyMCE can create HTML content that will be accessible to all users, including those with disabilities using assistive technologies, as well as those using text-based browsers, or those browsing the Web with images turned off.

+ +

Things you can do to make your content accessible:

+
    +
  1. Include an Image Description: Blind users, or others who are unable to view images, will rely on the Image Description (or Alt text) to take the place of the image. If an image contains no meaning, such as a decoration or a spacer image, leave the Image Description empty. TinyMCE will then insert an empty Alt text attribute that will force assistive technologies to ignore the image.

  2. + +
  3. Add Scope to data table header cells: In the table cell editor dialog window, choose a Scope when creating Header cells so the column or row label in that cell becomes explicitely associated with its data cells. Table cell headers will then be announced with each data cell, making it easier for blind users using a screen reader to understand what the content of each cell represents.

  4. + +
  5. Structure content with properly nested headings: In the format selection menu choose Heading 1 to Heading 6 to represent headings in your content, rather than using other font formating options. Blind users using a screen reader can then extract the headings from the page to generate a summary of the content it contains, and use those headings to navigate quickly to subsections within the page.

  6. + +
  7. Include alternate content: Create an alternate page for non-HTML content such as Flash, Java applets, or embedded movies. This might be a static image, with a description of the image, and a description of the content that would have appeared in its place. An alternate HTML page could also be created, and a link to it included next to the non-HTML object. This will ensure that the content will be accessible to users of assistive technologies that can not view or play the content, and ensure the content will be available to those who do not have the appropriate plugin or helper application installed.

  8. + +
  9. Check accessbility: When the AChecker plugin is installed with TinyMCE, click on the Check Accessibility button to generate a report of potential accessibility problems.

  10. + +
+ +

See the AChecker Web Site for further details about creating content that will be accessible to all users.
+

+ +
+ + + + + + + +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/index.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/index.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/index.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/index.htm index 9810a93b0..478011da6 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/index.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/index.htm @@ -1,27 +1,27 @@ - - -Help Index - - - - - - - - - -
-
-Click the links below to go to the different help sections. - -
- - + + +Help Index + + + + + + + + + +
+
+Click the links below to go to the different help sections. + +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm index 332cbc687..ee1c23a75 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm @@ -1,32 +1,32 @@ - - -Insert anchor button - - - - - - - - - - - -
-
-This button opens a new window with the insert/edit anchor function.
-
-Anchor dialog/window
-
-There are one field in this window, this is where you enter the name of you anchor point. Remember the anchor name needs to be unique.
-
-
- - - - - - -
- - + + +Insert anchor button + + + + + + + + + + + +
+
+This button opens a new window with the insert/edit anchor function.
+
+Anchor dialog/window
+
+There are one field in this window, this is where you enter the name of you anchor point. Remember the anchor name needs to be unique.
+
+
+ + + + + + +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm index 1529648d5..9aa5c33c8 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm @@ -1,65 +1,65 @@ - - -Insert image button - - - - - - - - - - - -
-
-The insert image button opens the window shown below.
-
-Insert image dialog/window
-
-You simply enter a URL to the image you want to link to and enter a image description, -this is then displayed as an alternative text descripton of the image on the page.
-
-Field descriptions:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Image URL URL/path to the image.
Image description Alternative description of image contents.
DimentionsImage width/height.
AlignmentImage alignment, useful when wrapping text around images.
BorderBorder thickness.
VSpaceVertical space, useful when wrapping text around images.
HSpaceHorizontal space, useful when wrapping text around images.
-
-
- - - - - - -
- - + + +Insert image button + + + + + + + + + + + +
+
+The insert image button opens the window shown below.
+
+Insert image dialog/window
+
+You simply enter a URL to the image you want to link to and enter a image description, +this is then displayed as an alternative text descripton of the image on the page.
+
+Field descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Image URL URL/path to the image.
Image description Alternative description of image contents.
DimentionsImage width/height.
AlignmentImage alignment, useful when wrapping text around images.
BorderBorder thickness.
VSpaceVertical space, useful when wrapping text around images.
HSpaceHorizontal space, useful when wrapping text around images.
+
+
+ + + + + + +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm index 4f6445076..2f17d46fd 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm @@ -1,33 +1,33 @@ - - -Insert link button - - - - - - - - - - - -
-
-This button opens a new window with the insert/edit link function.
-
-Insert link dialog/window
-
-There are two fields in this window the first one "Link URL" is the -URL of the link. The target enables you to select how the link is to be opened.
-
-
- - - - - - -
- - + + +Insert link button + + + + + + + + + + + +
+
+This button opens a new window with the insert/edit link function.
+
+Insert link dialog/window
+
+There are two fields in this window the first one "Link URL" is the +URL of the link. The target enables you to select how the link is to be opened.
+
+
+ + + + + + +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm index f352a0516..2f1e1ebd0 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm @@ -1,71 +1,71 @@ - - -Insert table button - - - - - - - - - - - -
-
-The insert table button opens the window shown below. This action enables you to create tables.
-
-Image of table window
-
-Field descriptions:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ColumnsNumber of columns in the table.
RowsNumber of rows in the new table.
CellpaddingCellpadding of the table .
CellspacingCellspacing of the table .
AlignmentTable alignment .
BorderBorder thinkness of table.
WidthWidth in pixels of table .
HeightHeight in pixels of table.
ClassStyle or CSS class of table.
-
-
-
- - - - - - -
- - + + +Insert table button + + + + + + + + + + + +
+
+The insert table button opens the window shown below. This action enables you to create tables.
+
+Image of table window
+
+Field descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ColumnsNumber of columns in the table.
RowsNumber of rows in the new table.
CellpaddingCellpadding of the table .
CellspacingCellspacing of the table .
AlignmentTable alignment .
BorderBorder thinkness of table.
WidthWidth in pixels of table .
HeightHeight in pixels of table.
ClassStyle or CSS class of table.
+
+
+
+ + + + + + +
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/style.css b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/style.css similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/style.css rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/style.css index ebc05380e..cdf74e88f 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/style.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/docs/en/style.css @@ -1,28 +1,28 @@ -body { background-color: #FFFFFF; } -body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } -.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } -.subtitle { font-size: 12px; font-weight: bold; } - -.toc_ul, .toc_li { margin-left: 8px; line-height: 16px; } -.step_ol, .step_li { margin-left: 11px; line-height: 16px; } -img { border: #000000 solid 1px; } - -a:visited { color: #666666; text-decoration: underline; } -a:active { color: #666666; text-decoration: underline; } -a:hover { color: #666666; text-decoration: underline; } -a { color: #666666; text-decoration: underline; } - -.pageheader { border: #E0E0E0 solid 1px; } -.pagefooter { border: #E0E0E0 solid 1px; } -.sample { background-color: #FFFFFF; border: #000000 solid 1px; } -.samplecontent { font-size: 10px; } - -.code { background-color: #FFFFFF; border: #000000 solid 1px; } -.codecontent { font-size: 10px; } -.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } -.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } -.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } -.codecontent a { color: #666666; text-decoration: none; font-weight: bold } - -hr { height: 1px; } - +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js index d41f21c33..77f148af4 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js @@ -1,1516 +1,1516 @@ -/** - * $Id: editor_template_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -/* Import theme specific language pack */ -tinyMCE.importThemeLanguagePack('advanced'); - -var TinyMCE_AdvancedTheme = { - // Private theme fields - _defColors : "000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF", - _autoImportCSSClasses : true, - _resizer : {}, - _buttons : [ - // Control id, button img, button title, command, user_interface, value - ['bold', '{$lang_bold_img}', 'lang_bold_desc', 'Bold'], - ['italic', '{$lang_italic_img}', 'lang_italic_desc', 'Italic'], - ['underline', '{$lang_underline_img}', 'lang_underline_desc', 'Underline'], - ['strikethrough', 'strikethrough.gif', 'lang_striketrough_desc', 'Strikethrough'], - ['justifyleft', 'justifyleft.gif', 'lang_justifyleft_desc', 'JustifyLeft'], - ['justifycenter', 'justifycenter.gif', 'lang_justifycenter_desc', 'JustifyCenter'], - ['justifyright', 'justifyright.gif', 'lang_justifyright_desc', 'JustifyRight'], - ['justifyfull', 'justifyfull.gif', 'lang_justifyfull_desc', 'JustifyFull'], - ['bullist', 'bullist.gif', 'lang_bullist_desc', 'InsertUnorderedList'], - ['numlist', 'numlist.gif', 'lang_numlist_desc', 'InsertOrderedList'], - ['outdent', 'outdent.gif', 'lang_outdent_desc', 'Outdent'], - ['indent', 'indent.gif', 'lang_indent_desc', 'Indent'], - ['cut', 'cut.gif', 'lang_cut_desc', 'Cut'], - ['copy', 'copy.gif', 'lang_copy_desc', 'Copy'], - ['paste', 'paste.gif', 'lang_paste_desc', 'Paste'], - ['undo', 'undo.gif', 'lang_undo_desc', 'Undo'], - ['redo', 'redo.gif', 'lang_redo_desc', 'Redo'], - ['link', 'link.gif', 'lang_link_desc', 'mceLink', true], - ['unlink', 'unlink.gif', 'lang_unlink_desc', 'unlink'], - ['image', 'image.gif', 'lang_image_desc', 'mceImage', true], - ['cleanup', 'cleanup.gif', 'lang_cleanup_desc', 'mceCleanup'], - ['help', 'help.gif', 'lang_help_desc', 'mceHelp'], - ['code', 'code.gif', 'lang_theme_code_desc', 'mceCodeEditor'], - ['hr', 'hr.gif', 'lang_theme_hr_desc', 'inserthorizontalrule'], - ['removeformat', 'removeformat.gif', 'lang_theme_removeformat_desc', 'removeformat'], - ['sub', 'sub.gif', 'lang_theme_sub_desc', 'subscript'], - ['sup', 'sup.gif', 'lang_theme_sup_desc', 'superscript'], - ['forecolor', 'forecolor.gif', 'lang_theme_forecolor_desc', 'forecolor', true], - ['forecolorpicker', 'forecolor.gif', 'lang_theme_forecolor_desc', 'forecolorpicker', true], - ['backcolor', 'backcolor.gif', 'lang_theme_backcolor_desc', 'HiliteColor', true], - ['backcolorpicker', 'backcolor.gif', 'lang_theme_backcolor_desc', 'backcolorpicker', true], - ['charmap', 'charmap.gif', 'lang_theme_charmap_desc', 'mceCharMap'], - ['visualaid', 'visualaid.gif', 'lang_theme_visualaid_desc', 'mceToggleVisualAid'], - ['anchor', 'anchor.gif', 'lang_theme_anchor_desc', 'mceInsertAnchor'], - ['newdocument', 'newdocument.gif', 'lang_newdocument_desc', 'mceNewDocument'] - ], - - _buttonMap : 'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells,delete_table', - - /** - * Returns HTML code for the specificed control. - */ - getControlHTML : function(button_name) { - var i, x, but; - - // Lookup button in button list - for (i=0; i 4 ? but[4] : false), (but.length > 5 ? but[5] : null)); - - if (but[0] == button_name) - return tinyMCE.getButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null)); - } - - // Custom controlls other than buttons - switch (button_name) { - case "formatselect": - var html = ''; - - return html; - - case "styleselect": - return ''; - - case "fontselect": - var fontHTML = ''; - return fontHTML; - - case "fontsizeselect": - return ''; - - case "|": - case "separator": - return ''; - - case "spacer": - return ''; - - case "rowseparator": - return '
'; - } - - return ""; - }, - - /** - * Theme specific execcommand handling. - */ - execCommand : function(editor_id, element, command, user_interface, value) { - switch (command) { - case 'mceHelp': - tinyMCE.openWindow({ - file : 'about.htm', - width : 480, - height : 380 - }, { - tinymce_version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion, - tinymce_releasedate : tinyMCE.releaseDate, - inline : "yes" - }); - return true; - - case "mceLink": - var inst = tinyMCE.getInstanceById(editor_id); - var doc = inst.getDoc(); - var selectedText = ""; - - if (tinyMCE.isMSIE) { - var rng = doc.selection.createRange(); - selectedText = rng.text; - } else - selectedText = inst.getSel().toString(); - - if (!tinyMCE.linkElement) { - if ((tinyMCE.selectedElement.nodeName.toLowerCase() != "img") && (selectedText.length <= 0)) - return true; - } - - var href = "", target = "", title = "", onclick = "", action = "insert", style_class = ""; - - if (tinyMCE.selectedElement.nodeName.toLowerCase() == "a") - tinyMCE.linkElement = tinyMCE.selectedElement; - - // Is anchor not a link - if (tinyMCE.linkElement != null && tinyMCE.getAttrib(tinyMCE.linkElement, 'href') == "") - tinyMCE.linkElement = null; - - if (tinyMCE.linkElement) { - href = tinyMCE.getAttrib(tinyMCE.linkElement, 'href'); - target = tinyMCE.getAttrib(tinyMCE.linkElement, 'target'); - title = tinyMCE.getAttrib(tinyMCE.linkElement, 'title'); - onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick'); - style_class = tinyMCE.getAttrib(tinyMCE.linkElement, 'class'); - - // Try old onclick to if copy/pasted content - if (onclick == "") - onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick'); - - onclick = tinyMCE.cleanupEventStr(onclick); - - href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);"); - - // Use mce_href if defined - mceRealHref = tinyMCE.getAttrib(tinyMCE.linkElement, 'mce_href'); - if (mceRealHref != "") { - href = mceRealHref; - - if (tinyMCE.getParam('convert_urls')) - href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);"); - } - - action = "update"; - } - - var template = new Array(); - - template['file'] = 'link.htm'; - template['width'] = 310; - template['height'] = 200; - - // Language specific width and height addons - template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0); - - if (inst.settings['insertlink_callback']) { - var returnVal = eval(inst.settings['insertlink_callback'] + "(href, target, title, onclick, action, style_class);"); - if (returnVal && returnVal['href']) - TinyMCE_AdvancedTheme._insertLink(returnVal['href'], returnVal['target'], returnVal['title'], returnVal['onclick'], returnVal['style_class']); - } else { - tinyMCE.openWindow(template, {href : href, target : target, title : title, onclick : onclick, action : action, className : style_class, inline : "yes"}); - } - - return true; - - case "mceImage": - var src = "", alt = "", border = "", hspace = "", vspace = "", width = "", height = "", align = ""; - var title = "", onmouseover = "", onmouseout = "", action = "insert"; - var img = tinyMCE.imgElement; - var inst = tinyMCE.getInstanceById(editor_id); - - if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") { - img = tinyMCE.selectedElement; - tinyMCE.imgElement = img; - } - - if (img) { - // Is it a internal MCE visual aid image, then skip this one. - if (tinyMCE.getAttrib(img, 'name').indexOf('mce_') == 0) - return true; - - src = tinyMCE.getAttrib(img, 'src'); - alt = tinyMCE.getAttrib(img, 'alt'); - - // Try polling out the title - if (alt == "") - alt = tinyMCE.getAttrib(img, 'title'); - - // Fix width/height attributes if the styles is specified - if (tinyMCE.isGecko) { - var w = img.style.width; - if (w != null && w != "") - img.setAttribute("width", w); - - var h = img.style.height; - if (h != null && h != "") - img.setAttribute("height", h); - } - - border = tinyMCE.getAttrib(img, 'border'); - hspace = tinyMCE.getAttrib(img, 'hspace'); - vspace = tinyMCE.getAttrib(img, 'vspace'); - width = tinyMCE.getAttrib(img, 'width'); - height = tinyMCE.getAttrib(img, 'height'); - align = tinyMCE.getAttrib(img, 'align'); - onmouseover = tinyMCE.getAttrib(img, 'onmouseover'); - onmouseout = tinyMCE.getAttrib(img, 'onmouseout'); - title = tinyMCE.getAttrib(img, 'title'); - - // Is realy specified? - if (tinyMCE.isMSIE) { - width = img.attributes['width'].specified ? width : ""; - height = img.attributes['height'].specified ? height : ""; - } - - //onmouseover = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseover)); - //onmouseout = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseout)); - - src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);"); - - // Use mce_src if defined - mceRealSrc = tinyMCE.getAttrib(img, 'mce_src'); - if (mceRealSrc != "") { - src = mceRealSrc; - - if (tinyMCE.getParam('convert_urls')) - src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);"); - } - - //if (onmouseover != "") - // onmouseover = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, img, true);"); - - //if (onmouseout != "") - // onmouseout = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, img, true);"); - - action = "update"; - } - - var template = new Array(); - - template['file'] = 'image.htm?src={$src}'; - template['width'] = 355; - template['height'] = 265 + (tinyMCE.isMSIE ? 25 : 0); - - // Language specific width and height addons - template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0); - - if (inst.settings['insertimage_callback']) { - var returnVal = eval(inst.settings['insertimage_callback'] + "(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);"); - if (returnVal && returnVal['src']) - TinyMCE_AdvancedTheme._insertImage(returnVal['src'], returnVal['alt'], returnVal['border'], returnVal['hspace'], returnVal['vspace'], returnVal['width'], returnVal['height'], returnVal['align'], returnVal['title'], returnVal['onmouseover'], returnVal['onmouseout']); - } else - tinyMCE.openWindow(template, {src : src, alt : alt, border : border, hspace : hspace, vspace : vspace, width : width, height : height, align : align, title : title, onmouseover : onmouseover, onmouseout : onmouseout, action : action, inline : "yes"}); - - return true; - - case "forecolor": - var fcp = new TinyMCE_Layer(editor_id + '_fcPreview', false), p, img, elm; - - TinyMCE_AdvancedTheme._hideMenus(editor_id); - - if (!fcp.exists()) { - fcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar')); - elm = fcp.getElement(); - elm._editor_id = editor_id; - elm._command = "forecolor"; - elm._switchId = editor_id + "_forecolor"; - tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent); - tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent); - tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent); - } - - img = tinyMCE.selectNodes(document.getElementById(editor_id + "_forecolor"), function(n) {return n.nodeName == "IMG";})[0]; - p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar')); - - fcp.moveTo(p.absLeft, p.absTop); - fcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).foreColor; - fcp.show(); - - return false; - - case "forecolorpicker": - this._pickColor(editor_id, 'forecolor'); - return true; - - case "forecolorMenu": - TinyMCE_AdvancedTheme._hideMenus(editor_id); - - // Create color layer - var ml = new TinyMCE_Layer(editor_id + '_fcMenu'); - - if (!ml.exists()) - ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_text_colors', 'forecolor')); - - tinyMCE.switchClass(editor_id + '_forecolor', 'mceMenuButtonFocus'); - ml.moveRelativeTo(document.getElementById(editor_id + "_forecolor"), 'bl'); - - ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1); - - if (tinyMCE.isOpera) - ml.moveBy(0, -2); - - ml.show(); - return true; - - case "HiliteColor": - var bcp = new TinyMCE_Layer(editor_id + '_bcPreview', false), p, img; - - TinyMCE_AdvancedTheme._hideMenus(editor_id); - - if (!bcp.exists()) { - bcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar')); - elm = bcp.getElement(); - elm._editor_id = editor_id; - elm._command = "HiliteColor"; - elm._switchId = editor_id + "_backcolor"; - tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent); - tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent); - tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent); - } - - img = tinyMCE.selectNodes(document.getElementById(editor_id + "_backcolor"), function(n) {return n.nodeName == "IMG";})[0]; - p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar')); - - bcp.moveTo(p.absLeft, p.absTop); - bcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).backColor; - bcp.show(); - - return false; - - case "HiliteColorMenu": - TinyMCE_AdvancedTheme._hideMenus(editor_id); - - // Create color layer - var ml = new TinyMCE_Layer(editor_id + '_bcMenu'); - - if (!ml.exists()) - ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_background_colors', 'HiliteColor')); - - tinyMCE.switchClass(editor_id + '_backcolor', 'mceMenuButtonFocus'); - ml.moveRelativeTo(document.getElementById(editor_id + "_backcolor"), 'bl'); - - ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1); - - if (tinyMCE.isOpera) - ml.moveBy(0, -2); - - ml.show(); - return true; - - case "backcolorpicker": - this._pickColor(editor_id, 'HiliteColor'); - return true; - - case "mceColorPicker": - if (user_interface) { - var template = []; - - if (!value['callback'] && !value['color']) - value['color'] = value['document'].getElementById(value['element_id']).value; - - template['file'] = 'color_picker.htm'; - template['width'] = 380; - template['height'] = 250; - template['close_previous'] = "no"; - - template['width'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height', 0); - - if (typeof(value['store_selection']) == "undefined") - value['store_selection'] = true; - - tinyMCE.lastColorPickerValue = value; - tinyMCE.openWindow(template, {editor_id : editor_id, mce_store_selection : value['store_selection'], inline : "yes", command : "mceColorPicker", input_color : value['color']}); - } else { - var savedVal = tinyMCE.lastColorPickerValue, elm; - - if (savedVal['callback']) { - savedVal['callback'](value); - return true; - } - - elm = savedVal['document'].getElementById(savedVal['element_id']); - elm.value = value; - - if (elm.onchange != null && elm.onchange != '') - eval('elm.onchange();'); - } - return true; - - case "mceCodeEditor": - var template = new Array(); - - template['file'] = 'source_editor.htm'; - template['width'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_width", 720)); - template['height'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_height", 580)); - - tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "no", inline : "yes"}); - return true; - - case "mceCharMap": - var template = new Array(); - - template['file'] = 'charmap.htm'; - template['width'] = 550 + (tinyMCE.isOpera ? 40 : 0); - template['height'] = 250; - - template['width'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_height', 0); - - tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); - return true; - - case "mceInsertAnchor": - var template = new Array(); - - template['file'] = 'anchor.htm'; - template['width'] = 320; - template['height'] = 90 + (tinyMCE.isNS7 ? 30 : 0); - - template['width'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_width', 0); - template['height'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_height', 0); - - tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); - return true; - - case "mceNewDocument": - if (confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_newdocument')))) - tinyMCE.execInstanceCommand(editor_id, 'mceSetContent', false, ' '); - - return true; - } - - return false; - }, - - /** - * Editor instance template function. - */ - getEditorTemplate : function(settings, editorId) { - function removeFromArray(in_array, remove_array) { - var outArray = new Array(), skip; - - for (var i=0; i 

'; - var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager", "SimpleLayout"); - - // Setup style select options -- MOVED UP FOR EXTERNAL TOOLBAR COMPATABILITY! - var styleSelectHTML = ''; - if (settings['theme_advanced_styles']) { - var stylesAr = settings['theme_advanced_styles'].split(';'); - - for (var i=0; i' + key + ''; - } - - TinyMCE_AdvancedTheme._autoImportCSSClasses = false; - } - - switch(layoutManager) { - case "SimpleLayout" : //the default TinyMCE Layout (for backwards compatibility)... - var toolbarHTML = ""; - var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom"); - var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center"); - var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none"); // Compatiblity - var statusbarLocation = tinyMCE.getParam("theme_advanced_statusbar_location", pathLocation); - var defVals = { - theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect", - theme_advanced_buttons2 : "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code", - theme_advanced_buttons3 : "hr,removeformat,visualaid,separator,sub,sup,separator,charmap" - }; - - // Add accessibility control - toolbarHTML += ' 0) { - toolbarHTML += "
"; - deltaHeight -= 23; - } - } - - // Add accessibility control - toolbarHTML += '
'; - - // Setup template html - template['html'] = ''; - - if (toolbarLocation == "top") - template['html'] += ''; - - if (statusbarLocation == "top") { - template['html'] += ''; - deltaHeight -= 23; - } - - template['html'] += ''; - - if (toolbarLocation == "bottom") - template['html'] += ''; - - // External toolbar changes - if (toolbarLocation == "external") { - var bod = document.body; - var elm = document.createElement ("div"); - - toolbarHTML = tinyMCE.replaceVar(toolbarHTML, 'style_select_options', styleSelectHTML); - toolbarHTML = tinyMCE.applyTemplate(toolbarHTML, {editor_id : editorId}); - - elm.className = "mceToolbarExternal"; - elm.id = editorId+"_toolbar"; - elm.innerHTML = '
' + toolbarHTML + '
' + statusbarHTML + '
' + toolbarHTML + '
'+toolbarHTML+'
'; - bod.appendChild (elm); - // bod.style.marginTop = elm.offsetHeight + "px"; - - deltaHeight = 0; - tinyMCE.getInstanceById(editorId).toolbarElement = elm; - - //template['html'] = '
'+toolbarHTML+'
' + template["html"]; - } else { - tinyMCE.getInstanceById(editorId).toolbarElement = null; - } - - if (statusbarLocation == "bottom") { - template['html'] += '' + statusbarHTML + ''; - deltaHeight -= 23; - } - - template['html'] += ''; - //"SimpleLayout" - break; - - case "RowLayout" : //Container Layout - containers defined in "theme_advanced_containers" are rendered from top to bottom. - template['html'] = ''; - - var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ","); - var defaultContainerCSS = tinyMCE.getParam("theme_advanced_containers_default_class", "container"); - var defaultContainerAlign = tinyMCE.getParam("theme_advanced_containers_default_align", "center"); - - //Render Containers: - for (var i = 0; i < containers.length; i++) - { - if (containers[i] == "mceEditor") //Exceptions for mceEditor and ... - template['html'] += ''; - else if (containers[i] == "mceElementpath" || containers[i] == "mceStatusbar") // ... mceElementpath: - { - var pathClass = "mceStatusbar"; - - if (i == containers.length-1) - { - pathClass = "mceStatusbarBottom"; - } - else if (i == 0) - { - pathClass = "mceStatusbar"; - } - else - { - deltaHeight-=2; - } - - template['html'] += ''; - deltaHeight -= 22; - } else { // Render normal Container - var curContainer = tinyMCE.getParam("theme_advanced_container_"+containers[i], "", true, ','); - var curContainerHTML = ""; - var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign); - var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS); - - curContainer = removeFromArray(curContainer, tinyMCE.getParam("theme_advanced_disable", "", true, ',')); - - for (var j=0; j 0) { - curContainerHTML += "
"; - deltaHeight -= 23; - } - - template['html'] += '
'; - } - } - - template['html'] += '
' + statusbarHTML + '
' + curContainerHTML + '
'; - //RowLayout - break; - - case "CustomLayout" : //User defined layout callback... - var customLayout = tinyMCE.getParam("theme_advanced_custom_layout",""); - - if (customLayout != "" && eval("typeof(" + customLayout + ")") != "undefined") { - template = eval(customLayout + "(template);"); - } - break; - } - - if (resizing) - template['html'] += ''; - - template['html'] = tinyMCE.replaceVar(template['html'], 'style_select_options', styleSelectHTML); - - // Set to default values - if (!template['delta_width']) - template['delta_width'] = 0; - - if (!template['delta_height']) - template['delta_height'] = deltaHeight; - - return template; - }, - - initInstance : function(inst) { - if (tinyMCE.getParam("theme_advanced_resizing", false)) { - if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) { - var w = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_width"); - var h = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_height"); - - TinyMCE_AdvancedTheme._resizeTo(inst, w, h, tinyMCE.getParam("theme_advanced_resize_horizontal", true)); - } - } - - inst.addShortcut('ctrl', 'k', 'lang_link_desc', 'mceLink'); - }, - - removeInstance : function(inst) { - new TinyMCE_Layer(inst.editorId + '_fcMenu').remove(); - new TinyMCE_Layer(inst.editorId + '_bcMenu').remove(); - }, - - hideInstance : function(inst) { - TinyMCE_AdvancedTheme._hideMenus(inst.editorId); - }, - - _handleMenuEvent : function(e) { - var te = tinyMCE.isMSIE ? window.event.srcElement : e.target; - tinyMCE._menuButtonEvent(e.type == "mouseover" ? "over" : "out", document.getElementById(te._switchId)); - - if (e.type == "click") - tinyMCE.execInstanceCommand(te._editor_id, te._command); - }, - - _hideMenus : function(id) { - var fcml = new TinyMCE_Layer(id + '_fcMenu'), bcml = new TinyMCE_Layer(id + '_bcMenu'); - - if (fcml.exists() && fcml.isVisible()) { - tinyMCE.switchClass(id + '_forecolor', 'mceMenuButton'); - fcml.hide(); - } - - if (bcml.exists() && bcml.isVisible()) { - tinyMCE.switchClass(id + '_backcolor', 'mceMenuButton'); - bcml.hide(); - } - }, - - /** - * Node change handler. - */ - handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection, setup_content) { - var alignNode, breakOut, classNode; - - function selectByValue(select_elm, value, first_index) { - first_index = typeof(first_index) == "undefined" ? false : true; - - if (select_elm) { - for (var i=0; i=0; i--) { - var nodeName = path[i].nodeName.toLowerCase(); - var nodeData = ""; - - if (nodeName.indexOf("html:") == 0) - nodeName = nodeName.substring(5); - - if (nodeName == "b") { - nodeName = "strong"; - } - - if (nodeName == "i") { - nodeName = "em"; - } - - if (nodeName == "span") { - var cn = tinyMCE.getAttrib(path[i], "class"); - if (cn != "" && cn.indexOf('mceItem') == -1) - nodeData += "class: " + cn + " "; - - var st = tinyMCE.getAttrib(path[i], "style"); - if (st != "") { - st = tinyMCE.serializeStyle(tinyMCE.parseStyle(st)); - nodeData += "style: " + tinyMCE.xmlEncode(st) + " "; - } - } - - if (nodeName == "font") { - if (tinyMCE.getParam("convert_fonts_to_spans")) - nodeName = "span"; - - var face = tinyMCE.getAttrib(path[i], "face"); - if (face != "") - nodeData += "font: " + tinyMCE.xmlEncode(face) + " "; - - var size = tinyMCE.getAttrib(path[i], "size"); - if (size != "") - nodeData += "size: " + tinyMCE.xmlEncode(size) + " "; - - var color = tinyMCE.getAttrib(path[i], "color"); - if (color != "") - nodeData += "color: " + tinyMCE.xmlEncode(color) + " "; - } - - if (tinyMCE.getAttrib(path[i], 'id') != "") { - nodeData += "id: " + path[i].getAttribute('id') + " "; - } - - var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false); - if (className != "" && className.indexOf('mceItem') == -1) - nodeData += "class: " + className + " "; - - if (tinyMCE.getAttrib(path[i], 'src') != "") { - var src = tinyMCE.getAttrib(path[i], "mce_src"); - - if (src == "") - src = tinyMCE.getAttrib(path[i], "src"); - - nodeData += "src: " + tinyMCE.xmlEncode(src) + " "; - } - - if (path[i].nodeName == 'A' && tinyMCE.getAttrib(path[i], 'href') != "") { - var href = tinyMCE.getAttrib(path[i], "mce_href"); - - if (href == "") - href = tinyMCE.getAttrib(path[i], "href"); - - nodeData += "href: " + tinyMCE.xmlEncode(href) + " "; - } - - className = tinyMCE.getAttrib(path[i], "class"); - if ((nodeName == "img" || nodeName == "span") && className.indexOf('mceItem') != -1) { - nodeName = className.replace(/mceItem([a-z]+)/gi, '$1').toLowerCase(); - nodeData = path[i].getAttribute('title'); - } - - if (nodeName == "a" && (anchor = tinyMCE.getAttrib(path[i], "name")) != "") { - nodeName = "a"; - nodeName += "#" + tinyMCE.xmlEncode(anchor); - nodeData = ""; - } - - if (tinyMCE.getAttrib(path[i], 'name').indexOf("mce_") != 0) { - var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false); - if (className != "" && className.indexOf('mceItem') == -1) { - nodeName += "." + className; - } - } - - var cmd = 'tinyMCE.execInstanceCommand(\'' + editor_id + '\',\'mceSelectNodeDepth\',false,\'' + i + '\');'; - html += '' + nodeName + ''; - - if (i > 0) { - html += " » "; - } - } - - pathElm.innerHTML = '' + tinyMCE.getLang('lang_theme_path') + ": " + html + ' '; - } - - // Reset old states - tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_sub', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_sup', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_link', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_unlink', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_image', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_hr', 'mceButtonNormal'); - - if (node.nodeName == "A" && tinyMCE.getAttrib(node, "class").indexOf('mceItemAnchor') != -1) - tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonSelected'); - - // Get link - var anchorLink = tinyMCE.getParentElement(node, "a", "href"); - - if (anchorLink || any_selection) { - tinyMCE.switchClass(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal'); - } - - // Handle visual aid - tinyMCE.switchClass(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal'); - - if (undo_levels != -1) { - tinyMCE.switchClass(editor_id + '_undo', 'mceButtonDisabled'); - tinyMCE.switchClass(editor_id + '_redo', 'mceButtonDisabled'); - } - - // Within li, blockquote - if (tinyMCE.getParentElement(node, "li,blockquote")) - tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonNormal'); - - // Has redo levels - if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0)) - tinyMCE.switchClass(editor_id + '_redo', 'mceButtonNormal'); - - // Has undo levels - if (undo_index != -1 && (undo_index > 0 && undo_levels > 0)) - tinyMCE.switchClass(editor_id + '_undo', 'mceButtonNormal'); - - // Select class in select box - var selectElm = document.getElementById(editor_id + "_styleSelect"); - - if (selectElm) { - TinyMCE_AdvancedTheme._setupCSSClasses(editor_id); - - classNode = node; - breakOut = false; - var index = 0; - - do { - if (classNode && classNode.className) { - for (var i=0; i"); - else - selectByValue(selectElm, ""); - } - - // Select fontselect - var selectElm = document.getElementById(editor_id + "_fontNameSelect"); - if (selectElm) { - if (!tinyMCE.isSafari && !(tinyMCE.isMSIE && !tinyMCE.isOpera)) { - var face = inst.queryCommandValue('FontName'); - - face = face == null || face == "" ? "" : face; - - selectByValue(selectElm, face, face != ""); - } else { - var elm = tinyMCE.getParentElement(node, "font", "face"); - - if (elm) { - var family = tinyMCE.getAttrib(elm, "face"); - - if (family == '') - family = '' + elm.style.fontFamily; - - if (!selectByValue(selectElm, family, family != "")) - selectByValue(selectElm, ""); - } else - selectByValue(selectElm, ""); - } - } - - // Select fontsize - var selectElm = document.getElementById(editor_id + "_fontSizeSelect"); - if (selectElm) { - if (!tinyMCE.isSafari && !tinyMCE.isOpera) { - var size = inst.queryCommandValue('FontSize'); - selectByValue(selectElm, size == null || size == "" ? "0" : size); - } else { - var elm = tinyMCE.getParentElement(node, "font", "size"); - if (elm) { - var size = tinyMCE.getAttrib(elm, "size"); - - if (size == '') { - var sizes = new Array('', '8px', '10px', '12px', '14px', '18px', '24px', '36px'); - - size = '' + elm.style.fontSize; - - for (var i=0; i 0) - selectElm.setAttribute('cssImported', 'true'); - } - }, - - _setCookie : function(name, value, expires, path, domain, secure) { - var curCookie = name + "=" + escape(value) + - ((expires) ? "; expires=" + expires.toGMTString() : "") + - ((path) ? "; path=" + escape(path) : "") + - ((domain) ? "; domain=" + domain : "") + - ((secure) ? "; secure" : ""); - - document.cookie = curCookie; - }, - - _getCookie : function(name) { - var dc = document.cookie; - var prefix = name + "="; - var begin = dc.indexOf("; " + prefix); - - if (begin == -1) { - begin = dc.indexOf(prefix); - - if (begin != 0) - return null; - } else - begin += 2; - - var end = document.cookie.indexOf(";", begin); - - if (end == -1) - end = dc.length; - - return unescape(dc.substring(begin + prefix.length, end)); - }, - - _resizeTo : function(inst, w, h, set_w) { - var editorContainer = document.getElementById(inst.editorId + '_parent'); - var tableElm = editorContainer.firstChild; - var iframe = inst.iframeElement; - - if (w == null || w == "null") { - set_w = false; - w = 0; - } - - if (h == null || h == "null") - return; - - w = parseInt(w); - h = parseInt(h); - - if (tinyMCE.isGecko) { - w += 2; - h += 2; - } - - var dx = w - tableElm.clientWidth; - var dy = h - tableElm.clientHeight; - - w = w < 1 ? 30 : w; - h = h < 1 ? 30 : h; - - if (set_w) - tableElm.style.width = w + "px"; - - tableElm.style.height = h + "px"; - - iw = iframe.clientWidth + dx; - ih = iframe.clientHeight + dy; - - iw = iw < 1 ? 30 : iw; - ih = ih < 1 ? 30 : ih; - - if (tinyMCE.isGecko) { - iw -= 2; - ih -= 2; - } - - if (set_w) - iframe.style.width = iw + "px"; - - iframe.style.height = ih + "px"; - - // Is it to small, make it bigger again - if (set_w) { - var tableBodyElm = tableElm.firstChild; - var minIframeWidth = tableBodyElm.scrollWidth; - if (inst.iframeElement.clientWidth < minIframeWidth) { - dx = minIframeWidth - inst.iframeElement.clientWidth; - - inst.iframeElement.style.width = (iw + dx) + "px"; - } - } - - // Remove pesky table controls - inst.useCSS = false; - }, - - /** - * Handles resizing events. - */ - _resizeEventHandler : function(e) { - var resizer = TinyMCE_AdvancedTheme._resizer; - - // Do nothing - if (!resizer.resizing) - return; - - e = typeof(e) == "undefined" ? window.event : e; - - var dx = e.screenX - resizer.downX; - var dy = e.screenY - resizer.downY; - var resizeBox = resizer.resizeBox; - var editorId = resizer.editorId; - - switch (e.type) { - case "mousemove": - var w, h; - - w = resizer.width + dx; - h = resizer.height + dy; - - w = w < 1 ? 1 : w; - h = h < 1 ? 1 : h; - - if (resizer.horizontal) - resizeBox.style.width = w + "px"; - - resizeBox.style.height = h + "px"; - break; - - case "mouseup": - TinyMCE_AdvancedTheme._setResizing(e, editorId, false); - TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId), resizer.width + dx, resizer.height + dy, resizer.horizontal); - - // Expire in a month - if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) { - var expires = new Date(); - expires.setTime(expires.getTime() + 3600000 * 24 * 30); - - // Set the cookies - TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_width", "" + (resizer.horizontal ? resizer.width + dx : ""), expires); - TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_height", "" + (resizer.height + dy), expires); - } - break; - } - }, - - /** - * Starts/stops the editor resizing. - */ - _setResizing : function(e, editor_id, state) { - e = typeof(e) == "undefined" ? window.event : e; - - var resizer = TinyMCE_AdvancedTheme._resizer; - var editorContainer = document.getElementById(editor_id + '_parent'); - var editorArea = document.getElementById(editor_id + '_parent').firstChild; - var resizeBox = document.getElementById(editor_id + '_resize_box'); - var inst = tinyMCE.getInstanceById(editor_id); - - if (state) { - // Place box over editor area - var width = editorArea.clientWidth; - var height = editorArea.clientHeight; - - resizeBox.style.width = width + "px"; - resizeBox.style.height = height + "px"; - - resizer.iframeWidth = inst.iframeElement.clientWidth; - resizer.iframeHeight = inst.iframeElement.clientHeight; - - // Hide editor and show resize box - editorArea.style.display = "none"; - resizeBox.style.display = "block"; - - // Add event handlers, only once - if (!resizer.eventHandlers) { - if (tinyMCE.isMSIE) - tinyMCE.addEvent(document, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler); - else - tinyMCE.addEvent(window, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler); - - tinyMCE.addEvent(document, "mouseup", TinyMCE_AdvancedTheme._resizeEventHandler); - - resizer.eventHandlers = true; - } - - resizer.resizing = true; - resizer.downX = e.screenX; - resizer.downY = e.screenY; - resizer.width = parseInt(resizeBox.style.width); - resizer.height = parseInt(resizeBox.style.height); - resizer.editorId = editor_id; - resizer.resizeBox = resizeBox; - resizer.horizontal = tinyMCE.getParam("theme_advanced_resize_horizontal", true); - } else { - resizer.resizing = false; - resizeBox.style.display = "none"; - editorArea.style.display = tinyMCE.isMSIE && !tinyMCE.isOpera ? "block" : "table"; - tinyMCE.execCommand('mceResetDesignMode'); - } - }, - - _getColorHTML : function(id, n, cm) { - var i, h, cl; - - h = ''; - cl = tinyMCE.getParam(n, TinyMCE_AdvancedTheme._defColors).split(','); - - h += ''; - for (i=0; i'; - - if ((i+1) % 8 == 0) - h += ''; - } - - h += '
'; - - if (tinyMCE.getParam("theme_advanced_more_colors", true)) - h += '' + tinyMCE.getLang('lang_more_colors') + ''; - - return h; - }, - - _pickColor : function(id, cm) { - var inputColor, inst = tinyMCE.selectedInstance; - - if (cm == 'forecolor' && inst) - inputColor = inst.foreColor; - - if ((cm == 'backcolor' || cm == 'HiliteColor') && inst) - inputColor = inst.backColor; - - tinyMCE.execCommand('mceColorPicker', true, {color : inputColor, callback : function(c) { - tinyMCE.execInstanceCommand(id, cm, false, c); - }}); - }, - - _insertImage : function(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout) { - tinyMCE.execCommand("mceInsertContent", false, tinyMCE.createTagHTML('img', { - src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src), // Force absolute - mce_src : src, - alt : alt, - border : border, - hspace : hspace, - vspace : vspace, - width : width, - height : height, - align : align, - title : title, - onmouseover : onmouseover, - onmouseout : onmouseout - })); - }, - - _insertLink : function(href, target, title, onclick, style_class) { - tinyMCE.execCommand('mceBeginUndoLevel'); - - if (tinyMCE.selectedInstance && tinyMCE.selectedElement && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") { - var doc = tinyMCE.selectedInstance.getDoc(); - var linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a"); - var newLink = false; - - if (!linkElement) { - linkElement = doc.createElement("a"); - newLink = true; - } - - var mhref = href; - var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, linkElement);"); - mhref = tinyMCE.getParam('convert_urls') ? href : mhref; - - tinyMCE.setAttrib(linkElement, 'href', thref); - tinyMCE.setAttrib(linkElement, 'mce_href', mhref); - tinyMCE.setAttrib(linkElement, 'target', target); - tinyMCE.setAttrib(linkElement, 'title', title); - tinyMCE.setAttrib(linkElement, 'onclick', onclick); - tinyMCE.setAttrib(linkElement, 'class', style_class); - - if (newLink) { - linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true)); - tinyMCE.selectedElement.parentNode.replaceChild(linkElement, tinyMCE.selectedElement); - } - - return; - } - - if (!tinyMCE.linkElement && tinyMCE.selectedInstance) { - if (tinyMCE.isSafari) { - tinyMCE.execCommand("mceInsertContent", false, '' + tinyMCE.selectedInstance.selection.getSelectedHTML() + ''); - } else - tinyMCE.selectedInstance.contentDocument.execCommand("createlink", false, tinyMCE.uniqueURL); - - tinyMCE.linkElement = tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL); - - var elementArray = tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL); - - for (var i=0; i 4 ? but[4] : false), (but.length > 5 ? but[5] : null)); + + if (but[0] == button_name) + return tinyMCE.getButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null)); + } + + // Custom controlls other than buttons + switch (button_name) { + case "formatselect": + var html = ''; + + return html; + + case "styleselect": + return ''; + + case "fontselect": + var fontHTML = ''; + return fontHTML; + + case "fontsizeselect": + return ''; + + case "|": + case "separator": + return ''; + + case "spacer": + return ''; + + case "rowseparator": + return '
'; + } + + return ""; + }, + + /** + * Theme specific execcommand handling. + */ + execCommand : function(editor_id, element, command, user_interface, value) { + switch (command) { + case 'mceHelp': + tinyMCE.openWindow({ + file : 'about.htm', + width : 480, + height : 380 + }, { + tinymce_version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion, + tinymce_releasedate : tinyMCE.releaseDate, + inline : "yes" + }); + return true; + + case "mceLink": + var inst = tinyMCE.getInstanceById(editor_id); + var doc = inst.getDoc(); + var selectedText = ""; + + if (tinyMCE.isMSIE) { + var rng = doc.selection.createRange(); + selectedText = rng.text; + } else + selectedText = inst.getSel().toString(); + + if (!tinyMCE.linkElement) { + if ((tinyMCE.selectedElement.nodeName.toLowerCase() != "img") && (selectedText.length <= 0)) + return true; + } + + var href = "", target = "", title = "", onclick = "", action = "insert", style_class = ""; + + if (tinyMCE.selectedElement.nodeName.toLowerCase() == "a") + tinyMCE.linkElement = tinyMCE.selectedElement; + + // Is anchor not a link + if (tinyMCE.linkElement != null && tinyMCE.getAttrib(tinyMCE.linkElement, 'href') == "") + tinyMCE.linkElement = null; + + if (tinyMCE.linkElement) { + href = tinyMCE.getAttrib(tinyMCE.linkElement, 'href'); + target = tinyMCE.getAttrib(tinyMCE.linkElement, 'target'); + title = tinyMCE.getAttrib(tinyMCE.linkElement, 'title'); + onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick'); + style_class = tinyMCE.getAttrib(tinyMCE.linkElement, 'class'); + + // Try old onclick to if copy/pasted content + if (onclick == "") + onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick'); + + onclick = tinyMCE.cleanupEventStr(onclick); + + href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);"); + + // Use mce_href if defined + mceRealHref = tinyMCE.getAttrib(tinyMCE.linkElement, 'mce_href'); + if (mceRealHref != "") { + href = mceRealHref; + + if (tinyMCE.getParam('convert_urls')) + href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);"); + } + + action = "update"; + } + + var template = new Array(); + + template['file'] = 'link.htm'; + template['width'] = 310; + template['height'] = 200; + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0); + + if (inst.settings['insertlink_callback']) { + var returnVal = eval(inst.settings['insertlink_callback'] + "(href, target, title, onclick, action, style_class);"); + if (returnVal && returnVal['href']) + TinyMCE_AdvancedTheme._insertLink(returnVal['href'], returnVal['target'], returnVal['title'], returnVal['onclick'], returnVal['style_class']); + } else { + tinyMCE.openWindow(template, {href : href, target : target, title : title, onclick : onclick, action : action, className : style_class, inline : "yes"}); + } + + return true; + + case "mceImage": + var src = "", alt = "", border = "", hspace = "", vspace = "", width = "", height = "", align = ""; + var title = "", onmouseover = "", onmouseout = "", action = "insert"; + var img = tinyMCE.imgElement; + var inst = tinyMCE.getInstanceById(editor_id); + + if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") { + img = tinyMCE.selectedElement; + tinyMCE.imgElement = img; + } + + if (img) { + // Is it a internal MCE visual aid image, then skip this one. + if (tinyMCE.getAttrib(img, 'name').indexOf('mce_') == 0) + return true; + + src = tinyMCE.getAttrib(img, 'src'); + alt = tinyMCE.getAttrib(img, 'alt'); + + // Try polling out the title + if (alt == "") + alt = tinyMCE.getAttrib(img, 'title'); + + // Fix width/height attributes if the styles is specified + if (tinyMCE.isGecko) { + var w = img.style.width; + if (w != null && w != "") + img.setAttribute("width", w); + + var h = img.style.height; + if (h != null && h != "") + img.setAttribute("height", h); + } + + border = tinyMCE.getAttrib(img, 'border'); + hspace = tinyMCE.getAttrib(img, 'hspace'); + vspace = tinyMCE.getAttrib(img, 'vspace'); + width = tinyMCE.getAttrib(img, 'width'); + height = tinyMCE.getAttrib(img, 'height'); + align = tinyMCE.getAttrib(img, 'align'); + onmouseover = tinyMCE.getAttrib(img, 'onmouseover'); + onmouseout = tinyMCE.getAttrib(img, 'onmouseout'); + title = tinyMCE.getAttrib(img, 'title'); + + // Is realy specified? + if (tinyMCE.isMSIE) { + width = img.attributes['width'].specified ? width : ""; + height = img.attributes['height'].specified ? height : ""; + } + + //onmouseover = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseover)); + //onmouseout = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseout)); + + src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);"); + + // Use mce_src if defined + mceRealSrc = tinyMCE.getAttrib(img, 'mce_src'); + if (mceRealSrc != "") { + src = mceRealSrc; + + if (tinyMCE.getParam('convert_urls')) + src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);"); + } + + //if (onmouseover != "") + // onmouseover = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, img, true);"); + + //if (onmouseout != "") + // onmouseout = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, img, true);"); + + action = "update"; + } + + var template = new Array(); + + template['file'] = 'image.htm?src={$src}'; + template['width'] = 355; + template['height'] = 265 + (tinyMCE.isMSIE ? 25 : 0); + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0); + + if (inst.settings['insertimage_callback']) { + var returnVal = eval(inst.settings['insertimage_callback'] + "(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);"); + if (returnVal && returnVal['src']) + TinyMCE_AdvancedTheme._insertImage(returnVal['src'], returnVal['alt'], returnVal['border'], returnVal['hspace'], returnVal['vspace'], returnVal['width'], returnVal['height'], returnVal['align'], returnVal['title'], returnVal['onmouseover'], returnVal['onmouseout']); + } else + tinyMCE.openWindow(template, {src : src, alt : alt, border : border, hspace : hspace, vspace : vspace, width : width, height : height, align : align, title : title, onmouseover : onmouseover, onmouseout : onmouseout, action : action, inline : "yes"}); + + return true; + + case "forecolor": + var fcp = new TinyMCE_Layer(editor_id + '_fcPreview', false), p, img, elm; + + TinyMCE_AdvancedTheme._hideMenus(editor_id); + + if (!fcp.exists()) { + fcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar')); + elm = fcp.getElement(); + elm._editor_id = editor_id; + elm._command = "forecolor"; + elm._switchId = editor_id + "_forecolor"; + tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent); + tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent); + tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent); + } + + img = tinyMCE.selectNodes(document.getElementById(editor_id + "_forecolor"), function(n) {return n.nodeName == "IMG";})[0]; + p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar')); + + fcp.moveTo(p.absLeft, p.absTop); + fcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).foreColor; + fcp.show(); + + return false; + + case "forecolorpicker": + this._pickColor(editor_id, 'forecolor'); + return true; + + case "forecolorMenu": + TinyMCE_AdvancedTheme._hideMenus(editor_id); + + // Create color layer + var ml = new TinyMCE_Layer(editor_id + '_fcMenu'); + + if (!ml.exists()) + ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_text_colors', 'forecolor')); + + tinyMCE.switchClass(editor_id + '_forecolor', 'mceMenuButtonFocus'); + ml.moveRelativeTo(document.getElementById(editor_id + "_forecolor"), 'bl'); + + ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1); + + if (tinyMCE.isOpera) + ml.moveBy(0, -2); + + ml.show(); + return true; + + case "HiliteColor": + var bcp = new TinyMCE_Layer(editor_id + '_bcPreview', false), p, img; + + TinyMCE_AdvancedTheme._hideMenus(editor_id); + + if (!bcp.exists()) { + bcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar')); + elm = bcp.getElement(); + elm._editor_id = editor_id; + elm._command = "HiliteColor"; + elm._switchId = editor_id + "_backcolor"; + tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent); + tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent); + tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent); + } + + img = tinyMCE.selectNodes(document.getElementById(editor_id + "_backcolor"), function(n) {return n.nodeName == "IMG";})[0]; + p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar')); + + bcp.moveTo(p.absLeft, p.absTop); + bcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).backColor; + bcp.show(); + + return false; + + case "HiliteColorMenu": + TinyMCE_AdvancedTheme._hideMenus(editor_id); + + // Create color layer + var ml = new TinyMCE_Layer(editor_id + '_bcMenu'); + + if (!ml.exists()) + ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_background_colors', 'HiliteColor')); + + tinyMCE.switchClass(editor_id + '_backcolor', 'mceMenuButtonFocus'); + ml.moveRelativeTo(document.getElementById(editor_id + "_backcolor"), 'bl'); + + ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1); + + if (tinyMCE.isOpera) + ml.moveBy(0, -2); + + ml.show(); + return true; + + case "backcolorpicker": + this._pickColor(editor_id, 'HiliteColor'); + return true; + + case "mceColorPicker": + if (user_interface) { + var template = []; + + if (!value['callback'] && !value['color']) + value['color'] = value['document'].getElementById(value['element_id']).value; + + template['file'] = 'color_picker.htm'; + template['width'] = 380; + template['height'] = 250; + template['close_previous'] = "no"; + + template['width'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height', 0); + + if (typeof(value['store_selection']) == "undefined") + value['store_selection'] = true; + + tinyMCE.lastColorPickerValue = value; + tinyMCE.openWindow(template, {editor_id : editor_id, mce_store_selection : value['store_selection'], inline : "yes", command : "mceColorPicker", input_color : value['color']}); + } else { + var savedVal = tinyMCE.lastColorPickerValue, elm; + + if (savedVal['callback']) { + savedVal['callback'](value); + return true; + } + + elm = savedVal['document'].getElementById(savedVal['element_id']); + elm.value = value; + + if (elm.onchange != null && elm.onchange != '') + eval('elm.onchange();'); + } + return true; + + case "mceCodeEditor": + var template = new Array(); + + template['file'] = 'source_editor.htm'; + template['width'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_width", 720)); + template['height'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_height", 580)); + + tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "no", inline : "yes"}); + return true; + + case "mceCharMap": + var template = new Array(); + + template['file'] = 'charmap.htm'; + template['width'] = 550 + (tinyMCE.isOpera ? 40 : 0); + template['height'] = 250; + + template['width'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + return true; + + case "mceInsertAnchor": + var template = new Array(); + + template['file'] = 'anchor.htm'; + template['width'] = 320; + template['height'] = 90 + (tinyMCE.isNS7 ? 30 : 0); + + template['width'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + return true; + + case "mceNewDocument": + if (confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_newdocument')))) + tinyMCE.execInstanceCommand(editor_id, 'mceSetContent', false, ' '); + + return true; + } + + return false; + }, + + /** + * Editor instance template function. + */ + getEditorTemplate : function(settings, editorId) { + function removeFromArray(in_array, remove_array) { + var outArray = new Array(), skip; + + for (var i=0; i 

'; + var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager", "SimpleLayout"); + + // Setup style select options -- MOVED UP FOR EXTERNAL TOOLBAR COMPATABILITY! + var styleSelectHTML = ''; + if (settings['theme_advanced_styles']) { + var stylesAr = settings['theme_advanced_styles'].split(';'); + + for (var i=0; i' + key + ''; + } + + TinyMCE_AdvancedTheme._autoImportCSSClasses = false; + } + + switch(layoutManager) { + case "SimpleLayout" : //the default TinyMCE Layout (for backwards compatibility)... + var toolbarHTML = ""; + var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom"); + var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center"); + var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none"); // Compatiblity + var statusbarLocation = tinyMCE.getParam("theme_advanced_statusbar_location", pathLocation); + var defVals = { + theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect", + theme_advanced_buttons2 : "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code", + theme_advanced_buttons3 : "hr,removeformat,visualaid,separator,sub,sup,separator,charmap" + }; + + // Add accessibility control + toolbarHTML += ' 0) { + toolbarHTML += "
"; + deltaHeight -= 23; + } + } + + // Add accessibility control + toolbarHTML += '
'; + + // Setup template html + template['html'] = ''; + + if (toolbarLocation == "top") + template['html'] += ''; + + if (statusbarLocation == "top") { + template['html'] += ''; + deltaHeight -= 23; + } + + template['html'] += ''; + + if (toolbarLocation == "bottom") + template['html'] += ''; + + // External toolbar changes + if (toolbarLocation == "external") { + var bod = document.body; + var elm = document.createElement ("div"); + + toolbarHTML = tinyMCE.replaceVar(toolbarHTML, 'style_select_options', styleSelectHTML); + toolbarHTML = tinyMCE.applyTemplate(toolbarHTML, {editor_id : editorId}); + + elm.className = "mceToolbarExternal"; + elm.id = editorId+"_toolbar"; + elm.innerHTML = '
' + toolbarHTML + '
' + statusbarHTML + '
' + toolbarHTML + '
'+toolbarHTML+'
'; + bod.appendChild (elm); + // bod.style.marginTop = elm.offsetHeight + "px"; + + deltaHeight = 0; + tinyMCE.getInstanceById(editorId).toolbarElement = elm; + + //template['html'] = '
'+toolbarHTML+'
' + template["html"]; + } else { + tinyMCE.getInstanceById(editorId).toolbarElement = null; + } + + if (statusbarLocation == "bottom") { + template['html'] += '' + statusbarHTML + ''; + deltaHeight -= 23; + } + + template['html'] += ''; + //"SimpleLayout" + break; + + case "RowLayout" : //Container Layout - containers defined in "theme_advanced_containers" are rendered from top to bottom. + template['html'] = ''; + + var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ","); + var defaultContainerCSS = tinyMCE.getParam("theme_advanced_containers_default_class", "container"); + var defaultContainerAlign = tinyMCE.getParam("theme_advanced_containers_default_align", "center"); + + //Render Containers: + for (var i = 0; i < containers.length; i++) + { + if (containers[i] == "mceEditor") //Exceptions for mceEditor and ... + template['html'] += ''; + else if (containers[i] == "mceElementpath" || containers[i] == "mceStatusbar") // ... mceElementpath: + { + var pathClass = "mceStatusbar"; + + if (i == containers.length-1) + { + pathClass = "mceStatusbarBottom"; + } + else if (i == 0) + { + pathClass = "mceStatusbar"; + } + else + { + deltaHeight-=2; + } + + template['html'] += ''; + deltaHeight -= 22; + } else { // Render normal Container + var curContainer = tinyMCE.getParam("theme_advanced_container_"+containers[i], "", true, ','); + var curContainerHTML = ""; + var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign); + var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS); + + curContainer = removeFromArray(curContainer, tinyMCE.getParam("theme_advanced_disable", "", true, ',')); + + for (var j=0; j 0) { + curContainerHTML += "
"; + deltaHeight -= 23; + } + + template['html'] += '
'; + } + } + + template['html'] += '
' + statusbarHTML + '
' + curContainerHTML + '
'; + //RowLayout + break; + + case "CustomLayout" : //User defined layout callback... + var customLayout = tinyMCE.getParam("theme_advanced_custom_layout",""); + + if (customLayout != "" && eval("typeof(" + customLayout + ")") != "undefined") { + template = eval(customLayout + "(template);"); + } + break; + } + + if (resizing) + template['html'] += ''; + + template['html'] = tinyMCE.replaceVar(template['html'], 'style_select_options', styleSelectHTML); + + // Set to default values + if (!template['delta_width']) + template['delta_width'] = 0; + + if (!template['delta_height']) + template['delta_height'] = deltaHeight; + + return template; + }, + + initInstance : function(inst) { + if (tinyMCE.getParam("theme_advanced_resizing", false)) { + if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) { + var w = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_width"); + var h = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_height"); + + TinyMCE_AdvancedTheme._resizeTo(inst, w, h, tinyMCE.getParam("theme_advanced_resize_horizontal", true)); + } + } + + inst.addShortcut('ctrl', 'k', 'lang_link_desc', 'mceLink'); + }, + + removeInstance : function(inst) { + new TinyMCE_Layer(inst.editorId + '_fcMenu').remove(); + new TinyMCE_Layer(inst.editorId + '_bcMenu').remove(); + }, + + hideInstance : function(inst) { + TinyMCE_AdvancedTheme._hideMenus(inst.editorId); + }, + + _handleMenuEvent : function(e) { + var te = tinyMCE.isMSIE ? window.event.srcElement : e.target; + tinyMCE._menuButtonEvent(e.type == "mouseover" ? "over" : "out", document.getElementById(te._switchId)); + + if (e.type == "click") + tinyMCE.execInstanceCommand(te._editor_id, te._command); + }, + + _hideMenus : function(id) { + var fcml = new TinyMCE_Layer(id + '_fcMenu'), bcml = new TinyMCE_Layer(id + '_bcMenu'); + + if (fcml.exists() && fcml.isVisible()) { + tinyMCE.switchClass(id + '_forecolor', 'mceMenuButton'); + fcml.hide(); + } + + if (bcml.exists() && bcml.isVisible()) { + tinyMCE.switchClass(id + '_backcolor', 'mceMenuButton'); + bcml.hide(); + } + }, + + /** + * Node change handler. + */ + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection, setup_content) { + var alignNode, breakOut, classNode; + + function selectByValue(select_elm, value, first_index) { + first_index = typeof(first_index) == "undefined" ? false : true; + + if (select_elm) { + for (var i=0; i=0; i--) { + var nodeName = path[i].nodeName.toLowerCase(); + var nodeData = ""; + + if (nodeName.indexOf("html:") == 0) + nodeName = nodeName.substring(5); + + if (nodeName == "b") { + nodeName = "strong"; + } + + if (nodeName == "i") { + nodeName = "em"; + } + + if (nodeName == "span") { + var cn = tinyMCE.getAttrib(path[i], "class"); + if (cn != "" && cn.indexOf('mceItem') == -1) + nodeData += "class: " + cn + " "; + + var st = tinyMCE.getAttrib(path[i], "style"); + if (st != "") { + st = tinyMCE.serializeStyle(tinyMCE.parseStyle(st)); + nodeData += "style: " + tinyMCE.xmlEncode(st) + " "; + } + } + + if (nodeName == "font") { + if (tinyMCE.getParam("convert_fonts_to_spans")) + nodeName = "span"; + + var face = tinyMCE.getAttrib(path[i], "face"); + if (face != "") + nodeData += "font: " + tinyMCE.xmlEncode(face) + " "; + + var size = tinyMCE.getAttrib(path[i], "size"); + if (size != "") + nodeData += "size: " + tinyMCE.xmlEncode(size) + " "; + + var color = tinyMCE.getAttrib(path[i], "color"); + if (color != "") + nodeData += "color: " + tinyMCE.xmlEncode(color) + " "; + } + + if (tinyMCE.getAttrib(path[i], 'id') != "") { + nodeData += "id: " + path[i].getAttribute('id') + " "; + } + + var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false); + if (className != "" && className.indexOf('mceItem') == -1) + nodeData += "class: " + className + " "; + + if (tinyMCE.getAttrib(path[i], 'src') != "") { + var src = tinyMCE.getAttrib(path[i], "mce_src"); + + if (src == "") + src = tinyMCE.getAttrib(path[i], "src"); + + nodeData += "src: " + tinyMCE.xmlEncode(src) + " "; + } + + if (path[i].nodeName == 'A' && tinyMCE.getAttrib(path[i], 'href') != "") { + var href = tinyMCE.getAttrib(path[i], "mce_href"); + + if (href == "") + href = tinyMCE.getAttrib(path[i], "href"); + + nodeData += "href: " + tinyMCE.xmlEncode(href) + " "; + } + + className = tinyMCE.getAttrib(path[i], "class"); + if ((nodeName == "img" || nodeName == "span") && className.indexOf('mceItem') != -1) { + nodeName = className.replace(/mceItem([a-z]+)/gi, '$1').toLowerCase(); + nodeData = path[i].getAttribute('title'); + } + + if (nodeName == "a" && (anchor = tinyMCE.getAttrib(path[i], "name")) != "") { + nodeName = "a"; + nodeName += "#" + tinyMCE.xmlEncode(anchor); + nodeData = ""; + } + + if (tinyMCE.getAttrib(path[i], 'name').indexOf("mce_") != 0) { + var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false); + if (className != "" && className.indexOf('mceItem') == -1) { + nodeName += "." + className; + } + } + + var cmd = 'tinyMCE.execInstanceCommand(\'' + editor_id + '\',\'mceSelectNodeDepth\',false,\'' + i + '\');'; + html += '' + nodeName + ''; + + if (i > 0) { + html += " » "; + } + } + + pathElm.innerHTML = '' + tinyMCE.getLang('lang_theme_path') + ": " + html + ' '; + } + + // Reset old states + tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_sub', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_sup', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_link', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_unlink', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_image', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_hr', 'mceButtonNormal'); + + if (node.nodeName == "A" && tinyMCE.getAttrib(node, "class").indexOf('mceItemAnchor') != -1) + tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonSelected'); + + // Get link + var anchorLink = tinyMCE.getParentElement(node, "a", "href"); + + if (anchorLink || any_selection) { + tinyMCE.switchClass(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal'); + } + + // Handle visual aid + tinyMCE.switchClass(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal'); + + if (undo_levels != -1) { + tinyMCE.switchClass(editor_id + '_undo', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_redo', 'mceButtonDisabled'); + } + + // Within li, blockquote + if (tinyMCE.getParentElement(node, "li,blockquote")) + tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonNormal'); + + // Has redo levels + if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0)) + tinyMCE.switchClass(editor_id + '_redo', 'mceButtonNormal'); + + // Has undo levels + if (undo_index != -1 && (undo_index > 0 && undo_levels > 0)) + tinyMCE.switchClass(editor_id + '_undo', 'mceButtonNormal'); + + // Select class in select box + var selectElm = document.getElementById(editor_id + "_styleSelect"); + + if (selectElm) { + TinyMCE_AdvancedTheme._setupCSSClasses(editor_id); + + classNode = node; + breakOut = false; + var index = 0; + + do { + if (classNode && classNode.className) { + for (var i=0; i"); + else + selectByValue(selectElm, ""); + } + + // Select fontselect + var selectElm = document.getElementById(editor_id + "_fontNameSelect"); + if (selectElm) { + if (!tinyMCE.isSafari && !(tinyMCE.isMSIE && !tinyMCE.isOpera)) { + var face = inst.queryCommandValue('FontName'); + + face = face == null || face == "" ? "" : face; + + selectByValue(selectElm, face, face != ""); + } else { + var elm = tinyMCE.getParentElement(node, "font", "face"); + + if (elm) { + var family = tinyMCE.getAttrib(elm, "face"); + + if (family == '') + family = '' + elm.style.fontFamily; + + if (!selectByValue(selectElm, family, family != "")) + selectByValue(selectElm, ""); + } else + selectByValue(selectElm, ""); + } + } + + // Select fontsize + var selectElm = document.getElementById(editor_id + "_fontSizeSelect"); + if (selectElm) { + if (!tinyMCE.isSafari && !tinyMCE.isOpera) { + var size = inst.queryCommandValue('FontSize'); + selectByValue(selectElm, size == null || size == "" ? "0" : size); + } else { + var elm = tinyMCE.getParentElement(node, "font", "size"); + if (elm) { + var size = tinyMCE.getAttrib(elm, "size"); + + if (size == '') { + var sizes = new Array('', '8px', '10px', '12px', '14px', '18px', '24px', '36px'); + + size = '' + elm.style.fontSize; + + for (var i=0; i 0) + selectElm.setAttribute('cssImported', 'true'); + } + }, + + _setCookie : function(name, value, expires, path, domain, secure) { + var curCookie = name + "=" + escape(value) + + ((expires) ? "; expires=" + expires.toGMTString() : "") + + ((path) ? "; path=" + escape(path) : "") + + ((domain) ? "; domain=" + domain : "") + + ((secure) ? "; secure" : ""); + + document.cookie = curCookie; + }, + + _getCookie : function(name) { + var dc = document.cookie; + var prefix = name + "="; + var begin = dc.indexOf("; " + prefix); + + if (begin == -1) { + begin = dc.indexOf(prefix); + + if (begin != 0) + return null; + } else + begin += 2; + + var end = document.cookie.indexOf(";", begin); + + if (end == -1) + end = dc.length; + + return unescape(dc.substring(begin + prefix.length, end)); + }, + + _resizeTo : function(inst, w, h, set_w) { + var editorContainer = document.getElementById(inst.editorId + '_parent'); + var tableElm = editorContainer.firstChild; + var iframe = inst.iframeElement; + + if (w == null || w == "null") { + set_w = false; + w = 0; + } + + if (h == null || h == "null") + return; + + w = parseInt(w); + h = parseInt(h); + + if (tinyMCE.isGecko) { + w += 2; + h += 2; + } + + var dx = w - tableElm.clientWidth; + var dy = h - tableElm.clientHeight; + + w = w < 1 ? 30 : w; + h = h < 1 ? 30 : h; + + if (set_w) + tableElm.style.width = w + "px"; + + tableElm.style.height = h + "px"; + + iw = iframe.clientWidth + dx; + ih = iframe.clientHeight + dy; + + iw = iw < 1 ? 30 : iw; + ih = ih < 1 ? 30 : ih; + + if (tinyMCE.isGecko) { + iw -= 2; + ih -= 2; + } + + if (set_w) + iframe.style.width = iw + "px"; + + iframe.style.height = ih + "px"; + + // Is it to small, make it bigger again + if (set_w) { + var tableBodyElm = tableElm.firstChild; + var minIframeWidth = tableBodyElm.scrollWidth; + if (inst.iframeElement.clientWidth < minIframeWidth) { + dx = minIframeWidth - inst.iframeElement.clientWidth; + + inst.iframeElement.style.width = (iw + dx) + "px"; + } + } + + // Remove pesky table controls + inst.useCSS = false; + }, + + /** + * Handles resizing events. + */ + _resizeEventHandler : function(e) { + var resizer = TinyMCE_AdvancedTheme._resizer; + + // Do nothing + if (!resizer.resizing) + return; + + e = typeof(e) == "undefined" ? window.event : e; + + var dx = e.screenX - resizer.downX; + var dy = e.screenY - resizer.downY; + var resizeBox = resizer.resizeBox; + var editorId = resizer.editorId; + + switch (e.type) { + case "mousemove": + var w, h; + + w = resizer.width + dx; + h = resizer.height + dy; + + w = w < 1 ? 1 : w; + h = h < 1 ? 1 : h; + + if (resizer.horizontal) + resizeBox.style.width = w + "px"; + + resizeBox.style.height = h + "px"; + break; + + case "mouseup": + TinyMCE_AdvancedTheme._setResizing(e, editorId, false); + TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId), resizer.width + dx, resizer.height + dy, resizer.horizontal); + + // Expire in a month + if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) { + var expires = new Date(); + expires.setTime(expires.getTime() + 3600000 * 24 * 30); + + // Set the cookies + TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_width", "" + (resizer.horizontal ? resizer.width + dx : ""), expires); + TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_height", "" + (resizer.height + dy), expires); + } + break; + } + }, + + /** + * Starts/stops the editor resizing. + */ + _setResizing : function(e, editor_id, state) { + e = typeof(e) == "undefined" ? window.event : e; + + var resizer = TinyMCE_AdvancedTheme._resizer; + var editorContainer = document.getElementById(editor_id + '_parent'); + var editorArea = document.getElementById(editor_id + '_parent').firstChild; + var resizeBox = document.getElementById(editor_id + '_resize_box'); + var inst = tinyMCE.getInstanceById(editor_id); + + if (state) { + // Place box over editor area + var width = editorArea.clientWidth; + var height = editorArea.clientHeight; + + resizeBox.style.width = width + "px"; + resizeBox.style.height = height + "px"; + + resizer.iframeWidth = inst.iframeElement.clientWidth; + resizer.iframeHeight = inst.iframeElement.clientHeight; + + // Hide editor and show resize box + editorArea.style.display = "none"; + resizeBox.style.display = "block"; + + // Add event handlers, only once + if (!resizer.eventHandlers) { + if (tinyMCE.isMSIE) + tinyMCE.addEvent(document, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler); + else + tinyMCE.addEvent(window, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler); + + tinyMCE.addEvent(document, "mouseup", TinyMCE_AdvancedTheme._resizeEventHandler); + + resizer.eventHandlers = true; + } + + resizer.resizing = true; + resizer.downX = e.screenX; + resizer.downY = e.screenY; + resizer.width = parseInt(resizeBox.style.width); + resizer.height = parseInt(resizeBox.style.height); + resizer.editorId = editor_id; + resizer.resizeBox = resizeBox; + resizer.horizontal = tinyMCE.getParam("theme_advanced_resize_horizontal", true); + } else { + resizer.resizing = false; + resizeBox.style.display = "none"; + editorArea.style.display = tinyMCE.isMSIE && !tinyMCE.isOpera ? "block" : "table"; + tinyMCE.execCommand('mceResetDesignMode'); + } + }, + + _getColorHTML : function(id, n, cm) { + var i, h, cl; + + h = ''; + cl = tinyMCE.getParam(n, TinyMCE_AdvancedTheme._defColors).split(','); + + h += ''; + for (i=0; i'; + + if ((i+1) % 8 == 0) + h += ''; + } + + h += '
'; + + if (tinyMCE.getParam("theme_advanced_more_colors", true)) + h += '' + tinyMCE.getLang('lang_more_colors') + ''; + + return h; + }, + + _pickColor : function(id, cm) { + var inputColor, inst = tinyMCE.selectedInstance; + + if (cm == 'forecolor' && inst) + inputColor = inst.foreColor; + + if ((cm == 'backcolor' || cm == 'HiliteColor') && inst) + inputColor = inst.backColor; + + tinyMCE.execCommand('mceColorPicker', true, {color : inputColor, callback : function(c) { + tinyMCE.execInstanceCommand(id, cm, false, c); + }}); + }, + + _insertImage : function(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout) { + tinyMCE.execCommand("mceInsertContent", false, tinyMCE.createTagHTML('img', { + src : tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src), // Force absolute + mce_src : src, + alt : alt, + border : border, + hspace : hspace, + vspace : vspace, + width : width, + height : height, + align : align, + title : title, + onmouseover : onmouseover, + onmouseout : onmouseout + })); + }, + + _insertLink : function(href, target, title, onclick, style_class) { + tinyMCE.execCommand('mceBeginUndoLevel'); + + if (tinyMCE.selectedInstance && tinyMCE.selectedElement && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") { + var doc = tinyMCE.selectedInstance.getDoc(); + var linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a"); + var newLink = false; + + if (!linkElement) { + linkElement = doc.createElement("a"); + newLink = true; + } + + var mhref = href; + var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, linkElement);"); + mhref = tinyMCE.getParam('convert_urls') ? href : mhref; + + tinyMCE.setAttrib(linkElement, 'href', thref); + tinyMCE.setAttrib(linkElement, 'mce_href', mhref); + tinyMCE.setAttrib(linkElement, 'target', target); + tinyMCE.setAttrib(linkElement, 'title', title); + tinyMCE.setAttrib(linkElement, 'onclick', onclick); + tinyMCE.setAttrib(linkElement, 'class', style_class); + + if (newLink) { + linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true)); + tinyMCE.selectedElement.parentNode.replaceChild(linkElement, tinyMCE.selectedElement); + } + + return; + } + + if (!tinyMCE.linkElement && tinyMCE.selectedInstance) { + if (tinyMCE.isSafari) { + tinyMCE.execCommand("mceInsertContent", false, '' + tinyMCE.selectedInstance.selection.getSelectedHTML() + ''); + } else + tinyMCE.selectedInstance.contentDocument.execCommand("createlink", false, tinyMCE.uniqueURL); + + tinyMCE.linkElement = tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL); + + var elementArray = tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL); + + for (var i=0; i - - {$lang_insert_image_title} - - - - - - - -
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
 
- x -
-
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_insert_image_title} + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
+ x +
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor_symbol.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor_symbol.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor_symbol.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor_symbol.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/backcolor.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/backcolor.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/backcolor.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/backcolor.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_de_se.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_de_se.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_de_se.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_de_se.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_es.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_es.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_es.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_es.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_fr.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_fr.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_fr.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_fr.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_ru.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_ru.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_ru.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_ru.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_tw.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_tw.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_tw.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bold_tw.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/browse.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/browse.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/browse.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/browse.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bullist.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bullist.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/bullist.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/bullist.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/button_menu.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/button_menu.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/button_menu.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/button_menu.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/buttons.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/buttons.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/buttons.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/buttons.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/charmap.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/charmap.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/charmap.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/charmap.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/cleanup.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/cleanup.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/cleanup.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/cleanup.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/close.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/close.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/close.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/close.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/code.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/code.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/code.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/code.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/color.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/color.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/color.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/color.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/colors.jpg b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/colors.jpg similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/colors.jpg rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/colors.jpg diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/copy.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/copy.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/copy.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/copy.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/custom_1.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/custom_1.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/custom_1.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/custom_1.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/cut.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/cut.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/cut.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/cut.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/forecolor.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/forecolor.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/forecolor.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/forecolor.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/help.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/help.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/help.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/help.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/hr.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/hr.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/hr.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/hr.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/image.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/image.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/image.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/image.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/indent.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/indent.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/indent.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/indent.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/insert_button_bg.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/insert_button_bg.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/insert_button_bg.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/insert_button_bg.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/italic.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/italic.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/italic.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/italic.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_de_se.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_de_se.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_de_se.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_de_se.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_es.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_es.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_es.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_es.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_ru.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_ru.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_ru.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_ru.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_tw.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_tw.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_tw.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/italic_tw.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/justifycenter.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/justifycenter.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/justifycenter.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/justifycenter.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyfull.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyfull.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyfull.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyfull.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyleft.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyleft.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyleft.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyleft.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyright.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyright.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyright.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/justifyright.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/link.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/link.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/link.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/link.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/menu_check.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/menu_check.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/menu_check.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/menu_check.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/newdocument.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/newdocument.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/newdocument.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/newdocument.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/numlist.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/numlist.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/numlist.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/numlist.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/opacity.png b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/opacity.png similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/opacity.png rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/opacity.png diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/outdent.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/outdent.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/outdent.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/outdent.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/paste.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/paste.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/paste.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/paste.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/redo.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/redo.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/redo.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/redo.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/removeformat.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/removeformat.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/removeformat.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/removeformat.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/separator.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/separator.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/separator.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/separator.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/spacer.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/spacer.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/spacer.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/spacer.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/statusbar_resize.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/statusbar_resize.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/statusbar_resize.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/statusbar_resize.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/strikethrough.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/strikethrough.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/strikethrough.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/strikethrough.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/sub.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/sub.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/sub.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/sub.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/sup.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/sup.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/sup.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/sup.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/underline.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/underline.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/underline.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/underline.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_es.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_es.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_es.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_es.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_fr.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_fr.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_fr.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_fr.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_ru.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_ru.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_ru.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_ru.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_tw.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_tw.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_tw.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/underline_tw.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/undo.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/undo.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/undo.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/undo.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/unlink.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/unlink.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/unlink.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/unlink.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/visualaid.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/visualaid.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/visualaid.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/visualaid.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_end.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_end.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_end.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_end.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/about.js b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/about.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/about.js rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/about.js index 4e53c285b..f60e6f688 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/about.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/about.js @@ -1,75 +1,75 @@ -function init() { - var inst; - - tinyMCEPopup.resizeToInnerSize(); - inst = tinyMCE.selectedInstance; - - // Give FF some time - window.setTimeout('insertHelpIFrame();', 10); - - var tcont = document.getElementById('plugintablecontainer'); - var plugins = tinyMCE.getParam('plugins', '', true, ','); - if (plugins.length == 0) - document.getElementById('plugins_tab').style.display = 'none'; - - var html = ""; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - - for (var i=0; i' + info.longname + ''; - else - html += ''; - - if (info.authorurl != null && info.authorurl != '') - html += ''; - else - html += ''; - - html += ''; - html += ''; - } - - html += ''; - html += '
' + tinyMCE.getLang('lang_plugin') + '' + tinyMCE.getLang('lang_author') + '' + tinyMCE.getLang('lang_version') + '
' + info.longname + '' + info.author + '' + info.author + '' + info.version + '
'; - - tcont.innerHTML = html; -} - -function getPluginInfo(name) { - if (tinyMCE.plugins[name].getInfo) - return tinyMCE.plugins[name].getInfo(); - - return { - longname : name, - authorurl : '', - infourl : '', - author : '--', - version : '--' - }; -} - -function insertHelpIFrame() { - var html = ''; - - document.getElementById('iframecontainer').innerHTML = html; - - html = ''; - html += 'Got Moxie? '; - html += 'Hosted By Sourceforge '; - html += 'Also on freshmeat '; - - document.getElementById('buttoncontainer').innerHTML = html; -} +function init() { + var inst; + + tinyMCEPopup.resizeToInnerSize(); + inst = tinyMCE.selectedInstance; + + // Give FF some time + window.setTimeout('insertHelpIFrame();', 10); + + var tcont = document.getElementById('plugintablecontainer'); + var plugins = tinyMCE.getParam('plugins', '', true, ','); + if (plugins.length == 0) + document.getElementById('plugins_tab').style.display = 'none'; + + var html = ""; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + + for (var i=0; i' + info.longname + ''; + else + html += ''; + + if (info.authorurl != null && info.authorurl != '') + html += ''; + else + html += ''; + + html += ''; + html += ''; + } + + html += ''; + html += '
' + tinyMCE.getLang('lang_plugin') + '' + tinyMCE.getLang('lang_author') + '' + tinyMCE.getLang('lang_version') + '
' + info.longname + '' + info.author + '' + info.author + '' + info.version + '
'; + + tcont.innerHTML = html; +} + +function getPluginInfo(name) { + if (tinyMCE.plugins[name].getInfo) + return tinyMCE.plugins[name].getInfo(); + + return { + longname : name, + authorurl : '', + infourl : '', + author : '--', + version : '--' + }; +} + +function insertHelpIFrame() { + var html = ''; + + document.getElementById('iframecontainer').innerHTML = html; + + html = ''; + html += 'Got Moxie? '; + html += 'Hosted By Sourceforge '; + html += 'Also on freshmeat '; + + document.getElementById('buttoncontainer').innerHTML = html; +} diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js index e7c1c62c5..f2e5d4829 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/anchor.js @@ -1,74 +1,74 @@ -var action, element; - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); - var anchor = tinyMCE.getParentElement(inst.getFocusElement(), "a", "name"); - var img = inst.getFocusElement(); - action = 'insert'; - - if (anchor != null) { - element = anchor; - action = "update"; - } - - if (tinyMCE.getAttrib(img, "class") == "mceItemAnchor") { - element = img; - action = "update"; - } - - if (action == "update") - document.forms[0].anchorName.value = element.nodeName == "IMG" ? element.getAttribute("title") : element.getAttribute("name"); - - document.forms[0].insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); -} - -function insertAnchor() { - var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); - var name = document.forms[0].anchorName.value, e; - - tinyMCEPopup.execCommand("mceBeginUndoLevel"); - - if (action == "update") { - if (element.nodeName == "IMG") - element.setAttribute("title", name); - else - element.setAttribute("name", name); - } else { - var rng = inst.getRng(); - - if (rng.collapse) - rng.collapse(false); - - name = name.replace(/&/g, '&'); - name = name.replace(/\"/g, '"'); - name = name.replace(//g, '>'); - - // Fix for bug #1447335 - if (tinyMCE.isGecko) - html = ''; - else - html = ''; - - tinyMCEPopup.execCommand("mceInsertContent", false, html); - - // Fix for bug #1447335 force cursor after the anchor element - if (tinyMCE.isGecko) { - e = inst.getDoc().getElementById('mceNewAnchor'); - - if (e) { - inst.selection.selectNode(e, true, false, false); - e.removeAttribute('id'); - } - } - - tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); - } - - tinyMCEPopup.execCommand("mceEndUndoLevel"); - - tinyMCE.triggerNodeChange(); - tinyMCEPopup.close(); -} +var action, element; + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var anchor = tinyMCE.getParentElement(inst.getFocusElement(), "a", "name"); + var img = inst.getFocusElement(); + action = 'insert'; + + if (anchor != null) { + element = anchor; + action = "update"; + } + + if (tinyMCE.getAttrib(img, "class") == "mceItemAnchor") { + element = img; + action = "update"; + } + + if (action == "update") + document.forms[0].anchorName.value = element.nodeName == "IMG" ? element.getAttribute("title") : element.getAttribute("name"); + + document.forms[0].insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); +} + +function insertAnchor() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var name = document.forms[0].anchorName.value, e; + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + + if (action == "update") { + if (element.nodeName == "IMG") + element.setAttribute("title", name); + else + element.setAttribute("name", name); + } else { + var rng = inst.getRng(); + + if (rng.collapse) + rng.collapse(false); + + name = name.replace(/&/g, '&'); + name = name.replace(/\"/g, '"'); + name = name.replace(//g, '>'); + + // Fix for bug #1447335 + if (tinyMCE.isGecko) + html = ''; + else + html = ''; + + tinyMCEPopup.execCommand("mceInsertContent", false, html); + + // Fix for bug #1447335 force cursor after the anchor element + if (tinyMCE.isGecko) { + e = inst.getDoc().getElementById('mceNewAnchor'); + + if (e) { + inst.selection.selectNode(e, true, false, false); + e.removeAttribute('id'); + } + } + + tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); + } + + tinyMCEPopup.execCommand("mceEndUndoLevel"); + + tinyMCE.triggerNodeChange(); + tinyMCEPopup.close(); +} diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/charmap.js b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/charmap.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/charmap.js rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/charmap.js index eaa6a94b6..c4ec3261c 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/charmap.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/charmap.js @@ -1,326 +1,326 @@ -function init() { - tinyMCEPopup.resizeToInnerSize(); -} - -var charmap = new Array(); - -// for mor details please see w3c.org -// now here is the complete list ;) - -charmap = [ - [' ', ' ', true, 'no-break space'], - ['&', '&', true, 'ampersand'], - ['"', '"', true, 'quotation mark'], -// finance - ['¢', '¢', true, 'cent sign'], - ['€', '€', true, 'euro sign'], - ['£', '£', true, 'pound sign'], - ['¥', '¥', true, 'yen sign'], -// signs - ['©', '©', true, 'copyright sign'], - ['®', '®', true, 'registered sign'], - ['™', '™', true, 'trade mark sign'], - ['‰', '‰', true, 'per mille sign'], - ['µ', 'µ', true, 'micro sign'], - ['·', '·', true, 'middle dot'], - ['•', '•', true, 'bullet'], - ['…', '…', true, 'three dot leader'], - ['′', '′', true, 'minutes / feet'], - ['″', '″', true, 'seconds / inches'], - ['§', '§', true, 'section sign'], - ['¶', '¶', true, 'paragraph sign'], - ['ß', 'ß', true, 'sharp s / ess-zed'], -// quotations - ['‹', '‹', true, 'single left-pointing angle quotation mark'], - ['›', '›', true, 'single right-pointing angle quotation mark'], - ['«', '«', true, 'left pointing guillemet'], - ['»', '»', true, 'right pointing guillemet'], - ['‘', '‘', true, 'left single quotation mark'], - ['’', '’', true, 'right single quotation mark'], - ['“', '“', true, 'left double quotation mark'], - ['”', '”', true, 'right double quotation mark'], - ['‚', '‚', true, 'single low-9 quotation mark'], - ['„', '„', true, 'double low-9 quotation mark'], - ['<', '<', true, 'less-than sign'], - ['>', '>', true, 'greater-than sign'], - ['≤', '≤', true, 'less-than or equal to'], - ['≥', '≥', true, 'greater-than or equal to'], - ['–', '–', true, 'en dash'], - ['—', '—', true, 'em dash'], - ['¯', '¯', true, 'macron'], - ['‾', '‾', true, 'overline'], - ['¤', '¤', true, 'currency sign'], - ['¦', '¦', true, 'broken bar'], - ['¨', '¨', true, 'diaeresis'], - ['¡', '¡', true, 'inverted exclamation mark'], - ['¿', '¿', true, 'turned question mark'], - ['ˆ', 'ˆ', true, 'circumflex accent'], - ['˜', '˜', true, 'small tilde'], - ['°', '°', true, 'degree sign'], - ['−', '−', true, 'minus sign'], - ['±', '±', true, 'plus-minus sign'], - ['÷', '÷', true, 'division sign'], - ['⁄', '⁄', true, 'fraction slash'], - ['×', '×', true, 'multiplication sign'], - ['¹', '¹', true, 'superscript one'], - ['²', '²', true, 'superscript two'], - ['³', '³', true, 'superscript three'], - ['¼', '¼', true, 'fraction one quarter'], - ['½', '½', true, 'fraction one half'], - ['¾', '¾', true, 'fraction three quarters'], -// math / logical - ['ƒ', 'ƒ', true, 'function / florin'], - ['∫', '∫', true, 'integral'], - ['∑', '∑', true, 'n-ary sumation'], - ['∞', '∞', true, 'infinity'], - ['√', '√', true, 'square root'], - ['∼', '∼', false,'similar to'], - ['≅', '≅', false,'approximately equal to'], - ['≈', '≈', true, 'almost equal to'], - ['≠', '≠', true, 'not equal to'], - ['≡', '≡', true, 'identical to'], - ['∈', '∈', false,'element of'], - ['∉', '∉', false,'not an element of'], - ['∋', '∋', false,'contains as member'], - ['∏', '∏', true, 'n-ary product'], - ['∧', '∧', false,'logical and'], - ['∨', '∨', false,'logical or'], - ['¬', '¬', true, 'not sign'], - ['∩', '∩', true, 'intersection'], - ['∪', '∪', false,'union'], - ['∂', '∂', true, 'partial differential'], - ['∀', '∀', false,'for all'], - ['∃', '∃', false,'there exists'], - ['∅', '∅', false,'diameter'], - ['∇', '∇', false,'backward difference'], - ['∗', '∗', false,'asterisk operator'], - ['∝', '∝', false,'proportional to'], - ['∠', '∠', false,'angle'], -// undefined - ['´', '´', true, 'acute accent'], - ['¸', '¸', true, 'cedilla'], - ['ª', 'ª', true, 'feminine ordinal indicator'], - ['º', 'º', true, 'masculine ordinal indicator'], - ['†', '†', true, 'dagger'], - ['‡', '‡', true, 'double dagger'], -// alphabetical special chars - ['À', 'À', true, 'A - grave'], - ['Á', 'Á', true, 'A - acute'], - ['Â', 'Â', true, 'A - circumflex'], - ['Ã', 'Ã', true, 'A - tilde'], - ['Ä', 'Ä', true, 'A - diaeresis'], - ['Å', 'Å', true, 'A - ring above'], - ['Æ', 'Æ', true, 'ligature AE'], - ['Ç', 'Ç', true, 'C - cedilla'], - ['È', 'È', true, 'E - grave'], - ['É', 'É', true, 'E - acute'], - ['Ê', 'Ê', true, 'E - circumflex'], - ['Ë', 'Ë', true, 'E - diaeresis'], - ['Ì', 'Ì', true, 'I - grave'], - ['Í', 'Í', true, 'I - acute'], - ['Î', 'Î', true, 'I - circumflex'], - ['Ï', 'Ï', true, 'I - diaeresis'], - ['Ð', 'Ð', true, 'ETH'], - ['Ñ', 'Ñ', true, 'N - tilde'], - ['Ò', 'Ò', true, 'O - grave'], - ['Ó', 'Ó', true, 'O - acute'], - ['Ô', 'Ô', true, 'O - circumflex'], - ['Õ', 'Õ', true, 'O - tilde'], - ['Ö', 'Ö', true, 'O - diaeresis'], - ['Ø', 'Ø', true, 'O - slash'], - ['Œ', 'Œ', true, 'ligature OE'], - ['Š', 'Š', true, 'S - caron'], - ['Ù', 'Ù', true, 'U - grave'], - ['Ú', 'Ú', true, 'U - acute'], - ['Û', 'Û', true, 'U - circumflex'], - ['Ü', 'Ü', true, 'U - diaeresis'], - ['Ý', 'Ý', true, 'Y - acute'], - ['Ÿ', 'Ÿ', true, 'Y - diaeresis'], - ['Þ', 'Þ', true, 'THORN'], - ['à', 'à', true, 'a - grave'], - ['á', 'á', true, 'a - acute'], - ['â', 'â', true, 'a - circumflex'], - ['ã', 'ã', true, 'a - tilde'], - ['ä', 'ä', true, 'a - diaeresis'], - ['å', 'å', true, 'a - ring above'], - ['æ', 'æ', true, 'ligature ae'], - ['ç', 'ç', true, 'c - cedilla'], - ['è', 'è', true, 'e - grave'], - ['é', 'é', true, 'e - acute'], - ['ê', 'ê', true, 'e - circumflex'], - ['ë', 'ë', true, 'e - diaeresis'], - ['ì', 'ì', true, 'i - grave'], - ['í', 'í', true, 'i - acute'], - ['î', 'î', true, 'i - circumflex'], - ['ï', 'ï', true, 'i - diaeresis'], - ['ð', 'ð', true, 'eth'], - ['ñ', 'ñ', true, 'n - tilde'], - ['ò', 'ò', true, 'o - grave'], - ['ó', 'ó', true, 'o - acute'], - ['ô', 'ô', true, 'o - circumflex'], - ['õ', 'õ', true, 'o - tilde'], - ['ö', 'ö', true, 'o - diaeresis'], - ['ø', 'ø', true, 'o slash'], - ['œ', 'œ', true, 'ligature oe'], - ['š', 'š', true, 's - caron'], - ['ù', 'ù', true, 'u - grave'], - ['ú', 'ú', true, 'u - acute'], - ['û', 'û', true, 'u - circumflex'], - ['ü', 'ü', true, 'u - diaeresis'], - ['ý', 'ý', true, 'y - acute'], - ['þ', 'þ', true, 'thorn'], - ['ÿ', 'ÿ', true, 'y - diaeresis'], - ['Α', 'Α', true, 'Alpha'], - ['Β', 'Β', true, 'Beta'], - ['Γ', 'Γ', true, 'Gamma'], - ['Δ', 'Δ', true, 'Delta'], - ['Ε', 'Ε', true, 'Epsilon'], - ['Ζ', 'Ζ', true, 'Zeta'], - ['Η', 'Η', true, 'Eta'], - ['Θ', 'Θ', true, 'Theta'], - ['Ι', 'Ι', true, 'Iota'], - ['Κ', 'Κ', true, 'Kappa'], - ['Λ', 'Λ', true, 'Lambda'], - ['Μ', 'Μ', true, 'Mu'], - ['Ν', 'Ν', true, 'Nu'], - ['Ξ', 'Ξ', true, 'Xi'], - ['Ο', 'Ο', true, 'Omicron'], - ['Π', 'Π', true, 'Pi'], - ['Ρ', 'Ρ', true, 'Rho'], - ['Σ', 'Σ', true, 'Sigma'], - ['Τ', 'Τ', true, 'Tau'], - ['Υ', 'Υ', true, 'Upsilon'], - ['Φ', 'Φ', true, 'Phi'], - ['Χ', 'Χ', true, 'Chi'], - ['Ψ', 'Ψ', true, 'Psi'], - ['Ω', 'Ω', true, 'Omega'], - ['α', 'α', true, 'alpha'], - ['β', 'β', true, 'beta'], - ['γ', 'γ', true, 'gamma'], - ['δ', 'δ', true, 'delta'], - ['ε', 'ε', true, 'epsilon'], - ['ζ', 'ζ', true, 'zeta'], - ['η', 'η', true, 'eta'], - ['θ', 'θ', true, 'theta'], - ['ι', 'ι', true, 'iota'], - ['κ', 'κ', true, 'kappa'], - ['λ', 'λ', true, 'lambda'], - ['μ', 'μ', true, 'mu'], - ['ν', 'ν', true, 'nu'], - ['ξ', 'ξ', true, 'xi'], - ['ο', 'ο', true, 'omicron'], - ['π', 'π', true, 'pi'], - ['ρ', 'ρ', true, 'rho'], - ['ς', 'ς', true, 'final sigma'], - ['σ', 'σ', true, 'sigma'], - ['τ', 'τ', true, 'tau'], - ['υ', 'υ', true, 'upsilon'], - ['φ', 'φ', true, 'phi'], - ['χ', 'χ', true, 'chi'], - ['ψ', 'ψ', true, 'psi'], - ['ω', 'ω', true, 'omega'], -// symbols - ['ℵ', 'ℵ', false,'alef symbol'], - ['ϖ', 'ϖ', false,'pi symbol'], - ['ℜ', 'ℜ', false,'real part symbol'], - ['ϑ','ϑ', false,'theta symbol'], - ['ϒ', 'ϒ', false,'upsilon - hook symbol'], - ['℘', '℘', false,'Weierstrass p'], - ['ℑ', 'ℑ', false,'imaginary part'], -// arrows - ['←', '←', true, 'leftwards arrow'], - ['↑', '↑', true, 'upwards arrow'], - ['→', '→', true, 'rightwards arrow'], - ['↓', '↓', true, 'downwards arrow'], - ['↔', '↔', true, 'left right arrow'], - ['↵', '↵', false,'carriage return'], - ['⇐', '⇐', false,'leftwards double arrow'], - ['⇑', '⇑', false,'upwards double arrow'], - ['⇒', '⇒', false,'rightwards double arrow'], - ['⇓', '⇓', false,'downwards double arrow'], - ['⇔', '⇔', false,'left right double arrow'], - ['∴', '∴', false,'therefore'], - ['⊂', '⊂', false,'subset of'], - ['⊃', '⊃', false,'superset of'], - ['⊄', '⊄', false,'not a subset of'], - ['⊆', '⊆', false,'subset of or equal to'], - ['⊇', '⊇', false,'superset of or equal to'], - ['⊕', '⊕', false,'circled plus'], - ['⊗', '⊗', false,'circled times'], - ['⊥', '⊥', false,'perpendicular'], - ['⋅', '⋅', false,'dot operator'], - ['⌈', '⌈', false,'left ceiling'], - ['⌉', '⌉', false,'right ceiling'], - ['⌊', '⌊', false,'left floor'], - ['⌋', '⌋', false,'right floor'], - ['⟨', '〈', false,'left-pointing angle bracket'], - ['⟩', '〉', false,'right-pointing angle bracket'], - ['◊', '◊', true,'lozenge'], - ['♠', '♠', false,'black spade suit'], - ['♣', '♣', true, 'black club suit'], - ['♥', '♥', true, 'black heart suit'], - ['♦', '♦', true, 'black diamond suit'], - [' ', ' ', false,'en space'], - [' ', ' ', false,'em space'], - [' ', ' ', false,'thin space'], - ['‌', '‌', false,'zero width non-joiner'], - ['‍', '‍', false,'zero width joiner'], - ['‎', '‎', false,'left-to-right mark'], - ['‏', '‏', false,'right-to-left mark'], - ['­', '­', false,'soft hyphen'] -]; - -function renderCharMapHTML() { - var charsPerRow = 20, tdWidth=20, tdHeight=20; - var html = ''; - var cols=-1; - for (var i=0; i' - + charmap[i][1] - + ''; - if ((cols+1) % charsPerRow == 0) - html += ''; - } - } - if (cols % charsPerRow > 0) { - var padd = charsPerRow - (cols % charsPerRow); - for (var i=0; i '; - } - html += '
'; - document.write(html); -} - -function insertChar(chr) { - tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); - - // Refocus in window - if (tinyMCEPopup.isWindow) - window.focus(); - - tinyMCEPopup.close(); -} - -function previewChar(codeA, codeB, codeN) { - var elmA = document.getElementById('codeA'); - var elmB = document.getElementById('codeB'); - var elmV = document.getElementById('codeV'); - var elmN = document.getElementById('codeN'); - - if (codeA=='#160;') { - elmV.innerHTML = '__'; - } else { - elmV.innerHTML = '&' + codeA; - } - - elmB.innerHTML = '&' + codeA; - elmA.innerHTML = '&' + codeB; - elmN.innerHTML = codeN; -} +function init() { + tinyMCEPopup.resizeToInnerSize(); +} + +var charmap = new Array(); + +// for mor details please see w3c.org +// now here is the complete list ;) + +charmap = [ + [' ', ' ', true, 'no-break space'], + ['&', '&', true, 'ampersand'], + ['"', '"', true, 'quotation mark'], +// finance + ['¢', '¢', true, 'cent sign'], + ['€', '€', true, 'euro sign'], + ['£', '£', true, 'pound sign'], + ['¥', '¥', true, 'yen sign'], +// signs + ['©', '©', true, 'copyright sign'], + ['®', '®', true, 'registered sign'], + ['™', '™', true, 'trade mark sign'], + ['‰', '‰', true, 'per mille sign'], + ['µ', 'µ', true, 'micro sign'], + ['·', '·', true, 'middle dot'], + ['•', '•', true, 'bullet'], + ['…', '…', true, 'three dot leader'], + ['′', '′', true, 'minutes / feet'], + ['″', '″', true, 'seconds / inches'], + ['§', '§', true, 'section sign'], + ['¶', '¶', true, 'paragraph sign'], + ['ß', 'ß', true, 'sharp s / ess-zed'], +// quotations + ['‹', '‹', true, 'single left-pointing angle quotation mark'], + ['›', '›', true, 'single right-pointing angle quotation mark'], + ['«', '«', true, 'left pointing guillemet'], + ['»', '»', true, 'right pointing guillemet'], + ['‘', '‘', true, 'left single quotation mark'], + ['’', '’', true, 'right single quotation mark'], + ['“', '“', true, 'left double quotation mark'], + ['”', '”', true, 'right double quotation mark'], + ['‚', '‚', true, 'single low-9 quotation mark'], + ['„', '„', true, 'double low-9 quotation mark'], + ['<', '<', true, 'less-than sign'], + ['>', '>', true, 'greater-than sign'], + ['≤', '≤', true, 'less-than or equal to'], + ['≥', '≥', true, 'greater-than or equal to'], + ['–', '–', true, 'en dash'], + ['—', '—', true, 'em dash'], + ['¯', '¯', true, 'macron'], + ['‾', '‾', true, 'overline'], + ['¤', '¤', true, 'currency sign'], + ['¦', '¦', true, 'broken bar'], + ['¨', '¨', true, 'diaeresis'], + ['¡', '¡', true, 'inverted exclamation mark'], + ['¿', '¿', true, 'turned question mark'], + ['ˆ', 'ˆ', true, 'circumflex accent'], + ['˜', '˜', true, 'small tilde'], + ['°', '°', true, 'degree sign'], + ['−', '−', true, 'minus sign'], + ['±', '±', true, 'plus-minus sign'], + ['÷', '÷', true, 'division sign'], + ['⁄', '⁄', true, 'fraction slash'], + ['×', '×', true, 'multiplication sign'], + ['¹', '¹', true, 'superscript one'], + ['²', '²', true, 'superscript two'], + ['³', '³', true, 'superscript three'], + ['¼', '¼', true, 'fraction one quarter'], + ['½', '½', true, 'fraction one half'], + ['¾', '¾', true, 'fraction three quarters'], +// math / logical + ['ƒ', 'ƒ', true, 'function / florin'], + ['∫', '∫', true, 'integral'], + ['∑', '∑', true, 'n-ary sumation'], + ['∞', '∞', true, 'infinity'], + ['√', '√', true, 'square root'], + ['∼', '∼', false,'similar to'], + ['≅', '≅', false,'approximately equal to'], + ['≈', '≈', true, 'almost equal to'], + ['≠', '≠', true, 'not equal to'], + ['≡', '≡', true, 'identical to'], + ['∈', '∈', false,'element of'], + ['∉', '∉', false,'not an element of'], + ['∋', '∋', false,'contains as member'], + ['∏', '∏', true, 'n-ary product'], + ['∧', '∧', false,'logical and'], + ['∨', '∨', false,'logical or'], + ['¬', '¬', true, 'not sign'], + ['∩', '∩', true, 'intersection'], + ['∪', '∪', false,'union'], + ['∂', '∂', true, 'partial differential'], + ['∀', '∀', false,'for all'], + ['∃', '∃', false,'there exists'], + ['∅', '∅', false,'diameter'], + ['∇', '∇', false,'backward difference'], + ['∗', '∗', false,'asterisk operator'], + ['∝', '∝', false,'proportional to'], + ['∠', '∠', false,'angle'], +// undefined + ['´', '´', true, 'acute accent'], + ['¸', '¸', true, 'cedilla'], + ['ª', 'ª', true, 'feminine ordinal indicator'], + ['º', 'º', true, 'masculine ordinal indicator'], + ['†', '†', true, 'dagger'], + ['‡', '‡', true, 'double dagger'], +// alphabetical special chars + ['À', 'À', true, 'A - grave'], + ['Á', 'Á', true, 'A - acute'], + ['Â', 'Â', true, 'A - circumflex'], + ['Ã', 'Ã', true, 'A - tilde'], + ['Ä', 'Ä', true, 'A - diaeresis'], + ['Å', 'Å', true, 'A - ring above'], + ['Æ', 'Æ', true, 'ligature AE'], + ['Ç', 'Ç', true, 'C - cedilla'], + ['È', 'È', true, 'E - grave'], + ['É', 'É', true, 'E - acute'], + ['Ê', 'Ê', true, 'E - circumflex'], + ['Ë', 'Ë', true, 'E - diaeresis'], + ['Ì', 'Ì', true, 'I - grave'], + ['Í', 'Í', true, 'I - acute'], + ['Î', 'Î', true, 'I - circumflex'], + ['Ï', 'Ï', true, 'I - diaeresis'], + ['Ð', 'Ð', true, 'ETH'], + ['Ñ', 'Ñ', true, 'N - tilde'], + ['Ò', 'Ò', true, 'O - grave'], + ['Ó', 'Ó', true, 'O - acute'], + ['Ô', 'Ô', true, 'O - circumflex'], + ['Õ', 'Õ', true, 'O - tilde'], + ['Ö', 'Ö', true, 'O - diaeresis'], + ['Ø', 'Ø', true, 'O - slash'], + ['Œ', 'Œ', true, 'ligature OE'], + ['Š', 'Š', true, 'S - caron'], + ['Ù', 'Ù', true, 'U - grave'], + ['Ú', 'Ú', true, 'U - acute'], + ['Û', 'Û', true, 'U - circumflex'], + ['Ü', 'Ü', true, 'U - diaeresis'], + ['Ý', 'Ý', true, 'Y - acute'], + ['Ÿ', 'Ÿ', true, 'Y - diaeresis'], + ['Þ', 'Þ', true, 'THORN'], + ['à', 'à', true, 'a - grave'], + ['á', 'á', true, 'a - acute'], + ['â', 'â', true, 'a - circumflex'], + ['ã', 'ã', true, 'a - tilde'], + ['ä', 'ä', true, 'a - diaeresis'], + ['å', 'å', true, 'a - ring above'], + ['æ', 'æ', true, 'ligature ae'], + ['ç', 'ç', true, 'c - cedilla'], + ['è', 'è', true, 'e - grave'], + ['é', 'é', true, 'e - acute'], + ['ê', 'ê', true, 'e - circumflex'], + ['ë', 'ë', true, 'e - diaeresis'], + ['ì', 'ì', true, 'i - grave'], + ['í', 'í', true, 'i - acute'], + ['î', 'î', true, 'i - circumflex'], + ['ï', 'ï', true, 'i - diaeresis'], + ['ð', 'ð', true, 'eth'], + ['ñ', 'ñ', true, 'n - tilde'], + ['ò', 'ò', true, 'o - grave'], + ['ó', 'ó', true, 'o - acute'], + ['ô', 'ô', true, 'o - circumflex'], + ['õ', 'õ', true, 'o - tilde'], + ['ö', 'ö', true, 'o - diaeresis'], + ['ø', 'ø', true, 'o slash'], + ['œ', 'œ', true, 'ligature oe'], + ['š', 'š', true, 's - caron'], + ['ù', 'ù', true, 'u - grave'], + ['ú', 'ú', true, 'u - acute'], + ['û', 'û', true, 'u - circumflex'], + ['ü', 'ü', true, 'u - diaeresis'], + ['ý', 'ý', true, 'y - acute'], + ['þ', 'þ', true, 'thorn'], + ['ÿ', 'ÿ', true, 'y - diaeresis'], + ['Α', 'Α', true, 'Alpha'], + ['Β', 'Β', true, 'Beta'], + ['Γ', 'Γ', true, 'Gamma'], + ['Δ', 'Δ', true, 'Delta'], + ['Ε', 'Ε', true, 'Epsilon'], + ['Ζ', 'Ζ', true, 'Zeta'], + ['Η', 'Η', true, 'Eta'], + ['Θ', 'Θ', true, 'Theta'], + ['Ι', 'Ι', true, 'Iota'], + ['Κ', 'Κ', true, 'Kappa'], + ['Λ', 'Λ', true, 'Lambda'], + ['Μ', 'Μ', true, 'Mu'], + ['Ν', 'Ν', true, 'Nu'], + ['Ξ', 'Ξ', true, 'Xi'], + ['Ο', 'Ο', true, 'Omicron'], + ['Π', 'Π', true, 'Pi'], + ['Ρ', 'Ρ', true, 'Rho'], + ['Σ', 'Σ', true, 'Sigma'], + ['Τ', 'Τ', true, 'Tau'], + ['Υ', 'Υ', true, 'Upsilon'], + ['Φ', 'Φ', true, 'Phi'], + ['Χ', 'Χ', true, 'Chi'], + ['Ψ', 'Ψ', true, 'Psi'], + ['Ω', 'Ω', true, 'Omega'], + ['α', 'α', true, 'alpha'], + ['β', 'β', true, 'beta'], + ['γ', 'γ', true, 'gamma'], + ['δ', 'δ', true, 'delta'], + ['ε', 'ε', true, 'epsilon'], + ['ζ', 'ζ', true, 'zeta'], + ['η', 'η', true, 'eta'], + ['θ', 'θ', true, 'theta'], + ['ι', 'ι', true, 'iota'], + ['κ', 'κ', true, 'kappa'], + ['λ', 'λ', true, 'lambda'], + ['μ', 'μ', true, 'mu'], + ['ν', 'ν', true, 'nu'], + ['ξ', 'ξ', true, 'xi'], + ['ο', 'ο', true, 'omicron'], + ['π', 'π', true, 'pi'], + ['ρ', 'ρ', true, 'rho'], + ['ς', 'ς', true, 'final sigma'], + ['σ', 'σ', true, 'sigma'], + ['τ', 'τ', true, 'tau'], + ['υ', 'υ', true, 'upsilon'], + ['φ', 'φ', true, 'phi'], + ['χ', 'χ', true, 'chi'], + ['ψ', 'ψ', true, 'psi'], + ['ω', 'ω', true, 'omega'], +// symbols + ['ℵ', 'ℵ', false,'alef symbol'], + ['ϖ', 'ϖ', false,'pi symbol'], + ['ℜ', 'ℜ', false,'real part symbol'], + ['ϑ','ϑ', false,'theta symbol'], + ['ϒ', 'ϒ', false,'upsilon - hook symbol'], + ['℘', '℘', false,'Weierstrass p'], + ['ℑ', 'ℑ', false,'imaginary part'], +// arrows + ['←', '←', true, 'leftwards arrow'], + ['↑', '↑', true, 'upwards arrow'], + ['→', '→', true, 'rightwards arrow'], + ['↓', '↓', true, 'downwards arrow'], + ['↔', '↔', true, 'left right arrow'], + ['↵', '↵', false,'carriage return'], + ['⇐', '⇐', false,'leftwards double arrow'], + ['⇑', '⇑', false,'upwards double arrow'], + ['⇒', '⇒', false,'rightwards double arrow'], + ['⇓', '⇓', false,'downwards double arrow'], + ['⇔', '⇔', false,'left right double arrow'], + ['∴', '∴', false,'therefore'], + ['⊂', '⊂', false,'subset of'], + ['⊃', '⊃', false,'superset of'], + ['⊄', '⊄', false,'not a subset of'], + ['⊆', '⊆', false,'subset of or equal to'], + ['⊇', '⊇', false,'superset of or equal to'], + ['⊕', '⊕', false,'circled plus'], + ['⊗', '⊗', false,'circled times'], + ['⊥', '⊥', false,'perpendicular'], + ['⋅', '⋅', false,'dot operator'], + ['⌈', '⌈', false,'left ceiling'], + ['⌉', '⌉', false,'right ceiling'], + ['⌊', '⌊', false,'left floor'], + ['⌋', '⌋', false,'right floor'], + ['⟨', '〈', false,'left-pointing angle bracket'], + ['⟩', '〉', false,'right-pointing angle bracket'], + ['◊', '◊', true,'lozenge'], + ['♠', '♠', false,'black spade suit'], + ['♣', '♣', true, 'black club suit'], + ['♥', '♥', true, 'black heart suit'], + ['♦', '♦', true, 'black diamond suit'], + [' ', ' ', false,'en space'], + [' ', ' ', false,'em space'], + [' ', ' ', false,'thin space'], + ['‌', '‌', false,'zero width non-joiner'], + ['‍', '‍', false,'zero width joiner'], + ['‎', '‎', false,'left-to-right mark'], + ['‏', '‏', false,'right-to-left mark'], + ['­', '­', false,'soft hyphen'] +]; + +function renderCharMapHTML() { + var charsPerRow = 20, tdWidth=20, tdHeight=20; + var html = ''; + var cols=-1; + for (var i=0; i' + + charmap[i][1] + + ''; + if ((cols+1) % charsPerRow == 0) + html += ''; + } + } + if (cols % charsPerRow > 0) { + var padd = charsPerRow - (cols % charsPerRow); + for (var i=0; i '; + } + html += '
'; + document.write(html); +} + +function insertChar(chr) { + tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); + + // Refocus in window + if (tinyMCEPopup.isWindow) + window.focus(); + + tinyMCEPopup.close(); +} + +function previewChar(codeA, codeB, codeN) { + var elmA = document.getElementById('codeA'); + var elmB = document.getElementById('codeB'); + var elmV = document.getElementById('codeV'); + var elmN = document.getElementById('codeN'); + + if (codeA=='#160;') { + elmV.innerHTML = '__'; + } else { + elmV.innerHTML = '&' + codeA; + } + + elmB.innerHTML = '&' + codeA; + elmA.innerHTML = '&' + codeB; + elmN.innerHTML = codeN; +} diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/color_picker.js b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/color_picker.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/color_picker.js rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/color_picker.js index 00fc823de..6fe6b9039 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/color_picker.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/jscripts/color_picker.js @@ -1,240 +1,240 @@ -var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false; - -var colors = new Array( - "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033", - "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099", - "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff", - "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033", - "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399", - "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff", - "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333", - "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399", - "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff", - "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633", - "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699", - "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff", - "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633", - "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999", - "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff", - "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933", - "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999", - "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff", - "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33", - "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99", - "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff", - "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33", - "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99", - "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff", - "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33", - "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99", - "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff" -); - -var named = { - '#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige', - '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown', - '#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue', - '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod', - '#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen', - '#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue', - '#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue', - '#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen', - '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey', - '#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory', - '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue', - '#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen', - '#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey', - '#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon', - '#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue', - '#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin', - '#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid', - '#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff', - '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue', - '#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver', - '#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen', - '#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet', - '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen' -}; - -function init() { - var inputColor = convertRGBToHex(tinyMCE.getWindowArg('input_color')); - - if (tinyMCE.isMSIE) - tinyMCEPopup.resizeToInnerSize(); - - generatePicker(); - - if (inputColor) { - changeFinalColor(inputColor); - - col = convertHexToRGB(inputColor); - - if (col) - updateLight(col.r, col.g, col.b); - } -} - -function insertAction() { - var color = document.getElementById("color").value; - - tinyMCEPopup.execCommand(tinyMCE.getWindowArg('command'), false, color); - tinyMCEPopup.close(); -} - -function showColor(color, name) { - if (name) - document.getElementById("colorname").innerHTML = name; - - document.getElementById("preview").style.backgroundColor = color; - document.getElementById("color").value = color; -} - -function convertRGBToHex(col) { - var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi"); - - if (!col) - return col; - - var rgb = col.replace(re, "$1,$2,$3").split(','); - if (rgb.length == 3) { - r = parseInt(rgb[0]).toString(16); - g = parseInt(rgb[1]).toString(16); - b = parseInt(rgb[2]).toString(16); - - r = r.length == 1 ? '0' + r : r; - g = g.length == 1 ? '0' + g : g; - b = b.length == 1 ? '0' + b : b; - - return "#" + r + g + b; - } - - return col; -} - -function convertHexToRGB(col) { - if (col.indexOf('#') != -1) { - col = col.replace(new RegExp('[^0-9A-F]', 'gi'), ''); - - r = parseInt(col.substring(0, 2), 16); - g = parseInt(col.substring(2, 4), 16); - b = parseInt(col.substring(4, 6), 16); - - return {r : r, g : g, b : b}; - } - - return null; -} - -function generatePicker() { - var el = document.getElementById('light'), h = '', i; - - for (i = 0; i < detail; i++){ - h += '
'; - } - - el.innerHTML = h; -} - -function generateWebColors() { - var el = document.getElementById('webcolors'), h = '', i; - - if (el.className == 'generated') - return; - - h += '' - + ''; - - for (i=0; i' - + '' - + '' + colors[i] +  ''; - if ((i+1) % 18 == 0) - h += ''; - } - - h += '
'; - - el.innerHTML = h; - el.className = 'generated'; -} - -function generateNamedColors() { - var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; - - if (el.className == 'generated') - return; - - for (n in named) { - v = named[n]; - h += '' - } - - el.innerHTML = h; - el.className = 'generated'; -} - -function dechex(n) { - return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); -} - -function computeColor(e) { - var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB; - - x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0); - y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0); - - partWidth = document.getElementById('colorpicker').width / 6; - partDetail = detail / 2; - imHeight = document.getElementById('colorpicker').height; - - r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; - g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); - b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); - - coef = (imHeight - y) / imHeight; - r = 128 + (r - 128) * coef; - g = 128 + (g - 128) * coef; - b = 128 + (b - 128) * coef; - - changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); - updateLight(r, g, b); -} - -function updateLight(r, g, b) { - var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; - - for (i=0; i=0) && (i'; + } + + el.innerHTML = h; +} + +function generateWebColors() { + var el = document.getElementById('webcolors'), h = '', i; + + if (el.className == 'generated') + return; + + h += '' + + ''; + + for (i=0; i' + + '' + + '' + colors[i] +  ''; + if ((i+1) % 18 == 0) + h += ''; + } + + h += '
'; + + el.innerHTML = h; + el.className = 'generated'; +} + +function generateNamedColors() { + var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; + + if (el.className == 'generated') + return; + + for (n in named) { + v = named[n]; + h += '' + } + + el.innerHTML = h; + el.className = 'generated'; +} + +function dechex(n) { + return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); +} + +function computeColor(e) { + var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB; + + x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0); + y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0); + + partWidth = document.getElementById('colorpicker').width / 6; + partDetail = detail / 2; + imHeight = document.getElementById('colorpicker').height; + + r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; + g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); + b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); + + coef = (imHeight - y) / imHeight; + r = 128 + (r - 128) * coef; + g = 128 + (g - 128) * coef; + b = 128 + (b - 128) * coef; + + changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); + updateLight(r, g, b); +} + +function updateLight(r, g, b) { + var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; + + for (i=0; i=0) && (i'); -} - -function insertImage() { - var src = document.forms[0].src.value; - var alt = document.forms[0].alt.value; - var border = document.forms[0].border.value; - var vspace = document.forms[0].vspace.value; - var hspace = document.forms[0].hspace.value; - var width = document.forms[0].width.value; - var height = document.forms[0].height.value; - var align = document.forms[0].align.options[document.forms[0].align.selectedIndex].value; - - tinyMCEPopup.restoreSelection(); - tinyMCE.themes['advanced']._insertImage(src, alt, border, hspace, vspace, width, height, align); - tinyMCEPopup.close(); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); - - var formObj = document.forms[0]; - - for (var i=0; i 0) { - for (var i=0; i'); +} + +function insertImage() { + var src = document.forms[0].src.value; + var alt = document.forms[0].alt.value; + var border = document.forms[0].border.value; + var vspace = document.forms[0].vspace.value; + var hspace = document.forms[0].hspace.value; + var width = document.forms[0].width.value; + var height = document.forms[0].height.value; + var align = document.forms[0].align.options[document.forms[0].align.selectedIndex].value; + + tinyMCEPopup.restoreSelection(); + tinyMCE.themes['advanced']._insertImage(src, alt, border, hspace, vspace, width, height, align); + tinyMCEPopup.close(); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); + + var formObj = document.forms[0]; + + for (var i=0; i 0) { + for (var i=0; i'); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','theme_advanced_link'); - - // Handle file browser - if (isVisible('hrefbrowser')) - document.getElementById('href').style.width = '180px'; - - var formObj = document.forms[0]; - - for (var i=0; i 0) { - var formObj = document.forms[0]; - - for (var i=0; i'); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','theme_advanced_link'); + + // Handle file browser + if (isVisible('hrefbrowser')) + document.getElementById('href').style.width = '180px'; + + var formObj = document.forms[0]; + + for (var i=0; i 0) { + var formObj = document.forms[0]; + + for (var i=0; i - - {$lang_insert_link_title} - - - - - - - - -
- - -
-
- - - - - - - - - - - - - - - - - - - - - -
- - - - -
 
-
-
-
- -
-
- -
- -
- -
-
-
- - + + + {$lang_insert_link_title} + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm rename to code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm index c3f80c4f7..2296f7f09 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm @@ -1,32 +1,32 @@ - - - - {$lang_theme_code_title} - - - - - -
-
{$lang_theme_code_title}
- -
- -
- -
- - - -
-
- -
- -
- -
-
-
- - + + + + {$lang_theme_code_title} + + + + + +
+
{$lang_theme_code_title}
+ +
+ +
+ +
+ + + +
+
+ +
+ +
+ +
+
+
+ + diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/css/editor_content.css b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/css/editor_content.css similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/css/editor_content.css rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/css/editor_content.css index 2506c807c..783b170f7 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/simple/css/editor_content.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/css/editor_content.css @@ -1,25 +1,25 @@ -body, td, pre { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; -} - -body { - background-color: #FFFFFF; -} - -.mceVisualAid { - border: 1px dashed #BBBBBB; -} - -/* MSIE specific */ - -* html body { - scrollbar-3dlight-color: #F0F0EE; - scrollbar-arrow-color: #676662; - scrollbar-base-color: #F0F0EE; - scrollbar-darkshadow-color: #DDDDDD; - scrollbar-face-color: #E0E0DD; - scrollbar-highlight-color: #F0F0EE; - scrollbar-shadow-color: #F0F0EE; - scrollbar-track-color: #F5F5F5; -} +body, td, pre { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +body { + background-color: #FFFFFF; +} + +.mceVisualAid { + border: 1px dashed #BBBBBB; +} + +/* MSIE specific */ + +* html body { + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/css/editor_popup.css b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/css/editor_popup.css similarity index 95% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/css/editor_popup.css rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/css/editor_popup.css index f29b04a55..6f13e12e2 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/simple/css/editor_popup.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/css/editor_popup.css @@ -1,41 +1,41 @@ -body { - background-color: #F0F0EE; - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 11px; - scrollbar-3dlight-color: #F0F0EE; - scrollbar-arrow-color: #676662; - scrollbar-base-color: #F0F0EE; - scrollbar-darkshadow-color: #DDDDDD; - scrollbar-face-color: #E0E0DD; - scrollbar-highlight-color: #F0F0EE; - scrollbar-shadow-color: #F0F0EE; - scrollbar-track-color: #F5F5F5; -} - -td { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 11px; -} - -input { - background: #FFFFFF; - border: 1px solid #cccccc; -} - -td, input, select, textarea { - font-family: Verdana, Arial, Helvetica, sans-serif; - font-size: 10px; -} - -input, select, textarea { - border: 1px solid #808080; -} - -.input_noborder { - border: 0; -} - -.title { - font-size: 12px; - font-weight: bold; +body { + background-color: #F0F0EE; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; +} + +input { + background: #FFFFFF; + border: 1px solid #cccccc; +} + +td, input, select, textarea { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +input, select, textarea { + border: 1px solid #808080; +} + +.input_noborder { + border: 0; +} + +.title { + font-size: 12px; + font-weight: bold; } \ No newline at end of file diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/css/editor_ui.css b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/css/editor_ui.css similarity index 94% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/css/editor_ui.css rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/css/editor_ui.css index 6f5776820..7e875edc3 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/simple/css/editor_ui.css +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/css/editor_ui.css @@ -1,125 +1,125 @@ -.mceSeparatorLine { - border: 0; - padding: 0; - margin-left: 4px; - margin-right: 2px; -} - -.mceSelectList { - font-family: "MS Sans Serif"; - font-size: 7pt; - font-weight: normal; - margin-top: 2px; -} - -.mceLabel, .mceLabelDisabled { - font-family: "MS Sans Serif"; - font-size: 9pt; -} - -.mceLabel { - color: #000000; -} - -.mceLabelDisabled { - cursor: text; - color: #999999; -} - -.mceEditor { - background: #F0F0EE; - border: 1px solid #cccccc; -} - -.mceEditorArea { - font-family: "MS Sans Serif"; - background: #FFFFFF; -} - -.mceToolbar { - background: #F0F0EE; - border-top: 1px solid #cccccc; - line-height: 1px; - font-size: 1px; - padding-bottom: 1px; -} - -.mceEditorIframe { - border: 0; -} - -/* Button CSS rules */ - -a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img { - width: 20px; - height: 20px; - cursor: default; - margin-top: 1px; - margin-left: 1px; -} - -a.mceButtonDisabled img { - border: 0 !important; -} - -a.mceButtonNormal img, a.mceButtonSelected img { - border: 1px solid #F0F0EE !important; -} - -a.mceButtonSelected img { - border: 1px solid #C0C0BB !important; -} - -a.mceButtonNormal img:hover, a.mceButtonSelected img:hover { - border: 1px solid #0A246A !important; - cursor: default; - background-color: #B6BDD2; -} - -a.mceButtonDisabled img { - -moz-opacity:0.3; - opacity: 0.3; - border: 1px solid #F0F0EE !important; - cursor: default; -} - -a.mceTiledButton img { - background-image: url('../images/buttons.gif'); - background-repeat: no-repeat; -} - -/* MSIE specific rules */ - -* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img { - border: 0px !important; - margin-top: 2px; - margin-bottom: 1px; -} - -* html a.mceButtonDisabled img { - filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); - border: 0px !important; -} - -* html a.mceButtonDisabled { - border: 1px solid #F0F0EE !important; -} - -* html a.mceButtonNormal, * html a.mceButtonSelected { - border: 1px solid #F0F0EE; - cursor: default; -} - -* html a.mceButtonSelected { - border: 1px solid #C0C0BB; -} - -* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover { - border: 1px solid #0A246A; - cursor: default; - background-color: #B6BDD2; -} - -* html .mceSelectList { - margin-top: 2px; -} +.mceSeparatorLine { + border: 0; + padding: 0; + margin-left: 4px; + margin-right: 2px; +} + +.mceSelectList { + font-family: "MS Sans Serif"; + font-size: 7pt; + font-weight: normal; + margin-top: 2px; +} + +.mceLabel, .mceLabelDisabled { + font-family: "MS Sans Serif"; + font-size: 9pt; +} + +.mceLabel { + color: #000000; +} + +.mceLabelDisabled { + cursor: text; + color: #999999; +} + +.mceEditor { + background: #F0F0EE; + border: 1px solid #cccccc; +} + +.mceEditorArea { + font-family: "MS Sans Serif"; + background: #FFFFFF; +} + +.mceToolbar { + background: #F0F0EE; + border-top: 1px solid #cccccc; + line-height: 1px; + font-size: 1px; + padding-bottom: 1px; +} + +.mceEditorIframe { + border: 0; +} + +/* Button CSS rules */ + +a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img { + width: 20px; + height: 20px; + cursor: default; + margin-top: 1px; + margin-left: 1px; +} + +a.mceButtonDisabled img { + border: 0 !important; +} + +a.mceButtonNormal img, a.mceButtonSelected img { + border: 1px solid #F0F0EE !important; +} + +a.mceButtonSelected img { + border: 1px solid #C0C0BB !important; +} + +a.mceButtonNormal img:hover, a.mceButtonSelected img:hover { + border: 1px solid #0A246A !important; + cursor: default; + background-color: #B6BDD2; +} + +a.mceButtonDisabled img { + -moz-opacity:0.3; + opacity: 0.3; + border: 1px solid #F0F0EE !important; + cursor: default; +} + +a.mceTiledButton img { + background-image: url('../images/buttons.gif'); + background-repeat: no-repeat; +} + +/* MSIE specific rules */ + +* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img { + border: 0px !important; + margin-top: 2px; + margin-bottom: 1px; +} + +* html a.mceButtonDisabled img { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + border: 0px !important; +} + +* html a.mceButtonDisabled { + border: 1px solid #F0F0EE !important; +} + +* html a.mceButtonNormal, * html a.mceButtonSelected { + border: 1px solid #F0F0EE; + cursor: default; +} + +* html a.mceButtonSelected { + border: 1px solid #C0C0BB; +} + +* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover { + border: 1px solid #0A246A; + cursor: default; + background-color: #B6BDD2; +} + +* html .mceSelectList { + margin-top: 2px; +} diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js index cf6ec75e8..83ec5c37b 100755 --- a/lib/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js @@ -1,84 +1,84 @@ -/** - * $Id: editor_template_src.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - */ - -var TinyMCE_SimpleTheme = { - // List of button ids in tile map - _buttonMap : 'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo', - - getEditorTemplate : function() { - var html = ''; - - html += ''; - html += ''; - html += '
'; - html += 'IFRAME'; - html += '
'; - html += tinyMCE.getButtonHTML('bold', 'lang_bold_desc', '{$themeurl}/images/{$lang_bold_img}', 'Bold'); - html += tinyMCE.getButtonHTML('italic', 'lang_italic_desc', '{$themeurl}/images/{$lang_italic_img}', 'Italic'); - html += tinyMCE.getButtonHTML('underline', 'lang_underline_desc', '{$themeurl}/images/{$lang_underline_img}', 'Underline'); - html += tinyMCE.getButtonHTML('strikethrough', 'lang_striketrough_desc', '{$themeurl}/images/strikethrough.gif', 'Strikethrough'); - html += ''; - html += tinyMCE.getButtonHTML('undo', 'lang_undo_desc', '{$themeurl}/images/undo.gif', 'Undo'); - html += tinyMCE.getButtonHTML('redo', 'lang_redo_desc', '{$themeurl}/images/redo.gif', 'Redo'); - html += ''; - html += tinyMCE.getButtonHTML('cleanup', 'lang_cleanup_desc', '{$themeurl}/images/cleanup.gif', 'mceCleanup'); - html += ''; - html += tinyMCE.getButtonHTML('bullist', 'lang_bullist_desc', '{$themeurl}/images/bullist.gif', 'InsertUnorderedList'); - html += tinyMCE.getButtonHTML('numlist', 'lang_numlist_desc', '{$themeurl}/images/numlist.gif', 'InsertOrderedList'); - html += '
'; - - return { - delta_width : 0, - delta_height : 20, - html : html - }; - }, - - handleNodeChange : function(editor_id, node) { - // Reset old states - tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal'); - tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal'); - - // Handle elements - do { - switch (node.nodeName.toLowerCase()) { - case "b": - case "strong": - tinyMCE.switchClass(editor_id + '_bold', 'mceButtonSelected'); - break; - - case "i": - case "em": - tinyMCE.switchClass(editor_id + '_italic', 'mceButtonSelected'); - break; - - case "u": - tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected'); - break; - - case "strike": - tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonSelected'); - break; - - case "ul": - tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected'); - break; - - case "ol": - tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected'); - break; - } - } while ((node = node.parentNode) != null); - } -}; - -tinyMCE.addTheme("simple", TinyMCE_SimpleTheme); -tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap); +/** + * $Id: editor_template_src.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +var TinyMCE_SimpleTheme = { + // List of button ids in tile map + _buttonMap : 'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo', + + getEditorTemplate : function() { + var html = ''; + + html += ''; + html += ''; + html += '
'; + html += 'IFRAME'; + html += '
'; + html += tinyMCE.getButtonHTML('bold', 'lang_bold_desc', '{$themeurl}/images/{$lang_bold_img}', 'Bold'); + html += tinyMCE.getButtonHTML('italic', 'lang_italic_desc', '{$themeurl}/images/{$lang_italic_img}', 'Italic'); + html += tinyMCE.getButtonHTML('underline', 'lang_underline_desc', '{$themeurl}/images/{$lang_underline_img}', 'Underline'); + html += tinyMCE.getButtonHTML('strikethrough', 'lang_striketrough_desc', '{$themeurl}/images/strikethrough.gif', 'Strikethrough'); + html += ''; + html += tinyMCE.getButtonHTML('undo', 'lang_undo_desc', '{$themeurl}/images/undo.gif', 'Undo'); + html += tinyMCE.getButtonHTML('redo', 'lang_redo_desc', '{$themeurl}/images/redo.gif', 'Redo'); + html += ''; + html += tinyMCE.getButtonHTML('cleanup', 'lang_cleanup_desc', '{$themeurl}/images/cleanup.gif', 'mceCleanup'); + html += ''; + html += tinyMCE.getButtonHTML('bullist', 'lang_bullist_desc', '{$themeurl}/images/bullist.gif', 'InsertUnorderedList'); + html += tinyMCE.getButtonHTML('numlist', 'lang_numlist_desc', '{$themeurl}/images/numlist.gif', 'InsertOrderedList'); + html += '
'; + + return { + delta_width : 0, + delta_height : 20, + html : html + }; + }, + + handleNodeChange : function(editor_id, node) { + // Reset old states + tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal'); + + // Handle elements + do { + switch (node.nodeName.toLowerCase()) { + case "b": + case "strong": + tinyMCE.switchClass(editor_id + '_bold', 'mceButtonSelected'); + break; + + case "i": + case "em": + tinyMCE.switchClass(editor_id + '_italic', 'mceButtonSelected'); + break; + + case "u": + tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected'); + break; + + case "strike": + tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonSelected'); + break; + + case "ul": + tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected'); + break; + + case "ol": + tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected'); + break; + } + } while ((node = node.parentNode) != null); + } +}; + +tinyMCE.addTheme("simple", TinyMCE_SimpleTheme); +tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap); diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/bold.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bold.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/bold.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bold.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/bold_de_se.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bold_de_se.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/bold_de_se.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bold_de_se.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/bold_fr.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bold_fr.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/bold_fr.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bold_fr.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/bold_ru.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bold_ru.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/bold_ru.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bold_ru.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/bold_tw.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bold_tw.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/bold_tw.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bold_tw.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/bullist.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bullist.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/bullist.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/bullist.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/buttons.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/buttons.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/buttons.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/buttons.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/cleanup.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/cleanup.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/cleanup.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/cleanup.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/italic.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/italic.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/italic.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/italic.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/italic_de_se.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/italic_de_se.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/italic_de_se.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/italic_de_se.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/italic_ru.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/italic_ru.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/italic_ru.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/italic_ru.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/italic_tw.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/italic_tw.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/italic_tw.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/italic_tw.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/numlist.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/numlist.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/numlist.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/numlist.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/redo.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/redo.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/redo.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/redo.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/separator.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/separator.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/separator.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/separator.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/spacer.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/spacer.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/spacer.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/spacer.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/strikethrough.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/strikethrough.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/strikethrough.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/strikethrough.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/underline.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/underline.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/underline.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/underline.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/underline_fr.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/underline_fr.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/underline_fr.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/underline_fr.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/underline_ru.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/underline_ru.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/underline_ru.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/underline_ru.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/underline_tw.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/underline_tw.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/underline_tw.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/underline_tw.gif diff --git a/lib/tinymce/jscripts/tiny_mce/themes/simple/images/undo.gif b/code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/undo.gif similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/themes/simple/images/undo.gif rename to code/web/js/tinymce/jscripts/tiny_mce/themes/simple/images/undo.gif diff --git a/lib/tinymce/jscripts/tiny_mce/tiny_mce.js b/code/web/js/tinymce/jscripts/tiny_mce/tiny_mce.js similarity index 100% rename from lib/tinymce/jscripts/tiny_mce/tiny_mce.js rename to code/web/js/tinymce/jscripts/tiny_mce/tiny_mce.js diff --git a/lib/tinymce/jscripts/tiny_mce/tiny_mce_dev.js b/code/web/js/tinymce/jscripts/tiny_mce/tiny_mce_dev.js similarity index 97% rename from lib/tinymce/jscripts/tiny_mce/tiny_mce_dev.js rename to code/web/js/tinymce/jscripts/tiny_mce/tiny_mce_dev.js index 19569a11d..4ce70480a 100755 --- a/lib/tinymce/jscripts/tiny_mce/tiny_mce_dev.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/tiny_mce_dev.js @@ -1,40 +1,40 @@ -/** - * $Id: tiny_mce_dev.js 3831 2007-12-11 23:14:32Z brian $ - * - * @author Moxiecode - * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. - * - * This file should only be used while developing TinyMCE - * tiny_mce.js or tiny_mce_src.js should be used in a production environment. - * This file loads the js files from classes instead of a merged copy. - */ - -function getTinyMCEBaseURL() { - var i, nl = document.getElementsByTagName('script'); - - for (i=0; i'); -} - -// Load all classes -var tinyMCEBaseURL = getTinyMCEBaseURL(); - -include('classes/TinyMCE_Engine.class.js'); -include('classes/TinyMCE_Control.class.js'); -include('classes/TinyMCE_Selection.class.js'); -include('classes/TinyMCE_UndoRedo.class.js'); -include('classes/TinyMCE_Cleanup.class.js'); -include('classes/TinyMCE_DOMUtils.class.js'); -include('classes/TinyMCE_URL.class.js'); -include('classes/TinyMCE_Array.class.js'); -include('classes/TinyMCE_Event.class.js'); -include('classes/TinyMCE_ForceParagraphs.class.js'); -include('classes/TinyMCE_Layer.class.js'); -include('classes/TinyMCE_Menu.class.js'); -include('classes/TinyMCE_Debug.class.js'); +/** + * $Id: tiny_mce_dev.js 3831 2007-12-11 23:14:32Z brian $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + * + * This file should only be used while developing TinyMCE + * tiny_mce.js or tiny_mce_src.js should be used in a production environment. + * This file loads the js files from classes instead of a merged copy. + */ + +function getTinyMCEBaseURL() { + var i, nl = document.getElementsByTagName('script'); + + for (i=0; i'); +} + +// Load all classes +var tinyMCEBaseURL = getTinyMCEBaseURL(); + +include('classes/TinyMCE_Engine.class.js'); +include('classes/TinyMCE_Control.class.js'); +include('classes/TinyMCE_Selection.class.js'); +include('classes/TinyMCE_UndoRedo.class.js'); +include('classes/TinyMCE_Cleanup.class.js'); +include('classes/TinyMCE_DOMUtils.class.js'); +include('classes/TinyMCE_URL.class.js'); +include('classes/TinyMCE_Array.class.js'); +include('classes/TinyMCE_Event.class.js'); +include('classes/TinyMCE_ForceParagraphs.class.js'); +include('classes/TinyMCE_Layer.class.js'); +include('classes/TinyMCE_Menu.class.js'); +include('classes/TinyMCE_Debug.class.js'); diff --git a/lib/tinymce/jscripts/tiny_mce/tiny_mce_popup.js b/code/web/js/tinymce/jscripts/tiny_mce/tiny_mce_popup.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/tiny_mce_popup.js rename to code/web/js/tinymce/jscripts/tiny_mce/tiny_mce_popup.js index 9b3e800bf..306a021d5 100755 --- a/lib/tinymce/jscripts/tiny_mce/tiny_mce_popup.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/tiny_mce_popup.js @@ -1,294 +1,294 @@ -// Some global instances, this will be filled later -var tinyMCE = null, tinyMCELang = null; - -function TinyMCE_Popup() { -}; - -TinyMCE_Popup.prototype = { - findWin : function(w) { - var c; - - // Check parents - c = w; - while (c && (c = c.parent) != null) { - if (typeof(c.tinyMCE) != "undefined") - return c; - } - - // Check openers - c = w; - while (c && (c = c.opener) != null) { - if (typeof(c.tinyMCE) != "undefined") - return c; - } - - // Try top - if (typeof(top.tinyMCE) != "undefined") - return top; - - return null; - }, - - init : function() { - var win = window.opener ? window.opener : window.dialogArguments, c; - var inst, re, title, divElm; - - if (!win) - win = this.findWin(window); - - if (!win) { - alert("tinyMCE object reference not found from popup."); - return; - } - - window.opener = win; - this.windowOpener = win; - this.onLoadEval = ""; - - // Setup parent references - tinyMCE = win.tinyMCE; - tinyMCELang = win.tinyMCELang; - - inst = tinyMCE.selectedInstance; - this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false; - this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true); - - if (this.isWindow) - window.focus(); - - // Store selection - if (this.storeSelection) - inst.selectionBookmark = inst.selection.getBookmark(true); - - // Setup dir - if (tinyMCELang.lang_dir) - document.dir = tinyMCELang.lang_dir; - - // Setup title - re = new RegExp('{|\\\$|}', 'g'); - title = document.title.replace(re, ""); - if (typeof(tinyMCELang[title]) != "undefined") { - divElm = document.createElement("div"); - divElm.innerHTML = tinyMCELang[title]; - document.title = divElm.innerHTML; - - if (typeof(tinyMCE.setWindowTitle) != 'undefined') - tinyMCE.setWindowTitle(window, divElm.innerHTML); - } - - // Output Popup CSS class - document.write(''); - - if (tinyMCE.getParam("popups_css_add")) { - c = tinyMCE.getParam("popups_css_add"); - - // Is relative - if (c.indexOf('://') == -1 && c.charAt(0) != '/') - c = tinyMCE.documentBasePath + "/" + c; - - document.write(''); - } - - tinyMCE.addEvent(window, "load", this.onLoad); - }, - - onLoad : function() { - var dir, i, elms, body = document.body; - - if (tinyMCE.getWindowArg('mce_replacevariables', true)) - body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs); - - dir = tinyMCE.selectedInstance.settings.directionality; - if (dir == "rtl" && document.forms && document.forms.length > 0) { - elms = document.forms[0].elements; - for (i=0; i=0; i--) { - if (wrapper.hasChildNodes()) - wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild); - else - wrapper.appendChild(nodes[i].cloneNode(true)); - - nodes[i].parentNode.removeChild(nodes[i]); - } - - // Add wrapper - doc.body.appendChild(wrapper); - - // Create iframe - iframe = document.createElement("iframe"); - iframe.id = "mcWinIframe"; - iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings.default_document; - iframe.width = "100%"; - iframe.height = "100%"; - iframe.style.margin = '0'; - - // Add iframe - doc.body.appendChild(iframe); - - // Measure iframe - iframe = document.getElementById('mcWinIframe'); - dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth; - dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight; - - // Resize window - // tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy); - window.resizeBy(dx, dy); - - // Hide iframe and show wrapper - body.style.margin = oldMargin; - iframe.style.display = 'none'; - wrapper.style.display = 'block'; - } - }, - - resizeToContent : function() { - var isMSIE = (navigator.appName == "Microsoft Internet Explorer"); - var isOpera = (navigator.userAgent.indexOf("Opera") != -1); - var elm, width, height, x, y, dx, dy; - - if (isOpera) - return; - - if (isMSIE) { - try { window.resizeTo(10, 10); } catch (e) {} - - elm = document.body; - width = elm.offsetWidth; - height = elm.offsetHeight; - dx = (elm.scrollWidth - width) + 4; - dy = elm.scrollHeight - height; - - try { window.resizeBy(dx, dy); } catch (e) {} - } else { - window.scrollBy(1000, 1000); - if (window.scrollX > 0 || window.scrollY > 0) { - window.resizeBy(window.innerWidth * 2, window.innerHeight * 2); - window.sizeToContent(); - window.scrollTo(0, 0); - x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0); - y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0); - window.moveTo(x, y); - } - } - }, - - getWindowArg : function(name, default_value) { - return tinyMCE.getWindowArg(name, default_value); - }, - - restoreSelection : function() { - var inst; - - if (this.storeSelection) { - inst = tinyMCE.selectedInstance; - - inst.getWin().focus(); - - if (inst.selectionBookmark) - inst.selection.moveToBookmark(inst.selectionBookmark); - } - }, - - execCommand : function(command, user_interface, value) { - var inst = tinyMCE.selectedInstance; - - this.restoreSelection(); - inst.execCommand(command, user_interface, value); - - // Store selection - if (this.storeSelection) - inst.selectionBookmark = inst.selection.getBookmark(true); - }, - - close : function() { - tinyMCE.closeWindow(window); - }, - - pickColor : function(e, element_id) { - tinyMCE.selectedInstance.execCommand('mceColorPicker', true, { - element_id : element_id, - document : document, - window : window, - store_selection : false - }); - }, - - openBrowser : function(element_id, type, option) { - var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback")); - var url = document.getElementById(element_id).value; - - tinyMCE.setWindowArg("window", window); - tinyMCE.setWindowArg("document", document); - - // Call to external callback - if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined") - alert("Callback function: " + cb + " could not be found."); - else - eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);"); - }, - - importClass : function(c) { - var n; - - window[c] = function() {}; - - for (n in window.opener[c].prototype) - window[c].prototype[n] = window.opener[c].prototype[n]; - - window[c].constructor = window.opener[c].constructor; - } - - }; - -// Setup global instance -var tinyMCEPopup = new TinyMCE_Popup(); - -tinyMCEPopup.init(); +// Some global instances, this will be filled later +var tinyMCE = null, tinyMCELang = null; + +function TinyMCE_Popup() { +}; + +TinyMCE_Popup.prototype = { + findWin : function(w) { + var c; + + // Check parents + c = w; + while (c && (c = c.parent) != null) { + if (typeof(c.tinyMCE) != "undefined") + return c; + } + + // Check openers + c = w; + while (c && (c = c.opener) != null) { + if (typeof(c.tinyMCE) != "undefined") + return c; + } + + // Try top + if (typeof(top.tinyMCE) != "undefined") + return top; + + return null; + }, + + init : function() { + var win = window.opener ? window.opener : window.dialogArguments, c; + var inst, re, title, divElm; + + if (!win) + win = this.findWin(window); + + if (!win) { + alert("tinyMCE object reference not found from popup."); + return; + } + + window.opener = win; + this.windowOpener = win; + this.onLoadEval = ""; + + // Setup parent references + tinyMCE = win.tinyMCE; + tinyMCELang = win.tinyMCELang; + + inst = tinyMCE.selectedInstance; + this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false; + this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow && tinyMCE.getWindowArg('mce_store_selection', true); + + if (this.isWindow) + window.focus(); + + // Store selection + if (this.storeSelection) + inst.selectionBookmark = inst.selection.getBookmark(true); + + // Setup dir + if (tinyMCELang.lang_dir) + document.dir = tinyMCELang.lang_dir; + + // Setup title + re = new RegExp('{|\\\$|}', 'g'); + title = document.title.replace(re, ""); + if (typeof(tinyMCELang[title]) != "undefined") { + divElm = document.createElement("div"); + divElm.innerHTML = tinyMCELang[title]; + document.title = divElm.innerHTML; + + if (typeof(tinyMCE.setWindowTitle) != 'undefined') + tinyMCE.setWindowTitle(window, divElm.innerHTML); + } + + // Output Popup CSS class + document.write(''); + + if (tinyMCE.getParam("popups_css_add")) { + c = tinyMCE.getParam("popups_css_add"); + + // Is relative + if (c.indexOf('://') == -1 && c.charAt(0) != '/') + c = tinyMCE.documentBasePath + "/" + c; + + document.write(''); + } + + tinyMCE.addEvent(window, "load", this.onLoad); + }, + + onLoad : function() { + var dir, i, elms, body = document.body; + + if (tinyMCE.getWindowArg('mce_replacevariables', true)) + body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs); + + dir = tinyMCE.selectedInstance.settings.directionality; + if (dir == "rtl" && document.forms && document.forms.length > 0) { + elms = document.forms[0].elements; + for (i=0; i=0; i--) { + if (wrapper.hasChildNodes()) + wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild); + else + wrapper.appendChild(nodes[i].cloneNode(true)); + + nodes[i].parentNode.removeChild(nodes[i]); + } + + // Add wrapper + doc.body.appendChild(wrapper); + + // Create iframe + iframe = document.createElement("iframe"); + iframe.id = "mcWinIframe"; + iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings.default_document; + iframe.width = "100%"; + iframe.height = "100%"; + iframe.style.margin = '0'; + + // Add iframe + doc.body.appendChild(iframe); + + // Measure iframe + iframe = document.getElementById('mcWinIframe'); + dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth; + dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight; + + // Resize window + // tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy); + window.resizeBy(dx, dy); + + // Hide iframe and show wrapper + body.style.margin = oldMargin; + iframe.style.display = 'none'; + wrapper.style.display = 'block'; + } + }, + + resizeToContent : function() { + var isMSIE = (navigator.appName == "Microsoft Internet Explorer"); + var isOpera = (navigator.userAgent.indexOf("Opera") != -1); + var elm, width, height, x, y, dx, dy; + + if (isOpera) + return; + + if (isMSIE) { + try { window.resizeTo(10, 10); } catch (e) {} + + elm = document.body; + width = elm.offsetWidth; + height = elm.offsetHeight; + dx = (elm.scrollWidth - width) + 4; + dy = elm.scrollHeight - height; + + try { window.resizeBy(dx, dy); } catch (e) {} + } else { + window.scrollBy(1000, 1000); + if (window.scrollX > 0 || window.scrollY > 0) { + window.resizeBy(window.innerWidth * 2, window.innerHeight * 2); + window.sizeToContent(); + window.scrollTo(0, 0); + x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0); + y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0); + window.moveTo(x, y); + } + } + }, + + getWindowArg : function(name, default_value) { + return tinyMCE.getWindowArg(name, default_value); + }, + + restoreSelection : function() { + var inst; + + if (this.storeSelection) { + inst = tinyMCE.selectedInstance; + + inst.getWin().focus(); + + if (inst.selectionBookmark) + inst.selection.moveToBookmark(inst.selectionBookmark); + } + }, + + execCommand : function(command, user_interface, value) { + var inst = tinyMCE.selectedInstance; + + this.restoreSelection(); + inst.execCommand(command, user_interface, value); + + // Store selection + if (this.storeSelection) + inst.selectionBookmark = inst.selection.getBookmark(true); + }, + + close : function() { + tinyMCE.closeWindow(window); + }, + + pickColor : function(e, element_id) { + tinyMCE.selectedInstance.execCommand('mceColorPicker', true, { + element_id : element_id, + document : document, + window : window, + store_selection : false + }); + }, + + openBrowser : function(element_id, type, option) { + var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback")); + var url = document.getElementById(element_id).value; + + tinyMCE.setWindowArg("window", window); + tinyMCE.setWindowArg("document", document); + + // Call to external callback + if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined") + alert("Callback function: " + cb + " could not be found."); + else + eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);"); + }, + + importClass : function(c) { + var n; + + window[c] = function() {}; + + for (n in window.opener[c].prototype) + window[c].prototype[n] = window.opener[c].prototype[n]; + + window[c].constructor = window.opener[c].constructor; + } + + }; + +// Setup global instance +var tinyMCEPopup = new TinyMCE_Popup(); + +tinyMCEPopup.init(); diff --git a/lib/tinymce/jscripts/tiny_mce/tiny_mce_src.js b/code/web/js/tinymce/jscripts/tiny_mce/tiny_mce_src.js similarity index 96% rename from lib/tinymce/jscripts/tiny_mce/tiny_mce_src.js rename to code/web/js/tinymce/jscripts/tiny_mce/tiny_mce_src.js index 954ca1aa4..d14c85800 100755 --- a/lib/tinymce/jscripts/tiny_mce/tiny_mce_src.js +++ b/code/web/js/tinymce/jscripts/tiny_mce/tiny_mce_src.js @@ -1,7607 +1,7607 @@ - -/* file:jscripts/tiny_mce/classes/TinyMCE_Engine.class.js */ - -function TinyMCE_Engine() { - var ua; - - this.majorVersion = "2"; - this.minorVersion = "1.3"; - this.releaseDate = "2007-11-27"; - - this.instances = []; - this.switchClassCache = []; - this.windowArgs = []; - this.loadedFiles = []; - this.pendingFiles = []; - this.loadingIndex = 0; - this.configs = []; - this.currentConfig = 0; - this.eventHandlers = []; - this.log = []; - this.undoLevels = []; - this.undoIndex = 0; - this.typingUndoIndex = -1; - this.settings = []; - - // Browser check - ua = navigator.userAgent; - this.isMSIE = (navigator.appName == "Microsoft Internet Explorer"); - this.isMSIE5 = this.isMSIE && (ua.indexOf('MSIE 5') != -1); - this.isMSIE5_0 = this.isMSIE && (ua.indexOf('MSIE 5.0') != -1); - this.isMSIE7 = this.isMSIE && (ua.indexOf('MSIE 7') != -1); - this.isGecko = ua.indexOf('Gecko') != -1; // Will also be true on Safari - this.isSafari = ua.indexOf('Safari') != -1; - this.isOpera = window['opera'] && opera.buildNumber ? true : false; - this.isMac = ua.indexOf('Mac') != -1; - this.isNS7 = ua.indexOf('Netscape/7') != -1; - this.isNS71 = ua.indexOf('Netscape/7.1') != -1; - this.dialogCounter = 0; - this.plugins = []; - this.themes = []; - this.menus = []; - this.loadedPlugins = []; - this.buttonMap = []; - this.isLoaded = false; - - // Fake MSIE on Opera and if Opera fakes IE, Gecko or Safari cancel those - if (this.isOpera) { - this.isMSIE = true; - this.isGecko = false; - this.isSafari = false; - } - - this.isIE = this.isMSIE; - this.isRealIE = this.isMSIE && !this.isOpera; - - // TinyMCE editor id instance counter - this.idCounter = 0; -}; - -TinyMCE_Engine.prototype = { - init : function(settings) { - var theme, nl, baseHREF = "", i, cssPath, entities, h, p, src, elements = [], head; - - // IE 5.0x is no longer supported since 5.5, 6.0 and 7.0 now exists. We can't support old browsers forever, sorry. - if (this.isMSIE5_0) - return; - - this.settings = settings; - - // Check if valid browser has execcommand support - if (typeof(document.execCommand) == 'undefined') - return; - - // Get script base path - if (!tinyMCE.baseURL) { - // Search through head - head = document.getElementsByTagName('head')[0]; - - if (head) { - for (i=0, nl = head.getElementsByTagName('script'); i'); - this._def("font_size_classes", ''); - this._def("font_size_style_values", 'xx-small,x-small,small,medium,large,x-large,xx-large', true); - this._def("event_elements", 'a,img', true); - this._def("convert_urls", true); - this._def("table_inline_editing", false); - this._def("object_resizing", true); - this._def("custom_shortcuts", true); - this._def("convert_on_click", false); - this._def("content_css", ''); - this._def("fix_list_elements", true); - this._def("fix_table_elements", false); - this._def("strict_loading_mode", document.contentType == 'application/xhtml+xml'); - this._def("hidden_tab_class", ''); - this._def("display_tab_class", ''); - this._def("gecko_spellcheck", false); - this._def("hide_selects_on_submit", true); - this._def("forced_root_block", false); - this._def("remove_trailing_nbsp", false); - this._def("save_on_tinymce_forms", false); - - // Force strict loading mode to false on non Gecko browsers - if (this.isMSIE && !this.isOpera) - this.settings.strict_loading_mode = false; - - // Browser check IE - if (this.isMSIE && this.settings.browsers.indexOf('msie') == -1) - return; - - // Browser check Gecko - if (this.isGecko && this.settings.browsers.indexOf('gecko') == -1) - return; - - // Browser check Safari - if (this.isSafari && this.settings.browsers.indexOf('safari') == -1) - return; - - // Browser check Opera - if (this.isOpera && this.settings.browsers.indexOf('opera') == -1) - return; - - // If not super absolute make it so - baseHREF = tinyMCE.settings.document_base_url; - h = document.location.href; - p = h.indexOf('://'); - if (p > 0 && document.location.protocol != "file:") { - p = h.indexOf('/', p + 3); - h = h.substring(0, p); - - if (baseHREF.indexOf('://') == -1) - baseHREF = h + baseHREF; - - tinyMCE.settings.document_base_url = baseHREF; - tinyMCE.settings.document_base_prefix = h; - } - - // Trim away query part - if (baseHREF.indexOf('?') != -1) - baseHREF = baseHREF.substring(0, baseHREF.indexOf('?')); - - this.settings.base_href = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/"; - - theme = this.settings.theme; - this.inlineStrict = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment'; - this.inlineTransitional = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment'; - this.blockElms = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP'; - this.blockRegExp = new RegExp("^(" + this.blockElms + ")$", "i"); - this.posKeyCodes = [13,45,36,35,33,34,37,38,39,40]; - this.uniqueURL = 'javascript:void(091039730);'; // Make unique URL non real URL - this.uniqueTag = ''; - this.callbacks = ['onInit', 'getInfo', 'getEditorTemplate', 'setupContent', 'onChange', 'onPageLoad', 'handleNodeChange', 'initInstance', 'execCommand', 'getControlHTML', 'handleEvent', 'cleanup', 'removeInstance']; - - // Theme url - this.settings.theme_href = tinyMCE.baseURL + "/themes/" + theme; - - if (!tinyMCE.isIE || tinyMCE.isOpera) - this.settings.force_br_newlines = false; - - if (tinyMCE.getParam("popups_css", false)) { - cssPath = tinyMCE.getParam("popups_css", ""); - - // Is relative - if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/') - this.settings.popups_css = this.documentBasePath + "/" + cssPath; - else - this.settings.popups_css = cssPath; - } else - this.settings.popups_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_popup.css"; - - if (tinyMCE.getParam("editor_css", false)) { - cssPath = tinyMCE.getParam("editor_css", ""); - - // Is relative - if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/') - this.settings.editor_css = this.documentBasePath + "/" + cssPath; - else - this.settings.editor_css = cssPath; - } else { - if (this.settings.editor_css !== '') - this.settings.editor_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css"; - } - - // Only do this once - if (this.configs.length == 0) { - if (typeof(TinyMCECompressed) == "undefined") { - tinyMCE.addEvent(window, "DOMContentLoaded", TinyMCE_Engine.prototype.onLoad); - - if (tinyMCE.isRealIE) { - if (document.body) - tinyMCE.addEvent(document.body, "readystatechange", TinyMCE_Engine.prototype.onLoad); - else - tinyMCE.addEvent(document, "readystatechange", TinyMCE_Engine.prototype.onLoad); - } - - tinyMCE.addEvent(window, "load", TinyMCE_Engine.prototype.onLoad); - tinyMCE._addUnloadEvents(); - } - } - - this.loadScript(tinyMCE.baseURL + '/themes/' + this.settings.theme + '/editor_template' + tinyMCE.srcMode + '.js'); - this.loadScript(tinyMCE.baseURL + '/langs/' + this.settings.language + '.js'); - this.loadCSS(this.settings.editor_css); - - // Add plugins - p = tinyMCE.getParam('plugins', '', true, ','); - if (p.length > 0) { - for (i=0; i&"]', 'g'); - }, - - _addUnloadEvents : function() { - var st = tinyMCE.settings.add_unload_trigger; - - if (tinyMCE.isIE) { - if (st) { - tinyMCE.addEvent(window, "unload", TinyMCE_Engine.prototype.unloadHandler); - tinyMCE.addEvent(window.document, "beforeunload", TinyMCE_Engine.prototype.unloadHandler); - } - } else { - if (st) - tinyMCE.addEvent(window, "unload", function () {tinyMCE.triggerSave(true, true);}); - } - }, - - _def : function(key, def_val, t) { - var v = tinyMCE.getParam(key, def_val); - - v = t ? v.replace(/\s+/g, "") : v; - - this.settings[key] = v; - }, - - hasPlugin : function(n) { - return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null; - }, - - addPlugin : function(n, p) { - var op = this.plugins[n]; - - // Use the previous plugin object base URL used when loading external plugins - p.baseURL = op ? op.baseURL : tinyMCE.baseURL + "/plugins/" + n; - this.plugins[n] = p; - - this.loadNextScript(); - }, - - setPluginBaseURL : function(n, u) { - var op = this.plugins[n]; - - if (op) - op.baseURL = u; - else - this.plugins[n] = {baseURL : u}; - }, - - loadPlugin : function(n, u) { - u = u.indexOf('.js') != -1 ? u.substring(0, u.lastIndexOf('/')) : u; - u = u.charAt(u.length-1) == '/' ? u.substring(0, u.length-1) : u; - this.plugins[n] = {baseURL : u}; - this.loadScript(u + "/editor_plugin" + (tinyMCE.srcMode ? '_src' : '') + ".js"); - }, - - hasTheme : function(n) { - return typeof(this.themes[n]) != "undefined" && this.themes[n] != null; - }, - - addTheme : function(n, t) { - this.themes[n] = t; - - this.loadNextScript(); - }, - - addMenu : function(n, m) { - this.menus[n] = m; - }, - - hasMenu : function(n) { - return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null; - }, - - loadScript : function(url) { - var i; - - for (i=0; i'); - - this.loadedFiles[this.loadedFiles.length] = url; - }, - - loadNextScript : function() { - var d = document, se; - - if (!tinyMCE.settings.strict_loading_mode) - return; - - if (this.loadingIndex < this.pendingFiles.length) { - se = d.createElementNS('http://www.w3.org/1999/xhtml', 'script'); - se.setAttribute('language', 'javascript'); - se.setAttribute('type', 'text/javascript'); - se.setAttribute('src', this.pendingFiles[this.loadingIndex++]); - - d.getElementsByTagName("head")[0].appendChild(se); - } else - this.loadingIndex = -1; // Done with loading - }, - - loadCSS : function(url) { - var ar = url.replace(/\s+/, '').split(','); - var lflen = 0, csslen = 0, skip = false; - var x = 0, i = 0, nl, le; - - for (x = 0,csslen = ar.length; x 0) { - /* Make sure it doesn't exist. */ - for (i=0, lflen=this.loadedFiles.length; i'); - - this.loadedFiles[this.loadedFiles.length] = ar[x]; - } - } - } - }, - - importCSS : function(doc, css) { - var css_ary = css.replace(/\s+/, '').split(','); - var csslen, elm, headArr, x, css_file; - - for (x = 0, csslen = css_ary.length; x 0) { - // Is relative, make absolute - if (css_file.indexOf('://') == -1 && css_file.charAt(0) != '/') - css_file = this.documentBasePath + "/" + css_file; - - if (typeof(doc.createStyleSheet) == "undefined") { - elm = doc.createElement("link"); - - elm.rel = "stylesheet"; - elm.href = css_file; - - if ((headArr = doc.getElementsByTagName("head")) != null && headArr.length > 0) - headArr[0].appendChild(elm); - } else - doc.createStyleSheet(css_file); - } - } - }, - - confirmAdd : function(e, settings) { - var elm = tinyMCE.isIE ? event.srcElement : e.target; - var elementId = elm.name ? elm.name : elm.id; - - tinyMCE.settings = settings; - - if (tinyMCE.settings.convert_on_click || (!elm.getAttribute('mce_noask') && confirm(tinyMCELang.lang_edit_confirm))) - tinyMCE.addMCEControl(elm, elementId); - - elm.setAttribute('mce_noask', 'true'); - }, - - updateContent : function(form_element_name) { - var formElement, n, inst, doc; - - // Find MCE instance linked to given form element and copy it's value - formElement = document.getElementById(form_element_name); - for (n in tinyMCE.instances) { - inst = tinyMCE.instances[n]; - - if (!tinyMCE.isInstance(inst)) - continue; - - inst.switchSettings(); - - if (inst.formElement == formElement) { - doc = inst.getDoc(); - - tinyMCE._setHTML(doc, inst.formElement.value); - - if (!tinyMCE.isIE) - doc.body.innerHTML = tinyMCE._cleanupHTML(inst, doc, this.settings, doc.body, inst.visualAid); - } - } - }, - - addMCEControl : function(replace_element, form_element_name, target_document) { - var id = "mce_editor_" + tinyMCE.idCounter++; - var inst = new TinyMCE_Control(tinyMCE.settings); - - inst.editorId = id; - this.instances[id] = inst; - - inst._onAdd(replace_element, form_element_name, target_document); - }, - - removeInstance : function(ti) { - var t = [], n, i; - - // Remove from instances - for (n in tinyMCE.instances) { - i = tinyMCE.instances[n]; - - if (tinyMCE.isInstance(i) && ti != i) - t[n] = i; - } - - tinyMCE.instances = t; - - // Remove from global undo/redo - n = []; - t = tinyMCE.undoLevels; - - for (i=0; i 0) { - tinyMCE.nextUndoRedoAction = 'Undo'; - inst = this.undoLevels[--this.undoIndex]; - inst.select(); - - if (!tinyMCE.nextUndoRedoInstanceId) - inst.execCommand('Undo'); - } - } else - inst.execCommand('Undo'); - return true; - - case "Redo": - if (this.getParam('custom_undo_redo_global')) { - if (this.undoIndex <= this.undoLevels.length - 1) { - tinyMCE.nextUndoRedoAction = 'Redo'; - inst = this.undoLevels[this.undoIndex++]; - inst.select(); - - if (!tinyMCE.nextUndoRedoInstanceId) - inst.execCommand('Redo'); - } - } else - inst.execCommand('Redo'); - - return true; - - case 'mceFocus': - inst = tinyMCE.getInstanceById(value); - - if (inst) - inst.getWin().focus(); - return; - - case "mceAddControl": - case "mceAddEditor": - tinyMCE.addMCEControl(tinyMCE._getElementById(value), value); - return; - - case "mceAddFrameControl": - tinyMCE.addMCEControl(tinyMCE._getElementById(value.element, value.document), value.element, value.document); - return; - - case "mceRemoveControl": - case "mceRemoveEditor": - tinyMCE.removeMCEControl(value); - return; - - case "mceToggleEditor": - inst = tinyMCE.getInstanceById(value); - - if (inst) { - pe = document.getElementById(inst.editorId + '_parent'); - te = inst.oldTargetElement; - - if (typeof(inst.enabled) == 'undefined') - inst.enabled = true; - - inst.enabled = !inst.enabled; - - if (!inst.enabled) { - pe.style.display = 'none'; - - if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT') - te.value = inst.getHTML(); - else - te.innerHTML = inst.getHTML(); - - te.style.display = inst.oldTargetDisplay; - tinyMCE.dispatchCallback(inst, 'hide_instance_callback', 'hideInstance', inst); - } else { - pe.style.display = 'block'; - te.style.display = 'none'; - - if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT') - inst.setHTML(te.value); - else - inst.setHTML(te.innerHTML); - - inst.useCSS = false; - tinyMCE.dispatchCallback(inst, 'show_instance_callback', 'showInstance', inst); - } - } else - tinyMCE.addMCEControl(tinyMCE._getElementById(value), value); - - return; - - case "mceResetDesignMode": - // Resets the designmode state of the editors in Gecko - if (tinyMCE.isGecko) { - for (n in tinyMCE.instances) { - if (!tinyMCE.isInstance(tinyMCE.instances[n])) - continue; - - try { - tinyMCE.instances[n].getDoc().designMode = "off"; - tinyMCE.instances[n].getDoc().designMode = "on"; - tinyMCE.instances[n].useCSS = false; - } catch (e) { - // Ignore any errors - } - } - } - - return; - } - - if (inst) { - inst.execCommand(command, user_interface, value); - } else if (tinyMCE.settings.focus_alert) - alert(tinyMCELang.lang_focus_alert); - }, - - _createIFrame : function(replace_element, doc, win) { - var iframe, id = replace_element.getAttribute("id"); - var aw, ah; - - if (typeof(doc) == "undefined") - doc = document; - - if (typeof(win) == "undefined") - win = window; - - iframe = doc.createElement("iframe"); - - aw = "" + tinyMCE.settings.area_width; - ah = "" + tinyMCE.settings.area_height; - - if (aw.indexOf('%') == -1) { - aw = parseInt(aw); - aw = (isNaN(aw) || aw < 0) ? 300 : aw; - aw = aw + "px"; - } - - if (ah.indexOf('%') == -1) { - ah = parseInt(ah); - ah = (isNaN(ah) || ah < 0) ? 240 : ah; - ah = ah + "px"; - } - - iframe.setAttribute("id", id); - iframe.setAttribute("name", id); - iframe.setAttribute("class", "mceEditorIframe"); - iframe.setAttribute("border", "0"); - iframe.setAttribute("frameBorder", "0"); - iframe.setAttribute("marginWidth", "0"); - iframe.setAttribute("marginHeight", "0"); - iframe.setAttribute("leftMargin", "0"); - iframe.setAttribute("topMargin", "0"); - iframe.setAttribute("width", aw); - iframe.setAttribute("height", ah); - iframe.setAttribute("allowtransparency", "true"); - iframe.className = 'mceEditorIframe'; - - if (tinyMCE.settings.auto_resize) - iframe.setAttribute("scrolling", "no"); - - // Must have a src element in MSIE HTTPs breaks aswell as absoute URLs - if (tinyMCE.isRealIE) - iframe.setAttribute("src", this.settings.default_document); - - iframe.style.width = aw; - iframe.style.height = ah; - - // Ugly hack for Gecko problem in strict mode - if (tinyMCE.settings.strict_loading_mode) - iframe.style.marginBottom = '-5px'; - - // MSIE 5.0 issue - if (tinyMCE.isRealIE) - replace_element.outerHTML = iframe.outerHTML; - else - replace_element.parentNode.replaceChild(iframe, replace_element); - - if (tinyMCE.isRealIE) - return win.frames[id]; - else - return iframe; - }, - - setupContent : function(editor_id) { - var inst = tinyMCE.instances[editor_id], i, doc = inst.getDoc(), head = doc.getElementsByTagName('head').item(0); - var content = inst.startContent, contentElement, body; - - // HTML values get XML encoded in strict mode - if (tinyMCE.settings.strict_loading_mode) { - content = content.replace(/</g, '<'); - content = content.replace(/>/g, '>'); - content = content.replace(/"/g, '"'); - content = content.replace(/&/g, '&'); - } - - tinyMCE.selectedInstance = inst; - inst.switchSettings(); - - // Not loaded correctly hit it again, Mozilla bug #997860 - if (!tinyMCE.isIE && tinyMCE.getParam("setupcontent_reload", false) && doc.title != "blank_page") { - // This part will remove the designMode status - // Failes first time in Firefox 1.5b2 on Mac - try {doc.location.href = tinyMCE.baseURL + "/blank.htm";} catch (ex) {} - window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 1000); - return; - } - - // Wait for it to load - if (!head || !doc.body) { - window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 10); - return; - } - - // Import theme specific content CSS the user specific - tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/themes/" + inst.settings.theme + "/css/editor_content.css"); - tinyMCE.importCSS(inst.getDoc(), inst.settings.content_css); - tinyMCE.dispatchCallback(inst, 'init_instance_callback', 'initInstance', inst); - - // Setup keyboard shortcuts - if (tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')) { - inst.addShortcut('ctrl', 'z', 'lang_undo_desc', 'Undo'); - inst.addShortcut('ctrl', 'y', 'lang_redo_desc', 'Redo'); - } - - // BlockFormat shortcuts keys - for (i=1; i<=6; i++) - inst.addShortcut('ctrl', '' + i, '', 'FormatBlock', false, ''); - - inst.addShortcut('ctrl', '7', '', 'FormatBlock', false, '

'); - inst.addShortcut('ctrl', '8', '', 'FormatBlock', false, '

'); - inst.addShortcut('ctrl', '9', '', 'FormatBlock', false, '
'); - - // Add default shortcuts for gecko - if (tinyMCE.isGecko) { - inst.addShortcut('ctrl', 'b', 'lang_bold_desc', 'Bold'); - inst.addShortcut('ctrl', 'i', 'lang_italic_desc', 'Italic'); - inst.addShortcut('ctrl', 'u', 'lang_underline_desc', 'Underline'); - } - - // Setup span styles - if (tinyMCE.getParam("convert_fonts_to_spans")) - inst.getBody().setAttribute('id', 'mceSpanFonts'); - - if (tinyMCE.settings.nowrap) - doc.body.style.whiteSpace = "nowrap"; - - doc.body.dir = this.settings.directionality; - doc.editorId = editor_id; - - // Add on document element in Mozilla - if (!tinyMCE.isIE) - doc.documentElement.editorId = editor_id; - - inst.setBaseHREF(tinyMCE.settings.base_href); - - // Replace new line characters to BRs - if (tinyMCE.settings.convert_newlines_to_brs) { - content = tinyMCE.regexpReplace(content, "\r\n", "
", "gi"); - content = tinyMCE.regexpReplace(content, "\r", "
", "gi"); - content = tinyMCE.regexpReplace(content, "\n", "
", "gi"); - } - - // Open closed anchors - // content = content.replace(new RegExp('', 'gi'), ''); - - // Call custom cleanup code - content = tinyMCE.storeAwayURLs(content); - content = tinyMCE._customCleanup(inst, "insert_to_editor", content); - - if (tinyMCE.isIE) { - // Ugly!!! - window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["' + editor_id + '"].getDoc(), "' + editor_id + '");}catch(e){}', 500); - - if (tinyMCE.settings.force_br_newlines) - doc.styleSheets[0].addRule("p", "margin: 0;"); - - body = inst.getBody(); - body.editorId = editor_id; - } - - content = tinyMCE.cleanupHTMLCode(content); - - // Fix for bug #958637 - if (!tinyMCE.isIE) { - contentElement = inst.getDoc().createElement("body"); - doc = inst.getDoc(); - - contentElement.innerHTML = content; - - if (tinyMCE.settings.cleanup_on_startup) - tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, doc, this.settings, contentElement)); - else - tinyMCE.setInnerHTML(inst.getBody(), content); - - tinyMCE.convertAllRelativeURLs(inst.getBody()); - } else { - if (tinyMCE.settings.cleanup_on_startup) { - tinyMCE._setHTML(inst.getDoc(), content); - - // Produces permission denied error in MSIE 5.5 - try { - tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody())); - } catch(e) { - // Ignore - } - } else - tinyMCE._setHTML(inst.getDoc(), content); - } - - // Fix for bug #957681 - //inst.getDoc().designMode = inst.getDoc().designMode; - - tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings.visual, inst); - tinyMCE.dispatchCallback(inst, 'setupcontent_callback', 'setupContent', editor_id, inst.getBody(), inst.getDoc()); - - // Re-add design mode on mozilla - if (!tinyMCE.isIE) - tinyMCE.addEventHandlers(inst); - - // Add blur handler - if (tinyMCE.isIE) { - tinyMCE.addEvent(inst.getBody(), "blur", TinyMCE_Engine.prototype._eventPatch); - tinyMCE.addEvent(inst.getBody(), "beforedeactivate", TinyMCE_Engine.prototype._eventPatch); // Bug #1439953 - - // Workaround for drag drop/copy paste base href bug - if (!tinyMCE.isOpera) { - tinyMCE.addEvent(doc.body, "mousemove", TinyMCE_Engine.prototype.onMouseMove); - tinyMCE.addEvent(doc.body, "beforepaste", TinyMCE_Engine.prototype._eventPatch); - tinyMCE.addEvent(doc.body, "drop", TinyMCE_Engine.prototype._eventPatch); - } - } - - // Trigger node change, this call locks buttons for tables and so forth - inst.select(); - tinyMCE.selectedElement = inst.contentWindow.document.body; - - // Call custom DOM cleanup - tinyMCE._customCleanup(inst, "insert_to_editor_dom", inst.getBody()); - tinyMCE._customCleanup(inst, "setup_content_dom", inst.getBody()); - tinyMCE._setEventsEnabled(inst.getBody(), false); - tinyMCE.cleanupAnchors(inst.getDoc()); - - if (tinyMCE.getParam("convert_fonts_to_spans")) - tinyMCE.convertSpansToFonts(inst.getDoc()); - - inst.startContent = tinyMCE.trim(inst.getBody().innerHTML); - inst.undoRedo.add({ content : inst.startContent }); - - // Cleanup any mess left from storyAwayURLs - if (tinyMCE.isGecko) { - // Remove mce_src from textnodes and comments - tinyMCE.selectNodes(inst.getBody(), function(n) { - if (n.nodeType == 3 || n.nodeType == 8) - n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), ""); - - return false; - }); - } - - // Remove Gecko spellchecking - if (tinyMCE.isGecko) - inst.getBody().spellcheck = tinyMCE.getParam("gecko_spellcheck"); - - // Cleanup any mess left from storyAwayURLs - tinyMCE._removeInternal(inst.getBody()); - - inst.select(); - tinyMCE.triggerNodeChange(false, true); - }, - - storeAwayURLs : function(s) { - // Remove all mce_src, mce_href and replace them with new ones - // s = s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"', 'gi'), ''); - // s = s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"', 'gi'), ''); - - if (!s.match(/(mce_src|mce_href)/gi, s)) { - s = s.replace(new RegExp('src\\s*=\\s*[\"\']([^ >\"]*)[\"\']', 'gi'), 'src="$1" mce_src="$1"'); - s = s.replace(new RegExp('href\\s*=\\s*[\"\']([^ >\"]*)[\"\']', 'gi'), 'href="$1" mce_href="$1"'); - } - - return s; - }, - - _removeInternal : function(n) { - if (tinyMCE.isGecko) { - // Remove mce_src from textnodes and comments - tinyMCE.selectNodes(n, function(n) { - if (n.nodeType == 3 || n.nodeType == 8) - n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), ""); - - return false; - }); - } - }, - - removeTinyMCEFormElements : function(form_obj) { - var i, elementId; - - // Skip form element removal - if (!tinyMCE.getParam('hide_selects_on_submit')) - return; - - // Check if form is valid - if (typeof(form_obj) == "undefined" || form_obj == null) - return; - - // If not a form, find the form - if (form_obj.nodeName != "FORM") { - if (form_obj.form) - form_obj = form_obj.form; - else - form_obj = tinyMCE.getParentElement(form_obj, "form"); - } - - // Still nothing - if (form_obj == null) - return; - - // Disable all UI form elements that TinyMCE created - for (i=0; i"); - rng.collapse(false); - rng.select(); - - tinyMCE.execCommand("mceAddUndoLevel"); - tinyMCE.triggerNodeChange(false); - return false; - } - } - - // Backspace or delete - if (e.keyCode == 8 || e.keyCode == 46) { - tinyMCE.selectedElement = e.target; - tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a"); - tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img"); - tinyMCE.triggerNodeChange(false); - } - - return false; - - case "keyup": - case "keydown": - tinyMCE.hideMenus(); - tinyMCE.hasMouseMoved = false; - - if (inst && inst.handleShortcut(e)) - return false; - - inst._fixRootBlocks(); - - if (inst.settings.remove_trailing_nbsp) - inst._fixTrailingNbsp(); - - if (e.target.editorId) - tinyMCE.instances[e.target.editorId].select(); - - if (tinyMCE.selectedInstance) - tinyMCE.selectedInstance.switchSettings(); - - inst = tinyMCE.selectedInstance; - - // Handle backspace - if (tinyMCE.isGecko && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) { - // Insert P element instead of BR - if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) { - // Cancel event - tinyMCE.execCommand("mceAddUndoLevel"); - e.preventDefault(); - return false; - } - } - - tinyMCE.selectedElement = null; - tinyMCE.selectedNode = null; - elm = tinyMCE.selectedInstance.getFocusElement(); - tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a"); - tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img"); - tinyMCE.selectedElement = elm; - - // Update visualaids on tabs - if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9) - tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings.visual, tinyMCE.selectedInstance); - - // Fix empty elements on return/enter, check where enter occured - if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13) - tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement(); - - // Fix empty elements on return/enter - if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13) { - elm = tinyMCE.enterKeyElement; - if (elm) { - var re = new RegExp('^HR|IMG|BR$','g'); // Skip these - var dre = new RegExp('^H[1-6]$','g'); // Add double on these - - if (!elm.hasChildNodes() && !re.test(elm.nodeName)) { - if (dre.test(elm.nodeName)) - elm.innerHTML = "  "; - else - elm.innerHTML = " "; - } - } - } - - // Check if it's a position key - keys = tinyMCE.posKeyCodes; - var posKey = false; - for (i=0; i'; - h += '{$'+lang+'}'; - h += ''; - } else { - // Normal button - h += ''; - h += '{$'+lang+'}'; - h += ''; - } - - return h; - }, - - getMenuButtonHTML : function(id, lang, img, mcmd, cmd, ui, val) { - var h = '', m, x; - - mcmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + mcmd + '\');'; - cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\''; - - if (typeof(ui) != "undefined" && ui != null) - cmd += ',' + ui; - - if (typeof(val) != "undefined" && val != null) - cmd += ",'" + val + "'"; - - cmd += ');'; - - // Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled - if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = tinyMCE.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) { - x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20); - - if (tinyMCE.isRealIE) - h += ''; - else - h += ''; - - h += ''; - h += ''; - h += ''; - h += ''; - } else { - if (tinyMCE.isRealIE) - h += ''; - else - h += ''; - - h += ''; - h += ''; - h += ''; - h += ''; - } - - return h; - }, - - _menuButtonEvent : function(e, o) { - if (o.className == 'mceMenuButtonFocus') - return; - - if (e == 'over') - o.className = o.className + ' mceMenuHover'; - else - o.className = o.className.replace(/\s.*$/, ''); - }, - - addButtonMap : function(m) { - var i, a = m.replace(/\s+/, '').split(','); - - for (i=0; i 0) - className += " "; - - className += classNames[i]; - } - - return className; - }, - - handleVisualAid : function(el, deep, state, inst, skip_dispatch) { - var i, x, y, tableElement, anchorName, oldW, oldH, bo, cn; - - if (!el) - return; - - if (!skip_dispatch) - tinyMCE.dispatchCallback(inst, 'handle_visual_aid_callback', 'handleVisualAid', el, deep, state, inst); - - tableElement = null; - - switch (el.nodeName) { - case "TABLE": - oldW = el.style.width; - oldH = el.style.height; - bo = tinyMCE.getAttrib(el, "border"); - - bo = bo == '' || bo == "0" ? true : false; - - tinyMCE.setAttrib(el, "class", tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el, "class"), state && bo)); - - el.style.width = oldW; - el.style.height = oldH; - - for (y=0; y 0) - return inst.cssClasses; - - if (!doc) - return; - - styles = doc.styleSheets; - - if (styles && styles.length > 0) { - for (x=0; x' + tinyMCE.replaceVar(v, "pluginurl", o.baseURL) + ''; - - return tinyMCE.replaceVar(v, "pluginurl", o.baseURL); - } - } - - o = tinyMCE.themes[tinyMCE.settings.theme]; - if (o.getControlHTML && (v = o.getControlHTML(c)) !== '') { - if (rtl) - return '' + v + ''; - - return v; - } - - return ''; - }, - - evalFunc : function(f, idx, a, o) { - o = !o ? window : o; - f = typeof(f) == 'function' ? f : o[f]; - - return f.apply(o, Array.prototype.slice.call(a, idx)); - }, - - dispatchCallback : function(i, p, n) { - return this.callFunc(i, p, n, 0, this.dispatchCallback.arguments); - }, - - executeCallback : function(i, p, n) { - return this.callFunc(i, p, n, 1, this.executeCallback.arguments); - }, - - execCommandCallback : function(i, p, n) { - return this.callFunc(i, p, n, 2, this.execCommandCallback.arguments); - }, - - callFunc : function(ins, p, n, m, a) { - var l, i, on, o, s, v; - - s = m == 2; - - l = tinyMCE.getParam(p, ''); - - if (l !== '' && (v = tinyMCE.evalFunc(l, 3, a)) == s && m > 0) - return true; - - if (ins != null) { - for (i=0, l = ins.plugins; i 0) - return true; - } - } - - l = tinyMCE.themes; - for (on in l) { - o = l[on]; - - if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0) - return true; - } - - return false; - }, - - resolveDots : function(s, o) { - var i; - - if (typeof(s) == 'string') { - for (i=0, s=s.split('.'); i': - return '>'; - } - - return c; - }) : s; - }, - - add : function(c, m) { - var n; - - for (n in m) { - if (m.hasOwnProperty(n)) - c.prototype[n] = m[n]; - } - }, - - extend : function(p, np) { - var o = {}, n; - - o.parent = p; - - for (n in p) { - if (p.hasOwnProperty(n)) - o[n] = p[n]; - } - - for (n in np) { - if (np.hasOwnProperty(n)) - o[n] = np[n]; - } - - return o; - }, - - hideMenus : function() { - var e = tinyMCE.lastSelectedMenuBtn; - - if (tinyMCE.lastMenu) { - tinyMCE.lastMenu.hide(); - tinyMCE.lastMenu = null; - } - - if (e) { - tinyMCE.switchClass(e, tinyMCE.lastMenuBtnClass); - tinyMCE.lastSelectedMenuBtn = null; - } - } - - }; - -// Global instances -var TinyMCE = TinyMCE_Engine; // Compatiblity with gzip compressors -var tinyMCE = new TinyMCE_Engine(); -var tinyMCELang = {}; - -/* file:jscripts/tiny_mce/classes/TinyMCE_Control.class.js */ - -function TinyMCE_Control(settings) { - var t, i, tos, fu, p, x, fn, fu, pn, s = settings; - - this.undoRedoLevel = true; - this.isTinyMCE_Control = true; - - // Default settings - this.enabled = true; - this.settings = s; - this.settings.theme = tinyMCE.getParam("theme", "default"); - this.settings.width = tinyMCE.getParam("width", -1); - this.settings.height = tinyMCE.getParam("height", -1); - this.selection = new TinyMCE_Selection(this); - this.undoRedo = new TinyMCE_UndoRedo(this); - this.cleanup = new TinyMCE_Cleanup(); - this.shortcuts = []; - this.hasMouseMoved = false; - this.foreColor = this.backColor = "#999999"; - this.data = {}; - this.cssClasses = []; - - this.cleanup.init({ - valid_elements : s.valid_elements, - extended_valid_elements : s.extended_valid_elements, - valid_child_elements : s.valid_child_elements, - entities : s.entities, - entity_encoding : s.entity_encoding, - debug : s.cleanup_debug, - indent : s.apply_source_formatting, - invalid_elements : s.invalid_elements, - verify_html : s.verify_html, - fix_content_duplication : s.fix_content_duplication, - convert_fonts_to_spans : s.convert_fonts_to_spans - }); - - // Wrap old theme - t = this.settings.theme; - if (!tinyMCE.hasTheme(t)) { - fn = tinyMCE.callbacks; - tos = {}; - - for (i=0; i 0) { - for (i=0; i 1 && tinyMCE.currentConfig != this.settings.index) { - tinyMCE.settings = this.settings; - tinyMCE.currentConfig = this.settings.index; - } - }, - - select : function() { - var oldInst = tinyMCE.selectedInstance; - - if (oldInst != this) { - if (oldInst) - oldInst.execCommand('mceEndTyping'); - - tinyMCE.dispatchCallback(this, 'select_instance_callback', 'selectInstance', this, oldInst); - tinyMCE.selectedInstance = this; - } - }, - - getBody : function() { - return this.contentBody ? this.contentBody : this.getDoc().body; - }, - - getDoc : function() { -// return this.contentDocument ? this.contentDocument : this.contentWindow.document; // Removed due to IE 5.5 ? - return this.contentWindow.document; - }, - - getWin : function() { - return this.contentWindow; - }, - - getContainerWin : function() { - return this.containerWindow ? this.containerWindow : window; - }, - - getViewPort : function() { - return tinyMCE.getViewPort(this.getWin()); - }, - - getParentNode : function(n, f) { - return tinyMCE.getParentNode(n, f, this.getBody()); - }, - - getParentElement : function(n, na, f) { - return tinyMCE.getParentElement(n, na, f, this.getBody()); - }, - - getParentBlockElement : function(n) { - return tinyMCE.getParentBlockElement(n, this.getBody()); - }, - - resizeToContent : function() { - var d = this.getDoc(), b = d.body, de = d.documentElement; - - this.iframeElement.style.height = (tinyMCE.isRealIE) ? b.scrollHeight : de.offsetHeight + 'px'; - }, - - addShortcut : function(m, k, d, cmd, ui, va) { - var n = typeof(k) == "number", ie = tinyMCE.isIE, c, sc, i, scl = this.shortcuts; - - if (!tinyMCE.getParam('custom_shortcuts')) - return false; - - m = m.toLowerCase(); - k = ie && !n ? k.toUpperCase() : k; - c = n ? null : k.charCodeAt(0); - d = d && d.indexOf('lang_') == 0 ? tinyMCE.getLang(d) : d; - - sc = { - alt : m.indexOf('alt') != -1, - ctrl : m.indexOf('ctrl') != -1, - shift : m.indexOf('shift') != -1, - charCode : c, - keyCode : n ? k : (ie ? c : null), - desc : d, - cmd : cmd, - ui : ui, - val : va - }; - - for (i=0; i 1 && /(^\u00a0|\u00a0$)/.test(v)) { - e.firstChild.nodeValue = v.replace(/(^\u00a0|\u00a0$)/, ''); - s.selectNode(e.firstChild, true, false, false); // Select and collapse - } - } - }, - - _setUseCSS : function(b) { - var d = this.getDoc(); - - try {d.execCommand("useCSS", false, !b);} catch (ex) {} - try {d.execCommand("styleWithCSS", false, b);} catch (ex) {} - - if (!tinyMCE.getParam("table_inline_editing")) - try {d.execCommand('enableInlineTableEditing', false, "false");} catch (ex) {} - - if (!tinyMCE.getParam("object_resizing")) - try {d.execCommand('enableObjectResizing', false, "false");} catch (ex) {} - }, - - execCommand : function(command, user_interface, value) { - var i, x, z, align, img, div, doc = this.getDoc(), win = this.getWin(), focusElm = this.getFocusElement(); - - // Is not a undo specific command - if (!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel', 'gi').test(command)) - this.undoBookmark = null; - - // Mozilla issue - if (!tinyMCE.isIE && !this.useCSS) { - this._setUseCSS(false); - this.useCSS = true; - } - - //debug("command: " + command + ", user_interface: " + user_interface + ", value: " + value); - this.contentDocument = doc; // <-- Strange, unless this is applied Mozilla 1.3 breaks - - // Don't dispatch key commands - if (!/mceStartTyping|mceEndTyping/.test(command)) { - if (tinyMCE.execCommandCallback(this, 'execcommand_callback', 'execCommand', this.editorId, this.getBody(), command, user_interface, value)) - return; - } - - // Fix align on images - if (focusElm && focusElm.nodeName == "IMG") { - align = focusElm.getAttribute('align'); - img = command == "JustifyCenter" ? focusElm.cloneNode(false) : focusElm; - - switch (command) { - case "JustifyLeft": - if (align == 'left') { - img.setAttribute('align', ''); // Needed for IE - img.removeAttribute('align'); - } else - img.setAttribute('align', 'left'); - - // Remove the div - div = focusElm.parentNode; - if (div && div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode) - div.parentNode.replaceChild(img, div); - - this.selection.selectNode(img); - this.repaint(); - tinyMCE.triggerNodeChange(); - return; - - case "JustifyCenter": - img.setAttribute('align', ''); // Needed for IE - img.removeAttribute('align'); - - // Is centered - div = tinyMCE.getParentElement(focusElm, "div"); - if (div && div.style.textAlign == "center") { - // Remove div - if (div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode) - div.parentNode.replaceChild(img, div); - } else { - // Add div - div = this.getDoc().createElement("div"); - div.style.textAlign = 'center'; - div.appendChild(img); - focusElm.parentNode.replaceChild(div, focusElm); - } - - this.selection.selectNode(img); - this.repaint(); - tinyMCE.triggerNodeChange(); - return; - - case "JustifyRight": - if (align == 'right') { - img.setAttribute('align', ''); // Needed for IE - img.removeAttribute('align'); - } else - img.setAttribute('align', 'right'); - - // Remove the div - div = focusElm.parentNode; - if (div && div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode) - div.parentNode.replaceChild(img, div); - - this.selection.selectNode(img); - this.repaint(); - tinyMCE.triggerNodeChange(); - return; - } - } - - if (tinyMCE.settings.force_br_newlines) { - var alignValue = ""; - - if (doc.selection.type != "Control") { - switch (command) { - case "JustifyLeft": - alignValue = "left"; - break; - - case "JustifyCenter": - alignValue = "center"; - break; - - case "JustifyFull": - alignValue = "justify"; - break; - - case "JustifyRight": - alignValue = "right"; - break; - } - - if (alignValue !== '') { - var rng = doc.selection.createRange(); - - if ((divElm = tinyMCE.getParentElement(rng.parentElement(), "div")) != null) - divElm.setAttribute("align", alignValue); - else if (rng.pasteHTML && rng.htmlText.length > 0) - rng.pasteHTML('
' + rng.htmlText + "
"); - - tinyMCE.triggerNodeChange(); - return; - } - } - } - - switch (command) { - case "mceRepaint": - this.repaint(); - return true; - - case "JustifyLeft": - case "JustifyCenter": - case "JustifyFull": - case "JustifyRight": - var el = tinyMCE.getParentNode(focusElm, function(n) {return tinyMCE.getAttrib(n, 'align');}); - - if (el) { - el.setAttribute('align', ''); // Needed for IE - el.removeAttribute('align'); - } else - this.getDoc().execCommand(command, user_interface, value); - - tinyMCE.triggerNodeChange(); - - return true; - - case "unlink": - // Unlink if caret is inside link - if (tinyMCE.isGecko && this.getSel().isCollapsed) { - focusElm = tinyMCE.getParentElement(focusElm, 'A'); - - if (focusElm) - this.selection.selectNode(focusElm, false); - } - - this.getDoc().execCommand(command, user_interface, value); - - tinyMCE.isGecko && this.getSel().collapseToEnd(); - - tinyMCE.triggerNodeChange(); - - return true; - - case "InsertUnorderedList": - case "InsertOrderedList": - this.getDoc().execCommand(command, user_interface, value); - tinyMCE.triggerNodeChange(); - break; - - case "Strikethrough": - this.getDoc().execCommand(command, user_interface, value); - tinyMCE.triggerNodeChange(); - break; - - case "mceSelectNode": - this.selection.selectNode(value); - tinyMCE.triggerNodeChange(); - tinyMCE.selectedNode = value; - break; - - case "FormatBlock": - if (value == null || value == '') { - var elm = tinyMCE.getParentElement(this.getFocusElement(), "p,div,h1,h2,h3,h4,h5,h6,pre,address,blockquote,dt,dl,dd,samp"); - - if (elm) - this.execCommand("mceRemoveNode", false, elm); - } else { - if (!this.cleanup.isValid(value)) - return true; - - if (tinyMCE.isGecko && new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>', 'gi').test(value)) - value = value.replace(/[^a-z]/gi, ''); - - if (tinyMCE.isIE && new RegExp('blockquote|code|samp', 'gi').test(value)) { - var b = this.selection.getBookmark(); - this.getDoc().execCommand("FormatBlock", false, '

'); - tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()), value); - this.selection.moveToBookmark(b); - } else - this.getDoc().execCommand("FormatBlock", false, value); - } - - tinyMCE.triggerNodeChange(); - - break; - - case "mceRemoveNode": - if (!value) - value = tinyMCE.getParentElement(this.getFocusElement()); - - if (tinyMCE.isIE) { - value.outerHTML = value.innerHTML; - } else { - var rng = value.ownerDocument.createRange(); - rng.setStartBefore(value); - rng.setEndAfter(value); - rng.deleteContents(); - rng.insertNode(rng.createContextualFragment(value.innerHTML)); - } - - tinyMCE.triggerNodeChange(); - - break; - - case "mceSelectNodeDepth": - var parentNode = this.getFocusElement(); - for (i=0; parentNode; i++) { - if (parentNode.nodeName.toLowerCase() == "body") - break; - - if (parentNode.nodeName.toLowerCase() == "#text") { - i--; - parentNode = parentNode.parentNode; - continue; - } - - if (i == value) { - this.selection.selectNode(parentNode, false); - tinyMCE.triggerNodeChange(); - tinyMCE.selectedNode = parentNode; - return; - } - - parentNode = parentNode.parentNode; - } - - break; - - case "mceSetStyleInfo": - case "SetStyleInfo": - var rng = this.getRng(); - var sel = this.getSel(); - var scmd = value.command; - var sname = value.name; - var svalue = value.value == null ? '' : value.value; - //var svalue = value['value'] == null ? '' : value['value']; - var wrapper = value.wrapper ? value.wrapper : "span"; - var parentElm = null; - var invalidRe = new RegExp("^BODY|HTML$", "g"); - var invalidParentsRe = tinyMCE.settings.merge_styles_invalid_parents !== '' ? new RegExp(tinyMCE.settings.merge_styles_invalid_parents, "gi") : null; - - // Whole element selected check - if (tinyMCE.isIE) { - // Control range - if (rng.item) - parentElm = rng.item(0); - else { - var pelm = rng.parentElement(); - var prng = doc.selection.createRange(); - prng.moveToElementText(pelm); - - if (rng.htmlText == prng.htmlText || rng.boundingWidth == 0) { - if (invalidParentsRe == null || !invalidParentsRe.test(pelm.nodeName)) - parentElm = pelm; - } - } - } else { - var felm = this.getFocusElement(); - if (sel.isCollapsed || (new RegExp('td|tr|tbody|table|img', 'gi').test(felm.nodeName) && sel.anchorNode == felm.parentNode)) - parentElm = felm; - } - - // Whole element selected - if (parentElm && !invalidRe.test(parentElm.nodeName)) { - if (scmd == "setstyle") - tinyMCE.setStyleAttrib(parentElm, sname, svalue); - - if (scmd == "setattrib") - tinyMCE.setAttrib(parentElm, sname, svalue); - - if (scmd == "removeformat") { - parentElm.style.cssText = ''; - tinyMCE.setAttrib(parentElm, 'class', ''); - } - - // Remove style/attribs from all children - var ch = tinyMCE.getNodeTree(parentElm, [], 1); - for (z=0; z=0; i--) { - var elm = nodes[i]; - var isNew = tinyMCE.getAttrib(elm, "mce_new") == "true"; - - elm.removeAttribute("mce_new"); - - // Is only child a element - if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) { - //tinyMCE.debug("merge1" + isNew); - this._mergeElements(scmd, elm, elm.childNodes[0], isNew); - continue; - } - - // Is I the only child - if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) { - //tinyMCE.debug("merge2" + isNew + "," + elm.nodeName + "," + elm.parentNode.nodeName); - if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName)) - this._mergeElements(scmd, elm.parentNode, elm, false); - } - } - - // Remove empty wrappers - var nodes = doc.getElementsByTagName(wrapper); - for (i=nodes.length-1; i>=0; i--) { - var elm = nodes[i], isEmpty = true; - - // Check if it has any attribs - var tmp = doc.createElement("body"); - tmp.appendChild(elm.cloneNode(false)); - - // Is empty span, remove it - tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""', 'gi'), ''); - //tinyMCE.debug(tmp.innerHTML); - if (new RegExp('', 'gi').test(tmp.innerHTML)) { - for (x=0; x 0) { - value = tinyMCE.replaceVar(value, "selection", selectedText); - tinyMCE.execCommand('mceInsertContent', false, value); - } - - this._addBogusBR(); - tinyMCE.triggerNodeChange(); - break; - - case "mceSetAttribute": - if (typeof(value) == 'object') { - var targetElms = (typeof(value.targets) == "undefined") ? "p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address" : value.targets; - var targetNode = tinyMCE.getParentElement(this.getFocusElement(), targetElms); - - if (targetNode) { - targetNode.setAttribute(value.name, value.value); - tinyMCE.triggerNodeChange(); - } - } - break; - - case "mceSetCSSClass": - this.execCommand("mceSetStyleInfo", false, {command : "setattrib", name : "class", value : value}); - break; - - case "mceInsertRawHTML": - var key = 'tiny_mce_marker'; - - this.execCommand('mceBeginUndoLevel'); - - // Insert marker key - this.execCommand('mceInsertContent', false, key); - - // Store away scroll pos - var scrollX = this.getBody().scrollLeft + this.getDoc().documentElement.scrollLeft; - var scrollY = this.getBody().scrollTop + this.getDoc().documentElement.scrollTop; - - // Find marker and replace with RAW HTML - var html = this.getBody().innerHTML; - if ((pos = html.indexOf(key)) != -1) - tinyMCE.setInnerHTML(this.getBody(), html.substring(0, pos) + value + html.substring(pos + key.length)); - - // Restore scoll pos - this.contentWindow.scrollTo(scrollX, scrollY); - - this.execCommand('mceEndUndoLevel'); - - break; - - case "mceInsertContent": - // Force empty string - if (!value) - value = ''; - - var insertHTMLFailed = false; - - // Removed since it produced problems in IE - // this.getWin().focus(); - - if (tinyMCE.isGecko || tinyMCE.isOpera) { - try { - // Is plain text or HTML, &,   etc will be encoded wrong in FF - if (value.indexOf('<') == -1 && !value.match(/(&| |<|>)/g)) { - var r = this.getRng(); - var n = this.getDoc().createTextNode(tinyMCE.entityDecode(value)); - var s = this.getSel(); - var r2 = r.cloneRange(); - - // Insert text at cursor position - s.removeAllRanges(); - r.deleteContents(); - r.insertNode(n); - - // Move the cursor to the end of text - r2.selectNode(n); - r2.collapse(false); - s.removeAllRanges(); - s.addRange(r2); - } else { - value = tinyMCE.fixGeckoBaseHREFBug(1, this.getDoc(), value); - this.getDoc().execCommand('inserthtml', false, value); - tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value); - } - } catch (ex) { - insertHTMLFailed = true; - } - - if (!insertHTMLFailed) { - tinyMCE.triggerNodeChange(); - return; - } - } - - if (!tinyMCE.isIE) { - var isHTML = value.indexOf('<') != -1; - var sel = this.getSel(); - var rng = this.getRng(); - - if (isHTML) { - if (tinyMCE.isSafari) { - var tmpRng = this.getDoc().createRange(); - - tmpRng.setStart(this.getBody(), 0); - tmpRng.setEnd(this.getBody(), 0); - - value = tmpRng.createContextualFragment(value); - } else - value = rng.createContextualFragment(value); - } else { - // Setup text node - value = doc.createTextNode(tinyMCE.entityDecode(value)); - } - - // Insert plain text in Safari - if (tinyMCE.isSafari && !isHTML) { - this.execCommand('InsertText', false, value.nodeValue); - tinyMCE.triggerNodeChange(); - return true; - } else if (tinyMCE.isSafari && isHTML) { - rng.deleteContents(); - rng.insertNode(value); - tinyMCE.triggerNodeChange(); - return true; - } - - rng.deleteContents(); - - // If target node is text do special treatment, (Mozilla 1.3 fix) - if (rng.startContainer.nodeType == 3) { - var node = rng.startContainer.splitText(rng.startOffset); - node.parentNode.insertBefore(value, node); - } else - rng.insertNode(value); - - if (!isHTML) { - // Removes weird selection trails - sel.selectAllChildren(doc.body); - sel.removeAllRanges(); - - // Move cursor to end of content - var rng = doc.createRange(); - - rng.selectNode(value); - rng.collapse(false); - - sel.addRange(rng); - } else - rng.collapse(false); - - tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value); - } else { - var rng = doc.selection.createRange(), tmpRng = null; - var c = value.indexOf('"; - } - - if (hc) { - cn = n.childNodes; - - for (i=0, l=cn.length; i'; - - return h; - }, - - _serializeAttribute : function(n, r, an) { - var av = '', t, os = this.settings.on_save; - - if (os && (an.indexOf('mce_') == 0 || an.indexOf('_moz') == 0)) - return ''; - - if (os && this.mceAttribs[an]) - av = this._getAttrib(n, this.mceAttribs[an]); - - if (av.length == 0) - av = this._getAttrib(n, an); - - if (av.length == 0 && r.defaultAttribs && (t = r.defaultAttribs[an])) { - av = t; - - if (av == "mce_empty") - return " " + an + '=""'; - } - - if (r.forceAttribs && (t = r.forceAttribs[an])) - av = t; - - if (os && av.length != 0 && /^(src|href|longdesc)$/.test(an)) - av = this._urlConverter(this, n, av); - - if (av.length != 0 && r.validAttribValues && r.validAttribValues[an] && !r.validAttribValues[an].test(av)) - return ""; - - if (av.length != 0 && av == "{$uid}") - av = "uid_" + (this.idCount++); - - if (av.length != 0) { - if (an.indexOf('on') != 0) - av = this.xmlEncode(av, 1); - - return " " + an + "=" + '"' + av + '"'; - } - - return ""; - }, - - formatHTML : function(h) { - var s = this.settings, p = '', i = 0, li = 0, o = '', l; - - // Replace BR in pre elements to \n - h = h.replace(/]*)>(.*?)<\/pre>/gi, function (a, b, c) { - c = c.replace(//gi, '\n'); - return '' + c + ''; - }); - - h = h.replace(/\r/g, ''); // Windows sux, isn't carriage return a thing of the past :) - h = '\n' + h; - h = h.replace(new RegExp('\\n\\s+', 'gi'), '\n'); // Remove previous formatting - h = h.replace(this.nlBeforeRe, '\n<$1$2>'); - h = h.replace(this.nlAfterRe, '<$1$2>\n'); - h = h.replace(this.nlBeforeAfterRe, '\n<$1$2$3>\n'); - h += '\n'; - - //tinyMCE.debug(h); - - while ((i = h.indexOf('\n', i + 1)) != -1) { - if ((l = h.substring(li + 1, i)).length != 0) { - if (this.ouRe.test(l) && p.length >= s.indent_levels) - p = p.substring(s.indent_levels); - - o += p + l + '\n'; - - if (this.inRe.test(l)) - p += this.inStr; - } - - li = i; - } - - //tinyMCE.debug(h); - - return o; - }, - - xmlEncode : function(s) { - var cl = this, re = this.xmlEncodeRe; - - if (!this.entitiesDone) - this._setupEntities(); // Will intialize lookup table - - switch (this.settings.entity_encoding) { - case "raw": - return tinyMCE.xmlEncode(s); - - case "named": - return s.replace(re, function (c) { - var b = cl.entities[c.charCodeAt(0)]; - - return b ? '&' + b + ';' : c; - }); - - case "numeric": - return s.replace(re, function (c) { - return '&#' + c.charCodeAt(0) + ';'; - }); - } - - return s; - }, - - split : function(re, s) { - var i, l, o = [], c = s.split(re); - - for (i=0, l=c.length; i' : '>' + h + ''; - - return o; - }, - - createTag : function(d, tn, a, h) { - var o = d.createElement(tn), n; - - if (a) { - for (n in a) { - if (typeof(a[n]) != 'function' && a[n] != null) - tinyMCE.setAttrib(o, n, a[n]); - } - } - - if (h) - o.innerHTML = h; - - return o; - }, - - getElementByAttributeValue : function(n, e, a, v) { - return (n = this.getElementsByAttributeValue(n, e, a, v)).length == 0 ? null : n[0]; - }, - - getElementsByAttributeValue : function(n, e, a, v) { - var i, nl = n.getElementsByTagName(e), o = []; - - for (i=0; i]*)>/gi, ''); - h = h.replace(/]*)>/gi, ''); - h = h.replace(/]*)>/gi, ''); - h = h.replace(/]*)>/gi, ''); - h = h.replace(/<\/strong>/gi, ''); - h = h.replace(/<\/em>/gi, ''); - } - - if (tinyMCE.isRealIE) { - // Since MSIE handles invalid HTML better that valid XHTML we - // need to make some things invalid.


gets converted to
. - h = h.replace(/\s\/>/g, '>'); - - // Since MSIE auto generated emtpy P tags some times we must tell it to keep the real ones - h = h.replace(/]*)>\u00A0?<\/p>/gi, ' 

'); // Keep empty paragraphs - h = h.replace(/]*)>\s* \s*<\/p>/gi, ' 

'); // Keep empty paragraphs - h = h.replace(/]*)>\s+<\/p>/gi, ' 

'); // Keep empty paragraphs - - // Remove first comment - e.innerHTML = tinyMCE.uniqueTag + h; - e.firstChild.removeNode(true); - - // Remove weird auto generated empty paragraphs unless it's supposed to be there - nl = e.getElementsByTagName("p"); - for (i=nl.length-1; i>=0; i--) { - n = nl[i]; - - if (n.nodeName == 'P' && !n.hasChildNodes() && !n.mce_keep) - n.parentNode.removeChild(n); - } - } else { - h = this.fixGeckoBaseHREFBug(1, e, h); - e.innerHTML = h; - this.fixGeckoBaseHREFBug(2, e, h); - } - }, - - getOuterHTML : function(e) { - var d; - - if (tinyMCE.isIE) - return e.outerHTML; - - d = e.ownerDocument.createElement("body"); - d.appendChild(e.cloneNode(true)); - - return d.innerHTML; - }, - - setOuterHTML : function(e, h, d) { - var d = typeof(d) == "undefined" ? e.ownerDocument : d, i, nl, t; - - if (tinyMCE.isIE && e.nodeType == 1) - e.outerHTML = h; - else { - t = d.createElement("body"); - t.innerHTML = h; - - for (i=0, nl=t.childNodes; i-1; i--) { - if (ar[i].specified && ar[i].nodeValue) - ne.setAttribute(ar[i].nodeName.toLowerCase(), ar[i].nodeValue); - } - - ar = e.childNodes; - for (i=0; i= strTok2.length) { - for (i=0; i= strTok2.length || strTok1[i] != strTok2[i]) { - breakPoint = i + 1; - break; - } - } - } - - if (strTok1.length < strTok2.length) { - for (i=0; i= strTok1.length || strTok1[i] != strTok2[i]) { - breakPoint = i + 1; - break; - } - } - } - - if (breakPoint == 1) - return targetURL.path; - - for (i=0; i<(strTok1.length-(breakPoint-1)); i++) - outPath += "../"; - - for (i=breakPoint-1; i=0; i--) { - if (baseURLParts[i].length == 0) - continue; - - newBaseURLParts[newBaseURLParts.length] = baseURLParts[i]; - } - baseURLParts = newBaseURLParts.reverse(); - - // Merge relURLParts chunks - newRelURLParts = []; - numBack = 0; - for (i=relURLParts.length-1; i>=0; i--) { - if (relURLParts[i].length == 0 || relURLParts[i] == ".") - continue; - - if (relURLParts[i] == '..') { - numBack++; - continue; - } - - if (numBack > 0) { - numBack--; - continue; - } - - newRelURLParts[newRelURLParts.length] = relURLParts[i]; - } - - relURLParts = newRelURLParts.reverse(); - - // Remove end from absolute path - len = baseURLParts.length-numBack; - absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0, len).join('/') + "/" + relURLParts.join('/'); - start = ""; - end = ""; - - // Build output URL - relURL.protocol = baseURL.protocol; - relURL.host = baseURL.host; - relURL.port = baseURL.port; - - // Re-add trailing slash if it's removed - if (relURL.path.charAt(relURL.path.length-1) == "/") - absPath += "/"; - - relURL.path = absPath; - - return this.serializeURL(relURL); - }, - - convertURL : function(url, node, on_save) { - var dl = document.location, start, portPart, urlParts, baseUrlParts, tmpUrlParts, curl; - var prot = dl.protocol, host = dl.hostname, port = dl.port; - - // Pass through file protocol - if (prot == "file:") - return url; - - // Something is wrong, remove weirdness - url = tinyMCE.regexpReplace(url, '(http|https):///', '/'); - - // Mailto link or anchor (Pass through) - if (url.indexOf('mailto:') != -1 || url.indexOf('javascript:') != -1 || /^[ \t\r\n\+]*[#\?]/.test(url)) - return url; - - // Fix relative/Mozilla - if (!tinyMCE.isIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/') - return tinyMCE.settings.base_href + url; - - // Handle relative URLs - if (on_save && tinyMCE.getParam('relative_urls')) { - curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url); - if (curl.charAt(0) == '/') - curl = tinyMCE.settings.document_base_prefix + curl; - - urlParts = tinyMCE.parseURL(curl); - tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings.document_base_url); - - // Force relative - if (urlParts.host == tmpUrlParts.host && (urlParts.port == tmpUrlParts.port)) - return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings.document_base_url, curl); - } - - // Handle absolute URLs - if (!tinyMCE.getParam('relative_urls')) { - urlParts = tinyMCE.parseURL(url); - baseUrlParts = tinyMCE.parseURL(tinyMCE.settings.base_href); - - // Force absolute URLs from relative URLs - url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url); - - // If anchor and path is the same page - if (urlParts.anchor && urlParts.path == baseUrlParts.path) - return "#" + urlParts.anchor; - } - - // Remove current domain - if (tinyMCE.getParam('remove_script_host')) { - start = ""; - portPart = ""; - - if (port !== '') - portPart = ":" + port; - - start = prot + "//" + host + portPart + "/"; - - if (url.indexOf(start) == 0) - url = url.substring(start.length-1); - } - - return url; - }, - - convertAllRelativeURLs : function(body) { - var i, elms, src, href, mhref, msrc; - - // Convert all image URL:s to absolute URL - elms = body.getElementsByTagName("img"); - for (i=0; i bookmark.index) { - try { - rng.addElement(nl[bookmark.index]); - } catch (ex) { - // Might be thrown if the node no longer exists - } - } - } else { - // Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs - try { - // Incorrect bookmark - if (bookmark.start < 0) - return true; - - rng = inst.getSel().createRange(); - rng.moveToElementText(inst.getBody()); - rng.collapse(true); - rng.moveStart('character', bookmark.start); - rng.moveEnd('character', bookmark.length); - } catch (ex) { - return true; - } - } - - rng.select(); - - win.scrollTo(bookmark.scrollX, bookmark.scrollY); - return true; - } - - if (tinyMCE.isGecko || tinyMCE.isOpera) { - if (!sel) - return false; - - if (bookmark.rng) { - sel.removeAllRanges(); - sel.addRange(bookmark.rng); - } - - if (bookmark.start != -1 && bookmark.end != -1) { - try { - sd = this._getTextPos(b, bookmark.start, bookmark.end); - rng = doc.createRange(); - rng.setStart(sd.startNode, sd.startOffset); - rng.setEnd(sd.endNode, sd.endOffset); - sel.removeAllRanges(); - sel.addRange(rng); - - if (!tinyMCE.isOpera) - win.focus(); - } catch (ex) { - // Ignore - } - } - - /* - if (typeof(bookmark.index) != 'undefined') { - tinyMCE.selectElements(b, 'IMG', function (n) { - if (bookmark.index-- == 0) { - // Select image in Gecko here - } - - return false; - }); - } - */ - - win.scrollTo(bookmark.scrollX, bookmark.scrollY); - return true; - } - - return false; - }, - - _getPosText : function(r, sn, en) { - var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {}; - - while ((n = w.nextNode()) != null) { - if (n == sn) - d.start = p; - - if (n == en) { - d.end = p; - return d; - } - - p += n.nodeValue ? n.nodeValue.length : 0; - } - - return null; - }, - - _getTextPos : function(r, sp, ep) { - var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {}; - - while ((n = w.nextNode()) != null) { - p += n.nodeValue ? n.nodeValue.length : 0; - - if (p >= sp && !d.startNode) { - d.startNode = n; - d.startOffset = sp - (p - n.nodeValue.length); - } - - if (p >= ep) { - d.endNode = n; - d.endOffset = ep - (p - n.nodeValue.length); - - return d; - } - } - - return null; - }, - - selectNode : function(node, collapse, select_text_node, to_start) { - var inst = this.instance, sel, rng, nodes; - - if (!node) - return; - - if (typeof(collapse) == "undefined") - collapse = true; - - if (typeof(select_text_node) == "undefined") - select_text_node = false; - - if (typeof(to_start) == "undefined") - to_start = true; - - if (inst.settings.auto_resize) - inst.resizeToContent(); - - if (tinyMCE.isRealIE) { - rng = inst.getDoc().body.createTextRange(); - - try { - rng.moveToElementText(node); - - if (collapse) - rng.collapse(to_start); - - rng.select(); - } catch (e) { - // Throws illigal agrument in MSIE some times - } - } else { - sel = this.getSel(); - - if (!sel) - return; - - if (tinyMCE.isSafari) { - sel.setBaseAndExtent(node, 0, node, node.innerText.length); - - if (collapse) { - if (to_start) - sel.collapseToStart(); - else - sel.collapseToEnd(); - } - - this.scrollToNode(node); - - return; - } - - rng = inst.getDoc().createRange(); - - if (select_text_node) { - // Find first textnode in tree - nodes = tinyMCE.getNodeTree(node, [], 3); - if (nodes.length > 0) - rng.selectNodeContents(nodes[0]); - else - rng.selectNodeContents(node); - } else - rng.selectNode(node); - - if (collapse) { - // Special treatment of textnode collapse - if (!to_start && node.nodeType == 3) { - rng.setStart(node, node.nodeValue.length); - rng.setEnd(node, node.nodeValue.length); - } else - rng.collapse(to_start); - } - - sel.removeAllRanges(); - sel.addRange(rng); - } - - this.scrollToNode(node); - - // Set selected element - tinyMCE.selectedElement = null; - if (node.nodeType == 1) - tinyMCE.selectedElement = node; - }, - - scrollToNode : function(node) { - var inst = this.instance, w = inst.getWin(), vp = inst.getViewPort(), pos = tinyMCE.getAbsPosition(node), cvp, p, cwin; - - // Only scroll if out of visible area - if (pos.absLeft < vp.left || pos.absLeft > vp.left + vp.width || pos.absTop < vp.top || pos.absTop > vp.top + (vp.height-25)) - w.scrollTo(pos.absLeft, pos.absTop - vp.height + 25); - - // Scroll container window - if (inst.settings.auto_resize) { - cwin = inst.getContainerWin(); - cvp = tinyMCE.getViewPort(cwin); - p = this.getAbsPosition(node); - - if (p.absLeft < cvp.left || p.absLeft > cvp.left + cvp.width || p.absTop < cvp.top || p.absTop > cvp.top + cvp.height) - cwin.scrollTo(p.absLeft, p.absTop - cvp.height + 25); - } - }, - - getAbsPosition : function(n) { - var pos = tinyMCE.getAbsPosition(n), ipos = tinyMCE.getAbsPosition(this.instance.iframeElement); - - return { - absLeft : ipos.absLeft + pos.absLeft, - absTop : ipos.absTop + pos.absTop - }; - }, - - getSel : function() { - var inst = this.instance; - - if (tinyMCE.isRealIE) - return inst.getDoc().selection; - - return inst.contentWindow.getSelection(); - }, - - getRng : function() { - var s = this.getSel(); - - if (s == null) - return null; - - if (tinyMCE.isRealIE) - return s.createRange(); - - if (tinyMCE.isSafari && !s.getRangeAt) - return '' + window.getSelection(); - - if (s.rangeCount > 0) - return s.getRangeAt(0); - - return null; - }, - - isCollapsed : function() { - var r = this.getRng(); - - if (r.item) - return false; - - return r.boundingWidth == 0 || this.getSel().isCollapsed; - }, - - collapse : function(b) { - var r = this.getRng(), s = this.getSel(); - - if (r.select) { - r.collapse(b); - r.select(); - } else { - if (b) - s.collapseToStart(); - else - s.collapseToEnd(); - } - }, - - getFocusElement : function() { - var inst = this.instance, doc, rng, sel, elm; - - if (tinyMCE.isRealIE) { - doc = inst.getDoc(); - rng = doc.selection.createRange(); - - // if (rng.collapse) - // rng.collapse(true); - - elm = rng.item ? rng.item(0) : rng.parentElement(); - } else { - if (!tinyMCE.isSafari && inst.isHidden()) - return inst.getBody(); - - sel = this.getSel(); - rng = this.getRng(); - - if (!sel || !rng) - return null; - - elm = rng.commonAncestorContainer; - //elm = (sel && sel.anchorNode) ? sel.anchorNode : null; - - // Handle selection a image or other control like element such as anchors - if (!rng.collapsed) { - // Is selection small - if (rng.startContainer == rng.endContainer) { - if (rng.startOffset - rng.endOffset < 2) { - if (rng.startContainer.hasChildNodes()) - elm = rng.startContainer.childNodes[rng.startOffset]; - } - } - } - - // Get the element parent of the node - elm = tinyMCE.getParentElement(elm); - - //if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") - // elm = tinyMCE.selectedElement; - } - - return elm; - } - - }; - -/* file:jscripts/tiny_mce/classes/TinyMCE_UndoRedo.class.js */ - -function TinyMCE_UndoRedo(inst) { - this.instance = inst; - this.undoLevels = []; - this.undoIndex = 0; - this.typingUndoIndex = -1; - this.undoRedo = true; -}; - -TinyMCE_UndoRedo.prototype = { - add : function(l) { - var b, customUndoLevels, newHTML, inst = this.instance, i, ul, ur; - - if (l) { - this.undoLevels[this.undoLevels.length] = l; - return true; - } - - if (this.typingUndoIndex != -1) { - this.undoIndex = this.typingUndoIndex; - - if (tinyMCE.typingUndoIndex != -1) - tinyMCE.undoIndex = tinyMCE.typingUndoIndex; - } - - newHTML = tinyMCE.trim(inst.getBody().innerHTML); - if (this.undoLevels[this.undoIndex] && newHTML != this.undoLevels[this.undoIndex].content) { - //tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex].content); - - // Is dirty again - inst.isNotDirty = false; - - tinyMCE.dispatchCallback(inst, 'onchange_callback', 'onChange', inst); - - // Time to compress - customUndoLevels = tinyMCE.settings.custom_undo_redo_levels; - if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) { - for (i=0; i 0) { - this.undoIndex--; - - tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content); - inst.repaint(); - - if (inst.settings.custom_undo_redo_restore_selection) - inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark); - } - }, - - redo : function() { - var inst = this.instance; - - tinyMCE.execCommand("mceEndTyping"); - - if (this.undoIndex < (this.undoLevels.length-1)) { - this.undoIndex++; - - tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content); - inst.repaint(); - - if (inst.settings.custom_undo_redo_restore_selection) - inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark); - } - - tinyMCE.triggerNodeChange(); - } - - }; - -/* file:jscripts/tiny_mce/classes/TinyMCE_ForceParagraphs.class.js */ - -var TinyMCE_ForceParagraphs = { - _insertPara : function(inst, e) { - var doc = inst.getDoc(), sel = inst.getSel(), body = inst.getBody(), win = inst.contentWindow, rng = sel.getRangeAt(0); - var rootElm = doc.documentElement, blockName = "P", startNode, endNode, startBlock, endBlock; - var rngBefore, rngAfter, direct, startNode, startOffset, endNode, endOffset, b = tinyMCE.isOpera ? inst.selection.getBookmark() : null; - var paraBefore, paraAfter, startChop, endChop, contents, i; - - function isEmpty(para) { - var nodes; - - function isEmptyHTML(html) { - return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == ''; - } - - // Check for images - if (para.getElementsByTagName("img").length > 0) - return false; - - // Check for tables - if (para.getElementsByTagName("table").length > 0) - return false; - - // Check for HRs - if (para.getElementsByTagName("hr").length > 0) - return false; - - // Check all textnodes - nodes = tinyMCE.getNodeTree(para, [], 3); - for (i=0; i <" + blockName + "> "; - paraAfter = body.childNodes[1]; - } - - inst.selection.moveToBookmark(b); - inst.selection.selectNode(paraAfter, true, true); - - return true; - } - - // Place first part within new paragraph - if (startChop.nodeName == blockName) - rngBefore.setStart(startChop, 0); - else - rngBefore.setStartBefore(startChop); - - rngBefore.setEnd(startNode, startOffset); - paraBefore.appendChild(rngBefore.cloneContents()); - - // Place secound part within new paragraph - rngAfter.setEndAfter(endChop); - rngAfter.setStart(endNode, endOffset); - contents = rngAfter.cloneContents(); - - if (contents.firstChild && contents.firstChild.nodeName == blockName) { - /* var nodes = contents.firstChild.childNodes; - for (i=0; i= r.startOffset && nv.charAt(r.startOffset - 1) == ' ') - s = true;*/ - - // Only remove BRs if we are at the end of line #bug 1464152 - if (nv != null && r.startOffset == nv.length) - sn.nextSibling.parentNode.removeChild(sn.nextSibling); - } - - if (inst.settings.auto_resize) - inst.resizeToContent(); - - return s; - } - - }; - -/* file:jscripts/tiny_mce/classes/TinyMCE_Layer.class.js */ - -function TinyMCE_Layer(id, bm) { - this.id = id; - this.blockerElement = null; - this.events = false; - this.element = null; - this.blockMode = typeof(bm) != 'undefined' ? bm : true; - this.doc = document; -}; - -TinyMCE_Layer.prototype = { - moveRelativeTo : function(re, p) { - var rep = this.getAbsPosition(re), e = this.getElement(), x, y; - var w = parseInt(re.offsetWidth), h = parseInt(re.offsetHeight); - var ew = parseInt(e.offsetWidth), eh = parseInt(e.offsetHeight); - - switch (p) { - case "tl": - x = rep.absLeft; - y = rep.absTop; - break; - - case "tr": - x = rep.absLeft + w; - y = rep.absTop; - break; - - case "bl": - x = rep.absLeft; - y = rep.absTop + h; - break; - - case "br": - x = rep.absLeft + w; - y = rep.absTop + h; - break; - - case "cc": - x = rep.absLeft + (w / 2) - (ew / 2); - y = rep.absTop + (h / 2) - (eh / 2); - break; - } - - this.moveTo(x, y); - }, - - moveBy : function(x, y) { - var e = this.getElement(); - this.moveTo(parseInt(e.style.left) + x, parseInt(e.style.top) + y); - }, - - moveTo : function(x, y) { - var e = this.getElement(); - - e.style.left = x + "px"; - e.style.top = y + "px"; - - this.updateBlocker(); - }, - - resizeBy : function(w, h) { - var e = this.getElement(); - this.resizeTo(parseInt(e.style.width) + w, parseInt(e.style.height) + h); - }, - - resizeTo : function(w, h) { - var e = this.getElement(); - - if (w != null) - e.style.width = w + "px"; - - if (h != null) - e.style.height = h + "px"; - - this.updateBlocker(); - }, - - show : function() { - var el = this.getElement(); - - if (el) { - el.style.display = 'block'; - this.updateBlocker(); - } - }, - - hide : function() { - var el = this.getElement(); - - if (el) { - el.style.display = 'none'; - this.updateBlocker(); - } - }, - - isVisible : function() { - return this.getElement().style.display == 'block'; - }, - - getElement : function() { - if (!this.element) - this.element = this.doc.getElementById(this.id); - - return this.element; - }, - - setBlockMode : function(s) { - this.blockMode = s; - }, - - updateBlocker : function() { - var e, b, x, y, w, h; - - b = this.getBlocker(); - if (b) { - if (this.blockMode) { - e = this.getElement(); - x = this.parseInt(e.style.left); - y = this.parseInt(e.style.top); - w = this.parseInt(e.offsetWidth); - h = this.parseInt(e.offsetHeight); - - b.style.left = x + 'px'; - b.style.top = y + 'px'; - b.style.width = w + 'px'; - b.style.height = h + 'px'; - b.style.display = e.style.display; - } else - b.style.display = 'none'; - } - }, - - getBlocker : function() { - var d, b; - - if (!this.blockerElement && this.blockMode) { - d = this.doc; - b = d.getElementById(this.id + "_blocker"); - - if (!b) { - b = d.createElement("iframe"); - - b.setAttribute('id', this.id + "_blocker"); - b.style.cssText = 'display: none; position: absolute; left: 0; top: 0'; - b.src = 'javascript:false;'; - b.frameBorder = '0'; - b.scrolling = 'no'; - - d.body.appendChild(b); - } - - this.blockerElement = b; - } - - return this.blockerElement; - }, - - getAbsPosition : function(n) { - var p = {absLeft : 0, absTop : 0}; - - while (n) { - p.absLeft += n.offsetLeft; - p.absTop += n.offsetTop; - n = n.offsetParent; - } - - return p; - }, - - create : function(n, c, p, h) { - var d = this.doc, e = d.createElement(n); - - e.setAttribute('id', this.id); - - if (c) - e.className = c; - - if (!p) - p = d.body; - - if (h) - e.innerHTML = h; - - p.appendChild(e); - - return this.element = e; - }, - - exists : function() { - return this.doc.getElementById(this.id) != null; - }, - - parseInt : function(s) { - if (s == null || s == '') - return 0; - - return parseInt(s); - }, - - remove : function() { - var e = this.getElement(), b = this.getBlocker(); - - if (e) - e.parentNode.removeChild(e); - - if (b) - b.parentNode.removeChild(b); - } - - }; - -/* file:jscripts/tiny_mce/classes/TinyMCE_Menu.class.js */ - -function TinyMCE_Menu() { - var id; - - if (typeof(tinyMCE.menuCounter) == "undefined") - tinyMCE.menuCounter = 0; - - id = "mc_menu_" + tinyMCE.menuCounter++; - - TinyMCE_Layer.call(this, id, true); - - this.id = id; - this.items = []; - this.needsUpdate = true; -}; - -TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype, { - init : function(s) { - var n; - - // Default params - this.settings = { - separator_class : 'mceMenuSeparator', - title_class : 'mceMenuTitle', - disabled_class : 'mceMenuDisabled', - menu_class : 'mceMenu', - drop_menu : true - }; - - for (n in s) - this.settings[n] = s[n]; - - this.create('div', this.settings.menu_class); - }, - - clear : function() { - this.items = []; - }, - - addTitle : function(t) { - this.add({type : 'title', text : t}); - }, - - addDisabled : function(t) { - this.add({type : 'disabled', text : t}); - }, - - addSeparator : function() { - this.add({type : 'separator'}); - }, - - addItem : function(t, js) { - this.add({text : t, js : js}); - }, - - add : function(mi) { - this.items[this.items.length] = mi; - this.needsUpdate = true; - }, - - update : function() { - var e = this.getElement(), h = '', i, t, m = this.items, s = this.settings; - - if (this.settings.drop_menu) - h += ''; - - h += ''; - - for (i=0; i'; - } - - h += '
'; - break; - - case 'title': - h += '
' + t + ''; - break; - - case 'disabled': - h += '
' + t + ''; - break; - - default: - h += '
' + t + ''; - } - - h += '
'; - - e.innerHTML = h; - - this.needsUpdate = false; - this.updateBlocker(); - }, - - show : function() { - var nl, i; - - if (tinyMCE.lastMenu == this) - return; - - if (this.needsUpdate) - this.update(); - - if (tinyMCE.lastMenu && tinyMCE.lastMenu != this) - tinyMCE.lastMenu.hide(); - - TinyMCE_Layer.prototype.show.call(this); - - if (!tinyMCE.isOpera) { - // Accessibility stuff -/* nl = this.getElement().getElementsByTagName("a"); - if (nl.length > 0) - nl[0].focus();*/ - } - - tinyMCE.lastMenu = this; - } - - }); - -/* file:jscripts/tiny_mce/classes/TinyMCE_Debug.class.js */ - -tinyMCE.add(TinyMCE_Engine, { - debug : function() { - var m = "", a, i, l = tinyMCE.log.length; - - for (i=0, a = this.debug.arguments; i'); + this._def("font_size_classes", ''); + this._def("font_size_style_values", 'xx-small,x-small,small,medium,large,x-large,xx-large', true); + this._def("event_elements", 'a,img', true); + this._def("convert_urls", true); + this._def("table_inline_editing", false); + this._def("object_resizing", true); + this._def("custom_shortcuts", true); + this._def("convert_on_click", false); + this._def("content_css", ''); + this._def("fix_list_elements", true); + this._def("fix_table_elements", false); + this._def("strict_loading_mode", document.contentType == 'application/xhtml+xml'); + this._def("hidden_tab_class", ''); + this._def("display_tab_class", ''); + this._def("gecko_spellcheck", false); + this._def("hide_selects_on_submit", true); + this._def("forced_root_block", false); + this._def("remove_trailing_nbsp", false); + this._def("save_on_tinymce_forms", false); + + // Force strict loading mode to false on non Gecko browsers + if (this.isMSIE && !this.isOpera) + this.settings.strict_loading_mode = false; + + // Browser check IE + if (this.isMSIE && this.settings.browsers.indexOf('msie') == -1) + return; + + // Browser check Gecko + if (this.isGecko && this.settings.browsers.indexOf('gecko') == -1) + return; + + // Browser check Safari + if (this.isSafari && this.settings.browsers.indexOf('safari') == -1) + return; + + // Browser check Opera + if (this.isOpera && this.settings.browsers.indexOf('opera') == -1) + return; + + // If not super absolute make it so + baseHREF = tinyMCE.settings.document_base_url; + h = document.location.href; + p = h.indexOf('://'); + if (p > 0 && document.location.protocol != "file:") { + p = h.indexOf('/', p + 3); + h = h.substring(0, p); + + if (baseHREF.indexOf('://') == -1) + baseHREF = h + baseHREF; + + tinyMCE.settings.document_base_url = baseHREF; + tinyMCE.settings.document_base_prefix = h; + } + + // Trim away query part + if (baseHREF.indexOf('?') != -1) + baseHREF = baseHREF.substring(0, baseHREF.indexOf('?')); + + this.settings.base_href = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/"; + + theme = this.settings.theme; + this.inlineStrict = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment'; + this.inlineTransitional = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment'; + this.blockElms = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP'; + this.blockRegExp = new RegExp("^(" + this.blockElms + ")$", "i"); + this.posKeyCodes = [13,45,36,35,33,34,37,38,39,40]; + this.uniqueURL = 'javascript:void(091039730);'; // Make unique URL non real URL + this.uniqueTag = ''; + this.callbacks = ['onInit', 'getInfo', 'getEditorTemplate', 'setupContent', 'onChange', 'onPageLoad', 'handleNodeChange', 'initInstance', 'execCommand', 'getControlHTML', 'handleEvent', 'cleanup', 'removeInstance']; + + // Theme url + this.settings.theme_href = tinyMCE.baseURL + "/themes/" + theme; + + if (!tinyMCE.isIE || tinyMCE.isOpera) + this.settings.force_br_newlines = false; + + if (tinyMCE.getParam("popups_css", false)) { + cssPath = tinyMCE.getParam("popups_css", ""); + + // Is relative + if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/') + this.settings.popups_css = this.documentBasePath + "/" + cssPath; + else + this.settings.popups_css = cssPath; + } else + this.settings.popups_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_popup.css"; + + if (tinyMCE.getParam("editor_css", false)) { + cssPath = tinyMCE.getParam("editor_css", ""); + + // Is relative + if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/') + this.settings.editor_css = this.documentBasePath + "/" + cssPath; + else + this.settings.editor_css = cssPath; + } else { + if (this.settings.editor_css !== '') + this.settings.editor_css = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css"; + } + + // Only do this once + if (this.configs.length == 0) { + if (typeof(TinyMCECompressed) == "undefined") { + tinyMCE.addEvent(window, "DOMContentLoaded", TinyMCE_Engine.prototype.onLoad); + + if (tinyMCE.isRealIE) { + if (document.body) + tinyMCE.addEvent(document.body, "readystatechange", TinyMCE_Engine.prototype.onLoad); + else + tinyMCE.addEvent(document, "readystatechange", TinyMCE_Engine.prototype.onLoad); + } + + tinyMCE.addEvent(window, "load", TinyMCE_Engine.prototype.onLoad); + tinyMCE._addUnloadEvents(); + } + } + + this.loadScript(tinyMCE.baseURL + '/themes/' + this.settings.theme + '/editor_template' + tinyMCE.srcMode + '.js'); + this.loadScript(tinyMCE.baseURL + '/langs/' + this.settings.language + '.js'); + this.loadCSS(this.settings.editor_css); + + // Add plugins + p = tinyMCE.getParam('plugins', '', true, ','); + if (p.length > 0) { + for (i=0; i&"]', 'g'); + }, + + _addUnloadEvents : function() { + var st = tinyMCE.settings.add_unload_trigger; + + if (tinyMCE.isIE) { + if (st) { + tinyMCE.addEvent(window, "unload", TinyMCE_Engine.prototype.unloadHandler); + tinyMCE.addEvent(window.document, "beforeunload", TinyMCE_Engine.prototype.unloadHandler); + } + } else { + if (st) + tinyMCE.addEvent(window, "unload", function () {tinyMCE.triggerSave(true, true);}); + } + }, + + _def : function(key, def_val, t) { + var v = tinyMCE.getParam(key, def_val); + + v = t ? v.replace(/\s+/g, "") : v; + + this.settings[key] = v; + }, + + hasPlugin : function(n) { + return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null; + }, + + addPlugin : function(n, p) { + var op = this.plugins[n]; + + // Use the previous plugin object base URL used when loading external plugins + p.baseURL = op ? op.baseURL : tinyMCE.baseURL + "/plugins/" + n; + this.plugins[n] = p; + + this.loadNextScript(); + }, + + setPluginBaseURL : function(n, u) { + var op = this.plugins[n]; + + if (op) + op.baseURL = u; + else + this.plugins[n] = {baseURL : u}; + }, + + loadPlugin : function(n, u) { + u = u.indexOf('.js') != -1 ? u.substring(0, u.lastIndexOf('/')) : u; + u = u.charAt(u.length-1) == '/' ? u.substring(0, u.length-1) : u; + this.plugins[n] = {baseURL : u}; + this.loadScript(u + "/editor_plugin" + (tinyMCE.srcMode ? '_src' : '') + ".js"); + }, + + hasTheme : function(n) { + return typeof(this.themes[n]) != "undefined" && this.themes[n] != null; + }, + + addTheme : function(n, t) { + this.themes[n] = t; + + this.loadNextScript(); + }, + + addMenu : function(n, m) { + this.menus[n] = m; + }, + + hasMenu : function(n) { + return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null; + }, + + loadScript : function(url) { + var i; + + for (i=0; i'); + + this.loadedFiles[this.loadedFiles.length] = url; + }, + + loadNextScript : function() { + var d = document, se; + + if (!tinyMCE.settings.strict_loading_mode) + return; + + if (this.loadingIndex < this.pendingFiles.length) { + se = d.createElementNS('http://www.w3.org/1999/xhtml', 'script'); + se.setAttribute('language', 'javascript'); + se.setAttribute('type', 'text/javascript'); + se.setAttribute('src', this.pendingFiles[this.loadingIndex++]); + + d.getElementsByTagName("head")[0].appendChild(se); + } else + this.loadingIndex = -1; // Done with loading + }, + + loadCSS : function(url) { + var ar = url.replace(/\s+/, '').split(','); + var lflen = 0, csslen = 0, skip = false; + var x = 0, i = 0, nl, le; + + for (x = 0,csslen = ar.length; x 0) { + /* Make sure it doesn't exist. */ + for (i=0, lflen=this.loadedFiles.length; i'); + + this.loadedFiles[this.loadedFiles.length] = ar[x]; + } + } + } + }, + + importCSS : function(doc, css) { + var css_ary = css.replace(/\s+/, '').split(','); + var csslen, elm, headArr, x, css_file; + + for (x = 0, csslen = css_ary.length; x 0) { + // Is relative, make absolute + if (css_file.indexOf('://') == -1 && css_file.charAt(0) != '/') + css_file = this.documentBasePath + "/" + css_file; + + if (typeof(doc.createStyleSheet) == "undefined") { + elm = doc.createElement("link"); + + elm.rel = "stylesheet"; + elm.href = css_file; + + if ((headArr = doc.getElementsByTagName("head")) != null && headArr.length > 0) + headArr[0].appendChild(elm); + } else + doc.createStyleSheet(css_file); + } + } + }, + + confirmAdd : function(e, settings) { + var elm = tinyMCE.isIE ? event.srcElement : e.target; + var elementId = elm.name ? elm.name : elm.id; + + tinyMCE.settings = settings; + + if (tinyMCE.settings.convert_on_click || (!elm.getAttribute('mce_noask') && confirm(tinyMCELang.lang_edit_confirm))) + tinyMCE.addMCEControl(elm, elementId); + + elm.setAttribute('mce_noask', 'true'); + }, + + updateContent : function(form_element_name) { + var formElement, n, inst, doc; + + // Find MCE instance linked to given form element and copy it's value + formElement = document.getElementById(form_element_name); + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + inst.switchSettings(); + + if (inst.formElement == formElement) { + doc = inst.getDoc(); + + tinyMCE._setHTML(doc, inst.formElement.value); + + if (!tinyMCE.isIE) + doc.body.innerHTML = tinyMCE._cleanupHTML(inst, doc, this.settings, doc.body, inst.visualAid); + } + } + }, + + addMCEControl : function(replace_element, form_element_name, target_document) { + var id = "mce_editor_" + tinyMCE.idCounter++; + var inst = new TinyMCE_Control(tinyMCE.settings); + + inst.editorId = id; + this.instances[id] = inst; + + inst._onAdd(replace_element, form_element_name, target_document); + }, + + removeInstance : function(ti) { + var t = [], n, i; + + // Remove from instances + for (n in tinyMCE.instances) { + i = tinyMCE.instances[n]; + + if (tinyMCE.isInstance(i) && ti != i) + t[n] = i; + } + + tinyMCE.instances = t; + + // Remove from global undo/redo + n = []; + t = tinyMCE.undoLevels; + + for (i=0; i 0) { + tinyMCE.nextUndoRedoAction = 'Undo'; + inst = this.undoLevels[--this.undoIndex]; + inst.select(); + + if (!tinyMCE.nextUndoRedoInstanceId) + inst.execCommand('Undo'); + } + } else + inst.execCommand('Undo'); + return true; + + case "Redo": + if (this.getParam('custom_undo_redo_global')) { + if (this.undoIndex <= this.undoLevels.length - 1) { + tinyMCE.nextUndoRedoAction = 'Redo'; + inst = this.undoLevels[this.undoIndex++]; + inst.select(); + + if (!tinyMCE.nextUndoRedoInstanceId) + inst.execCommand('Redo'); + } + } else + inst.execCommand('Redo'); + + return true; + + case 'mceFocus': + inst = tinyMCE.getInstanceById(value); + + if (inst) + inst.getWin().focus(); + return; + + case "mceAddControl": + case "mceAddEditor": + tinyMCE.addMCEControl(tinyMCE._getElementById(value), value); + return; + + case "mceAddFrameControl": + tinyMCE.addMCEControl(tinyMCE._getElementById(value.element, value.document), value.element, value.document); + return; + + case "mceRemoveControl": + case "mceRemoveEditor": + tinyMCE.removeMCEControl(value); + return; + + case "mceToggleEditor": + inst = tinyMCE.getInstanceById(value); + + if (inst) { + pe = document.getElementById(inst.editorId + '_parent'); + te = inst.oldTargetElement; + + if (typeof(inst.enabled) == 'undefined') + inst.enabled = true; + + inst.enabled = !inst.enabled; + + if (!inst.enabled) { + pe.style.display = 'none'; + + if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT') + te.value = inst.getHTML(); + else + te.innerHTML = inst.getHTML(); + + te.style.display = inst.oldTargetDisplay; + tinyMCE.dispatchCallback(inst, 'hide_instance_callback', 'hideInstance', inst); + } else { + pe.style.display = 'block'; + te.style.display = 'none'; + + if (te.nodeName == 'TEXTAREA' || te.nodeName == 'INPUT') + inst.setHTML(te.value); + else + inst.setHTML(te.innerHTML); + + inst.useCSS = false; + tinyMCE.dispatchCallback(inst, 'show_instance_callback', 'showInstance', inst); + } + } else + tinyMCE.addMCEControl(tinyMCE._getElementById(value), value); + + return; + + case "mceResetDesignMode": + // Resets the designmode state of the editors in Gecko + if (tinyMCE.isGecko) { + for (n in tinyMCE.instances) { + if (!tinyMCE.isInstance(tinyMCE.instances[n])) + continue; + + try { + tinyMCE.instances[n].getDoc().designMode = "off"; + tinyMCE.instances[n].getDoc().designMode = "on"; + tinyMCE.instances[n].useCSS = false; + } catch (e) { + // Ignore any errors + } + } + } + + return; + } + + if (inst) { + inst.execCommand(command, user_interface, value); + } else if (tinyMCE.settings.focus_alert) + alert(tinyMCELang.lang_focus_alert); + }, + + _createIFrame : function(replace_element, doc, win) { + var iframe, id = replace_element.getAttribute("id"); + var aw, ah; + + if (typeof(doc) == "undefined") + doc = document; + + if (typeof(win) == "undefined") + win = window; + + iframe = doc.createElement("iframe"); + + aw = "" + tinyMCE.settings.area_width; + ah = "" + tinyMCE.settings.area_height; + + if (aw.indexOf('%') == -1) { + aw = parseInt(aw); + aw = (isNaN(aw) || aw < 0) ? 300 : aw; + aw = aw + "px"; + } + + if (ah.indexOf('%') == -1) { + ah = parseInt(ah); + ah = (isNaN(ah) || ah < 0) ? 240 : ah; + ah = ah + "px"; + } + + iframe.setAttribute("id", id); + iframe.setAttribute("name", id); + iframe.setAttribute("class", "mceEditorIframe"); + iframe.setAttribute("border", "0"); + iframe.setAttribute("frameBorder", "0"); + iframe.setAttribute("marginWidth", "0"); + iframe.setAttribute("marginHeight", "0"); + iframe.setAttribute("leftMargin", "0"); + iframe.setAttribute("topMargin", "0"); + iframe.setAttribute("width", aw); + iframe.setAttribute("height", ah); + iframe.setAttribute("allowtransparency", "true"); + iframe.className = 'mceEditorIframe'; + + if (tinyMCE.settings.auto_resize) + iframe.setAttribute("scrolling", "no"); + + // Must have a src element in MSIE HTTPs breaks aswell as absoute URLs + if (tinyMCE.isRealIE) + iframe.setAttribute("src", this.settings.default_document); + + iframe.style.width = aw; + iframe.style.height = ah; + + // Ugly hack for Gecko problem in strict mode + if (tinyMCE.settings.strict_loading_mode) + iframe.style.marginBottom = '-5px'; + + // MSIE 5.0 issue + if (tinyMCE.isRealIE) + replace_element.outerHTML = iframe.outerHTML; + else + replace_element.parentNode.replaceChild(iframe, replace_element); + + if (tinyMCE.isRealIE) + return win.frames[id]; + else + return iframe; + }, + + setupContent : function(editor_id) { + var inst = tinyMCE.instances[editor_id], i, doc = inst.getDoc(), head = doc.getElementsByTagName('head').item(0); + var content = inst.startContent, contentElement, body; + + // HTML values get XML encoded in strict mode + if (tinyMCE.settings.strict_loading_mode) { + content = content.replace(/</g, '<'); + content = content.replace(/>/g, '>'); + content = content.replace(/"/g, '"'); + content = content.replace(/&/g, '&'); + } + + tinyMCE.selectedInstance = inst; + inst.switchSettings(); + + // Not loaded correctly hit it again, Mozilla bug #997860 + if (!tinyMCE.isIE && tinyMCE.getParam("setupcontent_reload", false) && doc.title != "blank_page") { + // This part will remove the designMode status + // Failes first time in Firefox 1.5b2 on Mac + try {doc.location.href = tinyMCE.baseURL + "/blank.htm";} catch (ex) {} + window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 1000); + return; + } + + // Wait for it to load + if (!head || !doc.body) { + window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 10); + return; + } + + // Import theme specific content CSS the user specific + tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/themes/" + inst.settings.theme + "/css/editor_content.css"); + tinyMCE.importCSS(inst.getDoc(), inst.settings.content_css); + tinyMCE.dispatchCallback(inst, 'init_instance_callback', 'initInstance', inst); + + // Setup keyboard shortcuts + if (tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')) { + inst.addShortcut('ctrl', 'z', 'lang_undo_desc', 'Undo'); + inst.addShortcut('ctrl', 'y', 'lang_redo_desc', 'Redo'); + } + + // BlockFormat shortcuts keys + for (i=1; i<=6; i++) + inst.addShortcut('ctrl', '' + i, '', 'FormatBlock', false, ''); + + inst.addShortcut('ctrl', '7', '', 'FormatBlock', false, '

'); + inst.addShortcut('ctrl', '8', '', 'FormatBlock', false, '

'); + inst.addShortcut('ctrl', '9', '', 'FormatBlock', false, '
'); + + // Add default shortcuts for gecko + if (tinyMCE.isGecko) { + inst.addShortcut('ctrl', 'b', 'lang_bold_desc', 'Bold'); + inst.addShortcut('ctrl', 'i', 'lang_italic_desc', 'Italic'); + inst.addShortcut('ctrl', 'u', 'lang_underline_desc', 'Underline'); + } + + // Setup span styles + if (tinyMCE.getParam("convert_fonts_to_spans")) + inst.getBody().setAttribute('id', 'mceSpanFonts'); + + if (tinyMCE.settings.nowrap) + doc.body.style.whiteSpace = "nowrap"; + + doc.body.dir = this.settings.directionality; + doc.editorId = editor_id; + + // Add on document element in Mozilla + if (!tinyMCE.isIE) + doc.documentElement.editorId = editor_id; + + inst.setBaseHREF(tinyMCE.settings.base_href); + + // Replace new line characters to BRs + if (tinyMCE.settings.convert_newlines_to_brs) { + content = tinyMCE.regexpReplace(content, "\r\n", "
", "gi"); + content = tinyMCE.regexpReplace(content, "\r", "
", "gi"); + content = tinyMCE.regexpReplace(content, "\n", "
", "gi"); + } + + // Open closed anchors + // content = content.replace(new RegExp('', 'gi'), ''); + + // Call custom cleanup code + content = tinyMCE.storeAwayURLs(content); + content = tinyMCE._customCleanup(inst, "insert_to_editor", content); + + if (tinyMCE.isIE) { + // Ugly!!! + window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["' + editor_id + '"].getDoc(), "' + editor_id + '");}catch(e){}', 500); + + if (tinyMCE.settings.force_br_newlines) + doc.styleSheets[0].addRule("p", "margin: 0;"); + + body = inst.getBody(); + body.editorId = editor_id; + } + + content = tinyMCE.cleanupHTMLCode(content); + + // Fix for bug #958637 + if (!tinyMCE.isIE) { + contentElement = inst.getDoc().createElement("body"); + doc = inst.getDoc(); + + contentElement.innerHTML = content; + + if (tinyMCE.settings.cleanup_on_startup) + tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, doc, this.settings, contentElement)); + else + tinyMCE.setInnerHTML(inst.getBody(), content); + + tinyMCE.convertAllRelativeURLs(inst.getBody()); + } else { + if (tinyMCE.settings.cleanup_on_startup) { + tinyMCE._setHTML(inst.getDoc(), content); + + // Produces permission denied error in MSIE 5.5 + try { + tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody())); + } catch(e) { + // Ignore + } + } else + tinyMCE._setHTML(inst.getDoc(), content); + } + + // Fix for bug #957681 + //inst.getDoc().designMode = inst.getDoc().designMode; + + tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings.visual, inst); + tinyMCE.dispatchCallback(inst, 'setupcontent_callback', 'setupContent', editor_id, inst.getBody(), inst.getDoc()); + + // Re-add design mode on mozilla + if (!tinyMCE.isIE) + tinyMCE.addEventHandlers(inst); + + // Add blur handler + if (tinyMCE.isIE) { + tinyMCE.addEvent(inst.getBody(), "blur", TinyMCE_Engine.prototype._eventPatch); + tinyMCE.addEvent(inst.getBody(), "beforedeactivate", TinyMCE_Engine.prototype._eventPatch); // Bug #1439953 + + // Workaround for drag drop/copy paste base href bug + if (!tinyMCE.isOpera) { + tinyMCE.addEvent(doc.body, "mousemove", TinyMCE_Engine.prototype.onMouseMove); + tinyMCE.addEvent(doc.body, "beforepaste", TinyMCE_Engine.prototype._eventPatch); + tinyMCE.addEvent(doc.body, "drop", TinyMCE_Engine.prototype._eventPatch); + } + } + + // Trigger node change, this call locks buttons for tables and so forth + inst.select(); + tinyMCE.selectedElement = inst.contentWindow.document.body; + + // Call custom DOM cleanup + tinyMCE._customCleanup(inst, "insert_to_editor_dom", inst.getBody()); + tinyMCE._customCleanup(inst, "setup_content_dom", inst.getBody()); + tinyMCE._setEventsEnabled(inst.getBody(), false); + tinyMCE.cleanupAnchors(inst.getDoc()); + + if (tinyMCE.getParam("convert_fonts_to_spans")) + tinyMCE.convertSpansToFonts(inst.getDoc()); + + inst.startContent = tinyMCE.trim(inst.getBody().innerHTML); + inst.undoRedo.add({ content : inst.startContent }); + + // Cleanup any mess left from storyAwayURLs + if (tinyMCE.isGecko) { + // Remove mce_src from textnodes and comments + tinyMCE.selectNodes(inst.getBody(), function(n) { + if (n.nodeType == 3 || n.nodeType == 8) + n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), ""); + + return false; + }); + } + + // Remove Gecko spellchecking + if (tinyMCE.isGecko) + inst.getBody().spellcheck = tinyMCE.getParam("gecko_spellcheck"); + + // Cleanup any mess left from storyAwayURLs + tinyMCE._removeInternal(inst.getBody()); + + inst.select(); + tinyMCE.triggerNodeChange(false, true); + }, + + storeAwayURLs : function(s) { + // Remove all mce_src, mce_href and replace them with new ones + // s = s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"', 'gi'), ''); + // s = s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"', 'gi'), ''); + + if (!s.match(/(mce_src|mce_href)/gi, s)) { + s = s.replace(new RegExp('src\\s*=\\s*[\"\']([^ >\"]*)[\"\']', 'gi'), 'src="$1" mce_src="$1"'); + s = s.replace(new RegExp('href\\s*=\\s*[\"\']([^ >\"]*)[\"\']', 'gi'), 'href="$1" mce_href="$1"'); + } + + return s; + }, + + _removeInternal : function(n) { + if (tinyMCE.isGecko) { + // Remove mce_src from textnodes and comments + tinyMCE.selectNodes(n, function(n) { + if (n.nodeType == 3 || n.nodeType == 8) + n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), ""); + + return false; + }); + } + }, + + removeTinyMCEFormElements : function(form_obj) { + var i, elementId; + + // Skip form element removal + if (!tinyMCE.getParam('hide_selects_on_submit')) + return; + + // Check if form is valid + if (typeof(form_obj) == "undefined" || form_obj == null) + return; + + // If not a form, find the form + if (form_obj.nodeName != "FORM") { + if (form_obj.form) + form_obj = form_obj.form; + else + form_obj = tinyMCE.getParentElement(form_obj, "form"); + } + + // Still nothing + if (form_obj == null) + return; + + // Disable all UI form elements that TinyMCE created + for (i=0; i"); + rng.collapse(false); + rng.select(); + + tinyMCE.execCommand("mceAddUndoLevel"); + tinyMCE.triggerNodeChange(false); + return false; + } + } + + // Backspace or delete + if (e.keyCode == 8 || e.keyCode == 46) { + tinyMCE.selectedElement = e.target; + tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a"); + tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img"); + tinyMCE.triggerNodeChange(false); + } + + return false; + + case "keyup": + case "keydown": + tinyMCE.hideMenus(); + tinyMCE.hasMouseMoved = false; + + if (inst && inst.handleShortcut(e)) + return false; + + inst._fixRootBlocks(); + + if (inst.settings.remove_trailing_nbsp) + inst._fixTrailingNbsp(); + + if (e.target.editorId) + tinyMCE.instances[e.target.editorId].select(); + + if (tinyMCE.selectedInstance) + tinyMCE.selectedInstance.switchSettings(); + + inst = tinyMCE.selectedInstance; + + // Handle backspace + if (tinyMCE.isGecko && tinyMCE.settings.force_p_newlines && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) { + // Insert P element instead of BR + if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) { + // Cancel event + tinyMCE.execCommand("mceAddUndoLevel"); + e.preventDefault(); + return false; + } + } + + tinyMCE.selectedElement = null; + tinyMCE.selectedNode = null; + elm = tinyMCE.selectedInstance.getFocusElement(); + tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a"); + tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img"); + tinyMCE.selectedElement = elm; + + // Update visualaids on tabs + if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9) + tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings.visual, tinyMCE.selectedInstance); + + // Fix empty elements on return/enter, check where enter occured + if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13) + tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement(); + + // Fix empty elements on return/enter + if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13) { + elm = tinyMCE.enterKeyElement; + if (elm) { + var re = new RegExp('^HR|IMG|BR$','g'); // Skip these + var dre = new RegExp('^H[1-6]$','g'); // Add double on these + + if (!elm.hasChildNodes() && !re.test(elm.nodeName)) { + if (dre.test(elm.nodeName)) + elm.innerHTML = "  "; + else + elm.innerHTML = " "; + } + } + } + + // Check if it's a position key + keys = tinyMCE.posKeyCodes; + var posKey = false; + for (i=0; i'; + h += '{$'+lang+'}'; + h += ''; + } else { + // Normal button + h += ''; + h += '{$'+lang+'}'; + h += ''; + } + + return h; + }, + + getMenuButtonHTML : function(id, lang, img, mcmd, cmd, ui, val) { + var h = '', m, x; + + mcmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + mcmd + '\');'; + cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\''; + + if (typeof(ui) != "undefined" && ui != null) + cmd += ',' + ui; + + if (typeof(val) != "undefined" && val != null) + cmd += ",'" + val + "'"; + + cmd += ');'; + + // Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled + if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = tinyMCE.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) { + x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20); + + if (tinyMCE.isRealIE) + h += ''; + else + h += ''; + + h += ''; + h += ''; + h += ''; + h += ''; + } else { + if (tinyMCE.isRealIE) + h += ''; + else + h += ''; + + h += ''; + h += ''; + h += ''; + h += ''; + } + + return h; + }, + + _menuButtonEvent : function(e, o) { + if (o.className == 'mceMenuButtonFocus') + return; + + if (e == 'over') + o.className = o.className + ' mceMenuHover'; + else + o.className = o.className.replace(/\s.*$/, ''); + }, + + addButtonMap : function(m) { + var i, a = m.replace(/\s+/, '').split(','); + + for (i=0; i 0) + className += " "; + + className += classNames[i]; + } + + return className; + }, + + handleVisualAid : function(el, deep, state, inst, skip_dispatch) { + var i, x, y, tableElement, anchorName, oldW, oldH, bo, cn; + + if (!el) + return; + + if (!skip_dispatch) + tinyMCE.dispatchCallback(inst, 'handle_visual_aid_callback', 'handleVisualAid', el, deep, state, inst); + + tableElement = null; + + switch (el.nodeName) { + case "TABLE": + oldW = el.style.width; + oldH = el.style.height; + bo = tinyMCE.getAttrib(el, "border"); + + bo = bo == '' || bo == "0" ? true : false; + + tinyMCE.setAttrib(el, "class", tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el, "class"), state && bo)); + + el.style.width = oldW; + el.style.height = oldH; + + for (y=0; y 0) + return inst.cssClasses; + + if (!doc) + return; + + styles = doc.styleSheets; + + if (styles && styles.length > 0) { + for (x=0; x' + tinyMCE.replaceVar(v, "pluginurl", o.baseURL) + ''; + + return tinyMCE.replaceVar(v, "pluginurl", o.baseURL); + } + } + + o = tinyMCE.themes[tinyMCE.settings.theme]; + if (o.getControlHTML && (v = o.getControlHTML(c)) !== '') { + if (rtl) + return '' + v + ''; + + return v; + } + + return ''; + }, + + evalFunc : function(f, idx, a, o) { + o = !o ? window : o; + f = typeof(f) == 'function' ? f : o[f]; + + return f.apply(o, Array.prototype.slice.call(a, idx)); + }, + + dispatchCallback : function(i, p, n) { + return this.callFunc(i, p, n, 0, this.dispatchCallback.arguments); + }, + + executeCallback : function(i, p, n) { + return this.callFunc(i, p, n, 1, this.executeCallback.arguments); + }, + + execCommandCallback : function(i, p, n) { + return this.callFunc(i, p, n, 2, this.execCommandCallback.arguments); + }, + + callFunc : function(ins, p, n, m, a) { + var l, i, on, o, s, v; + + s = m == 2; + + l = tinyMCE.getParam(p, ''); + + if (l !== '' && (v = tinyMCE.evalFunc(l, 3, a)) == s && m > 0) + return true; + + if (ins != null) { + for (i=0, l = ins.plugins; i 0) + return true; + } + } + + l = tinyMCE.themes; + for (on in l) { + o = l[on]; + + if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0) + return true; + } + + return false; + }, + + resolveDots : function(s, o) { + var i; + + if (typeof(s) == 'string') { + for (i=0, s=s.split('.'); i': + return '>'; + } + + return c; + }) : s; + }, + + add : function(c, m) { + var n; + + for (n in m) { + if (m.hasOwnProperty(n)) + c.prototype[n] = m[n]; + } + }, + + extend : function(p, np) { + var o = {}, n; + + o.parent = p; + + for (n in p) { + if (p.hasOwnProperty(n)) + o[n] = p[n]; + } + + for (n in np) { + if (np.hasOwnProperty(n)) + o[n] = np[n]; + } + + return o; + }, + + hideMenus : function() { + var e = tinyMCE.lastSelectedMenuBtn; + + if (tinyMCE.lastMenu) { + tinyMCE.lastMenu.hide(); + tinyMCE.lastMenu = null; + } + + if (e) { + tinyMCE.switchClass(e, tinyMCE.lastMenuBtnClass); + tinyMCE.lastSelectedMenuBtn = null; + } + } + + }; + +// Global instances +var TinyMCE = TinyMCE_Engine; // Compatiblity with gzip compressors +var tinyMCE = new TinyMCE_Engine(); +var tinyMCELang = {}; + +/* file:jscripts/tiny_mce/classes/TinyMCE_Control.class.js */ + +function TinyMCE_Control(settings) { + var t, i, tos, fu, p, x, fn, fu, pn, s = settings; + + this.undoRedoLevel = true; + this.isTinyMCE_Control = true; + + // Default settings + this.enabled = true; + this.settings = s; + this.settings.theme = tinyMCE.getParam("theme", "default"); + this.settings.width = tinyMCE.getParam("width", -1); + this.settings.height = tinyMCE.getParam("height", -1); + this.selection = new TinyMCE_Selection(this); + this.undoRedo = new TinyMCE_UndoRedo(this); + this.cleanup = new TinyMCE_Cleanup(); + this.shortcuts = []; + this.hasMouseMoved = false; + this.foreColor = this.backColor = "#999999"; + this.data = {}; + this.cssClasses = []; + + this.cleanup.init({ + valid_elements : s.valid_elements, + extended_valid_elements : s.extended_valid_elements, + valid_child_elements : s.valid_child_elements, + entities : s.entities, + entity_encoding : s.entity_encoding, + debug : s.cleanup_debug, + indent : s.apply_source_formatting, + invalid_elements : s.invalid_elements, + verify_html : s.verify_html, + fix_content_duplication : s.fix_content_duplication, + convert_fonts_to_spans : s.convert_fonts_to_spans + }); + + // Wrap old theme + t = this.settings.theme; + if (!tinyMCE.hasTheme(t)) { + fn = tinyMCE.callbacks; + tos = {}; + + for (i=0; i 0) { + for (i=0; i 1 && tinyMCE.currentConfig != this.settings.index) { + tinyMCE.settings = this.settings; + tinyMCE.currentConfig = this.settings.index; + } + }, + + select : function() { + var oldInst = tinyMCE.selectedInstance; + + if (oldInst != this) { + if (oldInst) + oldInst.execCommand('mceEndTyping'); + + tinyMCE.dispatchCallback(this, 'select_instance_callback', 'selectInstance', this, oldInst); + tinyMCE.selectedInstance = this; + } + }, + + getBody : function() { + return this.contentBody ? this.contentBody : this.getDoc().body; + }, + + getDoc : function() { +// return this.contentDocument ? this.contentDocument : this.contentWindow.document; // Removed due to IE 5.5 ? + return this.contentWindow.document; + }, + + getWin : function() { + return this.contentWindow; + }, + + getContainerWin : function() { + return this.containerWindow ? this.containerWindow : window; + }, + + getViewPort : function() { + return tinyMCE.getViewPort(this.getWin()); + }, + + getParentNode : function(n, f) { + return tinyMCE.getParentNode(n, f, this.getBody()); + }, + + getParentElement : function(n, na, f) { + return tinyMCE.getParentElement(n, na, f, this.getBody()); + }, + + getParentBlockElement : function(n) { + return tinyMCE.getParentBlockElement(n, this.getBody()); + }, + + resizeToContent : function() { + var d = this.getDoc(), b = d.body, de = d.documentElement; + + this.iframeElement.style.height = (tinyMCE.isRealIE) ? b.scrollHeight : de.offsetHeight + 'px'; + }, + + addShortcut : function(m, k, d, cmd, ui, va) { + var n = typeof(k) == "number", ie = tinyMCE.isIE, c, sc, i, scl = this.shortcuts; + + if (!tinyMCE.getParam('custom_shortcuts')) + return false; + + m = m.toLowerCase(); + k = ie && !n ? k.toUpperCase() : k; + c = n ? null : k.charCodeAt(0); + d = d && d.indexOf('lang_') == 0 ? tinyMCE.getLang(d) : d; + + sc = { + alt : m.indexOf('alt') != -1, + ctrl : m.indexOf('ctrl') != -1, + shift : m.indexOf('shift') != -1, + charCode : c, + keyCode : n ? k : (ie ? c : null), + desc : d, + cmd : cmd, + ui : ui, + val : va + }; + + for (i=0; i 1 && /(^\u00a0|\u00a0$)/.test(v)) { + e.firstChild.nodeValue = v.replace(/(^\u00a0|\u00a0$)/, ''); + s.selectNode(e.firstChild, true, false, false); // Select and collapse + } + } + }, + + _setUseCSS : function(b) { + var d = this.getDoc(); + + try {d.execCommand("useCSS", false, !b);} catch (ex) {} + try {d.execCommand("styleWithCSS", false, b);} catch (ex) {} + + if (!tinyMCE.getParam("table_inline_editing")) + try {d.execCommand('enableInlineTableEditing', false, "false");} catch (ex) {} + + if (!tinyMCE.getParam("object_resizing")) + try {d.execCommand('enableObjectResizing', false, "false");} catch (ex) {} + }, + + execCommand : function(command, user_interface, value) { + var i, x, z, align, img, div, doc = this.getDoc(), win = this.getWin(), focusElm = this.getFocusElement(); + + // Is not a undo specific command + if (!new RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel', 'gi').test(command)) + this.undoBookmark = null; + + // Mozilla issue + if (!tinyMCE.isIE && !this.useCSS) { + this._setUseCSS(false); + this.useCSS = true; + } + + //debug("command: " + command + ", user_interface: " + user_interface + ", value: " + value); + this.contentDocument = doc; // <-- Strange, unless this is applied Mozilla 1.3 breaks + + // Don't dispatch key commands + if (!/mceStartTyping|mceEndTyping/.test(command)) { + if (tinyMCE.execCommandCallback(this, 'execcommand_callback', 'execCommand', this.editorId, this.getBody(), command, user_interface, value)) + return; + } + + // Fix align on images + if (focusElm && focusElm.nodeName == "IMG") { + align = focusElm.getAttribute('align'); + img = command == "JustifyCenter" ? focusElm.cloneNode(false) : focusElm; + + switch (command) { + case "JustifyLeft": + if (align == 'left') { + img.setAttribute('align', ''); // Needed for IE + img.removeAttribute('align'); + } else + img.setAttribute('align', 'left'); + + // Remove the div + div = focusElm.parentNode; + if (div && div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode) + div.parentNode.replaceChild(img, div); + + this.selection.selectNode(img); + this.repaint(); + tinyMCE.triggerNodeChange(); + return; + + case "JustifyCenter": + img.setAttribute('align', ''); // Needed for IE + img.removeAttribute('align'); + + // Is centered + div = tinyMCE.getParentElement(focusElm, "div"); + if (div && div.style.textAlign == "center") { + // Remove div + if (div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode) + div.parentNode.replaceChild(img, div); + } else { + // Add div + div = this.getDoc().createElement("div"); + div.style.textAlign = 'center'; + div.appendChild(img); + focusElm.parentNode.replaceChild(div, focusElm); + } + + this.selection.selectNode(img); + this.repaint(); + tinyMCE.triggerNodeChange(); + return; + + case "JustifyRight": + if (align == 'right') { + img.setAttribute('align', ''); // Needed for IE + img.removeAttribute('align'); + } else + img.setAttribute('align', 'right'); + + // Remove the div + div = focusElm.parentNode; + if (div && div.nodeName == "DIV" && div.childNodes.length == 1 && div.parentNode) + div.parentNode.replaceChild(img, div); + + this.selection.selectNode(img); + this.repaint(); + tinyMCE.triggerNodeChange(); + return; + } + } + + if (tinyMCE.settings.force_br_newlines) { + var alignValue = ""; + + if (doc.selection.type != "Control") { + switch (command) { + case "JustifyLeft": + alignValue = "left"; + break; + + case "JustifyCenter": + alignValue = "center"; + break; + + case "JustifyFull": + alignValue = "justify"; + break; + + case "JustifyRight": + alignValue = "right"; + break; + } + + if (alignValue !== '') { + var rng = doc.selection.createRange(); + + if ((divElm = tinyMCE.getParentElement(rng.parentElement(), "div")) != null) + divElm.setAttribute("align", alignValue); + else if (rng.pasteHTML && rng.htmlText.length > 0) + rng.pasteHTML('
' + rng.htmlText + "
"); + + tinyMCE.triggerNodeChange(); + return; + } + } + } + + switch (command) { + case "mceRepaint": + this.repaint(); + return true; + + case "JustifyLeft": + case "JustifyCenter": + case "JustifyFull": + case "JustifyRight": + var el = tinyMCE.getParentNode(focusElm, function(n) {return tinyMCE.getAttrib(n, 'align');}); + + if (el) { + el.setAttribute('align', ''); // Needed for IE + el.removeAttribute('align'); + } else + this.getDoc().execCommand(command, user_interface, value); + + tinyMCE.triggerNodeChange(); + + return true; + + case "unlink": + // Unlink if caret is inside link + if (tinyMCE.isGecko && this.getSel().isCollapsed) { + focusElm = tinyMCE.getParentElement(focusElm, 'A'); + + if (focusElm) + this.selection.selectNode(focusElm, false); + } + + this.getDoc().execCommand(command, user_interface, value); + + tinyMCE.isGecko && this.getSel().collapseToEnd(); + + tinyMCE.triggerNodeChange(); + + return true; + + case "InsertUnorderedList": + case "InsertOrderedList": + this.getDoc().execCommand(command, user_interface, value); + tinyMCE.triggerNodeChange(); + break; + + case "Strikethrough": + this.getDoc().execCommand(command, user_interface, value); + tinyMCE.triggerNodeChange(); + break; + + case "mceSelectNode": + this.selection.selectNode(value); + tinyMCE.triggerNodeChange(); + tinyMCE.selectedNode = value; + break; + + case "FormatBlock": + if (value == null || value == '') { + var elm = tinyMCE.getParentElement(this.getFocusElement(), "p,div,h1,h2,h3,h4,h5,h6,pre,address,blockquote,dt,dl,dd,samp"); + + if (elm) + this.execCommand("mceRemoveNode", false, elm); + } else { + if (!this.cleanup.isValid(value)) + return true; + + if (tinyMCE.isGecko && new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>', 'gi').test(value)) + value = value.replace(/[^a-z]/gi, ''); + + if (tinyMCE.isIE && new RegExp('blockquote|code|samp', 'gi').test(value)) { + var b = this.selection.getBookmark(); + this.getDoc().execCommand("FormatBlock", false, '

'); + tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()), value); + this.selection.moveToBookmark(b); + } else + this.getDoc().execCommand("FormatBlock", false, value); + } + + tinyMCE.triggerNodeChange(); + + break; + + case "mceRemoveNode": + if (!value) + value = tinyMCE.getParentElement(this.getFocusElement()); + + if (tinyMCE.isIE) { + value.outerHTML = value.innerHTML; + } else { + var rng = value.ownerDocument.createRange(); + rng.setStartBefore(value); + rng.setEndAfter(value); + rng.deleteContents(); + rng.insertNode(rng.createContextualFragment(value.innerHTML)); + } + + tinyMCE.triggerNodeChange(); + + break; + + case "mceSelectNodeDepth": + var parentNode = this.getFocusElement(); + for (i=0; parentNode; i++) { + if (parentNode.nodeName.toLowerCase() == "body") + break; + + if (parentNode.nodeName.toLowerCase() == "#text") { + i--; + parentNode = parentNode.parentNode; + continue; + } + + if (i == value) { + this.selection.selectNode(parentNode, false); + tinyMCE.triggerNodeChange(); + tinyMCE.selectedNode = parentNode; + return; + } + + parentNode = parentNode.parentNode; + } + + break; + + case "mceSetStyleInfo": + case "SetStyleInfo": + var rng = this.getRng(); + var sel = this.getSel(); + var scmd = value.command; + var sname = value.name; + var svalue = value.value == null ? '' : value.value; + //var svalue = value['value'] == null ? '' : value['value']; + var wrapper = value.wrapper ? value.wrapper : "span"; + var parentElm = null; + var invalidRe = new RegExp("^BODY|HTML$", "g"); + var invalidParentsRe = tinyMCE.settings.merge_styles_invalid_parents !== '' ? new RegExp(tinyMCE.settings.merge_styles_invalid_parents, "gi") : null; + + // Whole element selected check + if (tinyMCE.isIE) { + // Control range + if (rng.item) + parentElm = rng.item(0); + else { + var pelm = rng.parentElement(); + var prng = doc.selection.createRange(); + prng.moveToElementText(pelm); + + if (rng.htmlText == prng.htmlText || rng.boundingWidth == 0) { + if (invalidParentsRe == null || !invalidParentsRe.test(pelm.nodeName)) + parentElm = pelm; + } + } + } else { + var felm = this.getFocusElement(); + if (sel.isCollapsed || (new RegExp('td|tr|tbody|table|img', 'gi').test(felm.nodeName) && sel.anchorNode == felm.parentNode)) + parentElm = felm; + } + + // Whole element selected + if (parentElm && !invalidRe.test(parentElm.nodeName)) { + if (scmd == "setstyle") + tinyMCE.setStyleAttrib(parentElm, sname, svalue); + + if (scmd == "setattrib") + tinyMCE.setAttrib(parentElm, sname, svalue); + + if (scmd == "removeformat") { + parentElm.style.cssText = ''; + tinyMCE.setAttrib(parentElm, 'class', ''); + } + + // Remove style/attribs from all children + var ch = tinyMCE.getNodeTree(parentElm, [], 1); + for (z=0; z=0; i--) { + var elm = nodes[i]; + var isNew = tinyMCE.getAttrib(elm, "mce_new") == "true"; + + elm.removeAttribute("mce_new"); + + // Is only child a element + if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) { + //tinyMCE.debug("merge1" + isNew); + this._mergeElements(scmd, elm, elm.childNodes[0], isNew); + continue; + } + + // Is I the only child + if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) { + //tinyMCE.debug("merge2" + isNew + "," + elm.nodeName + "," + elm.parentNode.nodeName); + if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName)) + this._mergeElements(scmd, elm.parentNode, elm, false); + } + } + + // Remove empty wrappers + var nodes = doc.getElementsByTagName(wrapper); + for (i=nodes.length-1; i>=0; i--) { + var elm = nodes[i], isEmpty = true; + + // Check if it has any attribs + var tmp = doc.createElement("body"); + tmp.appendChild(elm.cloneNode(false)); + + // Is empty span, remove it + tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""', 'gi'), ''); + //tinyMCE.debug(tmp.innerHTML); + if (new RegExp('', 'gi').test(tmp.innerHTML)) { + for (x=0; x 0) { + value = tinyMCE.replaceVar(value, "selection", selectedText); + tinyMCE.execCommand('mceInsertContent', false, value); + } + + this._addBogusBR(); + tinyMCE.triggerNodeChange(); + break; + + case "mceSetAttribute": + if (typeof(value) == 'object') { + var targetElms = (typeof(value.targets) == "undefined") ? "p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address" : value.targets; + var targetNode = tinyMCE.getParentElement(this.getFocusElement(), targetElms); + + if (targetNode) { + targetNode.setAttribute(value.name, value.value); + tinyMCE.triggerNodeChange(); + } + } + break; + + case "mceSetCSSClass": + this.execCommand("mceSetStyleInfo", false, {command : "setattrib", name : "class", value : value}); + break; + + case "mceInsertRawHTML": + var key = 'tiny_mce_marker'; + + this.execCommand('mceBeginUndoLevel'); + + // Insert marker key + this.execCommand('mceInsertContent', false, key); + + // Store away scroll pos + var scrollX = this.getBody().scrollLeft + this.getDoc().documentElement.scrollLeft; + var scrollY = this.getBody().scrollTop + this.getDoc().documentElement.scrollTop; + + // Find marker and replace with RAW HTML + var html = this.getBody().innerHTML; + if ((pos = html.indexOf(key)) != -1) + tinyMCE.setInnerHTML(this.getBody(), html.substring(0, pos) + value + html.substring(pos + key.length)); + + // Restore scoll pos + this.contentWindow.scrollTo(scrollX, scrollY); + + this.execCommand('mceEndUndoLevel'); + + break; + + case "mceInsertContent": + // Force empty string + if (!value) + value = ''; + + var insertHTMLFailed = false; + + // Removed since it produced problems in IE + // this.getWin().focus(); + + if (tinyMCE.isGecko || tinyMCE.isOpera) { + try { + // Is plain text or HTML, &,   etc will be encoded wrong in FF + if (value.indexOf('<') == -1 && !value.match(/(&| |<|>)/g)) { + var r = this.getRng(); + var n = this.getDoc().createTextNode(tinyMCE.entityDecode(value)); + var s = this.getSel(); + var r2 = r.cloneRange(); + + // Insert text at cursor position + s.removeAllRanges(); + r.deleteContents(); + r.insertNode(n); + + // Move the cursor to the end of text + r2.selectNode(n); + r2.collapse(false); + s.removeAllRanges(); + s.addRange(r2); + } else { + value = tinyMCE.fixGeckoBaseHREFBug(1, this.getDoc(), value); + this.getDoc().execCommand('inserthtml', false, value); + tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value); + } + } catch (ex) { + insertHTMLFailed = true; + } + + if (!insertHTMLFailed) { + tinyMCE.triggerNodeChange(); + return; + } + } + + if (!tinyMCE.isIE) { + var isHTML = value.indexOf('<') != -1; + var sel = this.getSel(); + var rng = this.getRng(); + + if (isHTML) { + if (tinyMCE.isSafari) { + var tmpRng = this.getDoc().createRange(); + + tmpRng.setStart(this.getBody(), 0); + tmpRng.setEnd(this.getBody(), 0); + + value = tmpRng.createContextualFragment(value); + } else + value = rng.createContextualFragment(value); + } else { + // Setup text node + value = doc.createTextNode(tinyMCE.entityDecode(value)); + } + + // Insert plain text in Safari + if (tinyMCE.isSafari && !isHTML) { + this.execCommand('InsertText', false, value.nodeValue); + tinyMCE.triggerNodeChange(); + return true; + } else if (tinyMCE.isSafari && isHTML) { + rng.deleteContents(); + rng.insertNode(value); + tinyMCE.triggerNodeChange(); + return true; + } + + rng.deleteContents(); + + // If target node is text do special treatment, (Mozilla 1.3 fix) + if (rng.startContainer.nodeType == 3) { + var node = rng.startContainer.splitText(rng.startOffset); + node.parentNode.insertBefore(value, node); + } else + rng.insertNode(value); + + if (!isHTML) { + // Removes weird selection trails + sel.selectAllChildren(doc.body); + sel.removeAllRanges(); + + // Move cursor to end of content + var rng = doc.createRange(); + + rng.selectNode(value); + rng.collapse(false); + + sel.addRange(rng); + } else + rng.collapse(false); + + tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value); + } else { + var rng = doc.selection.createRange(), tmpRng = null; + var c = value.indexOf('"; + } + + if (hc) { + cn = n.childNodes; + + for (i=0, l=cn.length; i'; + + return h; + }, + + _serializeAttribute : function(n, r, an) { + var av = '', t, os = this.settings.on_save; + + if (os && (an.indexOf('mce_') == 0 || an.indexOf('_moz') == 0)) + return ''; + + if (os && this.mceAttribs[an]) + av = this._getAttrib(n, this.mceAttribs[an]); + + if (av.length == 0) + av = this._getAttrib(n, an); + + if (av.length == 0 && r.defaultAttribs && (t = r.defaultAttribs[an])) { + av = t; + + if (av == "mce_empty") + return " " + an + '=""'; + } + + if (r.forceAttribs && (t = r.forceAttribs[an])) + av = t; + + if (os && av.length != 0 && /^(src|href|longdesc)$/.test(an)) + av = this._urlConverter(this, n, av); + + if (av.length != 0 && r.validAttribValues && r.validAttribValues[an] && !r.validAttribValues[an].test(av)) + return ""; + + if (av.length != 0 && av == "{$uid}") + av = "uid_" + (this.idCount++); + + if (av.length != 0) { + if (an.indexOf('on') != 0) + av = this.xmlEncode(av, 1); + + return " " + an + "=" + '"' + av + '"'; + } + + return ""; + }, + + formatHTML : function(h) { + var s = this.settings, p = '', i = 0, li = 0, o = '', l; + + // Replace BR in pre elements to \n + h = h.replace(/]*)>(.*?)<\/pre>/gi, function (a, b, c) { + c = c.replace(//gi, '\n'); + return '' + c + ''; + }); + + h = h.replace(/\r/g, ''); // Windows sux, isn't carriage return a thing of the past :) + h = '\n' + h; + h = h.replace(new RegExp('\\n\\s+', 'gi'), '\n'); // Remove previous formatting + h = h.replace(this.nlBeforeRe, '\n<$1$2>'); + h = h.replace(this.nlAfterRe, '<$1$2>\n'); + h = h.replace(this.nlBeforeAfterRe, '\n<$1$2$3>\n'); + h += '\n'; + + //tinyMCE.debug(h); + + while ((i = h.indexOf('\n', i + 1)) != -1) { + if ((l = h.substring(li + 1, i)).length != 0) { + if (this.ouRe.test(l) && p.length >= s.indent_levels) + p = p.substring(s.indent_levels); + + o += p + l + '\n'; + + if (this.inRe.test(l)) + p += this.inStr; + } + + li = i; + } + + //tinyMCE.debug(h); + + return o; + }, + + xmlEncode : function(s) { + var cl = this, re = this.xmlEncodeRe; + + if (!this.entitiesDone) + this._setupEntities(); // Will intialize lookup table + + switch (this.settings.entity_encoding) { + case "raw": + return tinyMCE.xmlEncode(s); + + case "named": + return s.replace(re, function (c) { + var b = cl.entities[c.charCodeAt(0)]; + + return b ? '&' + b + ';' : c; + }); + + case "numeric": + return s.replace(re, function (c) { + return '&#' + c.charCodeAt(0) + ';'; + }); + } + + return s; + }, + + split : function(re, s) { + var i, l, o = [], c = s.split(re); + + for (i=0, l=c.length; i' : '>' + h + ''; + + return o; + }, + + createTag : function(d, tn, a, h) { + var o = d.createElement(tn), n; + + if (a) { + for (n in a) { + if (typeof(a[n]) != 'function' && a[n] != null) + tinyMCE.setAttrib(o, n, a[n]); + } + } + + if (h) + o.innerHTML = h; + + return o; + }, + + getElementByAttributeValue : function(n, e, a, v) { + return (n = this.getElementsByAttributeValue(n, e, a, v)).length == 0 ? null : n[0]; + }, + + getElementsByAttributeValue : function(n, e, a, v) { + var i, nl = n.getElementsByTagName(e), o = []; + + for (i=0; i]*)>/gi, ''); + h = h.replace(/]*)>/gi, ''); + h = h.replace(/]*)>/gi, ''); + h = h.replace(/]*)>/gi, ''); + h = h.replace(/<\/strong>/gi, ''); + h = h.replace(/<\/em>/gi, ''); + } + + if (tinyMCE.isRealIE) { + // Since MSIE handles invalid HTML better that valid XHTML we + // need to make some things invalid.


gets converted to
. + h = h.replace(/\s\/>/g, '>'); + + // Since MSIE auto generated emtpy P tags some times we must tell it to keep the real ones + h = h.replace(/]*)>\u00A0?<\/p>/gi, ' 

'); // Keep empty paragraphs + h = h.replace(/]*)>\s* \s*<\/p>/gi, ' 

'); // Keep empty paragraphs + h = h.replace(/]*)>\s+<\/p>/gi, ' 

'); // Keep empty paragraphs + + // Remove first comment + e.innerHTML = tinyMCE.uniqueTag + h; + e.firstChild.removeNode(true); + + // Remove weird auto generated empty paragraphs unless it's supposed to be there + nl = e.getElementsByTagName("p"); + for (i=nl.length-1; i>=0; i--) { + n = nl[i]; + + if (n.nodeName == 'P' && !n.hasChildNodes() && !n.mce_keep) + n.parentNode.removeChild(n); + } + } else { + h = this.fixGeckoBaseHREFBug(1, e, h); + e.innerHTML = h; + this.fixGeckoBaseHREFBug(2, e, h); + } + }, + + getOuterHTML : function(e) { + var d; + + if (tinyMCE.isIE) + return e.outerHTML; + + d = e.ownerDocument.createElement("body"); + d.appendChild(e.cloneNode(true)); + + return d.innerHTML; + }, + + setOuterHTML : function(e, h, d) { + var d = typeof(d) == "undefined" ? e.ownerDocument : d, i, nl, t; + + if (tinyMCE.isIE && e.nodeType == 1) + e.outerHTML = h; + else { + t = d.createElement("body"); + t.innerHTML = h; + + for (i=0, nl=t.childNodes; i-1; i--) { + if (ar[i].specified && ar[i].nodeValue) + ne.setAttribute(ar[i].nodeName.toLowerCase(), ar[i].nodeValue); + } + + ar = e.childNodes; + for (i=0; i= strTok2.length) { + for (i=0; i= strTok2.length || strTok1[i] != strTok2[i]) { + breakPoint = i + 1; + break; + } + } + } + + if (strTok1.length < strTok2.length) { + for (i=0; i= strTok1.length || strTok1[i] != strTok2[i]) { + breakPoint = i + 1; + break; + } + } + } + + if (breakPoint == 1) + return targetURL.path; + + for (i=0; i<(strTok1.length-(breakPoint-1)); i++) + outPath += "../"; + + for (i=breakPoint-1; i=0; i--) { + if (baseURLParts[i].length == 0) + continue; + + newBaseURLParts[newBaseURLParts.length] = baseURLParts[i]; + } + baseURLParts = newBaseURLParts.reverse(); + + // Merge relURLParts chunks + newRelURLParts = []; + numBack = 0; + for (i=relURLParts.length-1; i>=0; i--) { + if (relURLParts[i].length == 0 || relURLParts[i] == ".") + continue; + + if (relURLParts[i] == '..') { + numBack++; + continue; + } + + if (numBack > 0) { + numBack--; + continue; + } + + newRelURLParts[newRelURLParts.length] = relURLParts[i]; + } + + relURLParts = newRelURLParts.reverse(); + + // Remove end from absolute path + len = baseURLParts.length-numBack; + absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0, len).join('/') + "/" + relURLParts.join('/'); + start = ""; + end = ""; + + // Build output URL + relURL.protocol = baseURL.protocol; + relURL.host = baseURL.host; + relURL.port = baseURL.port; + + // Re-add trailing slash if it's removed + if (relURL.path.charAt(relURL.path.length-1) == "/") + absPath += "/"; + + relURL.path = absPath; + + return this.serializeURL(relURL); + }, + + convertURL : function(url, node, on_save) { + var dl = document.location, start, portPart, urlParts, baseUrlParts, tmpUrlParts, curl; + var prot = dl.protocol, host = dl.hostname, port = dl.port; + + // Pass through file protocol + if (prot == "file:") + return url; + + // Something is wrong, remove weirdness + url = tinyMCE.regexpReplace(url, '(http|https):///', '/'); + + // Mailto link or anchor (Pass through) + if (url.indexOf('mailto:') != -1 || url.indexOf('javascript:') != -1 || /^[ \t\r\n\+]*[#\?]/.test(url)) + return url; + + // Fix relative/Mozilla + if (!tinyMCE.isIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/') + return tinyMCE.settings.base_href + url; + + // Handle relative URLs + if (on_save && tinyMCE.getParam('relative_urls')) { + curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url); + if (curl.charAt(0) == '/') + curl = tinyMCE.settings.document_base_prefix + curl; + + urlParts = tinyMCE.parseURL(curl); + tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings.document_base_url); + + // Force relative + if (urlParts.host == tmpUrlParts.host && (urlParts.port == tmpUrlParts.port)) + return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings.document_base_url, curl); + } + + // Handle absolute URLs + if (!tinyMCE.getParam('relative_urls')) { + urlParts = tinyMCE.parseURL(url); + baseUrlParts = tinyMCE.parseURL(tinyMCE.settings.base_href); + + // Force absolute URLs from relative URLs + url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, url); + + // If anchor and path is the same page + if (urlParts.anchor && urlParts.path == baseUrlParts.path) + return "#" + urlParts.anchor; + } + + // Remove current domain + if (tinyMCE.getParam('remove_script_host')) { + start = ""; + portPart = ""; + + if (port !== '') + portPart = ":" + port; + + start = prot + "//" + host + portPart + "/"; + + if (url.indexOf(start) == 0) + url = url.substring(start.length-1); + } + + return url; + }, + + convertAllRelativeURLs : function(body) { + var i, elms, src, href, mhref, msrc; + + // Convert all image URL:s to absolute URL + elms = body.getElementsByTagName("img"); + for (i=0; i bookmark.index) { + try { + rng.addElement(nl[bookmark.index]); + } catch (ex) { + // Might be thrown if the node no longer exists + } + } + } else { + // Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs + try { + // Incorrect bookmark + if (bookmark.start < 0) + return true; + + rng = inst.getSel().createRange(); + rng.moveToElementText(inst.getBody()); + rng.collapse(true); + rng.moveStart('character', bookmark.start); + rng.moveEnd('character', bookmark.length); + } catch (ex) { + return true; + } + } + + rng.select(); + + win.scrollTo(bookmark.scrollX, bookmark.scrollY); + return true; + } + + if (tinyMCE.isGecko || tinyMCE.isOpera) { + if (!sel) + return false; + + if (bookmark.rng) { + sel.removeAllRanges(); + sel.addRange(bookmark.rng); + } + + if (bookmark.start != -1 && bookmark.end != -1) { + try { + sd = this._getTextPos(b, bookmark.start, bookmark.end); + rng = doc.createRange(); + rng.setStart(sd.startNode, sd.startOffset); + rng.setEnd(sd.endNode, sd.endOffset); + sel.removeAllRanges(); + sel.addRange(rng); + + if (!tinyMCE.isOpera) + win.focus(); + } catch (ex) { + // Ignore + } + } + + /* + if (typeof(bookmark.index) != 'undefined') { + tinyMCE.selectElements(b, 'IMG', function (n) { + if (bookmark.index-- == 0) { + // Select image in Gecko here + } + + return false; + }); + } + */ + + win.scrollTo(bookmark.scrollX, bookmark.scrollY); + return true; + } + + return false; + }, + + _getPosText : function(r, sn, en) { + var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {}; + + while ((n = w.nextNode()) != null) { + if (n == sn) + d.start = p; + + if (n == en) { + d.end = p; + return d; + } + + p += n.nodeValue ? n.nodeValue.length : 0; + } + + return null; + }, + + _getTextPos : function(r, sp, ep) { + var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {}; + + while ((n = w.nextNode()) != null) { + p += n.nodeValue ? n.nodeValue.length : 0; + + if (p >= sp && !d.startNode) { + d.startNode = n; + d.startOffset = sp - (p - n.nodeValue.length); + } + + if (p >= ep) { + d.endNode = n; + d.endOffset = ep - (p - n.nodeValue.length); + + return d; + } + } + + return null; + }, + + selectNode : function(node, collapse, select_text_node, to_start) { + var inst = this.instance, sel, rng, nodes; + + if (!node) + return; + + if (typeof(collapse) == "undefined") + collapse = true; + + if (typeof(select_text_node) == "undefined") + select_text_node = false; + + if (typeof(to_start) == "undefined") + to_start = true; + + if (inst.settings.auto_resize) + inst.resizeToContent(); + + if (tinyMCE.isRealIE) { + rng = inst.getDoc().body.createTextRange(); + + try { + rng.moveToElementText(node); + + if (collapse) + rng.collapse(to_start); + + rng.select(); + } catch (e) { + // Throws illigal agrument in MSIE some times + } + } else { + sel = this.getSel(); + + if (!sel) + return; + + if (tinyMCE.isSafari) { + sel.setBaseAndExtent(node, 0, node, node.innerText.length); + + if (collapse) { + if (to_start) + sel.collapseToStart(); + else + sel.collapseToEnd(); + } + + this.scrollToNode(node); + + return; + } + + rng = inst.getDoc().createRange(); + + if (select_text_node) { + // Find first textnode in tree + nodes = tinyMCE.getNodeTree(node, [], 3); + if (nodes.length > 0) + rng.selectNodeContents(nodes[0]); + else + rng.selectNodeContents(node); + } else + rng.selectNode(node); + + if (collapse) { + // Special treatment of textnode collapse + if (!to_start && node.nodeType == 3) { + rng.setStart(node, node.nodeValue.length); + rng.setEnd(node, node.nodeValue.length); + } else + rng.collapse(to_start); + } + + sel.removeAllRanges(); + sel.addRange(rng); + } + + this.scrollToNode(node); + + // Set selected element + tinyMCE.selectedElement = null; + if (node.nodeType == 1) + tinyMCE.selectedElement = node; + }, + + scrollToNode : function(node) { + var inst = this.instance, w = inst.getWin(), vp = inst.getViewPort(), pos = tinyMCE.getAbsPosition(node), cvp, p, cwin; + + // Only scroll if out of visible area + if (pos.absLeft < vp.left || pos.absLeft > vp.left + vp.width || pos.absTop < vp.top || pos.absTop > vp.top + (vp.height-25)) + w.scrollTo(pos.absLeft, pos.absTop - vp.height + 25); + + // Scroll container window + if (inst.settings.auto_resize) { + cwin = inst.getContainerWin(); + cvp = tinyMCE.getViewPort(cwin); + p = this.getAbsPosition(node); + + if (p.absLeft < cvp.left || p.absLeft > cvp.left + cvp.width || p.absTop < cvp.top || p.absTop > cvp.top + cvp.height) + cwin.scrollTo(p.absLeft, p.absTop - cvp.height + 25); + } + }, + + getAbsPosition : function(n) { + var pos = tinyMCE.getAbsPosition(n), ipos = tinyMCE.getAbsPosition(this.instance.iframeElement); + + return { + absLeft : ipos.absLeft + pos.absLeft, + absTop : ipos.absTop + pos.absTop + }; + }, + + getSel : function() { + var inst = this.instance; + + if (tinyMCE.isRealIE) + return inst.getDoc().selection; + + return inst.contentWindow.getSelection(); + }, + + getRng : function() { + var s = this.getSel(); + + if (s == null) + return null; + + if (tinyMCE.isRealIE) + return s.createRange(); + + if (tinyMCE.isSafari && !s.getRangeAt) + return '' + window.getSelection(); + + if (s.rangeCount > 0) + return s.getRangeAt(0); + + return null; + }, + + isCollapsed : function() { + var r = this.getRng(); + + if (r.item) + return false; + + return r.boundingWidth == 0 || this.getSel().isCollapsed; + }, + + collapse : function(b) { + var r = this.getRng(), s = this.getSel(); + + if (r.select) { + r.collapse(b); + r.select(); + } else { + if (b) + s.collapseToStart(); + else + s.collapseToEnd(); + } + }, + + getFocusElement : function() { + var inst = this.instance, doc, rng, sel, elm; + + if (tinyMCE.isRealIE) { + doc = inst.getDoc(); + rng = doc.selection.createRange(); + + // if (rng.collapse) + // rng.collapse(true); + + elm = rng.item ? rng.item(0) : rng.parentElement(); + } else { + if (!tinyMCE.isSafari && inst.isHidden()) + return inst.getBody(); + + sel = this.getSel(); + rng = this.getRng(); + + if (!sel || !rng) + return null; + + elm = rng.commonAncestorContainer; + //elm = (sel && sel.anchorNode) ? sel.anchorNode : null; + + // Handle selection a image or other control like element such as anchors + if (!rng.collapsed) { + // Is selection small + if (rng.startContainer == rng.endContainer) { + if (rng.startOffset - rng.endOffset < 2) { + if (rng.startContainer.hasChildNodes()) + elm = rng.startContainer.childNodes[rng.startOffset]; + } + } + } + + // Get the element parent of the node + elm = tinyMCE.getParentElement(elm); + + //if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") + // elm = tinyMCE.selectedElement; + } + + return elm; + } + + }; + +/* file:jscripts/tiny_mce/classes/TinyMCE_UndoRedo.class.js */ + +function TinyMCE_UndoRedo(inst) { + this.instance = inst; + this.undoLevels = []; + this.undoIndex = 0; + this.typingUndoIndex = -1; + this.undoRedo = true; +}; + +TinyMCE_UndoRedo.prototype = { + add : function(l) { + var b, customUndoLevels, newHTML, inst = this.instance, i, ul, ur; + + if (l) { + this.undoLevels[this.undoLevels.length] = l; + return true; + } + + if (this.typingUndoIndex != -1) { + this.undoIndex = this.typingUndoIndex; + + if (tinyMCE.typingUndoIndex != -1) + tinyMCE.undoIndex = tinyMCE.typingUndoIndex; + } + + newHTML = tinyMCE.trim(inst.getBody().innerHTML); + if (this.undoLevels[this.undoIndex] && newHTML != this.undoLevels[this.undoIndex].content) { + //tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex].content); + + // Is dirty again + inst.isNotDirty = false; + + tinyMCE.dispatchCallback(inst, 'onchange_callback', 'onChange', inst); + + // Time to compress + customUndoLevels = tinyMCE.settings.custom_undo_redo_levels; + if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) { + for (i=0; i 0) { + this.undoIndex--; + + tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content); + inst.repaint(); + + if (inst.settings.custom_undo_redo_restore_selection) + inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark); + } + }, + + redo : function() { + var inst = this.instance; + + tinyMCE.execCommand("mceEndTyping"); + + if (this.undoIndex < (this.undoLevels.length-1)) { + this.undoIndex++; + + tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content); + inst.repaint(); + + if (inst.settings.custom_undo_redo_restore_selection) + inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark); + } + + tinyMCE.triggerNodeChange(); + } + + }; + +/* file:jscripts/tiny_mce/classes/TinyMCE_ForceParagraphs.class.js */ + +var TinyMCE_ForceParagraphs = { + _insertPara : function(inst, e) { + var doc = inst.getDoc(), sel = inst.getSel(), body = inst.getBody(), win = inst.contentWindow, rng = sel.getRangeAt(0); + var rootElm = doc.documentElement, blockName = "P", startNode, endNode, startBlock, endBlock; + var rngBefore, rngAfter, direct, startNode, startOffset, endNode, endOffset, b = tinyMCE.isOpera ? inst.selection.getBookmark() : null; + var paraBefore, paraAfter, startChop, endChop, contents, i; + + function isEmpty(para) { + var nodes; + + function isEmptyHTML(html) { + return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == ''; + } + + // Check for images + if (para.getElementsByTagName("img").length > 0) + return false; + + // Check for tables + if (para.getElementsByTagName("table").length > 0) + return false; + + // Check for HRs + if (para.getElementsByTagName("hr").length > 0) + return false; + + // Check all textnodes + nodes = tinyMCE.getNodeTree(para, [], 3); + for (i=0; i <" + blockName + "> "; + paraAfter = body.childNodes[1]; + } + + inst.selection.moveToBookmark(b); + inst.selection.selectNode(paraAfter, true, true); + + return true; + } + + // Place first part within new paragraph + if (startChop.nodeName == blockName) + rngBefore.setStart(startChop, 0); + else + rngBefore.setStartBefore(startChop); + + rngBefore.setEnd(startNode, startOffset); + paraBefore.appendChild(rngBefore.cloneContents()); + + // Place secound part within new paragraph + rngAfter.setEndAfter(endChop); + rngAfter.setStart(endNode, endOffset); + contents = rngAfter.cloneContents(); + + if (contents.firstChild && contents.firstChild.nodeName == blockName) { + /* var nodes = contents.firstChild.childNodes; + for (i=0; i= r.startOffset && nv.charAt(r.startOffset - 1) == ' ') + s = true;*/ + + // Only remove BRs if we are at the end of line #bug 1464152 + if (nv != null && r.startOffset == nv.length) + sn.nextSibling.parentNode.removeChild(sn.nextSibling); + } + + if (inst.settings.auto_resize) + inst.resizeToContent(); + + return s; + } + + }; + +/* file:jscripts/tiny_mce/classes/TinyMCE_Layer.class.js */ + +function TinyMCE_Layer(id, bm) { + this.id = id; + this.blockerElement = null; + this.events = false; + this.element = null; + this.blockMode = typeof(bm) != 'undefined' ? bm : true; + this.doc = document; +}; + +TinyMCE_Layer.prototype = { + moveRelativeTo : function(re, p) { + var rep = this.getAbsPosition(re), e = this.getElement(), x, y; + var w = parseInt(re.offsetWidth), h = parseInt(re.offsetHeight); + var ew = parseInt(e.offsetWidth), eh = parseInt(e.offsetHeight); + + switch (p) { + case "tl": + x = rep.absLeft; + y = rep.absTop; + break; + + case "tr": + x = rep.absLeft + w; + y = rep.absTop; + break; + + case "bl": + x = rep.absLeft; + y = rep.absTop + h; + break; + + case "br": + x = rep.absLeft + w; + y = rep.absTop + h; + break; + + case "cc": + x = rep.absLeft + (w / 2) - (ew / 2); + y = rep.absTop + (h / 2) - (eh / 2); + break; + } + + this.moveTo(x, y); + }, + + moveBy : function(x, y) { + var e = this.getElement(); + this.moveTo(parseInt(e.style.left) + x, parseInt(e.style.top) + y); + }, + + moveTo : function(x, y) { + var e = this.getElement(); + + e.style.left = x + "px"; + e.style.top = y + "px"; + + this.updateBlocker(); + }, + + resizeBy : function(w, h) { + var e = this.getElement(); + this.resizeTo(parseInt(e.style.width) + w, parseInt(e.style.height) + h); + }, + + resizeTo : function(w, h) { + var e = this.getElement(); + + if (w != null) + e.style.width = w + "px"; + + if (h != null) + e.style.height = h + "px"; + + this.updateBlocker(); + }, + + show : function() { + var el = this.getElement(); + + if (el) { + el.style.display = 'block'; + this.updateBlocker(); + } + }, + + hide : function() { + var el = this.getElement(); + + if (el) { + el.style.display = 'none'; + this.updateBlocker(); + } + }, + + isVisible : function() { + return this.getElement().style.display == 'block'; + }, + + getElement : function() { + if (!this.element) + this.element = this.doc.getElementById(this.id); + + return this.element; + }, + + setBlockMode : function(s) { + this.blockMode = s; + }, + + updateBlocker : function() { + var e, b, x, y, w, h; + + b = this.getBlocker(); + if (b) { + if (this.blockMode) { + e = this.getElement(); + x = this.parseInt(e.style.left); + y = this.parseInt(e.style.top); + w = this.parseInt(e.offsetWidth); + h = this.parseInt(e.offsetHeight); + + b.style.left = x + 'px'; + b.style.top = y + 'px'; + b.style.width = w + 'px'; + b.style.height = h + 'px'; + b.style.display = e.style.display; + } else + b.style.display = 'none'; + } + }, + + getBlocker : function() { + var d, b; + + if (!this.blockerElement && this.blockMode) { + d = this.doc; + b = d.getElementById(this.id + "_blocker"); + + if (!b) { + b = d.createElement("iframe"); + + b.setAttribute('id', this.id + "_blocker"); + b.style.cssText = 'display: none; position: absolute; left: 0; top: 0'; + b.src = 'javascript:false;'; + b.frameBorder = '0'; + b.scrolling = 'no'; + + d.body.appendChild(b); + } + + this.blockerElement = b; + } + + return this.blockerElement; + }, + + getAbsPosition : function(n) { + var p = {absLeft : 0, absTop : 0}; + + while (n) { + p.absLeft += n.offsetLeft; + p.absTop += n.offsetTop; + n = n.offsetParent; + } + + return p; + }, + + create : function(n, c, p, h) { + var d = this.doc, e = d.createElement(n); + + e.setAttribute('id', this.id); + + if (c) + e.className = c; + + if (!p) + p = d.body; + + if (h) + e.innerHTML = h; + + p.appendChild(e); + + return this.element = e; + }, + + exists : function() { + return this.doc.getElementById(this.id) != null; + }, + + parseInt : function(s) { + if (s == null || s == '') + return 0; + + return parseInt(s); + }, + + remove : function() { + var e = this.getElement(), b = this.getBlocker(); + + if (e) + e.parentNode.removeChild(e); + + if (b) + b.parentNode.removeChild(b); + } + + }; + +/* file:jscripts/tiny_mce/classes/TinyMCE_Menu.class.js */ + +function TinyMCE_Menu() { + var id; + + if (typeof(tinyMCE.menuCounter) == "undefined") + tinyMCE.menuCounter = 0; + + id = "mc_menu_" + tinyMCE.menuCounter++; + + TinyMCE_Layer.call(this, id, true); + + this.id = id; + this.items = []; + this.needsUpdate = true; +}; + +TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype, { + init : function(s) { + var n; + + // Default params + this.settings = { + separator_class : 'mceMenuSeparator', + title_class : 'mceMenuTitle', + disabled_class : 'mceMenuDisabled', + menu_class : 'mceMenu', + drop_menu : true + }; + + for (n in s) + this.settings[n] = s[n]; + + this.create('div', this.settings.menu_class); + }, + + clear : function() { + this.items = []; + }, + + addTitle : function(t) { + this.add({type : 'title', text : t}); + }, + + addDisabled : function(t) { + this.add({type : 'disabled', text : t}); + }, + + addSeparator : function() { + this.add({type : 'separator'}); + }, + + addItem : function(t, js) { + this.add({text : t, js : js}); + }, + + add : function(mi) { + this.items[this.items.length] = mi; + this.needsUpdate = true; + }, + + update : function() { + var e = this.getElement(), h = '', i, t, m = this.items, s = this.settings; + + if (this.settings.drop_menu) + h += ''; + + h += ''; + + for (i=0; i'; + } + + h += '
'; + break; + + case 'title': + h += '
' + t + ''; + break; + + case 'disabled': + h += '
' + t + ''; + break; + + default: + h += '
' + t + ''; + } + + h += '
'; + + e.innerHTML = h; + + this.needsUpdate = false; + this.updateBlocker(); + }, + + show : function() { + var nl, i; + + if (tinyMCE.lastMenu == this) + return; + + if (this.needsUpdate) + this.update(); + + if (tinyMCE.lastMenu && tinyMCE.lastMenu != this) + tinyMCE.lastMenu.hide(); + + TinyMCE_Layer.prototype.show.call(this); + + if (!tinyMCE.isOpera) { + // Accessibility stuff +/* nl = this.getElement().getElementsByTagName("a"); + if (nl.length > 0) + nl[0].focus();*/ + } + + tinyMCE.lastMenu = this; + } + + }); + +/* file:jscripts/tiny_mce/classes/TinyMCE_Debug.class.js */ + +tinyMCE.add(TinyMCE_Engine, { + debug : function() { + var m = "", a, i, l = tinyMCE.log.length; + + for (i=0, a = this.debug.arguments; i'; - h += ''; - - return h; -} - -function pickColor(e, target_form_element) { - if ((e.keyCode == 32 || e.keyCode == 13) || e.type == "mousedown") - tinyMCEPopup.pickColor(e, target_form_element); -} - -function updateColor(img_id, form_element_id) { - document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value; -} - -function setBrowserDisabled(id, state) { - var img = document.getElementById(id); - var lnk = document.getElementById(id + "_link"); - - if (lnk) { - if (state) { - lnk.setAttribute("realhref", lnk.getAttribute("href")); - lnk.removeAttribute("href"); - tinyMCE.switchClass(img, 'mceButtonDisabled', true); - } else { - lnk.setAttribute("href", lnk.getAttribute("realhref")); - tinyMCE.switchClass(img, 'mceButtonNormal', false); - } - } -} - -function getBrowserHTML(id, target_form_element, type, prefix) { - var option = prefix + "_" + type + "_browser_callback"; - var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback")); - if (cb == null) - return ""; - - var html = ""; - - html += ''; - html += ''; - - return html; -} - -function openBrower(img_id, target_form_element, type, option) { - var img = document.getElementById(img_id); - - if (img.className != "mceButtonDisabled") - tinyMCEPopup.openBrowser(target_form_element, type, option); -} - -function selectByValue(form_obj, field_name, value, add_custom, ignore_case) { - if (!form_obj || !form_obj.elements[field_name]) - return; - - var sel = form_obj.elements[field_name]; - - var found = false; - for (var i=0; i'; + h += ''; + + return h; +} + +function pickColor(e, target_form_element) { + if ((e.keyCode == 32 || e.keyCode == 13) || e.type == "mousedown") + tinyMCEPopup.pickColor(e, target_form_element); +} + +function updateColor(img_id, form_element_id) { + document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value; +} + +function setBrowserDisabled(id, state) { + var img = document.getElementById(id); + var lnk = document.getElementById(id + "_link"); + + if (lnk) { + if (state) { + lnk.setAttribute("realhref", lnk.getAttribute("href")); + lnk.removeAttribute("href"); + tinyMCE.switchClass(img, 'mceButtonDisabled', true); + } else { + lnk.setAttribute("href", lnk.getAttribute("realhref")); + tinyMCE.switchClass(img, 'mceButtonNormal', false); + } + } +} + +function getBrowserHTML(id, target_form_element, type, prefix) { + var option = prefix + "_" + type + "_browser_callback"; + var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback")); + if (cb == null) + return ""; + + var html = ""; + + html += ''; + html += ''; + + return html; +} + +function openBrower(img_id, target_form_element, type, option) { + var img = document.getElementById(img_id); + + if (img.className != "mceButtonDisabled") + tinyMCEPopup.openBrowser(target_form_element, type, option); +} + +function selectByValue(form_obj, field_name, value, add_custom, ignore_case) { + if (!form_obj || !form_obj.elements[field_name]) + return; + + var sel = form_obj.elements[field_name]; + + var found = false; + for (var i=0; i x && mx < x + w && my > y && my < y + h)) { - MCLayer.visibleLayer = null; - - if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my)) - return true; - - l.hide(); - } - } - }, - - addCSSClass : function(e, c) { - this.removeCSSClass(e, c); - var a = this.explode(' ', e.className); - a[a.length] = c; - e.className = a.join(' '); - }, - - removeCSSClass : function(e, c) { - var a = this.explode(' ', e.className), i; - - for (i=0; i x && mx < x + w && my > y && my < y + h)) { + MCLayer.visibleLayer = null; + + if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my)) + return true; + + l.hide(); + } + } + }, + + addCSSClass : function(e, c) { + this.removeCSSClass(e, c); + var a = this.explode(' ', e.className); + a[a.length] = c; + e.className = a.join(' '); + }, + + removeCSSClass : function(e, c) { + var a = this.explode(' ', e.className), i; + + for (i=0; i parseInt(v)) - st = this.mark(f, n); - } - } - - return st; - }, - - hasClass : function(n, c, d) { - return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className); - }, - - getNum : function(n, c) { - c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0]; - c = c.replace(/[^0-9]/g, ''); - - return c; - }, - - addClass : function(n, c, b) { - var o = this.removeClass(n, c); - n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c; - }, - - removeClass : function(n, c) { - c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' '); - return n.className = c != ' ' ? c : ''; - }, - - tags : function(f, s) { - return f.getElementsByTagName(s); - }, - - mark : function(f, n) { - var s = this.settings; - - this.addClass(n, s.invalid_cls); - this.markLabels(f, n, s.invalid_cls); - - return false; - }, - - markLabels : function(f, n, ic) { - var nl, i; - - nl = this.tags(f, "label"); - for (i=0; i parseInt(v)) + st = this.mark(f, n); + } + } + + return st; + }, + + hasClass : function(n, c, d) { + return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className); + }, + + getNum : function(n, c) { + c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0]; + c = c.replace(/[^0-9]/g, ''); + + return c; + }, + + addClass : function(n, c, b) { + var o = this.removeClass(n, c); + n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c; + }, + + removeClass : function(n, c) { + c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' '); + return n.className = c != ' ' ? c : ''; + }, + + tags : function(f, s) { + return f.getElementsByTagName(s); + }, + + mark : function(f, n) { + var s = this.settings; + + this.addClass(n, s.invalid_cls); + this.markLabels(f, n, s.invalid_cls); + + return false; + }, + + markLabels : function(f, n, ic) { + var nl, i; + + nl = this.tags(f, "label"); + for (i=0; i'."\n". + echo (''."\n". ''."\n". - ''."\n"); -======= echo '', "\n"; ->>>>>>> origin/master } else if ($extension == 'css') { From 8f3dee5d207146b3523a1fc07a6a8c1370790af0 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Thu, 12 Jan 2017 20:09:57 -0300 Subject: [PATCH 055/178] Depend on the php docker image crafted for OpenCATS + Symfony --- docker/docker-compose-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/docker-compose-test.yml b/docker/docker-compose-test.yml index 521fb512b..bb064e723 100644 --- a/docker/docker-compose-test.yml +++ b/docker/docker-compose-test.yml @@ -14,7 +14,7 @@ services: php: container_name: opencats_test_php - image: opencats/php:5.6.27-fpm-alpine + image: opencats/php:5.6.27-fpm-alpine-symfony volumes_from: - opencatsdata From a604705cc4d792443f55748da3803701c14a095c Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Fri, 13 Jan 2017 00:11:42 -0300 Subject: [PATCH 056/178] Handle legacy ajax.php indecently from other requested php files --- .../AppBundle/Controller/LegacyController.php | 268 +++++++++--------- 1 file changed, 133 insertions(+), 135 deletions(-) diff --git a/code/src/AppBundle/Controller/LegacyController.php b/code/src/AppBundle/Controller/LegacyController.php index 7dea116a9..76d0e0faf 100644 --- a/code/src/AppBundle/Controller/LegacyController.php +++ b/code/src/AppBundle/Controller/LegacyController.php @@ -17,6 +17,139 @@ public function proxyIndexAction() return $this->proxyAction('index'); } + /** + * @Route("/ajax.php", name="_proxyAjax") + */ + public function proxyActionAjax() + { + /* + * CATS + * AJAX Delegation Module + * + * CATS Version: 0.9.3 Inferno + * + * Copyright (C) 2005 - 2007 Cognizo Technologies, Inc. + * + * + * The contents of this file are subject to the CATS Public License + * Version 1.1a (the "License"); you may not use this file except in + * compliance with the License. You may obtain a copy of the License at + * http://www.catsone.com/. + * + * Software distributed under the License is distributed on an "AS IS" + * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + * License for the specific language governing rights and limitations + * under the License. + * + * The Original Code is "CATS Standard Edition". + * + * The Initial Developer of the Original Code is Cognizo Technologies, Inc. + * Portions created by the Initial Developer are Copyright (C) 2005 - 2007 + * (or from the year in which this file was created to the year 2007) by + * Cognizo Technologies, Inc. All Rights Reserved. + * + * + * A properly formatted POST string will look like this: + * + * f=myFunction&arg=myArgument&... + * + * + * $Id: ajax.php 3431 2007-11-06 21:10:12Z will $ + */ + + ob_start(); + define('LEGACY_ROOT', dirname(dirname($this->get('kernel')->getRootDir()))); + include_once(LEGACY_ROOT . '/config.php'); + include_once(LEGACY_ROOT . '/constants.php'); + include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); + include_once(LEGACY_ROOT . '/lib/Session.php'); /* Depends: MRU, Users, DatabaseConnection. */ + include_once(LEGACY_ROOT . '/lib/AJAXInterface.php'); + include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); + + header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); + /* Make sure we aren't getting screwed over by magic quotes. */ + if (get_magic_quotes_runtime()) + { + set_magic_quotes_runtime(0); + } + if (get_magic_quotes_gpc()) + { + $_GET = array_map('stripslashes', $_GET); + $_POST = array_map('stripslashes', $_POST); + $_REQUEST = array_map('stripslashes', $_REQUEST); + } + if (!isset($_REQUEST['f']) || empty($_REQUEST['f'])) + { + echo '', "\n"; + echo( + "\n" . + " -1\n" . + " No function specified.\n" . + "\n" + ); + } + + if (strpos($_REQUEST['f'], ':') === false) + { + $function = preg_replace("/[^A-Za-z0-9]/", "", $_REQUEST['f']); + + $filename = sprintf(LEGACY_ROOT . '/ajax/%s.php', $function); + } + else + { + /* Split function parameter into module name and function name. */ + $parameters = explode(':', $_REQUEST['f']); + + $module = preg_replace("/[^A-Za-z0-9]/", "", $parameters[0]); + $function = preg_replace("/[^A-Za-z0-9]/", "", $parameters[1]); + + $filename = sprintf(LEGACY_ROOT . '/modules/%s/ajax/%s.php', $module, $function); + } + + if (!is_readable($filename)) + { + echo '', "\n"; + echo( + "\n" . + " -1\n" . + " Invalid function name.\n" . + "\n" + ); + } + + $filters = array(); + + if (!isset($_REQUEST['nobuffer'])) + { + include_once(LEGACY_ROOT . '/lib/Hooks.php'); + + ob_start(); + include($filename); + $output = ob_get_clean(); + + if (!eval(\Hooks::get('AJAX_HOOK'))) return; + + if (!isset($_REQUEST['nospacefilter'])) + { + $output = preg_replace('/^\s+/m', '', $output); + } + + foreach ($filters as $filter) + { + eval($filter); + } + + echo($output); + } + else + { + include($filename); + } + $output = ob_get_clean(); + return new Response($output, 200, array('Content-type' => 'text/xml;charset=UTF-8')); + } + /** * @Route("/{fileName}.php", name="_proxy", requirements={"fileName":"\w+"}) */ @@ -298,141 +431,6 @@ function stripslashes_deep($value) $errorHandler->reportErrors(); } } - else if ($fileName == 'ajax') - { - /* - * CATS - * AJAX Delegation Module - * - * CATS Version: 0.9.3 Inferno - * - * Copyright (C) 2005 - 2007 Cognizo Technologies, Inc. - * - * - * The contents of this file are subject to the CATS Public License - * Version 1.1a (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.catsone.com/. - * - * Software distributed under the License is distributed on an "AS IS" - * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the - * License for the specific language governing rights and limitations - * under the License. - * - * The Original Code is "CATS Standard Edition". - * - * The Initial Developer of the Original Code is Cognizo Technologies, Inc. - * Portions created by the Initial Developer are Copyright (C) 2005 - 2007 - * (or from the year in which this file was created to the year 2007) by - * Cognizo Technologies, Inc. All Rights Reserved. - * - * - * A properly formatted POST string will look like this: - * - * f=myFunction&arg=myArgument&... - * - * - * $Id: ajax.php 3431 2007-11-06 21:10:12Z will $ - */ - - - include_once(LEGACY_ROOT . '/config.php'); - include_once(LEGACY_ROOT . '/constants.php'); - include_once(LEGACY_ROOT . '/lib/DatabaseConnection.php'); - include_once(LEGACY_ROOT . '/lib/Session.php'); /* Depends: MRU, Users, DatabaseConnection. */ - include_once(LEGACY_ROOT . '/lib/AJAXInterface.php'); - include_once(LEGACY_ROOT . '/lib/CATSUtility.php'); - - - header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); - header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); - - /* Make sure we aren't getting screwed over by magic quotes. */ - if (get_magic_quotes_runtime()) - { - set_magic_quotes_runtime(0); - } - if (get_magic_quotes_gpc()) - { - $_GET = array_map('stripslashes', $_GET); - $_POST = array_map('stripslashes', $_POST); - $_REQUEST = array_map('stripslashes', $_REQUEST); - } - if (!isset($_REQUEST['f']) || empty($_REQUEST['f'])) - { - header('Content-type: text/xml'); - echo '', "\n"; - echo( - "\n" . - " -1\n" . - " No function specified.\n" . - "\n" - ); - - die(); - } - - if (strpos($_REQUEST['f'], ':') === false) - { - $function = preg_replace("/[^A-Za-z0-9]/", "", $_REQUEST['f']); - - $filename = sprintf(LEGACY_ROOT . '/ajax/%s.php', $function); - } - else - { - /* Split function parameter into module name and function name. */ - $parameters = explode(':', $_REQUEST['f']); - - $module = preg_replace("/[^A-Za-z0-9]/", "", $parameters[0]); - $function = preg_replace("/[^A-Za-z0-9]/", "", $parameters[1]); - - $filename = sprintf(LEGACY_ROOT . '/modules/%s/ajax/%s.php', $module, $function); - } - - if (!is_readable($filename)) - { - header('Content-type: text/xml'); - echo '', "\n"; - echo( - "\n" . - " -1\n" . - " Invalid function name.\n" . - "\n" - ); - - die(); - } - - $filters = array(); - - if (!isset($_REQUEST['nobuffer'])) - { - include_once(LEGACY_ROOT . '/lib/Hooks.php'); - - ob_start(); - include($filename); - $output = ob_get_clean(); - - if (!eval(\Hooks::get('AJAX_HOOK'))) return; - - if (!isset($_REQUEST['nospacefilter'])) - { - $output = preg_replace('/^\s+/m', '', $output); - } - - foreach ($filters as $filter) - { - eval($filter); - } - - echo($output); - } - else - { - include($filename); - } - - } return new Response(ob_get_clean()); } From f2f0610f687ebdde9ee7547c7538568ce642cc13 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Fri, 13 Jan 2017 00:12:39 -0300 Subject: [PATCH 057/178] Refactor getCompanyNames.php so it does not call die (bad practice that kills the execution flow) --- ajax/getCompanyNames.php | 51 ++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/ajax/getCompanyNames.php b/ajax/getCompanyNames.php index 83c3a1eeb..2060240dc 100755 --- a/ajax/getCompanyNames.php +++ b/ajax/getCompanyNames.php @@ -56,36 +56,35 @@ if (empty($companiesArray)) { $interface->outputXMLErrorPage(-2, 'No companies data.'); - die(); -} - -$output = - "\n" . - " 0\n" . - " \n" . - " " . count($companiesArray) . "\n"; - -$arrayCounter = 0; -foreach ($companiesArray as $rowIndex => $row) +} else { - $arrayCounter++; - - if ($arrayCounter > $maxResults) + $output = + "\n" . + " 0\n" . + " \n" . + " " . count($companiesArray) . "\n"; + + $arrayCounter = 0; + foreach ($companiesArray as $rowIndex => $row) { - break; + $arrayCounter++; + + if ($arrayCounter > $maxResults) + { + break; + } + + $output .= + " \n" . + " " . $companiesArray[$rowIndex]['companyID'] . "\n" . + " " . rawurlencode($companiesArray[$rowIndex]['name']) . "\n" . + " \n"; } $output .= - " \n" . - " " . $companiesArray[$rowIndex]['companyID'] . "\n" . - " " . rawurlencode($companiesArray[$rowIndex]['name']) . "\n" . - " \n"; -} - -$output .= - "\n"; - -/* Send back the XML data. */ -$interface->outputXMLPage($output); + "\n"; + /* Send back the XML data. */ + $interface->outputXMLPage($output); +} ?> From d21d4d55b4ab750cb798774ee42c7db0ae1ef381 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Fri, 13 Jan 2017 00:13:20 -0300 Subject: [PATCH 058/178] Remove duplicated call to add iframe for popups. --- modules/joborders/JobOrders.tpl | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/joborders/JobOrders.tpl b/modules/joborders/JobOrders.tpl index 86db8713d..5a22bd41b 100755 --- a/modules/joborders/JobOrders.tpl +++ b/modules/joborders/JobOrders.tpl @@ -18,8 +18,6 @@

Job Orders: Home

- -
From 0e16ccc2836dc2e85af3f89fb6eedbeb1d5ed593 Mon Sep 17 00:00:00 2001 From: Matias Lespiau Date: Mon, 16 Jan 2017 00:21:28 -0300 Subject: [PATCH 059/178] Move acceptance tests to AppBundle --- code/codeception.yml | 4 +- .../tests/_support/AcceptanceTester.php | 47 +- .../tests/_support/Helper/Acceptance.php | 26 + .../AppBundle}/tests/acceptance.suite.yml | 4 +- .../tests/acceptance/_bootstrap.php | 2 +- .../tests/acceptance/activities.feature | 0 .../acceptance/candidate-filters.feature | 0 .../acceptance/customize-extra-fields.feature | 0 .../tests/acceptance/job-orders.feature | 16 +- code/tests/_support/Helper/Acceptance.php | 10 - .../_generated/AcceptanceTesterActions.php | 2728 ----------------- 11 files changed, 75 insertions(+), 2762 deletions(-) rename code/{ => src/AppBundle}/tests/_support/AcceptanceTester.php (82%) create mode 100644 code/src/AppBundle/tests/_support/Helper/Acceptance.php rename code/{ => src/AppBundle}/tests/acceptance.suite.yml (70%) rename code/{ => src/AppBundle}/tests/acceptance/_bootstrap.php (89%) rename code/{ => src/AppBundle}/tests/acceptance/activities.feature (100%) rename code/{ => src/AppBundle}/tests/acceptance/candidate-filters.feature (100%) rename code/{ => src/AppBundle}/tests/acceptance/customize-extra-fields.feature (100%) rename code/{ => src/AppBundle}/tests/acceptance/job-orders.feature (97%) delete mode 100644 code/tests/_support/Helper/Acceptance.php delete mode 100644 code/tests/_support/_generated/AcceptanceTesterActions.php diff --git a/code/codeception.yml b/code/codeception.yml index 32b2a6299..ab92883a3 100644 --- a/code/codeception.yml +++ b/code/codeception.yml @@ -1,6 +1,4 @@ actor: Tester -include: - - src/*Bundle paths: tests: tests log: tests/_output @@ -21,3 +19,5 @@ modules: user: '' password: '' dump: tests/_data/dump.sql +include: + - src/AppBundle diff --git a/code/tests/_support/AcceptanceTester.php b/code/src/AppBundle/tests/_support/AcceptanceTester.php similarity index 82% rename from code/tests/_support/AcceptanceTester.php rename to code/src/AppBundle/tests/_support/AcceptanceTester.php index 7bb04065c..ee4de8065 100644 --- a/code/tests/_support/AcceptanceTester.php +++ b/code/src/AppBundle/tests/_support/AcceptanceTester.php @@ -1,5 +1,6 @@ switchToIFrame(); } else { + echo "2"; $this->switchToIFrame($iFrameId); } } + /** + * @Given I switch to the window :iFrameId + */ + public function iSwitchToTheWindow($windowId) + { + if (empty($windowId)) { + $this->switchToWindow(); + } else { + $this->switchToWindow($windowId); + } + } + /** * @Given fill in :field with :value */ @@ -143,7 +158,15 @@ public function thenFillInWith($field, $value) */ public function press($button) { - $this->click($button); + // FIXME: HACK to simulate Create Job Order button + if ('Create Job Order' == $button) { + codecept_debug('calling acceptance code'); + $this->pressButtonInIframe($button, 'popupFrameIFrame'); + #$this->waitForJS('document.querySelectorAll(\'iframe[name="popupFrameIFrame"]\')[0].contentDocument.querySelectorAll(\'input[value="Create Job Order"]\').length > 0;', 10); + #$this->executeJS('document.querySelectorAll(\'iframe[name="popupFrameIFrame"]\')[0].contentDocument.querySelectorAll(\'input[value="Create Job Order"]\')[0].onclick()'); + } else { + $this->click($button); + } } /** @@ -196,13 +219,13 @@ public function thereIsACompanyCalled($companyName) $siteId, $companyName ); - $CompanyRepository = new CompanyRepository(DatabaseConnection::getInstance()); + $CompanyRepository = new CompanyRepository(\DatabaseConnection::getInstance()); $CompanyRepository->persist($company, new DummyHistory($siteId)); } private function getSiteId() { - $site = new Site(-1); + $site = new \Site(-1); return $site->getFirstSiteID(); } @@ -213,7 +236,7 @@ public function thereIsAUserNamedWithPassword($userName, $fullName, $password) { list($firstName, $lastName) = explode(" ", $fullName); $siteId = $this->getSiteId(); - $users = new Users($siteId); + $users = new \Users($siteId); $users->add( $lastName, $firstName, @@ -240,6 +263,14 @@ public function iConfirmThePopup() $this->acceptPopup(); } + /** + * @Then I cancel the popup + */ + public function iCancelThePopup() + { + $this->cancelPopup(); + } + /** * @Given I wait for :element */ @@ -262,7 +293,7 @@ public function iClickOnTheElement($element) public function thereIsAJobOrderForAFor($jobTitle, $companyName) { $siteId = $this->getSiteId(); - $CompanyRepository = new CompanyRepository(DatabaseConnection::getInstance()); + $CompanyRepository = new CompanyRepository(\DatabaseConnection::getInstance()); $companies = $CompanyRepository->findByName($siteId, $companyName); $companyId = $companies[0]['companyID']; $jobOrder = JobOrder::create( @@ -289,7 +320,7 @@ public function thereIsAJobOrderForAFor($jobTitle, $companyName) '', '' ); - $JobOrderRepository = new JobOrderRepository(DatabaseConnection::getInstance()); + $JobOrderRepository = new JobOrderRepository(\DatabaseConnection::getInstance()); $JobOrderRepository->persist($jobOrder, new DummyHistory($siteId)); } @@ -307,7 +338,7 @@ public function thereIsAJobOrderForAFor($jobTitle, $companyName) public function iClickOnOnTheRowContaining($linkName, $rowText) { /** @var $row \Behat\Mink\Element\NodeElement */ - $row = $this->getModule('WebDriver')->_findElements(sprintf('table tr:contains("%s")', $rowText)); + $row = $this->_findElements(sprintf('table tr:contains("%s")', $rowText)); if (!$row) { throw new \Exception(sprintf('Cannot find any row on the page containing the text "%s"', $rowText)); } diff --git a/code/src/AppBundle/tests/_support/Helper/Acceptance.php b/code/src/AppBundle/tests/_support/Helper/Acceptance.php new file mode 100644 index 000000000..17c28fb1b --- /dev/null +++ b/code/src/AppBundle/tests/_support/Helper/Acceptance.php @@ -0,0 +1,26 @@ +getModule('WebDriver')->switchToIFrame($iFrame); + $buttonSelector = 'input[value="' . $buttonText . '"]'; + $this->getModule('WebDriver')->waitForElementVisible($buttonSelector, 10); + $buttonElement = $this->getModule('WebDriver')->_findElements($buttonSelector); + $onClickCode = trim($buttonElement[0]->getAttribute('onclick')); + $start = strlen('parentGoToURL('); + $urlStringToEvaluate = substr($onClickCode, $start, strlen($onClickCode) - $start - 2); + $result = $this->getModule('WebDriver')->executeJs('return ' . $urlStringToEvaluate); + $this->getModule('WebDriver')->switchToWindow(); + $this->getModule('WebDriver')->amOnPage('/' . $result); + } +} diff --git a/code/tests/acceptance.suite.yml b/code/src/AppBundle/tests/acceptance.suite.yml similarity index 70% rename from code/tests/acceptance.suite.yml rename to code/src/AppBundle/tests/acceptance.suite.yml index c2292bb18..b69d01aa2 100644 --- a/code/tests/acceptance.suite.yml +++ b/code/src/AppBundle/tests/acceptance.suite.yml @@ -4,5 +4,5 @@ modules: - WebDriver: url: 'http://opencats/' # put your local url host: selenium - browser: chrome - - \Helper\Acceptance \ No newline at end of file + browser: firefox + - AppBundle\Helper\Acceptance \ No newline at end of file diff --git a/code/tests/acceptance/_bootstrap.php b/code/src/AppBundle/tests/acceptance/_bootstrap.php similarity index 89% rename from code/tests/acceptance/_bootstrap.php rename to code/src/AppBundle/tests/acceptance/_bootstrap.php index 5c2fc7b96..e9993bb51 100644 --- a/code/tests/acceptance/_bootstrap.php +++ b/code/src/AppBundle/tests/acceptance/_bootstrap.php @@ -1,7 +1,7 @@ getScenario()->runStep(new \Codeception\Step\Action('debugWebDriverLogs', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Changes the subdomain for the 'url' configuration parameter. - * Does not open a page; use `amOnPage` for that. - * - * ``` php - * amOnSubdomain('user'); - * $I->amOnPage('/'); - * // moves to http://user.mysite.com/ - * ?> - * ``` - * - * @param $subdomain - * - * @return mixed - * @see \Codeception\Module\WebDriver::amOnSubdomain() - */ - public function amOnSubdomain($subdomain) { - return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnSubdomain', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Takes a screenshot of the current window and saves it to `tests/_output/debug`. - * - * ``` php - * amOnPage('/user/edit'); - * $I->makeScreenshot('edit_page'); - * // saved to: tests/_output/debug/edit_page.png - * ?> - * ``` - * - * @param $name - * @see \Codeception\Module\WebDriver::makeScreenshot() - */ - public function makeScreenshot($name) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('makeScreenshot', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Resize the current window. - * - * ``` php - * resizeWindow(800, 600); - * - * ``` - * - * @param int $width - * @param int $height - * @see \Codeception\Module\WebDriver::resizeWindow() - */ - public function resizeWindow($width, $height) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('resizeWindow', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that a cookie with the given name is set. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * ``` php - * seeCookie('PHPSESSID'); - * ?> - * ``` - * - * @param $cookie - * @param array $params - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeCookie() - */ - public function canSeeCookie($cookie, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCookie', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that a cookie with the given name is set. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * ``` php - * seeCookie('PHPSESSID'); - * ?> - * ``` - * - * @param $cookie - * @param array $params - * @return mixed - * @see \Codeception\Module\WebDriver::seeCookie() - */ - public function seeCookie($cookie, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there isn't a cookie with the given name. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeCookie() - */ - public function cantSeeCookie($cookie, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCookie', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there isn't a cookie with the given name. - * You can set additional cookie params like `domain`, `path` as array passed in last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * @see \Codeception\Module\WebDriver::dontSeeCookie() - */ - public function dontSeeCookie($cookie, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Sets a cookie with the given name and value. - * You can set additional cookie params like `domain`, `path`, `expires`, `secure` in array passed as last argument. - * - * ``` php - * setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3'); - * ?> - * ``` - * - * @param $name - * @param $val - * @param array $params - * - * @return mixed - * @see \Codeception\Module\WebDriver::setCookie() - */ - public function setCookie($cookie, $value, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('setCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Unsets cookie with the given name. - * You can set additional cookie params like `domain`, `path` in array passed as last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * @see \Codeception\Module\WebDriver::resetCookie() - */ - public function resetCookie($cookie, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('resetCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Grabs a cookie value. - * You can set additional cookie params like `domain`, `path` in array passed as last argument. - * - * @param $cookie - * - * @param array $params - * @return mixed - * @see \Codeception\Module\WebDriver::grabCookie() - */ - public function grabCookie($cookie, $params = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('grabCookie', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Open web page at the given absolute URL and sets its hostname as the base host. - * - * ``` php - * amOnUrl('http://codeception.com'); - * $I->amOnPage('/quickstart'); // moves to http://codeception.com/quickstart - * ?> - * ``` - * @see \Codeception\Module\WebDriver::amOnUrl() - */ - public function amOnUrl($url) { - return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Opens the page for the given relative URI. - * - * ``` php - * amOnPage('/'); - * // opens /register page - * $I->amOnPage('/register'); - * ``` - * - * @param $page - * @see \Codeception\Module\WebDriver::amOnPage() - */ - public function amOnPage($page) { - return $this->getScenario()->runStep(new \Codeception\Step\Condition('amOnPage', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page contains the given string (case insensitive). - * - * You can specify a specific HTML element (via CSS or XPath) as the second - * parameter to only search within that element. - * - * ``` php - * see('Logout'); // I can suppose user is logged in - * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page - * $I->see('Sign Up', '//body/h1'); // with XPath - * $I->see('Sign Up', ['css' => 'body h1']); // with strict CSS locator - * ``` - * - * Note that the search is done after stripping all HTML tags from the body, - * so `$I->see('strong')` will return true for strings like: - * - * - `

I am Stronger than thou

` - * - `` - * - * But will *not* be true for strings like: - * - * - `Home` - * - `
Home` - * - `` - * - * For checking the raw source code, use `seeInSource()`. - * - * @param $text - * @param null $selector - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::see() - */ - public function canSee($text, $selector = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('see', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page contains the given string (case insensitive). - * - * You can specify a specific HTML element (via CSS or XPath) as the second - * parameter to only search within that element. - * - * ``` php - * see('Logout'); // I can suppose user is logged in - * $I->see('Sign Up', 'h1'); // I can suppose it's a signup page - * $I->see('Sign Up', '//body/h1'); // with XPath - * $I->see('Sign Up', ['css' => 'body h1']); // with strict CSS locator - * ``` - * - * Note that the search is done after stripping all HTML tags from the body, - * so `$I->see('strong')` will return true for strings like: - * - * - `

I am Stronger than thou

` - * - `` - * - * But will *not* be true for strings like: - * - * - `Home` - * - `
Home` - * - `` - * - * For checking the raw source code, use `seeInSource()`. - * - * @param $text - * @param null $selector - * @see \Codeception\Module\WebDriver::see() - */ - public function see($text, $selector = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('see', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page doesn't contain the text specified (case insensitive). - * Give a locator as the second parameter to match a specific region. - * - * ```php - * dontSee('Login'); // I can suppose user is already logged in - * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page - * $I->dontSee('Sign Up','//body/h1'); // with XPath - * $I->dontSee('Sign Up', ['css' => 'body h1']); // with strict CSS locator - * ``` - * - * Note that the search is done after stripping all HTML tags from the body, - * so `$I->dontSee('strong')` will fail on strings like: - * - * - `

I am Stronger than thou

` - * - `` - * - * But will ignore strings like: - * - * - `Home` - * - `
Home` - * - `` - * - * For checking the raw source code, use `seeInSource()`. - * - * @param $text - * @param null $selector - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSee() - */ - public function cantSee($text, $selector = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSee', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page doesn't contain the text specified (case insensitive). - * Give a locator as the second parameter to match a specific region. - * - * ```php - * dontSee('Login'); // I can suppose user is already logged in - * $I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page - * $I->dontSee('Sign Up','//body/h1'); // with XPath - * $I->dontSee('Sign Up', ['css' => 'body h1']); // with strict CSS locator - * ``` - * - * Note that the search is done after stripping all HTML tags from the body, - * so `$I->dontSee('strong')` will fail on strings like: - * - * - `

I am Stronger than thou

` - * - `` - * - * But will ignore strings like: - * - * - `Home` - * - `
Home` - * - `` - * - * For checking the raw source code, use `seeInSource()`. - * - * @param $text - * @param null $selector - * @see \Codeception\Module\WebDriver::dontSee() - */ - public function dontSee($text, $selector = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSee', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page contains the given string in its - * raw source code. - * - * ``` php - * seeInSource('

Green eggs & ham

'); - * ``` - * - * @param $raw - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeInSource() - */ - public function canSeeInSource($raw) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInSource', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page contains the given string in its - * raw source code. - * - * ``` php - * seeInSource('

Green eggs & ham

'); - * ``` - * - * @param $raw - * @see \Codeception\Module\WebDriver::seeInSource() - */ - public function seeInSource($raw) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInSource', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page contains the given string in its - * raw source code. - * - * ```php - * dontSeeInSource('

Green eggs & ham

'); - * ``` - * - * @param $raw - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeInSource() - */ - public function cantSeeInSource($raw) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInSource', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current page contains the given string in its - * raw source code. - * - * ```php - * dontSeeInSource('

Green eggs & ham

'); - * ``` - * - * @param $raw - * @see \Codeception\Module\WebDriver::dontSeeInSource() - */ - public function dontSeeInSource($raw) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInSource', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page source contains the given string. - * - * ```php - * seeInPageSource('getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInPageSource', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page source contains the given string. - * - * ```php - * seeInPageSource('getScenario()->runStep(new \Codeception\Step\Assertion('seeInPageSource', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page source doesn't contain the given string. - * - * @param $text - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeInPageSource() - */ - public function cantSeeInPageSource($text) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInPageSource', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page source doesn't contain the given string. - * - * @param $text - * @see \Codeception\Module\WebDriver::dontSeeInPageSource() - */ - public function dontSeeInPageSource($text) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInPageSource', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Perform a click on a link or a button, given by a locator. - * If a fuzzy locator is given, the page will be searched for a button, link, or image matching the locator string. - * For buttons, the "value" attribute, "name" attribute, and inner text are searched. - * For links, the link text is searched. - * For images, the "alt" attribute and inner text of any parent links are searched. - * - * The second parameter is a context (CSS or XPath locator) to narrow the search. - * - * Note that if the locator matches a button of type `submit`, the form will be submitted. - * - * ``` php - * click('Logout'); - * // button of form - * $I->click('Submit'); - * // CSS button - * $I->click('#form input[type=submit]'); - * // XPath - * $I->click('//form/*[@type=submit]'); - * // link in context - * $I->click('Logout', '#nav'); - * // using strict locator - * $I->click(['link' => 'Login']); - * ?> - * ``` - * - * @param $link - * @param $context - * @see \Codeception\Module\WebDriver::click() - */ - public function click($link, $context = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('click', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there's a link with the specified text. - * Give a full URL as the second parameter to match links with that exact URL. - * - * ``` php - * seeLink('Logout'); // matches Logout - * $I->seeLink('Logout','/logout'); // matches Logout - * ?> - * ``` - * - * @param $text - * @param null $url - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeLink() - */ - public function canSeeLink($text, $url = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeLink', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there's a link with the specified text. - * Give a full URL as the second parameter to match links with that exact URL. - * - * ``` php - * seeLink('Logout'); // matches Logout - * $I->seeLink('Logout','/logout'); // matches Logout - * ?> - * ``` - * - * @param $text - * @param null $url - * @see \Codeception\Module\WebDriver::seeLink() - */ - public function seeLink($text, $url = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeLink', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page doesn't contain a link with the given string. - * If the second parameter is given, only links with a matching "href" attribute will be checked. - * - * ``` php - * dontSeeLink('Logout'); // I suppose user is not logged in - * $I->dontSeeLink('Checkout now', '/store/cart.php'); - * ?> - * ``` - * - * @param $text - * @param null $url - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeLink() - */ - public function cantSeeLink($text, $url = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeLink', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page doesn't contain a link with the given string. - * If the second parameter is given, only links with a matching "href" attribute will be checked. - * - * ``` php - * dontSeeLink('Logout'); // I suppose user is not logged in - * $I->dontSeeLink('Checkout now', '/store/cart.php'); - * ?> - * ``` - * - * @param $text - * @param null $url - * @see \Codeception\Module\WebDriver::dontSeeLink() - */ - public function dontSeeLink($text, $url = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeLink', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current URI contains the given string. - * - * ``` php - * seeInCurrentUrl('home'); - * // to match: /users/1 - * $I->seeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeInCurrentUrl() - */ - public function canSeeInCurrentUrl($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInCurrentUrl', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current URI contains the given string. - * - * ``` php - * seeInCurrentUrl('home'); - * // to match: /users/1 - * $I->seeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Module\WebDriver::seeInCurrentUrl() - */ - public function seeInCurrentUrl($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInCurrentUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL is equal to the given string. - * Unlike `seeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * seeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeCurrentUrlEquals() - */ - public function canSeeCurrentUrlEquals($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlEquals', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL is equal to the given string. - * Unlike `seeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * seeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Module\WebDriver::seeCurrentUrlEquals() - */ - public function seeCurrentUrlEquals($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlEquals', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL matches the given regular expression. - * - * ``` php - * seeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeCurrentUrlMatches() - */ - public function canSeeCurrentUrlMatches($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCurrentUrlMatches', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL matches the given regular expression. - * - * ``` php - * seeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Module\WebDriver::seeCurrentUrlMatches() - */ - public function seeCurrentUrlMatches($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCurrentUrlMatches', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URI doesn't contain the given string. - * - * ``` php - * dontSeeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeInCurrentUrl() - */ - public function cantSeeInCurrentUrl($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInCurrentUrl', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URI doesn't contain the given string. - * - * ``` php - * dontSeeInCurrentUrl('/users/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Module\WebDriver::dontSeeInCurrentUrl() - */ - public function dontSeeInCurrentUrl($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInCurrentUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL doesn't equal the given string. - * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * dontSeeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlEquals() - */ - public function cantSeeCurrentUrlEquals($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlEquals', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the current URL doesn't equal the given string. - * Unlike `dontSeeInCurrentUrl`, this only matches the full URL. - * - * ``` php - * dontSeeCurrentUrlEquals('/'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlEquals() - */ - public function dontSeeCurrentUrlEquals($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlEquals', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current url doesn't match the given regular expression. - * - * ``` php - * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlMatches() - */ - public function cantSeeCurrentUrlMatches($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCurrentUrlMatches', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that current url doesn't match the given regular expression. - * - * ``` php - * dontSeeCurrentUrlMatches('~$/users/(\d+)~'); - * ?> - * ``` - * - * @param $uri - * @see \Codeception\Module\WebDriver::dontSeeCurrentUrlMatches() - */ - public function dontSeeCurrentUrlMatches($uri) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCurrentUrlMatches', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Executes the given regular expression against the current URI and returns the first match. - * If no parameters are provided, the full URI is returned. - * - * ``` php - * grabFromCurrentUrl('~$/user/(\d+)/~'); - * $uri = $I->grabFromCurrentUrl(); - * ?> - * ``` - * - * @param null $uri - * - * @return mixed - * @see \Codeception\Module\WebDriver::grabFromCurrentUrl() - */ - public function grabFromCurrentUrl($uri = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('grabFromCurrentUrl', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the specified checkbox is checked. - * - * ``` php - * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. - * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); - * ?> - * ``` - * - * @param $checkbox - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeCheckboxIsChecked() - */ - public function canSeeCheckboxIsChecked($checkbox) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeCheckboxIsChecked', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the specified checkbox is checked. - * - * ``` php - * seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form. - * $I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]'); - * ?> - * ``` - * - * @param $checkbox - * @see \Codeception\Module\WebDriver::seeCheckboxIsChecked() - */ - public function seeCheckboxIsChecked($checkbox) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeCheckboxIsChecked', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Check that the specified checkbox is unchecked. - * - * ``` php - * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. - * ?> - * ``` - * - * @param $checkbox - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeCheckboxIsChecked() - */ - public function cantSeeCheckboxIsChecked($checkbox) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeCheckboxIsChecked', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Check that the specified checkbox is unchecked. - * - * ``` php - * dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms - * $I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form. - * ?> - * ``` - * - * @param $checkbox - * @see \Codeception\Module\WebDriver::dontSeeCheckboxIsChecked() - */ - public function dontSeeCheckboxIsChecked($checkbox) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeCheckboxIsChecked', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given input field or textarea contains the given value. - * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. - * - * ``` php - * seeInField('Body','Type your comment here'); - * $I->seeInField('form textarea[name=body]','Type your comment here'); - * $I->seeInField('form input[type=hidden]','hidden_value'); - * $I->seeInField('#searchform input','Search'); - * $I->seeInField('//form/*[@name=search]','Search'); - * $I->seeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeInField() - */ - public function canSeeInField($field, $value) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInField', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given input field or textarea contains the given value. - * For fuzzy locators, fields are matched by label text, the "name" attribute, CSS, and XPath. - * - * ``` php - * seeInField('Body','Type your comment here'); - * $I->seeInField('form textarea[name=body]','Type your comment here'); - * $I->seeInField('form input[type=hidden]','hidden_value'); - * $I->seeInField('#searchform input','Search'); - * $I->seeInField('//form/*[@name=search]','Search'); - * $I->seeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * @see \Codeception\Module\WebDriver::seeInField() - */ - public function seeInField($field, $value) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInField', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that an input field or textarea doesn't contain the given value. - * For fuzzy locators, the field is matched by label text, CSS and XPath. - * - * ``` php - * dontSeeInField('Body','Type your comment here'); - * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); - * $I->dontSeeInField('form input[type=hidden]','hidden_value'); - * $I->dontSeeInField('#searchform input','Search'); - * $I->dontSeeInField('//form/*[@name=search]','Search'); - * $I->dontSeeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeInField() - */ - public function cantSeeInField($field, $value) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInField', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that an input field or textarea doesn't contain the given value. - * For fuzzy locators, the field is matched by label text, CSS and XPath. - * - * ``` php - * dontSeeInField('Body','Type your comment here'); - * $I->dontSeeInField('form textarea[name=body]','Type your comment here'); - * $I->dontSeeInField('form input[type=hidden]','hidden_value'); - * $I->dontSeeInField('#searchform input','Search'); - * $I->dontSeeInField('//form/*[@name=search]','Search'); - * $I->dontSeeInField(['name' => 'search'], 'Search'); - * ?> - * ``` - * - * @param $field - * @param $value - * @see \Codeception\Module\WebDriver::dontSeeInField() - */ - public function dontSeeInField($field, $value) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInField', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are set on the form matched with the - * passed selector. - * - * ``` php - * seeInFormFields('form[name=myform]', [ - * 'input1' => 'value', - * 'input2' => 'other value', - * ]); - * ?> - * ``` - * - * For multi-select elements, or to check values of multiple elements with the same name, an - * array may be passed: - * - * ``` php - * seeInFormFields('.form-class', [ - * 'multiselect' => [ - * 'value1', - * 'value2', - * ], - * 'checkbox[]' => [ - * 'a checked value', - * 'another checked value', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * seeInFormFields('#form-id', [ - * 'checkbox1' => true, // passes if checked - * 'checkbox2' => false, // passes if unchecked - * ]); - * ?> - * ``` - * - * Pair this with submitForm for quick testing magic. - * - * ``` php - * 'value', - * 'field2' => 'another value', - * 'checkbox1' => true, - * // ... - * ]; - * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); - * // $I->amOnPage('/path/to/form-page') may be needed - * $I->seeInFormFields('//form[@id=my-form]', $form); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeInFormFields() - */ - public function canSeeInFormFields($formSelector, $params) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInFormFields', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are set on the form matched with the - * passed selector. - * - * ``` php - * seeInFormFields('form[name=myform]', [ - * 'input1' => 'value', - * 'input2' => 'other value', - * ]); - * ?> - * ``` - * - * For multi-select elements, or to check values of multiple elements with the same name, an - * array may be passed: - * - * ``` php - * seeInFormFields('.form-class', [ - * 'multiselect' => [ - * 'value1', - * 'value2', - * ], - * 'checkbox[]' => [ - * 'a checked value', - * 'another checked value', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * seeInFormFields('#form-id', [ - * 'checkbox1' => true, // passes if checked - * 'checkbox2' => false, // passes if unchecked - * ]); - * ?> - * ``` - * - * Pair this with submitForm for quick testing magic. - * - * ``` php - * 'value', - * 'field2' => 'another value', - * 'checkbox1' => true, - * // ... - * ]; - * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); - * // $I->amOnPage('/path/to/form-page') may be needed - * $I->seeInFormFields('//form[@id=my-form]', $form); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * @see \Codeception\Module\WebDriver::seeInFormFields() - */ - public function seeInFormFields($formSelector, $params) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInFormFields', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are not set on the form matched with - * the passed selector. - * - * ``` php - * dontSeeInFormFields('form[name=myform]', [ - * 'input1' => 'non-existent value', - * 'input2' => 'other non-existent value', - * ]); - * ?> - * ``` - * - * To check that an element hasn't been assigned any one of many values, an array can be passed - * as the value: - * - * ``` php - * dontSeeInFormFields('.form-class', [ - * 'fieldName' => [ - * 'This value shouldn\'t be set', - * 'And this value shouldn\'t be set', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * dontSeeInFormFields('#form-id', [ - * 'checkbox1' => true, // fails if checked - * 'checkbox2' => false, // fails if unchecked - * ]); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeInFormFields() - */ - public function cantSeeInFormFields($formSelector, $params) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInFormFields', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks if the array of form parameters (name => value) are not set on the form matched with - * the passed selector. - * - * ``` php - * dontSeeInFormFields('form[name=myform]', [ - * 'input1' => 'non-existent value', - * 'input2' => 'other non-existent value', - * ]); - * ?> - * ``` - * - * To check that an element hasn't been assigned any one of many values, an array can be passed - * as the value: - * - * ``` php - * dontSeeInFormFields('.form-class', [ - * 'fieldName' => [ - * 'This value shouldn\'t be set', - * 'And this value shouldn\'t be set', - * ], - * ]); - * ?> - * ``` - * - * Additionally, checkbox values can be checked with a boolean. - * - * ``` php - * dontSeeInFormFields('#form-id', [ - * 'checkbox1' => true, // fails if checked - * 'checkbox2' => false, // fails if unchecked - * ]); - * ?> - * ``` - * - * @param $formSelector - * @param $params - * @see \Codeception\Module\WebDriver::dontSeeInFormFields() - */ - public function dontSeeInFormFields($formSelector, $params) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInFormFields', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Selects an option in a select tag or in radio button group. - * - * ``` php - * selectOption('form select[name=account]', 'Premium'); - * $I->selectOption('form input[name=payment]', 'Monthly'); - * $I->selectOption('//form/select[@name=account]', 'Monthly'); - * ?> - * ``` - * - * Provide an array for the second argument to select multiple options: - * - * ``` php - * selectOption('Which OS do you use?', array('Windows','Linux')); - * ?> - * ``` - * - * Or provide an associative array for the second argument to specifically define which selection method should be used: - * - * ``` php - * selectOption('Which OS do you use?', array('text' => 'Windows')); // Only search by text 'Windows' - * $I->selectOption('Which OS do you use?', array('value' => 'windows')); // Only search by value 'windows' - * ?> - * ``` - * - * @param $select - * @param $option - * @see \Codeception\Module\WebDriver::selectOption() - */ - public function selectOption($select, $option) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('selectOption', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * - * @see \Codeception\Module\WebDriver::unselectOption() - */ - public function unselectOption($select, $option) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('unselectOption', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Ticks a checkbox. For radio buttons, use the `selectOption` method instead. - * - * ``` php - * checkOption('#agree'); - * ?> - * ``` - * - * @param $option - * @see \Codeception\Module\WebDriver::checkOption() - */ - public function checkOption($option) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('checkOption', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Unticks a checkbox. - * - * ``` php - * uncheckOption('#notify'); - * ?> - * ``` - * - * @param $option - * @see \Codeception\Module\WebDriver::uncheckOption() - */ - public function uncheckOption($option) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('uncheckOption', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Fills a text field or textarea with the given string. - * - * ``` php - * fillField("//input[@type='text']", "Hello World!"); - * $I->fillField(['name' => 'email'], 'jon@mail.com'); - * ?> - * ``` - * - * @param $field - * @param $value - * @see \Codeception\Module\WebDriver::fillField() - */ - public function fillField($field, $value) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('fillField', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Attaches a file relative to the Codeception data directory to the given file upload field. - * - * ``` php - * attachFile('input[@type="file"]', 'prices.xls'); - * ?> - * ``` - * - * @param $field - * @param $filename - * @see \Codeception\Module\WebDriver::attachFile() - */ - public function attachFile($field, $filename) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('attachFile', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Grabs all visible text from the current page. - * - * @return string - * @see \Codeception\Module\WebDriver::getVisibleText() - */ - public function getVisibleText() { - return $this->getScenario()->runStep(new \Codeception\Step\Action('getVisibleText', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Finds and returns the text contents of the given element. - * If a fuzzy locator is used, the element is found using CSS, XPath, - * and by matching the full page source by regular expression. - * - * ``` php - * grabTextFrom('h1'); - * $heading = $I->grabTextFrom('descendant-or-self::h1'); - * $value = $I->grabTextFrom('~ - * ``` - * - * @param $cssOrXPathOrRegex - * - * @return mixed - * @see \Codeception\Module\WebDriver::grabTextFrom() - */ - public function grabTextFrom($cssOrXPathOrRegex) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('grabTextFrom', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Grabs the value of the given attribute value from the given element. - * Fails if element is not found. - * - * ``` php - * grabAttributeFrom('#tooltip', 'title'); - * ?> - * ``` - * - * - * @param $cssOrXpath - * @param $attribute - * - * @return mixed - * @see \Codeception\Module\WebDriver::grabAttributeFrom() - */ - public function grabAttributeFrom($cssOrXpath, $attribute) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('grabAttributeFrom', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Finds the value for the given form field. - * If a fuzzy locator is used, the field is found by field name, CSS, and XPath. - * - * ``` php - * grabValueFrom('Name'); - * $name = $I->grabValueFrom('input[name=username]'); - * $name = $I->grabValueFrom('descendant-or-self::form/descendant::input[@name = 'username']'); - * $name = $I->grabValueFrom(['name' => 'username']); - * ?> - * ``` - * - * @param $field - * - * @return mixed - * @see \Codeception\Module\WebDriver::grabValueFrom() - */ - public function grabValueFrom($field) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('grabValueFrom', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Grabs either the text content, or attribute values, of nodes - * matched by $cssOrXpath and returns them as an array. - * - * ```html - * First - * Second - * Third - * ``` - * - * ```php - * grabMultiple('a'); - * - * // would return ['#first', '#second', '#third'] - * $aLinks = $I->grabMultiple('a', 'href'); - * ?> - * ``` - * - * @param $cssOrXpath - * @param $attribute - * @return string[] - * @see \Codeception\Module\WebDriver::grabMultiple() - */ - public function grabMultiple($cssOrXpath, $attribute = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('grabMultiple', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element exists on the page and is visible. - * You can also specify expected attributes of this element. - * - * ``` php - * seeElement('.error'); - * $I->seeElement('//form/input[1]'); - * $I->seeElement('input', ['name' => 'login']); - * $I->seeElement('input', ['value' => '123456']); - * - * // strict locator in first arg, attributes in second - * $I->seeElement(['css' => 'form input'], ['name' => 'login']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * @return - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeElement() - */ - public function canSeeElement($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeElement', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element exists on the page and is visible. - * You can also specify expected attributes of this element. - * - * ``` php - * seeElement('.error'); - * $I->seeElement('//form/input[1]'); - * $I->seeElement('input', ['name' => 'login']); - * $I->seeElement('input', ['value' => '123456']); - * - * // strict locator in first arg, attributes in second - * $I->seeElement(['css' => 'form input'], ['name' => 'login']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * @return - * @see \Codeception\Module\WebDriver::seeElement() - */ - public function seeElement($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeElement', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element is invisible or not present on the page. - * You can also specify expected attributes of this element. - * - * ``` php - * dontSeeElement('.error'); - * $I->dontSeeElement('//form/input[1]'); - * $I->dontSeeElement('input', ['name' => 'login']); - * $I->dontSeeElement('input', ['value' => '123456']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeElement() - */ - public function cantSeeElement($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElement', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element is invisible or not present on the page. - * You can also specify expected attributes of this element. - * - * ``` php - * dontSeeElement('.error'); - * $I->dontSeeElement('//form/input[1]'); - * $I->dontSeeElement('input', ['name' => 'login']); - * $I->dontSeeElement('input', ['value' => '123456']); - * ?> - * ``` - * - * @param $selector - * @param array $attributes - * @see \Codeception\Module\WebDriver::dontSeeElement() - */ - public function dontSeeElement($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeElement', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element exists on the page, even it is invisible. - * - * ``` php - * seeElementInDOM('//form/input[type=hidden]'); - * ?> - * ``` - * - * @param $selector - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeElementInDOM() - */ - public function canSeeElementInDOM($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeElementInDOM', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given element exists on the page, even it is invisible. - * - * ``` php - * seeElementInDOM('//form/input[type=hidden]'); - * ?> - * ``` - * - * @param $selector - * @see \Codeception\Module\WebDriver::seeElementInDOM() - */ - public function seeElementInDOM($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeElementInDOM', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Opposite of `seeElementInDOM`. - * - * @param $selector - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeElementInDOM() - */ - public function cantSeeElementInDOM($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeElementInDOM', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Opposite of `seeElementInDOM`. - * - * @param $selector - * @see \Codeception\Module\WebDriver::dontSeeElementInDOM() - */ - public function dontSeeElementInDOM($selector, $attributes = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeElementInDOM', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there are a certain number of elements matched by the given locator on the page. - * - * ``` php - * seeNumberOfElements('tr', 10); - * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements - * ?> - * ``` - * @param $selector - * @param mixed $expected : - * - string: strict number - * - array: range of numbers [0,10] - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeNumberOfElements() - */ - public function canSeeNumberOfElements($selector, $expected) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElements', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that there are a certain number of elements matched by the given locator on the page. - * - * ``` php - * seeNumberOfElements('tr', 10); - * $I->seeNumberOfElements('tr', [0,10]); //between 0 and 10 elements - * ?> - * ``` - * @param $selector - * @param mixed $expected : - * - string: strict number - * - array: range of numbers [0,10] - * @see \Codeception\Module\WebDriver::seeNumberOfElements() - */ - public function seeNumberOfElements($selector, $expected) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumberOfElements', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeNumberOfElementsInDOM() - */ - public function canSeeNumberOfElementsInDOM($selector, $expected) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeNumberOfElementsInDOM', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * - * @see \Codeception\Module\WebDriver::seeNumberOfElementsInDOM() - */ - public function seeNumberOfElementsInDOM($selector, $expected) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeNumberOfElementsInDOM', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is selected. - * - * ``` php - * seeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeOptionIsSelected() - */ - public function canSeeOptionIsSelected($selector, $optionText) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeOptionIsSelected', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is selected. - * - * ``` php - * seeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * @see \Codeception\Module\WebDriver::seeOptionIsSelected() - */ - public function seeOptionIsSelected($selector, $optionText) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeOptionIsSelected', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is not selected. - * - * ``` php - * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeOptionIsSelected() - */ - public function cantSeeOptionIsSelected($selector, $optionText) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeOptionIsSelected', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the given option is not selected. - * - * ``` php - * dontSeeOptionIsSelected('#form input[name=payment]', 'Visa'); - * ?> - * ``` - * - * @param $selector - * @param $optionText - * - * @return mixed - * @see \Codeception\Module\WebDriver::dontSeeOptionIsSelected() - */ - public function dontSeeOptionIsSelected($selector, $optionText) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeOptionIsSelected', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title contains the given string. - * - * ``` php - * seeInTitle('Blog - Post #1'); - * ?> - * ``` - * - * @param $title - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeInTitle() - */ - public function canSeeInTitle($title) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInTitle', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title contains the given string. - * - * ``` php - * seeInTitle('Blog - Post #1'); - * ?> - * ``` - * - * @param $title - * - * @return mixed - * @see \Codeception\Module\WebDriver::seeInTitle() - */ - public function seeInTitle($title) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInTitle', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title does not contain the given string. - * - * @param $title - * - * @return mixed - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::dontSeeInTitle() - */ - public function cantSeeInTitle($title) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('dontSeeInTitle', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the page title does not contain the given string. - * - * @param $title - * - * @return mixed - * @see \Codeception\Module\WebDriver::dontSeeInTitle() - */ - public function dontSeeInTitle($title) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('dontSeeInTitle', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Accepts the active JavaScript native popup window, as created by `window.alert`|`window.confirm`|`window.prompt`. - * Don't confuse popups with modal windows, - * as created by [various libraries](http://jster.net/category/windows-modals-popups). - * @see \Codeception\Module\WebDriver::acceptPopup() - */ - public function acceptPopup() { - return $this->getScenario()->runStep(new \Codeception\Step\Action('acceptPopup', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Dismisses the active JavaScript popup, as created by `window.alert`|`window.confirm`|`window.prompt`. - * @see \Codeception\Module\WebDriver::cancelPopup() - */ - public function cancelPopup() { - return $this->getScenario()->runStep(new \Codeception\Step\Action('cancelPopup', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the active JavaScript popup, - * as created by `window.alert`|`window.confirm`|`window.prompt`, contains the given string. - * - * @param $text - * Conditional Assertion: Test won't be stopped on fail - * @see \Codeception\Module\WebDriver::seeInPopup() - */ - public function canSeeInPopup($text) { - return $this->getScenario()->runStep(new \Codeception\Step\ConditionalAssertion('seeInPopup', func_get_args())); - } - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Checks that the active JavaScript popup, - * as created by `window.alert`|`window.confirm`|`window.prompt`, contains the given string. - * - * @param $text - * @see \Codeception\Module\WebDriver::seeInPopup() - */ - public function seeInPopup($text) { - return $this->getScenario()->runStep(new \Codeception\Step\Assertion('seeInPopup', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Enters text into a native JavaScript prompt popup, as created by `window.prompt`. - * - * @param $keys - * @see \Codeception\Module\WebDriver::typeInPopup() - */ - public function typeInPopup($keys) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('typeInPopup', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Reloads the current page. - * @see \Codeception\Module\WebDriver::reloadPage() - */ - public function reloadPage() { - return $this->getScenario()->runStep(new \Codeception\Step\Action('reloadPage', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Moves back in history. - * @see \Codeception\Module\WebDriver::moveBack() - */ - public function moveBack() { - return $this->getScenario()->runStep(new \Codeception\Step\Action('moveBack', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Moves forward in history. - * @see \Codeception\Module\WebDriver::moveForward() - */ - public function moveForward() { - return $this->getScenario()->runStep(new \Codeception\Step\Action('moveForward', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Submits the given form on the page, optionally with the given form - * values. Give the form fields values as an array. Note that hidden fields - * can't be accessed. - * - * Skipped fields will be filled by their values from the page. - * You don't need to click the 'Submit' button afterwards. - * This command itself triggers the request to form's action. - * - * You can optionally specify what button's value to include - * in the request with the last parameter as an alternative to - * explicitly setting its value in the second parameter, as - * button values are not otherwise included in the request. - * - * Examples: - * - * ``` php - * submitForm('#login', [ - * 'login' => 'davert', - * 'password' => '123456' - * ]); - * // or - * $I->submitForm('#login', [ - * 'login' => 'davert', - * 'password' => '123456' - * ], 'submitButtonName'); - * - * ``` - * - * For example, given this sample "Sign Up" form: - * - * ``` html - * - * Login: - *
- * Password: - *
- * Do you agree to our terms? - *
- * Select pricing plan: - * - * - * - * ``` - * - * You could write the following to submit it: - * - * ``` php - * submitForm( - * '#userForm', - * [ - * 'user[login]' => 'Davert', - * 'user[password]' => '123456', - * 'user[agree]' => true - * ], - * 'submitButton' - * ); - * ``` - * Note that "2" will be the submitted value for the "plan" field, as it is - * the selected option. - * - * Also note that this differs from PhpBrowser, in that - * ```'user' => [ 'login' => 'Davert' ]``` is not supported at the moment. - * Named array keys *must* be included in the name as above. - * - * Pair this with seeInFormFields for quick testing magic. - * - * ``` php - * 'value', - * 'field2' => 'another value', - * 'checkbox1' => true, - * // ... - * ]; - * $I->submitForm('//form[@id=my-form]', $form, 'submitButton'); - * // $I->amOnPage('/path/to/form-page') may be needed - * $I->seeInFormFields('//form[@id=my-form]', $form); - * ?> - * ``` - * - * Parameter values must be set to arrays for multiple input fields - * of the same name, or multi-select combo boxes. For checkboxes, - * either the string value can be used, or boolean values which will - * be replaced by the checkbox's value in the DOM. - * - * ``` php - * submitForm('#my-form', [ - * 'field1' => 'value', - * 'checkbox' => [ - * 'value of first checkbox', - * 'value of second checkbox, - * ], - * 'otherCheckboxes' => [ - * true, - * false, - * false - * ], - * 'multiselect' => [ - * 'first option value', - * 'second option value' - * ] - * ]); - * ?> - * ``` - * - * Mixing string and boolean values for a checkbox's value is not supported - * and may produce unexpected results. - * - * Field names ending in "[]" must be passed without the trailing square - * bracket characters, and must contain an array for its value. This allows - * submitting multiple values with the same name, consider: - * - * ```php - * $I->submitForm('#my-form', [ - * 'field[]' => 'value', - * 'field[]' => 'another value', // 'field[]' is already a defined key - * ]); - * ``` - * - * The solution is to pass an array value: - * - * ```php - * // this way both values are submitted - * $I->submitForm('#my-form', [ - * 'field' => [ - * 'value', - * 'another value', - * ] - * ]); - * ``` - * - * The `$button` parameter can be either a string, an array or an instance - * of Facebook\WebDriver\WebDriverBy. When it is a string, the - * button will be found by its "name" attribute. If $button is an - * array then it will be treated as a strict selector and a WebDriverBy - * will be used verbatim. - * - * For example, given the following HTML: - * - * ``` html - * - * ``` - * - * `$button` could be any one of the following: - * - 'submitButton' - * - ['name' => 'submitButton'] - * - WebDriverBy::name('submitButton') - * - * @param $selector - * @param $params - * @param $button - * @see \Codeception\Module\WebDriver::submitForm() - */ - public function submitForm($selector, $params, $button = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('submitForm', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Waits up to $timeout seconds for the given element to change. - * Element "change" is determined by a callback function which is called repeatedly - * until the return value evaluates to true. - * - * ``` php - * waitForElementChange('#menu', function(WebDriverElement $el) { - * return $el->isDisplayed(); - * }, 100); - * ?> - * ``` - * - * @param $element - * @param \Closure $callback - * @param int $timeout seconds - * @throws \Codeception\Exception\ElementNotFound - * @see \Codeception\Module\WebDriver::waitForElementChange() - */ - public function waitForElementChange($element, $callback, $timeout = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElementChange', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Waits up to $timeout seconds for an element to appear on the page. - * If the element doesn't appear, a timeout exception is thrown. - * - * ``` php - * waitForElement('#agree_button', 30); // secs - * $I->click('#agree_button'); - * ?> - * ``` - * - * @param $element - * @param int $timeout seconds - * @throws \Exception - * @see \Codeception\Module\WebDriver::waitForElement() - */ - public function waitForElement($element, $timeout = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElement', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Waits up to $timeout seconds for the given element to be visible on the page. - * If element doesn't appear, a timeout exception is thrown. - * - * ``` php - * waitForElementVisible('#agree_button', 30); // secs - * $I->click('#agree_button'); - * ?> - * ``` - * - * @param $element - * @param int $timeout seconds - * @throws \Exception - * @see \Codeception\Module\WebDriver::waitForElementVisible() - */ - public function waitForElementVisible($element, $timeout = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElementVisible', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Waits up to $timeout seconds for the given element to become invisible. - * If element stays visible, a timeout exception is thrown. - * - * ``` php - * waitForElementNotVisible('#agree_button', 30); // secs - * ?> - * ``` - * - * @param $element - * @param int $timeout seconds - * @throws \Exception - * @see \Codeception\Module\WebDriver::waitForElementNotVisible() - */ - public function waitForElementNotVisible($element, $timeout = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForElementNotVisible', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Waits up to $timeout seconds for the given string to appear on the page. - * - * Can also be passed a selector to search in, be as specific as possible when using selectors. - * waitForText() will only watch the first instance of the matching selector / text provided. - * If the given text doesn't appear, a timeout exception is thrown. - * - * ``` php - * waitForText('foo', 30); // secs - * $I->waitForText('foo', 30, '.title'); // secs - * ?> - * ``` - * - * @param string $text - * @param int $timeout seconds - * @param null $selector - * @throws \Exception - * @see \Codeception\Module\WebDriver::waitForText() - */ - public function waitForText($text, $timeout = null, $selector = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('waitForText', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Wait for $timeout seconds. - * - * @param int $timeout secs - * @throws \Codeception\Exception\TestRuntimeException - * @see \Codeception\Module\WebDriver::wait() - */ - public function wait($timeout) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('wait', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Low-level API method. - * If Codeception commands are not enough, this allows you to use Selenium WebDriver methods directly: - * - * ``` php - * $I->executeInSelenium(function(\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) { - * $webdriver->get('http://google.com'); - * }); - * ``` - * - * This runs in the context of the - * [RemoteWebDriver class](https://github.com/facebook/php-webdriver/blob/master/lib/remote/RemoteWebDriver.php). - * Try not to use this command on a regular basis. - * If Codeception lacks a feature you need, please implement it and submit a patch. - * - * @param callable $function - * @see \Codeception\Module\WebDriver::executeInSelenium() - */ - public function executeInSelenium($function) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('executeInSelenium', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Switch to another window identified by name. - * - * The window can only be identified by name. If the $name parameter is blank, the parent window will be used. - * - * Example: - * ``` html - * - * ``` - * - * ``` php - * click("Open window"); - * # switch to another window - * $I->switchToWindow("another_window"); - * # switch to parent window - * $I->switchToWindow(); - * ?> - * ``` - * - * If the window has no name, the only way to access it is via the `executeInSelenium()` method, like so: - * - * ``` php - * executeInSelenium(function (\Facebook\WebDriver\Remote\RemoteWebDriver $webdriver) { - * $handles=$webdriver->getWindowHandles(); - * $last_window = end($handles); - * $webdriver->switchTo()->window($last_window); - * }); - * ?> - * ``` - * - * @param string|null $name - * @see \Codeception\Module\WebDriver::switchToWindow() - */ - public function switchToWindow($name = null) { - return $this->getScenario()->runStep(new \Codeception\Step\Action('switchToWindow', func_get_args())); - } - - - /** - * [!] Method is generated. Documentation taken from corresponding module. - * - * Switch to another frame on the page. - * - * Example: - * ``` html - *