diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8850303 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +config.core.php diff --git a/_build/build.php b/_build/build.php new file mode 100644 index 0000000..b63433d --- /dev/null +++ b/_build/build.php @@ -0,0 +1,729 @@ +modx = $modx; + $this->modx->initialize('mgr'); + + $root = dirname(__FILE__, 2) . '/'; + $core = $root . 'core/components/' . $config['name_lower'] . '/'; + $assets = $root . 'assets/components/' . $config['name_lower'] . '/'; + + $this->config = array_merge([ + 'log_level' => modX::LOG_LEVEL_INFO, + 'log_target' => XPDO_CLI_MODE ? 'ECHO' : 'HTML', + + 'root' => $root, + 'build' => $root . '_build/', + 'elements' => $root . '_build/elements/', + 'resolvers' => $root . '_build/resolvers/', + 'core' => $core, + 'assets' => $assets, + ], $config); + $this->modx->setLogLevel($this->config['log_level']); + $this->modx->setLogTarget($this->config['log_target']); + + $this->initialize(); + } + + /** + * @return modPackageBuilder + */ + public function process() + { + // $this->buildModel(); + + // Add elements + $elements = scandir($this->config['elements']); + foreach ($elements as $element) { + if (in_array($element[0], ['_', '.'])) { + continue; + } + $name = preg_replace('#\.php$#', '', $element); + if (method_exists($this, $name)) { + $this->{$name}(); + } + } + + // Create main vehicle + $vehicle = $this->builder->createVehicle($this->category, $this->category_attributes); + + // Files resolvers + $vehicle->resolve('file', [ + 'source' => $this->config['core'], + 'target' => "return MODX_CORE_PATH . 'components/';", + ]); + $vehicle->resolve('file', [ + 'source' => $this->config['assets'], + 'target' => "return MODX_ASSETS_PATH . 'components/';", + ]); + + // Add resolvers into vehicle + $resolvers = scandir($this->config['resolvers']); + foreach ($resolvers as $resolver) { + if (in_array($resolver[0], ['_', '.'])) { + continue; + } + if ($vehicle->resolve('php', ['source' => $this->config['resolvers'] . $resolver])) { + $this->modx->log(modX::LOG_LEVEL_INFO, 'Added resolver ' . preg_replace('#\.php$#', '', $resolver)); + } + } + + $this->builder->putVehicle($vehicle); + + $this->builder->setPackageAttributes([ + 'changelog' => file_get_contents($this->config['core'] . 'docs/changelog.txt'), + 'license' => file_get_contents($this->config['core'] . 'docs/license.txt'), + 'readme' => file_get_contents($this->config['core'] . 'docs/readme.txt'), + 'requires' => [ + 'php' => '>=7.2.0', + 'modx' => '>=3.0.0', + ], + ]); + $this->modx->log(modX::LOG_LEVEL_INFO, 'Added package attributes and setup options.'); + + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packing up transport package zip...'); + $this->builder->pack(); + + if (!empty($this->config['install'])) { + $this->install(); + } + + return $this->builder; + } + + + /** + * Initialize package builder + */ + private function initialize() + { + $this->builder = new modPackageBuilder($this->modx); + $this->builder->createPackage($this->config['name_lower'], $this->config['version'], $this->config['release']); + $this->builder->registerNamespace($this->config['name_lower'], false, true, '{core_path}components/' . $this->config['name_lower'] . '/'); + $this->modx->log(modX::LOG_LEVEL_INFO, 'Created Transport Package and Namespace.'); + + $this->category = $this->modx->newObject(modCategory::class); + $this->category->set('category', $this->config['name']); + $this->category_attributes = [ + xPDOTransport::UNIQUE_KEY => 'category', + xPDOTransport::PRESERVE_KEYS => false, + xPDOTransport::UPDATE_OBJECT => true, + xPDOTransport::RELATED_OBJECTS => true, + xPDOTransport::RELATED_OBJECT_ATTRIBUTES => [], + ]; + $this->modx->log(modX::LOG_LEVEL_INFO, 'Created main Category.'); + } + + + /** + * Update the model + */ + private function buildModel() + { + $schemaFile = $this->config['core'] . 'schema/' . $this->config['name_lower'] . '.mysql.schema.xml'; + $outputDir = $this->config['core'] . 'src/'; + if (!file_exists($schemaFile) || empty(file_get_contents($schemaFile))) { + return; + } + + $manager = $this->modx->getManager(); + $generator = $manager->getGenerator(); + $generator->parseSchema( + $schemaFile, + $outputDir, + [ + "compile" => 0, + "update" => 1, + "regenerate" => 1, + "namespacePrefix" => "Lingua\\" + ] + ); + $this->modx->log(modX::LOG_LEVEL_INFO, 'Model updated'); + } + + /** + * Install package + */ + private function install() + { + $signature = $this->builder->getSignature(); + $sig = explode('-', $signature); + $versionSignature = explode('.', $sig[1]); + + /** @var modTransportPackage $package */ + $package = $this->modx->getObject(modTransportPackage::class, ['signature' => $signature]); + if (!$package) { + $package = $this->modx->newObject(modTransportPackage::class); + $package->set('signature', $signature); + $package->fromArray([ + 'created' => date('Y-m-d h:i:s'), + 'updated' => null, + 'state' => 1, + 'workspace' => 1, + 'provider' => 0, + 'source' => $signature . '.transport.zip', + 'package_name' => $this->config['name'], + 'version_major' => $versionSignature[0], + 'version_minor' => !empty($versionSignature[1]) ? $versionSignature[1] : 0, + 'version_patch' => !empty($versionSignature[2]) ? $versionSignature[2] : 0, + ]); + if (!empty($sig[2])) { + $r = preg_split('#([0-9]+)#', $sig[2], -1, PREG_SPLIT_DELIM_CAPTURE); + if (is_array($r) && !empty($r)) { + $package->set('release', $r[0]); + $package->set('release_index', (isset($r[1]) ? $r[1] : '0')); + } else { + $package->set('release', $sig[2]); + } + } + $package->save(); + } + + //$package->xpdo->packages['MODX\Revolution\\'] = $package->xpdo->packages['Revolution']; + if ($package->install()) { + $this->modx->runProcessor('System/ClearCache'); + } + } + + /** + * Add settings + */ + private function settings() + { + /** @noinspection PhpIncludeInspection */ + $settings = include($this->config['elements'] . 'settings.php'); + if (!is_array($settings)) { + $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in System Settings'); + return; + } + $attributes = [ + xPDOTransport::UNIQUE_KEY => 'key', + xPDOTransport::PRESERVE_KEYS => true, + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['settings']), + xPDOTransport::RELATED_OBJECTS => false, + ]; + foreach ($settings as $name => $data) { + /** @var modSystemSetting $setting */ + $setting = $this->modx->newObject(modSystemSetting::class); + $setting->fromArray(array_merge([ + 'key' => $this->config['name_lower'] . '_' . $name, + 'namespace' => $this->config['name_lower'], + ], $data), '', true, true); + $vehicle = $this->builder->createVehicle($setting, $attributes); + $this->builder->putVehicle($vehicle); + } + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($settings) . ' System Settings'); + } + + + /** + * Add menus + */ + private function menus() + { + /** @noinspection PhpIncludeInspection */ + $menus = include($this->config['elements'] . 'menus.php'); + if (!is_array($menus)) { + $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in Menus'); + + return; + } + $attributes = [ + xPDOTransport::PRESERVE_KEYS => true, + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['menus']), + xPDOTransport::UNIQUE_KEY => 'text', + xPDOTransport::RELATED_OBJECTS => true, + ]; + if (is_array($menus)) { + foreach ($menus as $name => $data) { + /** @var modMenu $menu */ + $menu = $this->modx->newObject(modMenu::class); + $menu->fromArray(array_merge([ + 'text' => $name, + 'parent' => 'components', + 'namespace' => $this->config['name_lower'], + 'icon' => '', + 'menuindex' => 0, + 'params' => '', + 'handler' => '', + ], $data), '', true, true); + $vehicle = $this->builder->createVehicle($menu, $attributes); + $this->builder->putVehicle($vehicle); + } + } + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($menus) . ' Menus'); + } + + + /** + * Add Dashboard Widgets + */ + private function widgets() + { + /** @noinspection PhpIncludeInspection */ + $widgets = include($this->config['elements'] . 'widgets.php'); + if (!is_array($widgets)) { + $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in Dashboard Widgets'); + + return; + } + $attributes = [ + xPDOTransport::PRESERVE_KEYS => true, + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['widgets']), + xPDOTransport::UNIQUE_KEY => 'name', + ]; + foreach ($widgets as $name => $data) { + /** @var modDashboardWidget $widget */ + $widget = $this->modx->newObject(modDashboardWidget::class); + $widget->fromArray(array_merge([ + 'name' => $name, + 'namespace' => 'core', + 'lexicon' => 'core:dashboards', + ], $data), '', true, true); + $vehicle = $this->builder->createVehicle($widget, $attributes); + $this->builder->putVehicle($vehicle); + } + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($widgets) . ' Dashboard Widgets'); + } + + + /** + * Add resources + */ + private function resources() + { + /** @noinspection PhpIncludeInspection */ + $resources = include($this->config['elements'] . 'resources.php'); + if (!is_array($resources)) { + $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in Resources'); + + return; + } + $attributes = [ + xPDOTransport::UNIQUE_KEY => 'id', + xPDOTransport::PRESERVE_KEYS => true, + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['resources']), + xPDOTransport::RELATED_OBJECTS => false, + ]; + $objects = []; + foreach ($resources as $context => $items) { + $menuindex = 0; + foreach ($items as $alias => $item) { + if (!isset($item['id'])) { + $item['id'] = $this->_idx++; + } + $item['alias'] = $alias; + $item['context_key'] = $context; + $item['menuindex'] = $menuindex++; + $objects = array_merge( + $objects, + $this->createResource($item, $alias) + ); + } + } + + /** @var modResource $resource */ + foreach ($objects as $resource) { + $vehicle = $this->builder->createVehicle($resource, $attributes); + $this->builder->putVehicle($vehicle); + } + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($objects) . ' Resources'); + } + + + /** + * Add plugins + */ + private function plugins() + { + /** @noinspection PhpIncludeInspection */ + $plugins = include($this->config['elements'] . 'plugins.php'); + if (!is_array($plugins)) { + $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in Plugins'); + + return; + } + $this->category_attributes[xPDOTransport::RELATED_OBJECT_ATTRIBUTES]['Plugins'] = [ + xPDOTransport::UNIQUE_KEY => 'name', + xPDOTransport::PRESERVE_KEYS => false, + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['plugins']), + xPDOTransport::RELATED_OBJECTS => true, + xPDOTransport::RELATED_OBJECT_ATTRIBUTES => [ + 'PluginEvents' => [ + xPDOTransport::PRESERVE_KEYS => true, + xPDOTransport::UPDATE_OBJECT => true, + xPDOTransport::UNIQUE_KEY => ['pluginid', 'event'], + ], + ], + ]; + $objects = []; + foreach ($plugins as $name => $data) { + /** @var modPlugin $plugin */ + $plugin = $this->modx->newObject(modPlugin::class); + $plugin->fromArray(array_merge([ + 'name' => $name, + 'category' => 0, + 'description' => @$data['description'], + 'plugincode' => $this::getFileContent($this->config['core'] . 'elements/plugins/' . $data['file'] . '.php'), + 'static' => !empty($this->config['static']['plugins']), + 'source' => 1, + 'static_file' => 'core/components/' . $this->config['name_lower'] . '/elements/plugins/' . $data['file'] . '.php', + ], $data), '', true, true); + + $events = []; + if (!empty($data['events'])) { + foreach ($data['events'] as $event_name => $event_data) { + /** @var modPluginEvent $event */ + $event = $this->modx->newObject(modPluginEvent::class); + $event->fromArray(array_merge([ + 'event' => $event_name, + 'priority' => 0, + 'propertyset' => 0, + ], $event_data), '', true, true); + $events[] = $event; + } + } + if (!empty($events)) { + $plugin->addMany($events); + } + $objects[] = $plugin; + } + $this->category->addMany($objects); + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($objects) . ' Plugins'); + } + + + /** + * Add snippets + */ + private function snippets() + { + /** @noinspection PhpIncludeInspection */ + $snippets = include($this->config['elements'] . 'snippets.php'); + if (!is_array($snippets)) { + $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in Snippets'); + return; + } + $this->category_attributes[xPDOTransport::RELATED_OBJECT_ATTRIBUTES]['Snippets'] = [ + xPDOTransport::PRESERVE_KEYS => false, + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['snippets']), + xPDOTransport::UNIQUE_KEY => 'name', + ]; + $objects = []; + foreach ($snippets as $name => $data) { + /** @var modSnippet $snippet */ + $objects[$name] = $this->modx->newObject(modSnippet::class); + $objects[$name]->fromArray(array_merge([ + 'id' => 0, + 'name' => $name, + 'description' => @$data['description'], + 'snippet' => $this::getFileContent($this->config['core'] . 'elements/snippets/' . $data['file'] . '.php'), + 'static' => !empty($this->config['static']['snippets']), + 'source' => 1, + 'static_file' => 'core/components/' . $this->config['name_lower'] . '/elements/snippets/' . $data['file'] . '.php', + ], $data), '', true, true); + $properties = []; + foreach (@$data['properties'] as $k => $v) { + $properties[] = array_merge([ + 'name' => $k, + 'desc' => $this->config['name_lower'] . '_prop_' . $k, + 'lexicon' => $this->config['name_lower'] . ':properties', + ], $v); + } + $objects[$name]->setProperties($properties); + } + $this->category->addMany($objects); + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($objects) . ' Snippets'); + } + + + /** + * Add chunks + */ + private function chunks() + { + /** @noinspection PhpIncludeInspection */ + $chunks = include($this->config['elements'] . 'chunks.php'); + if (!is_array($chunks)) { + $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in Chunks'); + + return; + } + $this->category_attributes[xPDOTransport::RELATED_OBJECT_ATTRIBUTES]['Chunks'] = [ + xPDOTransport::PRESERVE_KEYS => false, + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['chunks']), + xPDOTransport::UNIQUE_KEY => 'name', + ]; + $objects = []; + foreach ($chunks as $name => $data) { + /** @var modChunk[] $objects */ + $objects[$name] = $this->modx->newObject(modChunk::class); + $objects[$name]->fromArray(array_merge([ + 'id' => 0, + 'name' => $name, + 'description' => @$data['description'], + 'snippet' => $this::getFileContent($this->config['core'] . 'elements/chunks/' . $data['file'] . '.tpl'), + 'static' => !empty($this->config['static']['chunks']), + 'source' => 1, + 'static_file' => 'core/components/' . $this->config['name_lower'] . '/elements/chunks/' . $data['file'] . '.tpl', + ], $data), '', true, true); + $objects[$name]->setProperties(@$data['properties']); + } + $this->category->addMany($objects); + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($objects) . ' Chunks'); + } + + + /** + * Add templates + */ + private function templates() + { + /** @noinspection PhpIncludeInspection */ + $templates = include($this->config['elements'] . 'templates.php'); + if (!is_array($templates)) { + $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in Templates'); + + return; + } + $this->category_attributes[xPDOTransport::RELATED_OBJECT_ATTRIBUTES]['Templates'] = [ + xPDOTransport::UNIQUE_KEY => 'templatename', + xPDOTransport::PRESERVE_KEYS => false, + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['templates']), + xPDOTransport::RELATED_OBJECTS => false, + ]; + $objects = []; + foreach ($templates as $name => $data) { + /** @var modTemplate[] $objects */ + $objects[$name] = $this->modx->newObject(modTemplate::class); + $objects[$name]->fromArray(array_merge([ + 'templatename' => $name, + 'description' => $data['description'], + 'content' => $this::getFileContent($this->config['core'] . 'elements/templates/' . $data['file'] . '.tpl'), + 'static' => !empty($this->config['static']['templates']), + 'source' => 1, + 'static_file' => 'core/components/' . $this->config['name_lower'] . '/elements/templates/' . $data['file'] . '.tpl', + ], $data), '', true, true); + } + $this->category->addMany($objects); + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($objects) . ' Templates'); + } + + + /** + * Add access policy + */ + private function policies() + { + /** @noinspection PhpIncludeInspection */ + $policies = include($this->config['elements'] . 'policies.php'); + if (!is_array($policies)) { + $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in Access Policies'); + return; + } + $attributes = [ + xPDOTransport::PRESERVE_KEYS => false, + xPDOTransport::UNIQUE_KEY => array('name'), + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['policies']), + ]; + foreach ($policies as $name => $data) { + if (isset($data['data'])) { + $data['data'] = json_encode($data['data']); + } + /** @var $policy modAccessPolicy */ + $policy = $this->modx->newObject(modAccessPolicy::class); + $policy->fromArray(array_merge(array( + 'name' => $name, + 'lexicon' => $this->config['name_lower'] . ':permissions', + ), $data) + , '', true, true); + $vehicle = $this->builder->createVehicle($policy, $attributes); + $this->builder->putVehicle($vehicle); + } + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($policies) . ' Access Policies'); + } + + + /** + * Add policy templates + */ + private function policy_templates() + { + /** @noinspection PhpIncludeInspection */ + $policy_templates = include($this->config['elements'] . 'policy_templates.php'); + if (!is_array($policy_templates)) { + $this->modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in Policy Templates'); + return; + } + $attributes = [ + xPDOTransport::PRESERVE_KEYS => false, + xPDOTransport::UNIQUE_KEY => array('name'), + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['policy_templates']), + xPDOTransport::RELATED_OBJECTS => true, + xPDOTransport::RELATED_OBJECT_ATTRIBUTES => array( + 'Permissions' => array( + xPDOTransport::PRESERVE_KEYS => false, + xPDOTransport::UPDATE_OBJECT => !empty($this->config['update']['permission']), + xPDOTransport::UNIQUE_KEY => array('template', 'name'), + ), + ), + ]; + foreach ($policy_templates as $name => $data) { + $permissions = array(); + if (isset($data['permissions']) && is_array($data['permissions'])) { + foreach ($data['permissions'] as $name2 => $data2) { + /** @var $permission modAccessPermission */ + $permission = $this->modx->newObject(modAccessPermission::class); + $permission->fromArray(array_merge(array( + 'name' => $name2, + 'description' => $name2, + 'value' => true, + ), $data2) + , '', true, true); + $permissions[] = $permission; + } + } + /** @var $permission modAccessPolicyTemplate */ + $permission = $this->modx->newObject(modAccessPolicyTemplate::class); + $permission->fromArray(array_merge(array( + 'name' => $name, + 'lexicon' => $this->config['name_lower'] . ':permissions', + ), $data) + , '', true, true); + if (!empty($permissions)) { + $permission->addMany($permissions); + } + $vehicle = $this->builder->createVehicle($permission, $attributes); + $this->builder->putVehicle($vehicle); + } + $this->modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($policy_templates) . ' Access Policy Templates'); + } + + /** + * @param $filename + * + * @return string + */ + private function getFileContent($filename) + { + if (file_exists($filename)) { + $file = trim(file_get_contents($filename)); + + return preg_match('#\<\?php(.*)#is', $file, $data) + ? rtrim(rtrim(trim(@$data[1]), '?>')) + : $file; + } + + return ''; + } + + /** + * @param array $data + * @param string $uri + * @param int $parent + * + * @return array + */ + protected function createResource(array $data, $uri, $parent = 0) + { + $file = $data['context_key'] . '/' . $uri; + /** @var modResource $resource */ + $resource = $this->modx->newObject(modResource::class); + $resource->fromArray(array_merge([ + 'parent' => $parent, + 'published' => true, + 'deleted' => false, + 'hidemenu' => false, + 'createdon' => time(), + 'template' => 1, + 'isfolder' => !empty($data['isfolder']) || !empty($data['resources']), + 'uri' => $uri, + 'uri_override' => false, + 'richtext' => false, + 'searchable' => true, + 'content' => $this::getFileContent($this->config['core'] . 'elements/resources/' . $file . '.tpl'), + ], $data), '', true, true); + + if (!empty($data['groups'])) { + foreach ($data['groups'] as $group) { + $resource->joinGroup($group); + } + } + $resources[] = $resource; + + if (!empty($data['resources'])) { + $menuindex = 0; + foreach ($data['resources'] as $alias => $item) { + if (!isset($item['id'])) { + $item['id'] = $this->_idx++; + } + $item['alias'] = $alias; + $item['context_key'] = $data['context_key']; + $item['menuindex'] = $menuindex++; + $resources = array_merge( + $resources, + $this->createResource($item, $uri . '/' . $alias, $data['id']) + ); + } + } + + return $resources; + } +} + +/** @var array $config */ +if (!file_exists(dirname(__FILE__) . '/config.inc.php')) { + exit('Could not load MODX config. Please specify correct MODX_CORE_PATH constant in config file!'); +} +$config = require(dirname(__FILE__) . '/config.inc.php'); +require_once MODX_CORE_PATH . 'model/modx/modx.class.php'; +$modx = new modX(); +$install = new LinguaPackage($modx, $config); +$builder = $install->process(); + +if (!empty($config['download'])) { + $name = $builder->getSignature() . '.transport.zip'; + if ($content = file_get_contents(MODX_CORE_PATH . '/packages/' . $name)) { + header('Content-Description: File Transfer'); + header('Content-Type: application/octet-stream'); + header('Content-Disposition: attachment; filename=' . $name); + header('Content-Transfer-Encoding: binary'); + header('Expires: 0'); + header('Cache-Control: must-revalidate'); + header('Pragma: public'); + header('Content-Length: ' . strlen($content)); + exit($content); + } +} diff --git a/_build/config.inc.php b/_build/config.inc.php new file mode 100644 index 0000000..7dc2bea --- /dev/null +++ b/_build/config.inc.php @@ -0,0 +1,43 @@ + 1)) { + $path = dirname($path); + } + define('MODX_CORE_PATH', $path . '/core/'); +} + +return [ + 'name' => 'Lingua', + 'name_lower' => 'lingua', + 'version' => '3.0.3', + 'release' => 'beta', + // Install package to site right after build + 'install' => true, + // Which elements should be updated on package upgrade + 'update' => [ + 'chunks' => true, + 'menus' => true, + 'permission' => true, + 'plugins' => true, + 'policies' => true, + 'policy_templates' => true, + 'resources' => false, + 'settings' => false, + 'snippets' => true, + 'templates' => false, + 'widgets' => false, + ], + // Which elements should be static by default + 'static' => [ + 'plugins' => false, + 'snippets' => false, + 'chunks' => false, + ], + // Log settings + 'log_level' => !empty($_REQUEST['download']) ? 0 : 3, + 'log_target' => PHP_SAPI === 'cli' ? 'ECHO' : 'HTML', + // Download transport.zip after build + 'download' => !empty($_REQUEST['download']), +]; \ No newline at end of file diff --git a/_build/elements/_policies.php b/_build/elements/_policies.php new file mode 100644 index 0000000..51695d7 --- /dev/null +++ b/_build/elements/_policies.php @@ -0,0 +1,10 @@ + [ + 'description' => 'Lingua policy description.', + 'data' => [ + 'lingua_save' => true, + ] + ], +]; diff --git a/_build/elements/_policy_templates.php b/_build/elements/_policy_templates.php new file mode 100644 index 0000000..0eed480 --- /dev/null +++ b/_build/elements/_policy_templates.php @@ -0,0 +1,11 @@ + [ + 'description' => 'Lingua policy template description.', + 'template_group' => 1, + 'permissions' => [ + 'lingua_save' => [], + ] + ], +]; diff --git a/_build/elements/_resources.php b/_build/elements/_resources.php new file mode 100644 index 0000000..d84ed01 --- /dev/null +++ b/_build/elements/_resources.php @@ -0,0 +1,33 @@ + [ + 'index' => [ + 'pagetitle' => 'Home', + 'template' => 1, + 'hidemenu' => false, + ], + 'service' => [ + 'pagetitle' => 'Service', + 'template' => 0, + 'hidemenu' => true, + 'published' => false, + 'resources' => [ + '404' => [ + 'pagetitle' => '404', + 'template' => 1, + 'hidemenu' => true, + 'uri' => '404', + 'uri_override' => true, + ], + 'sitemap.xml' => [ + 'pagetitle' => 'Sitemap', + 'template' => 0, + 'hidemenu' => true, + 'uri' => 'sitemap.xml', + 'uri_override' => true, + ], + ], + ], + ], +]; \ No newline at end of file diff --git a/_build/elements/_templates.php b/_build/elements/_templates.php new file mode 100644 index 0000000..d4d3cd1 --- /dev/null +++ b/_build/elements/_templates.php @@ -0,0 +1,8 @@ + [ + 'file' => 'base', + 'description' => 'Base template', + ], +]; diff --git a/_build/elements/_widgets.php b/_build/elements/_widgets.php new file mode 100644 index 0000000..fec0945 --- /dev/null +++ b/_build/elements/_widgets.php @@ -0,0 +1,12 @@ + [ + 'description' => '', + 'type' => 'file', + 'content' => '', + 'namespace' => 'lingua', + 'lexicon' => 'lingua:dashboards', + 'size' => 'half', + ], +]; diff --git a/_build/elements/chunks.php b/_build/elements/chunks.php new file mode 100644 index 0000000..68158e1 --- /dev/null +++ b/_build/elements/chunks.php @@ -0,0 +1,20 @@ + [ + 'file' => 'lingua.resourcetv.row.chunk', + 'description' => '', + ], + 'lingua.resourcetv.hidden.row' => [ + 'file' => 'lingua.resourcetv.hidden.row.chunk', + 'description' => '', + ], + 'lingua.selector.item' => [ + 'file' => 'lingua.selector.item.chunk', + 'description' => '', + ], + 'lingua.selector.wrapper' => [ + 'file' => 'lingua.selector.wrapper.chunk', + 'description' => '', + ], +]; diff --git a/_build/elements/menus.php b/_build/elements/menus.php new file mode 100644 index 0000000..2c79bab --- /dev/null +++ b/_build/elements/menus.php @@ -0,0 +1,9 @@ + [ + 'description' => 'lingua_desc', + 'action' => 'home', + //'icon' => '', + ], +]; diff --git a/_build/elements/plugins.php b/_build/elements/plugins.php new file mode 100644 index 0000000..5e6db4a --- /dev/null +++ b/_build/elements/plugins.php @@ -0,0 +1,26 @@ + [ + 'file' => 'lingua.plugin', + 'description' => '', + 'events' => [ + 'OnHandleRequest' => [], + 'OnInitCulture' => [], + /////////////////// MANAGER SIDE /////////////////// + 'OnDocFormPrerender' => [], + 'OnResourceTVFormRender' => [], + 'OnDocFormSave' => [], + 'OnResourceDuplicate' => [], + 'OnEmptyTrash' => [], + 'OnTemplateSave' => [], + 'OnTempFormSave' => [], + 'OnTVFormSave' => [], + 'OnSnipFormSave' => [], + 'OnPluginFormSave' => [], + 'OnMediaSourceFormSave' => [], + 'OnChunkFormSave' => [], + 'OnSiteRefresh' => [], + ], + ], +]; diff --git a/_build/elements/settings.php b/_build/elements/settings.php new file mode 100644 index 0000000..e9f63d6 --- /dev/null +++ b/_build/elements/settings.php @@ -0,0 +1,49 @@ + [ + 'xtype' => 'combo-boolean', + 'value' => false, + 'area' => 'general', + ], + 'lingua.get_key' => [ + 'xtype' => 'textfield', + 'value' => 'lang', + 'area' => 'URL', + ], + 'lingua.code_field' => [ + 'xtype' => 'textfield', + 'value' => 'lang_code', + 'area' => 'URL', + ], + 'lingua.contexts' => [ + 'xtype' => 'textfield', + 'value' => 'web', + 'area' => 'general', + ], + 'lingua.parents' => [ + 'xtype' => 'textfield', + 'value' => '', + 'area' => 'general', + ], + 'lingua.ids' => [ + 'xtype' => 'textfield', + 'value' => '', + 'area' => 'general', + ], + 'lingua.detect_browser' => [ + 'xtype' => 'combo-boolean', + 'value' => false, + 'area' => 'general', + ], + 'lingua.empty_returns_default' => [ + 'xtype' => 'combo-boolean', + 'value' => false, + 'area' => 'general', + ], + 'lingua.form_customization' => [ + 'xtype' => 'combo-boolean', + 'value' => false, + 'area' => 'manager', + ], +]; diff --git a/_build/elements/snippets.php b/_build/elements/snippets.php new file mode 100644 index 0000000..56f2c58 --- /dev/null +++ b/_build/elements/snippets.php @@ -0,0 +1,86 @@ + [ + 'file' => 'lingua.selector.snippet', + 'description' => 'Languages selector drop down.', + 'properties' => [ + 'codeField' => [ + 'type' => 'textfield', + 'value' => '', + ], + 'getKey' => [ + 'type' => 'textfield', + 'value' => '', + ], + 'phsPrefix' => [ + 'type' => 'textfield', + 'value' => '', + ], + 'sortby' => [ + 'type' => 'list', + 'value' => 'id', + 'options' => [ + [ + 'text' => 'ID', + 'value' => 'id', + 'name' => 'ID', + ], + [ + 'text' => 'iso_code', + 'value' => 'iso_code', + 'name' => 'iso_code', + ], + ], + ], + 'sortdir' => [ + 'type' => 'list', + 'value' => 'asc', + 'options' => [ + [ + 'text' => 'ASC', + 'value' => 'asc', + 'name' => 'ASC', + ], + [ + 'text' => 'DESC', + 'value' => 'desc', + 'name' => 'DESC', + ], + ], + ], + 'tplItem' => [ + 'type' => 'textfield', + 'value' => 'lingua.selector.item', + ], + 'tplWrapper' => [ + 'type' => 'textfield', + 'value' => 'lingua.selector.wrapper', + ], + ], + ], + 'lingua.cultureKey' => [ + 'file' => 'lingua.culturekey.snippet', + 'description' => 'Helper snippet to get the run time cultureKey, which is set by lingua\'s plugin.', + 'properties' => [], + ], + 'lingua.getField' => [ + 'file' => 'lingua.getfield.snippet', + 'description' => 'Get the value of the given field for the run time culture key.', + 'properties' => [], + ], + 'lingua.getValue' => [ + 'file' => 'lingua.getvalue.snippet', + 'description' => 'Get the value of the clone\'s field for the run time culture key.', + 'properties' => [ + 'emptyReturnsDefault' => [ + 'type' => 'combo-boolean', + 'value' => false, + ], + 'field' => [ + 'type' => 'textfield', + 'value' => '', + ] + ], + ], +]; diff --git a/_build/lingua/build.config.sample.php b/_build/lingua/build.config.sample.php deleted file mode 100644 index 4e0a111..0000000 --- a/_build/lingua/build.config.sample.php +++ /dev/null @@ -1,5 +0,0 @@ - - * - * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface - * - * Lingua 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 version 3. - * - * Lingua 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 for more details. - * - * You should have received a copy of the GNU General Public License along with - * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place, - * Suite 330, Boston, MA 02111-1307 USA - * - * Lingua build script - * - * @package lingua - * @subpackage build - */ -$mtime = microtime(); -$mtime = explode(" ", $mtime); -$mtime = $mtime[1] + $mtime[0]; -$tstart = $mtime; -set_time_limit(0); - -/* define version */ -define('PKG_NAME', 'Lingua'); -define('PKG_NAME_LOWER', 'lingua'); - -/* override with your own defines here (see build.config.sample.php) */ -require_once dirname(__FILE__) . '/build.config.php'; -require_once realpath(MODX_CORE_PATH) . '/model/modx/modx.class.php'; - -/* define sources */ -$root = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR; -$sources = array( - 'root' => $root, - 'build' => BUILD_PATH, - 'resolvers' => BUILD_PATH . 'resolvers' . DIRECTORY_SEPARATOR, - 'validators' => realpath(BUILD_PATH . 'validators/') . DIRECTORY_SEPARATOR, - 'data' => BUILD_PATH . 'data' . DIRECTORY_SEPARATOR, - 'properties' => realpath(BUILD_PATH . 'data/properties/') . DIRECTORY_SEPARATOR, - 'source_core' => realpath(MODX_CORE_PATH . 'components') . DIRECTORY_SEPARATOR . PKG_NAME_LOWER, - 'source_assets' => realpath(MODX_ASSETS_PATH . 'components') . DIRECTORY_SEPARATOR . PKG_NAME_LOWER, - 'docs' => realpath(MODX_CORE_PATH . 'components/' . PKG_NAME_LOWER . '/docs/') . DIRECTORY_SEPARATOR, - 'lexicon' => realpath(MODX_CORE_PATH . 'components/' . PKG_NAME_LOWER . '/lexicon/') . DIRECTORY_SEPARATOR, -); -unset($root); - -$modx = new modX(); -$modx->initialize('mgr'); -$modx->setLogLevel(modX::LOG_LEVEL_INFO); -$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML'); -echo '
';
-
-$lingua = $modx->getService('lingua', 'Lingua', MODX_CORE_PATH . 'components/lingua/model/lingua/');
-
-if (!($lingua instanceof Lingua)) {
- return '';
-}
-define('PKG_VERSION', Lingua::VERSION);
-define('PKG_RELEASE', Lingua::RELEASE);
-
-$modx->loadClass('transport.modPackageBuilder', '', false, true);
-$builder = new modPackageBuilder($modx);
-$builder->createPackage(PKG_NAME_LOWER, PKG_VERSION, PKG_RELEASE);
-$builder->registerNamespace(PKG_NAME_LOWER, false, true, '{core_path}components/' . PKG_NAME_LOWER . '/');
-
-/**
- * MENU & ACTION
- */
-$menu = include $sources['data'] . 'transport.menu.php';
-if (empty($menu)) {
- $modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in menu.');
-} else {
- $modx->log(modX::LOG_LEVEL_INFO, 'Packaging in menu...');
- $menuVehicle = $builder->createVehicle($menu, array(
- xPDOTransport::PRESERVE_KEYS => true,
- xPDOTransport::UPDATE_OBJECT => true,
- xPDOTransport::UNIQUE_KEY => 'text',
- xPDOTransport::RELATED_OBJECTS => true,
- xPDOTransport::RELATED_OBJECT_ATTRIBUTES => array(
- 'Action' => array(
- xPDOTransport::PRESERVE_KEYS => false,
- xPDOTransport::UPDATE_OBJECT => true,
- xPDOTransport::UNIQUE_KEY => array('namespace', 'controller'),
- ),
- ),
- ));
- $modx->log(modX::LOG_LEVEL_INFO, 'Adding in Menu & Action done.');
- $builder->putVehicle($menuVehicle);
- unset($menuVehicle, $menu);
-}
-
-/**
- * SYSTEM SETTINGS
- */
-$settings = include $sources['data'] . 'transport.settings.php';
-if (!is_array($settings)) {
- $modx->log(modX::LOG_LEVEL_ERROR, 'Could not package in settings.');
-} else {
- $modx->log(modX::LOG_LEVEL_INFO, 'Packaging in System Settings...');
- $settingAttributes = array(
- xPDOTransport::UNIQUE_KEY => 'key',
- xPDOTransport::PRESERVE_KEYS => true,
- xPDOTransport::UPDATE_OBJECT => false,
- );
- foreach ($settings as $setting) {
- $settingVehicle = $builder->createVehicle($setting, $settingAttributes);
- $builder->putVehicle($settingVehicle);
- }
- $modx->log(modX::LOG_LEVEL_INFO, 'Packaged in ' . count($settings) . ' System Settings done.');
- unset($settingVehicle, $settings, $setting, $settingAttributes);
-}
-
-/**
- * CATEGORY
- */
-$category = $modx->newObject('modCategory');
-$category->set('id', 1);
-$category->set('category', 'Lingua');
-
-/**
- * SNIPPETS
- */
-$modx->log(modX::LOG_LEVEL_INFO, 'Adding in snippets.');
-$snippets = include $sources['data'] . 'transport.snippets.php';
-if (is_array($snippets)) {
- $category->addMany($snippets);
- $modx->log(modX::LOG_LEVEL_INFO, 'Adding in ' . count($snippets) . ' snippets done.');
-} else {
- $modx->log(modX::LOG_LEVEL_FATAL, 'Adding snippets failed.');
-}
-
-
-/**
- * PLUGINS
- */
-$modx->log(modX::LOG_LEVEL_INFO, 'Adding in plugins.');
-$plugins = include $sources['data'] . 'transport.plugins.php';
-if (is_array($plugins)) {
- $category->addMany($plugins);
- $modx->log(modX::LOG_LEVEL_INFO, 'Adding in ' . count($plugins) . ' plugins done.');
-} else {
- $modx->log(modX::LOG_LEVEL_FATAL, 'Adding plugins failed.');
-}
-
-/**
- * Apply category to the elements
- */
-$elementsAttribute = array(
- xPDOTransport::UNIQUE_KEY => 'category',
- xPDOTransport::PRESERVE_KEYS => false,
- xPDOTransport::UPDATE_OBJECT => true,
- xPDOTransport::RELATED_OBJECTS => true,
- xPDOTransport::RELATED_OBJECT_ATTRIBUTES => array(
- 'Snippets' => array(
- xPDOTransport::PRESERVE_KEYS => false,
- xPDOTransport::UPDATE_OBJECT => true,
- xPDOTransport::UNIQUE_KEY => 'name',
- ),
- 'Chunks' => array(
- xPDOTransport::PRESERVE_KEYS => false,
- xPDOTransport::UPDATE_OBJECT => true,
- xPDOTransport::UNIQUE_KEY => 'name',
- ),
- 'Plugins' => array(
- xPDOTransport::PRESERVE_KEYS => false,
- xPDOTransport::UPDATE_OBJECT => true,
- xPDOTransport::UNIQUE_KEY => 'name',
- ),
- 'PluginEvents' => array(
- xPDOTransport::PRESERVE_KEYS => true,
- xPDOTransport::UPDATE_OBJECT => false,
- xPDOTransport::UNIQUE_KEY => array('pluginid', 'event'),
- ),
- )
-);
-$elementsVehicle = $builder->createVehicle($category, $elementsAttribute);
-
-/**
- * FILE RESOLVERS
- */
-$elementsVehicle->resolve('file', array(
- 'source' => $sources['source_core'],
- 'target' => "return MODX_CORE_PATH . 'components/';",
-));
-$elementsVehicle->resolve('file', array(
- 'source' => $sources['source_assets'],
- 'target' => "return MODX_ASSETS_PATH . 'components/';",
-));
-$modx->log(modX::LOG_LEVEL_INFO, 'Adding in files done.');
-
-/**
- * RESOLVERS
- */
-$modx->log(modX::LOG_LEVEL_INFO, 'Adding in PHP resolvers...');
-flush();
-$elementsVehicle->resolve('php', array(
- 'source' => $sources['resolvers'] . 'tables.resolver.php',
-));
-
-$modx->log(modX::LOG_LEVEL_INFO, 'Adding in PHP resolvers done.');
-
-/**
- * VALIDATORS
- */
-$modx->log(modX::LOG_LEVEL_INFO, 'Adding in PHP validators...');
-$elementsVehicle->validate('php', array(
- 'source' => $sources['validators'] . 'tables.validator.php',
-));
-$modx->log(modX::LOG_LEVEL_INFO, 'Adding in PHP validators done.');
-
-$builder->putVehicle($elementsVehicle);
-unset($elementsVehicle);
-$modx->log(modX::LOG_LEVEL_INFO, 'Packaged in Elements done.');
-flush();
-
-
-/**
- * license file, readme and setup options
- */
-$builder->setPackageAttributes(array(
- 'license' => file_get_contents($sources['docs'] . 'license.txt'),
- 'readme' => file_get_contents($sources['docs'] . 'readme.txt'),
- 'changelog' => file_get_contents($sources['docs'] . 'changelog.txt'),
-));
-
-$builder->pack();
-
-$mtime = microtime();
-$mtime = explode(" ", $mtime);
-$mtime = $mtime[1] + $mtime[0];
-$tend = $mtime;
-$totalTime = ($tend - $tstart);
-$totalTime = sprintf("%2.4f s", $totalTime);
-
-$modx->log(modX::LOG_LEVEL_INFO, "\n
" . PKG_NAME . " package built.
\nExecution time: {$totalTime}\n");
-
-exit();
diff --git a/_build/lingua/data/properties/default.lingua.getvalue.snippet.properties.js b/_build/lingua/data/properties/default.lingua.getvalue.snippet.properties.js
deleted file mode 100644
index 5d519ae..0000000
--- a/_build/lingua/data/properties/default.lingua.getvalue.snippet.properties.js
+++ /dev/null
@@ -1 +0,0 @@
-[{"name":"emptyReturnsDefault","desc":"setting_lingua.empty_returns_default_desc","xtype":"combo-boolean","options":[],"value":false,"lexicon":"lingua:default","overridden":false,"desc_trans":"If translated field has empty value, should Lingue return value from default language or not?","area":"","area_trans":"","menu":null},{"name":"field","desc":"prop_field_desc","xtype":"textfield","options":[],"value":"","lexicon":"lingua:property","overridden":false,"desc_trans":"Which field this snippet should take value from? Options: pagetitle, longtitle, description, alias, link_attributes, introtext, content, menutitle, uri, uri_override, properties, OR any TV's name","area":"","area_trans":"","menu":null}]
\ No newline at end of file
diff --git a/_build/lingua/data/properties/default.lingua.selector.snippet.properties.js b/_build/lingua/data/properties/default.lingua.selector.snippet.properties.js
deleted file mode 100644
index 48fa184..0000000
--- a/_build/lingua/data/properties/default.lingua.selector.snippet.properties.js
+++ /dev/null
@@ -1 +0,0 @@
-[{"name":"codeField","desc":"prop_codeField_desc","xtype":"textfield","options":[],"value":"lang_code","lexicon":"lingua:property","overridden":false,"desc_trans":"Field name to be used for selector","area":"","area_trans":"","menu":null},{"name":"getKey","desc":"prop_getKey_desc","xtype":"textfield","options":[],"value":"lang","lexicon":"lingua:property","overridden":false,"desc_trans":"Request key","area":"","area_trans":"","menu":null},{"name":"phsPrefix","desc":"prop_phsPrefix_desc","xtype":"textfield","options":[],"value":"lingua.","lexicon":"lingua:property","overridden":false,"desc_trans":"Additional prefix for templates","area":"","area_trans":"","menu":null},{"name":"sortby","desc":"prop_sortby_desc","xtype":"list","options":[{"text":"ID","value":"id","name":"ID"},{"text":"iso_code","value":"iso_code","name":"iso_code"}],"value":"id","lexicon":"lingua:property","overridden":false,"desc_trans":"Sort the list by","area":"","area_trans":"","menu":null},{"name":"sortdir","desc":"prop_sortdir_desc","xtype":"list","options":[{"text":"ASC","value":"asc","name":"ASC"},{"text":"DESC","value":"desc","name":"DESC"}],"value":"asc","lexicon":"lingua:property","overridden":false,"desc_trans":"Sort direction","area":"","area_trans":"","menu":null},{"name":"tplItem","desc":"prop_tplItem_desc","xtype":"textfield","options":[],"value":"lingua.selector.item","lexicon":"lingua:property","overridden":false,"desc_trans":"Item template","area":"","area_trans":"","menu":null},{"name":"tplWrapper","desc":"prop_tplWrapper_desc","xtype":"textfield","options":[],"value":"lingua.selector.wrapper","lexicon":"lingua:property","overridden":false,"desc_trans":"Wrapper template","area":"","area_trans":"","menu":null}]
\ No newline at end of file
diff --git a/_build/lingua/data/properties/lingua.getvalue.snippet.properties.php b/_build/lingua/data/properties/lingua.getvalue.snippet.properties.php
deleted file mode 100644
index 456b4ec..0000000
--- a/_build/lingua/data/properties/lingua.getvalue.snippet.properties.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
- *
- * Lingua 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 version 3.
- *
- * Lingua 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 for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
- * Suite 330, Boston, MA 02111-1307 USA
- *
- * Lingua build script
- *
- * @package lingua
- * @subpackage build
- */
-
-if (!function_exists("fixJson")) {
-
- function fixJson(array $array) {
- $fixed = array();
- foreach ($array as $k => $v) {
- $fixed[] = array(
- 'name' => $v['name'],
- 'desc' => $v['desc'],
- 'type' => $v['xtype'],
- 'options' => empty($v['options']) ? '' : $v['options'],
- 'value' => $v['value'],
- 'lexicon' => $v['lexicon'],
- );
- }
- return $fixed;
- }
-
-}
-
-ob_start();
-include dirname(__FILE__) . '/default.lingua.getvalue.snippet.properties.js';
-$json = ob_get_contents();
-ob_end_clean();
-
-$properties = $modx->fromJSON($json);
-$properties = fixJson($properties);
-
-return $properties;
\ No newline at end of file
diff --git a/_build/lingua/data/properties/lingua.selector.snippet.properties.php b/_build/lingua/data/properties/lingua.selector.snippet.properties.php
deleted file mode 100644
index d5b4d72..0000000
--- a/_build/lingua/data/properties/lingua.selector.snippet.properties.php
+++ /dev/null
@@ -1,55 +0,0 @@
-
- *
- * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
- *
- * Lingua 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 version 3.
- *
- * Lingua 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 for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
- * Suite 330, Boston, MA 02111-1307 USA
- *
- * Lingua build script
- *
- * @package lingua
- * @subpackage build
- */
-
-if (!function_exists("fixJson")) {
-
- function fixJson(array $array) {
- $fixed = array();
- foreach ($array as $k => $v) {
- $fixed[] = array(
- 'name' => $v['name'],
- 'desc' => $v['desc'],
- 'type' => $v['xtype'],
- 'options' => empty($v['options']) ? '' : $v['options'],
- 'value' => $v['value'],
- 'lexicon' => $v['lexicon'],
- );
- }
- return $fixed;
- }
-
-}
-
-ob_start();
-include dirname(__FILE__) . '/default.lingua.selector.snippet.properties.js';
-$json = ob_get_contents();
-ob_end_clean();
-
-$properties = $modx->fromJSON($json);
-$properties = fixJson($properties);
-
-return $properties;
\ No newline at end of file
diff --git a/_build/lingua/data/transport.menu.php b/_build/lingua/data/transport.menu.php
deleted file mode 100644
index 96406ea..0000000
--- a/_build/lingua/data/transport.menu.php
+++ /dev/null
@@ -1,50 +0,0 @@
-
- *
- * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
- *
- * Lingua 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 version 3.
- *
- * Lingua 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 for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
- * Suite 330, Boston, MA 02111-1307 USA
- *
- * @package lingua
- * @subpackage build
- */
-
-$action = $modx->newObject('modAction');
-$action->fromArray(array(
- 'id' => 1,
- 'namespace' => 'lingua',
- 'parent' => 0,
- 'controller' => 'index',
- 'haslayout' => true,
- 'lang_topics' => 'lingua:default',
- 'assets' => '',
- ), '', true, true);
-
-$menu = $modx->newObject('modMenu');
-$menu->fromArray(array(
- 'text' => 'lingua',
- 'parent' => 'components',
- 'description' => 'lingua_desc',
- 'icon' => 'images/icons/plugin.gif',
- 'menuindex' => 0,
- 'params' => '',
- 'handler' => '',
- ), '', true, true);
-$menu->addOne($action);
-unset($menus);
-
-return $menu;
\ No newline at end of file
diff --git a/_build/lingua/data/transport.plugin.events.php b/_build/lingua/data/transport.plugin.events.php
deleted file mode 100644
index f5d07f2..0000000
--- a/_build/lingua/data/transport.plugin.events.php
+++ /dev/null
@@ -1,59 +0,0 @@
-
- *
- * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
- *
- * Lingua 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 version 3.
- *
- * Lingua 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 for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
- * Suite 330, Boston, MA 02111-1307 USA
- *
- * @package Lingua
- * @subpackage build
- */
-
-function setEventObjects(array $events = array()) {
- global $modx;
- $eventObjects = array();
- foreach ($events as $k => $v) {
- $eventObjects[$v] = $modx->newObject('modPluginEvent');
- $eventObjects[$v]->fromArray(array(
- 'event' => $v,
- 'priority' => 0,
- 'propertyset' => 0,
- ), '', true, true);
-
- }
- return $eventObjects;
-}
-$events = setEventObjects(array(
- 'OnHandleRequest',
- 'OnInitCulture',
- /////////////////// MANAGER SIDE ///////////////////
- 'OnDocFormPrerender',
- 'OnResourceTVFormRender',
- 'OnDocFormSave',
- 'OnResourceDuplicate',
- 'OnEmptyTrash',
- 'OnTemplateSave',
- 'OnTempFormSave',
- 'OnTVFormSave',
- 'OnSnipFormSave',
- 'OnPluginFormSave',
- 'OnMediaSourceFormSave',
- 'OnChunkFormSave',
- 'OnSiteRefresh',
-));
-
-return $events;
\ No newline at end of file
diff --git a/_build/lingua/data/transport.plugins.php b/_build/lingua/data/transport.plugins.php
deleted file mode 100644
index 0283d9d..0000000
--- a/_build/lingua/data/transport.plugins.php
+++ /dev/null
@@ -1,63 +0,0 @@
-
- *
- * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
- *
- * Lingua 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 version 3.
- *
- * Lingua 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 for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
- * Suite 330, Boston, MA 02111-1307 USA
- *
- * Lingua build script
- *
- * @package lingua
- * @subpackage build
- */
-
-/**
- * @param string $filename filename
- * @return string file content
- */
-if (!function_exists('getSnippetContent')) {
- function getSnippetContent($filename) {
- $o = file_get_contents($filename);
- $o = str_replace('', '', $o);
- $o = trim($o);
- return $o;
- }
-}
-
-$plugins = array();
-
-$plugins[0] = $modx->newObject('modPlugin');
-$plugins[0]->fromArray(array(
- 'id' => 0,
- 'property_preprocess' => 1,
- 'name' => 'Lingua',
- 'description' => '',
- 'plugincode' => getSnippetContent($sources['source_core'] . '/elements/plugins/lingua.plugin.php'),
- ), '', true, true);
-
-/* add plugin events */
-$events = include $sources['data'] . 'transport.plugin.events.php';
-if (is_array($events) && !empty($events)) {
- $plugins[0]->addMany($events);
- $modx->log(xPDO::LOG_LEVEL_INFO, 'Packaged in ' . count($events) . ' Plugin Events.');
- flush();
-} else {
- $modx->log(xPDO::LOG_LEVEL_ERROR, 'Could not find plugin events!');
-}
-
-return $plugins;
\ No newline at end of file
diff --git a/_build/lingua/data/transport.settings.php b/_build/lingua/data/transport.settings.php
deleted file mode 100644
index 49e4d8f..0000000
--- a/_build/lingua/data/transport.settings.php
+++ /dev/null
@@ -1,109 +0,0 @@
-
- *
- * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
- *
- * Lingua 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 version 3.
- *
- * Lingua 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 for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
- * Suite 330, Boston, MA 02111-1307 USA
- *
- * Lingua build script
- *
- * @package lingua
- * @subpackage build
- */
-
-$settings['lingua.debug'] = $modx->newObject('modSystemSetting');
-$settings['lingua.debug']->fromArray(array(
- 'key' => 'lingua.debug',
- 'value' => '0',
- 'xtype' => 'combo-boolean',
- 'namespace' => 'lingua',
- 'area' => 'general',
- ), '', true, true);
-
-$settings['lingua.get_key'] = $modx->newObject('modSystemSetting');
-$settings['lingua.get_key']->fromArray(array(
- 'key' => 'lingua.get_key',
- 'value' => 'lang',
- 'xtype' => 'textfield',
- 'namespace' => 'lingua',
- 'area' => 'URL',
- ), '', true, true);
-
-$settings['lingua.code_field'] = $modx->newObject('modSystemSetting');
-$settings['lingua.code_field']->fromArray(array(
- 'key' => 'lingua.code_field',
- 'value' => 'lang_code',
- 'xtype' => 'textfield',
- 'namespace' => 'lingua',
- 'area' => 'URL',
- ), '', true, true);
-
-$settings['lingua.contexts'] = $modx->newObject('modSystemSetting');
-$settings['lingua.contexts']->fromArray(array(
- 'key' => 'lingua.contexts',
- 'value' => 'web',
- 'xtype' => 'textfield',
- 'namespace' => 'lingua',
- 'area' => 'general',
- ), '', true, true);
-
-$settings['lingua.parents'] = $modx->newObject('modSystemSetting');
-$settings['lingua.parents']->fromArray(array(
- 'key' => 'lingua.parents',
- 'value' => '',
- 'xtype' => 'textfield',
- 'namespace' => 'lingua',
- 'area' => 'general',
- ), '', true, true);
-
-$settings['lingua.ids'] = $modx->newObject('modSystemSetting');
-$settings['lingua.ids']->fromArray(array(
- 'key' => 'lingua.ids',
- 'value' => '',
- 'xtype' => 'textfield',
- 'namespace' => 'lingua',
- 'area' => 'general',
- ), '', true, true);
-
-$settings['lingua.detect_browser'] = $modx->newObject('modSystemSetting');
-$settings['lingua.detect_browser']->fromArray(array(
- 'key' => 'lingua.detect_browser',
- 'value' => '0',
- 'xtype' => 'combo-boolean',
- 'namespace' => 'lingua',
- 'area' => 'general',
- ), '', true, true);
-
-$settings['lingua.empty_returns_default'] = $modx->newObject('modSystemSetting');
-$settings['lingua.empty_returns_default']->fromArray(array(
- 'key' => 'lingua.empty_returns_default',
- 'value' => '0',
- 'xtype' => 'combo-boolean',
- 'namespace' => 'lingua',
- 'area' => 'general',
- ), '', true, true);
-
-$settings['lingua.form_customization'] = $modx->newObject('modSystemSetting');
-$settings['lingua.form_customization']->fromArray(array(
- 'key' => 'lingua.form_customization',
- 'value' => '0',
- 'xtype' => 'combo-boolean',
- 'namespace' => 'lingua',
- 'area' => 'manager',
- ), '', true, true);
-
-return $settings;
\ No newline at end of file
diff --git a/_build/lingua/data/transport.snippets.php b/_build/lingua/data/transport.snippets.php
deleted file mode 100644
index 7228998..0000000
--- a/_build/lingua/data/transport.snippets.php
+++ /dev/null
@@ -1,86 +0,0 @@
-
- *
- * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
- *
- * Lingua 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 version 3.
- *
- * Lingua 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 for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
- * Suite 330, Boston, MA 02111-1307 USA
- *
- * Lingua build script
- *
- * @package lingua
- * @subpackage build
- */
-
-/**
- * @param string $filename filename
- * @return string file content
- */
-if (!function_exists('getSnippetContent')) {
- function getSnippetContent($filename) {
- $o = file_get_contents($filename);
- $o = str_replace('', '', $o);
- $o = trim($o);
- return $o;
- }
-}
-
-$snippets = array();
-
-$snippets['lingua.selector'] = $modx->newObject('modSnippet');
-$snippets['lingua.selector']->fromArray(array(
- 'id' => 0,
- 'property_preprocess' => 1,
- 'name' => 'lingua.selector',
- 'description' => 'Languages selector drop down.',
- 'snippet' => getSnippetContent($sources['source_core'] . '/elements/snippets/lingua.selector.snippet.php'),
- ), '', true, true);
-$properties = include $sources['properties'] . 'lingua.selector.snippet.properties.php';
-$snippets['lingua.selector']->setProperties($properties);
-unset($properties);
-
-$snippets['lingua.cultureKey'] = $modx->newObject('modSnippet');
-$snippets['lingua.cultureKey']->fromArray(array(
- 'id' => 0,
- 'property_preprocess' => 1,
- 'name' => 'lingua.cultureKey',
- 'description' => 'Helper snippet to get the run time cultureKey, which is set by lingua\'s plugin.',
- 'snippet' => getSnippetContent($sources['source_core'] . '/elements/snippets/lingua.culturekey.snippet.php'),
- ), '', true, true);
-
-$snippets['lingua.getField'] = $modx->newObject('modSnippet');
-$snippets['lingua.getField']->fromArray(array(
- 'id' => 0,
- 'property_preprocess' => 1,
- 'name' => 'lingua.getField',
- 'description' => 'Get the value of the given field for the run time culture key.',
- 'snippet' => getSnippetContent($sources['source_core'] . '/elements/snippets/lingua.getfield.snippet.php'),
- ), '', true, true);
-
-$snippets['lingua.getValue'] = $modx->newObject('modSnippet');
-$snippets['lingua.getValue']->fromArray(array(
- 'id' => 0,
- 'property_preprocess' => 1,
- 'name' => 'lingua.getValue',
- 'description' => 'Get the value of the clone\'s field for the run time culture key.',
- 'snippet' => getSnippetContent($sources['source_core'] . '/elements/snippets/lingua.getvalue.snippet.php'),
- ), '', true, true);
-$properties = include $sources['properties'] . 'lingua.selector.snippet.properties.php';
-$snippets['lingua.getValue']->setProperties($properties);
-unset($properties);
-
-return $snippets;
\ No newline at end of file
diff --git a/_build/lingua/resolvers/tables.resolver.php b/_build/lingua/resolvers/tables.resolver.php
deleted file mode 100644
index 049e2de..0000000
--- a/_build/lingua/resolvers/tables.resolver.php
+++ /dev/null
@@ -1,89 +0,0 @@
-
- *
- * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
- *
- * Lingua 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 version 3.
- *
- * Lingua 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 for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
- * Suite 330, Boston, MA 02111-1307 USA
- *
- * Resolve creating db tables
- *
- * @package lingua
- * @subpackage build
- */
-if ($modx = & $object->xpdo) {
- // http://forums.modx.com/thread/88734/package-version-check#dis-post-489104
- $c = $modx->newQuery('transport.modTransportPackage');
- $c->where(array(
- 'workspace' => 1,
- "(SELECT
- `signature`
- FROM {$modx->getTableName('modTransportPackage')} AS `latestPackage`
- WHERE `latestPackage`.`package_name` = `modTransportPackage`.`package_name`
- ORDER BY
- `latestPackage`.`version_major` DESC,
- `latestPackage`.`version_minor` DESC,
- `latestPackage`.`version_patch` DESC,
- IF(`release` = '' OR `release` = 'ga' OR `release` = 'pl','z',`release`) DESC,
- `latestPackage`.`release_index` DESC
- LIMIT 1,1) = `modTransportPackage`.`signature`",
- ));
- $c->where(array(
- 'modTransportPackage.signature:LIKE' => '%lingua%',
- 'OR:modTransportPackage.package_name:LIKE' => '%lingua%',
- 'installed:IS NOT' => null
- ));
- $oldPackage = $modx->getObject('transport.modTransportPackage', $c);
-
- switch ($options[xPDOTransport::PACKAGE_ACTION]) {
- case xPDOTransport::ACTION_INSTALL:
- case xPDOTransport::ACTION_UPGRADE:
- $modelPath = $modx->getOption('core_path') . 'components/lingua/model/';
- $tablePrefix = $modx->getOption('lingua.table_prefix', null, $modx->config[modX::OPT_TABLE_PREFIX] . 'lingua_');
- $modx->addPackage('lingua', $modelPath, $tablePrefix);
- $modx->addExtensionPackage('lingua', '[[++core_path]]components/lingua/model/', array('tablePrefix' => $tablePrefix));
-
- $manager = $modx->getManager();
- if ($manager->createObjectContainer('linguaLangs')) {
- $defaults = include $modx->getOption('core_path') . 'components/lingua/defaults/default.langs.php';
- foreach ($defaults as $default) {
- $default->save();
- }
- }
- $manager->createObjectContainer('linguaSiteContent');
- $manager->createObjectContainer('linguaSiteTmplvarContentvalues');
- $manager->createObjectContainer('linguaSiteTmplvars');
- $manager->createObjectContainer('linguaResourceScopes');
- if ($oldPackage && $oldPackage->compareVersion('2.0.0-rc1', '>')) {
- $manager->addField('linguaSiteContent', 'parent', array('after' => 'link_attributes'));
- $manager->addField('linguaSiteContent', 'isfolder', array('after' => 'parent'));
- $manager->addField('linguaSiteContent', 'context_key', array('after' => 'menutitle'));
- $manager->addField('linguaSiteContent', 'content_type', array('after' => 'context_key'));
- }
- if ($manager->createObjectContainer('linguaSiteTmplvarsPatterns')) {
- $defaults = include $modx->getOption('core_path') . 'components/lingua/defaults/default.patterns.php';
- foreach ($defaults as $default) {
- $default->save();
- }
- }
- break;
- case xPDOTransport::ACTION_UNINSTALL:
- $modx->removeExtensionPackage('lingua');
- break;
- }
-}
-
-return true;
diff --git a/_build/lingua/validators/tables.validator.php b/_build/lingua/validators/tables.validator.php
deleted file mode 100644
index 2afe5b3..0000000
--- a/_build/lingua/validators/tables.validator.php
+++ /dev/null
@@ -1,60 +0,0 @@
-
- *
- * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
- *
- * Lingua 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 version 3.
- *
- * Lingua 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 for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
- * Suite 330, Boston, MA 02111-1307 USA
- *
- * Validates before action.
- *
- * @package lingua
- * @subpackage build
- */
-if ($modx = & $object->xpdo) {
- switch ($options[xPDOTransport::PACKAGE_ACTION]) {
- case xPDOTransport::ACTION_INSTALL:
- if ($modx->getDebug()) {
- $modx->log(modX::LOG_LEVEL_WARN, 'validator xPDOTransport::ACTION_INSTALL');
- $modelPath = $modx->getOption('core_path') . 'components/lingua/model/';
- $tablePrefix = $modx->getOption('lingua.table_prefix', null, $modx->config[modX::OPT_TABLE_PREFIX] . 'lingua_');
- if ($modx->addPackage('lingua', $modelPath, $tablePrefix)) {
- $modx->log(modX::LOG_LEVEL_WARN, '[Lingua] package was added in validator xPDOTransport::ACTION_INSTALL');
- }
- }
- break;
- case xPDOTransport::ACTION_UPGRADE:
- break;
- case xPDOTransport::ACTION_UNINSTALL:
- if ($modx->getDebug()) {
- $modx->log(modX::LOG_LEVEL_WARN, 'validator xPDOTransport::ACTION_UNINSTALL');
- }
- $modelPath = $modx->getOption('core_path') . 'components/lingua/model/';
- $tablePrefix = $modx->getOption('lingua.table_prefix', null, $modx->config[modX::OPT_TABLE_PREFIX] . 'lingua_');
- if ($modx->addPackage('lingua', $modelPath, $tablePrefix)) {
- if ($modx->getDebug()) {
- $modx->log(modX::LOG_LEVEL_WARN, '[Lingua] package was added in validator xPDOTransport::ACTION_UNINSTALL');
- }
-// $manager = $modx->getManager();
-// $manager->removeObjectContainer('linguaLangs');
-// $manager->removeObjectContainer('linguaSiteContent');
-// $manager->removeObjectContainer('linguaSiteTmplvarContentvalues');
-// $manager->removeObjectContainer('linguaSiteTmplvars');
- }
- break;
- }
-}
-return true;
\ No newline at end of file
diff --git a/_build/resolvers/tables.php b/_build/resolvers/tables.php
new file mode 100644
index 0000000..c16af70
--- /dev/null
+++ b/_build/resolvers/tables.php
@@ -0,0 +1,146 @@
+
+ *
+ * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
+ *
+ * Lingua 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 version 3.
+ *
+ * Lingua 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 for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Resolve creating db tables
+ *
+ * @package lingua
+ * @subpackage build
+ */
+
+/** @var xPDO\Transport\xPDOTransport $transport */
+/** @var array $options */
+/** @var MODX\Revolution\modX $modx */
+
+if ($transport->xpdo) {
+ $modx = $transport->xpdo;
+
+ switch ($options[xPDOTransport::PACKAGE_ACTION]) {
+ case xPDOTransport::ACTION_INSTALL:
+ case xPDOTransport::ACTION_UPGRADE:
+ $modx->addPackage('Lingua\Model', MODX_CORE_PATH . 'components/lingua/src/', null, 'Lingua\\');
+ //$modx->addExtensionPackage('Lingua\Model', '[[++core_path]]components/lingua/src/');
+
+ $manager = $modx->getManager();
+ $objects = [];
+ $schemaFile = MODX_CORE_PATH . 'components/lingua/schema/lingua.mysql.schema.xml';
+ if (is_file($schemaFile)) {
+ $schema = new SimpleXMLElement($schemaFile, 0, true);
+ if (isset($schema->object)) {
+ foreach ($schema->object as $obj) {
+ $objects[] = (string)$obj['class'];
+ }
+ }
+ unset($schema);
+ }
+ foreach ($objects as $class) {
+ $class = 'Lingua\\Model\\' . $class;
+ $table = $modx->getTableName($class);
+
+ $sql = "SHOW TABLES LIKE '" . trim($table, '`') . "'";
+ $stmt = $modx->prepare($sql);
+ $newTable = true;
+ if ($stmt->execute() && $stmt->fetchAll()) {
+ $newTable = false;
+ }
+ // If the table is just created
+ if ($newTable) {
+ $manager->createObjectContainer($class);
+ } else {
+ // If the table exists
+ // 1. Operate with tables
+ $tableFields = [];
+ $c = $modx->prepare("SHOW COLUMNS IN {$modx->getTableName($class)}");
+ $c->execute();
+ while ($cl = $c->fetch(PDO::FETCH_ASSOC)) {
+ $tableFields[$cl['Field']] = $cl['Field'];
+ }
+ foreach ($modx->getFields($class) as $field => $v) {
+ if (in_array($field, $tableFields)) {
+ unset($tableFields[$field]);
+ $manager->alterField($class, $field);
+ } else {
+ $manager->addField($class, $field);
+ }
+ }
+ foreach ($tableFields as $field) {
+ $manager->removeField($class, $field);
+ }
+ // 2. Operate with indexes
+ $indexes = [];
+ $c = $modx->prepare("SHOW INDEX FROM {$modx->getTableName($class)}");
+ $c->execute();
+ while ($row = $c->fetch(PDO::FETCH_ASSOC)) {
+ $name = $row['Key_name'];
+ if (!isset($indexes[$name])) {
+ $indexes[$name] = [$row['Column_name']];
+ } else {
+ $indexes[$name][] = $row['Column_name'];
+ }
+ }
+ foreach ($indexes as $name => $values) {
+ sort($values);
+ $indexes[$name] = implode(':', $values);
+ }
+ $map = $modx->getIndexMeta($class);
+ // Remove old indexes
+ foreach ($indexes as $key => $index) {
+ if (!isset($map[$key])) {
+ if ($manager->removeIndex($class, $key)) {
+ $modx->log(modX::LOG_LEVEL_INFO, "Removed index \"{$key}\" of the table \"{$class}\"");
+ }
+ }
+ }
+ // Add or alter existing
+ foreach ($map as $key => $index) {
+ ksort($index['columns']);
+ $index = implode(':', array_keys($index['columns']));
+ if (!isset($indexes[$key])) {
+ if ($manager->addIndex($class, $key)) {
+ $modx->log(modX::LOG_LEVEL_INFO, "Added index \"{$key}\" in the table \"{$class}\"");
+ }
+ } else {
+ if ($index != $indexes[$key]) {
+ if ($manager->removeIndex($class, $key) && $manager->addIndex($class, $key)) {
+ $modx->log(modX::LOG_LEVEL_INFO,
+ "Updated index \"{$key}\" of the table \"{$class}\""
+ );
+ }
+ }
+ }
+ }
+ }
+ }
+ $defaults = include MODX_CORE_PATH . 'components/lingua/defaults/default.langs.php';
+ foreach ($defaults as $default) {
+ $default->save();
+ }
+ $defaults = include MODX_CORE_PATH . 'components/lingua/defaults/default.patterns.php';
+ foreach ($defaults as $default) {
+ $default->save();
+ }
+ break;
+ case xPDOTransport::ACTION_UNINSTALL:
+ $modx->removeExtensionPackage('Lingua');
+ break;
+ }
+}
+
+return true;
diff --git a/_build/resolvers/upgrade.php b/_build/resolvers/upgrade.php
new file mode 100644
index 0000000..00ab7ab
--- /dev/null
+++ b/_build/resolvers/upgrade.php
@@ -0,0 +1,70 @@
+
+ *
+ * This file is part of Lingua, a MODX's Lexicon switcher for front-end interface
+ *
+ * Lingua 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 version 3.
+ *
+ * Lingua 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 for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * Lingua; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
+ * Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Resolve change context setting for MODX3
+ *
+ * @package lingua
+ * @subpackage build
+ */
+
+/** @var xPDO\Transport\xPDOTransport $transport */
+/** @var array $options */
+/** @var MODX\Revolution\modX $modx */
+
+use MODX\Revolution\modSystemSetting;
+use MODX\Revolution\modContextSetting;
+
+if ($transport->xpdo) {
+ $modx = $transport->xpdo;
+
+ switch ($options[xPDOTransport::PACKAGE_ACTION]) {
+ case xPDOTransport::ACTION_INSTALL:
+ case xPDOTransport::ACTION_UPGRADE:
+ $systemSetting = $modx->getObject(modSystemSetting::class, [
+ 'key' => 'modRequest.class',
+ 'value' => 'LinguaRequest'
+ ]);
+ if ($systemSetting) {
+ foreach ($systemSetting as $setting) {
+ $setting->set('value', 'Lingua\Model\LinguaRequest');
+ $setting->save();
+ }
+ $modx->log(modX::LOG_LEVEL_INFO, "Fixed system setting modRequest.class");
+ }
+
+ $contextSettings = $modx->getCollection(modContextSetting::class, [
+ 'key' => 'modRequest.class',
+ 'value' => 'LinguaRequest'
+ ]);
+ if ($contextSettings) {
+ foreach ($contextSettings as $setting) {
+ $setting->set('value', 'Lingua\Model\LinguaRequest');
+ $setting->save();
+ }
+ $modx->log(modX::LOG_LEVEL_INFO, "Fixed context settings modRequest.class");
+ }
+ break;
+ case xPDOTransport::ACTION_UNINSTALL:
+ break;
+ }
+}
+
+return true;
diff --git a/_packages/lingua-3.0.0-beta.transport.zip b/_packages/lingua-3.0.0-beta.transport.zip
new file mode 100644
index 0000000..c536bce
Binary files /dev/null and b/_packages/lingua-3.0.0-beta.transport.zip differ
diff --git a/_packages/lingua-3.0.1-beta.transport.zip b/_packages/lingua-3.0.1-beta.transport.zip
new file mode 100644
index 0000000..5160b5c
Binary files /dev/null and b/_packages/lingua-3.0.1-beta.transport.zip differ
diff --git a/_packages/lingua-3.0.2-beta.transport.zip b/_packages/lingua-3.0.2-beta.transport.zip
new file mode 100644
index 0000000..63417c8
Binary files /dev/null and b/_packages/lingua-3.0.2-beta.transport.zip differ
diff --git a/_packages/lingua-3.0.3-beta.transport.zip b/_packages/lingua-3.0.3-beta.transport.zip
new file mode 100644
index 0000000..b8f8bf1
Binary files /dev/null and b/_packages/lingua-3.0.3-beta.transport.zip differ
diff --git a/www/assets/components/lingua/conn/mgr.php b/assets/components/lingua/conn/mgr.php
similarity index 87%
rename from www/assets/components/lingua/conn/mgr.php
rename to assets/components/lingua/conn/mgr.php
index 1f366b0..8a73c90 100644
--- a/www/assets/components/lingua/conn/mgr.php
+++ b/assets/components/lingua/conn/mgr.php
@@ -1,4 +1,5 @@
getOption('lingua.core_path', null, $modx->getOption('core_path') . 'components/lingua/');
-require_once $corePath . 'model/lingua/lingua.class.php';
-$modx->lingua = new Lingua($modx);
+$Lingua = $modx->services->get('Lingua');
$modx->lexicon->load('lingua:cmp');
/* handle request */
-$path = $modx->getOption('processorsPath', $modx->lingua->config, $corePath . 'processors/');
+$path = $modx->getOption('processorsPath', $Lingua->config, $corePath . 'src/Processors/');
+$modx->getRequest();
+
$modx->request->handleRequest(array(
'processors_path' => $path,
'location' => '',
-));
\ No newline at end of file
+));
diff --git a/www/assets/components/lingua/css/mgr.css b/assets/components/lingua/css/mgr.css
similarity index 100%
rename from www/assets/components/lingua/css/mgr.css
rename to assets/components/lingua/css/mgr.css
diff --git a/www/assets/components/lingua/icons/flags/gif/.DS_Store b/assets/components/lingua/icons/flags/gif/.DS_Store
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/.DS_Store
rename to assets/components/lingua/icons/flags/gif/.DS_Store
diff --git a/www/assets/components/lingua/icons/flags/gif/ad.gif b/assets/components/lingua/icons/flags/gif/ad.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ad.gif
rename to assets/components/lingua/icons/flags/gif/ad.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ae.gif b/assets/components/lingua/icons/flags/gif/ae.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ae.gif
rename to assets/components/lingua/icons/flags/gif/ae.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/af.gif b/assets/components/lingua/icons/flags/gif/af.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/af.gif
rename to assets/components/lingua/icons/flags/gif/af.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ag.gif b/assets/components/lingua/icons/flags/gif/ag.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ag.gif
rename to assets/components/lingua/icons/flags/gif/ag.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ai.gif b/assets/components/lingua/icons/flags/gif/ai.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ai.gif
rename to assets/components/lingua/icons/flags/gif/ai.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/al.gif b/assets/components/lingua/icons/flags/gif/al.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/al.gif
rename to assets/components/lingua/icons/flags/gif/al.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/am.gif b/assets/components/lingua/icons/flags/gif/am.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/am.gif
rename to assets/components/lingua/icons/flags/gif/am.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/an.gif b/assets/components/lingua/icons/flags/gif/an.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/an.gif
rename to assets/components/lingua/icons/flags/gif/an.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ao.gif b/assets/components/lingua/icons/flags/gif/ao.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ao.gif
rename to assets/components/lingua/icons/flags/gif/ao.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ar.gif b/assets/components/lingua/icons/flags/gif/ar.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ar.gif
rename to assets/components/lingua/icons/flags/gif/ar.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/as.gif b/assets/components/lingua/icons/flags/gif/as.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/as.gif
rename to assets/components/lingua/icons/flags/gif/as.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/at.gif b/assets/components/lingua/icons/flags/gif/at.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/at.gif
rename to assets/components/lingua/icons/flags/gif/at.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/au.gif b/assets/components/lingua/icons/flags/gif/au.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/au.gif
rename to assets/components/lingua/icons/flags/gif/au.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/aw.gif b/assets/components/lingua/icons/flags/gif/aw.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/aw.gif
rename to assets/components/lingua/icons/flags/gif/aw.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ax.gif b/assets/components/lingua/icons/flags/gif/ax.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ax.gif
rename to assets/components/lingua/icons/flags/gif/ax.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/az.gif b/assets/components/lingua/icons/flags/gif/az.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/az.gif
rename to assets/components/lingua/icons/flags/gif/az.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ba.gif b/assets/components/lingua/icons/flags/gif/ba.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ba.gif
rename to assets/components/lingua/icons/flags/gif/ba.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bb.gif b/assets/components/lingua/icons/flags/gif/bb.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bb.gif
rename to assets/components/lingua/icons/flags/gif/bb.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bd.gif b/assets/components/lingua/icons/flags/gif/bd.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bd.gif
rename to assets/components/lingua/icons/flags/gif/bd.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/be.gif b/assets/components/lingua/icons/flags/gif/be.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/be.gif
rename to assets/components/lingua/icons/flags/gif/be.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bf.gif b/assets/components/lingua/icons/flags/gif/bf.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bf.gif
rename to assets/components/lingua/icons/flags/gif/bf.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bg.gif b/assets/components/lingua/icons/flags/gif/bg.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bg.gif
rename to assets/components/lingua/icons/flags/gif/bg.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bh.gif b/assets/components/lingua/icons/flags/gif/bh.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bh.gif
rename to assets/components/lingua/icons/flags/gif/bh.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bi.gif b/assets/components/lingua/icons/flags/gif/bi.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bi.gif
rename to assets/components/lingua/icons/flags/gif/bi.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bj.gif b/assets/components/lingua/icons/flags/gif/bj.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bj.gif
rename to assets/components/lingua/icons/flags/gif/bj.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bm.gif b/assets/components/lingua/icons/flags/gif/bm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bm.gif
rename to assets/components/lingua/icons/flags/gif/bm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bn.gif b/assets/components/lingua/icons/flags/gif/bn.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bn.gif
rename to assets/components/lingua/icons/flags/gif/bn.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bo.gif b/assets/components/lingua/icons/flags/gif/bo.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bo.gif
rename to assets/components/lingua/icons/flags/gif/bo.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/br.gif b/assets/components/lingua/icons/flags/gif/br.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/br.gif
rename to assets/components/lingua/icons/flags/gif/br.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bs.gif b/assets/components/lingua/icons/flags/gif/bs.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bs.gif
rename to assets/components/lingua/icons/flags/gif/bs.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bt.gif b/assets/components/lingua/icons/flags/gif/bt.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bt.gif
rename to assets/components/lingua/icons/flags/gif/bt.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bv.gif b/assets/components/lingua/icons/flags/gif/bv.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bv.gif
rename to assets/components/lingua/icons/flags/gif/bv.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bw.gif b/assets/components/lingua/icons/flags/gif/bw.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bw.gif
rename to assets/components/lingua/icons/flags/gif/bw.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/by.gif b/assets/components/lingua/icons/flags/gif/by.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/by.gif
rename to assets/components/lingua/icons/flags/gif/by.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/bz.gif b/assets/components/lingua/icons/flags/gif/bz.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/bz.gif
rename to assets/components/lingua/icons/flags/gif/bz.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ca.gif b/assets/components/lingua/icons/flags/gif/ca.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ca.gif
rename to assets/components/lingua/icons/flags/gif/ca.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/catalonia.gif b/assets/components/lingua/icons/flags/gif/catalonia.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/catalonia.gif
rename to assets/components/lingua/icons/flags/gif/catalonia.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cc.gif b/assets/components/lingua/icons/flags/gif/cc.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cc.gif
rename to assets/components/lingua/icons/flags/gif/cc.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cd.gif b/assets/components/lingua/icons/flags/gif/cd.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cd.gif
rename to assets/components/lingua/icons/flags/gif/cd.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cf.gif b/assets/components/lingua/icons/flags/gif/cf.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cf.gif
rename to assets/components/lingua/icons/flags/gif/cf.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cg.gif b/assets/components/lingua/icons/flags/gif/cg.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cg.gif
rename to assets/components/lingua/icons/flags/gif/cg.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ch.gif b/assets/components/lingua/icons/flags/gif/ch.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ch.gif
rename to assets/components/lingua/icons/flags/gif/ch.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ci.gif b/assets/components/lingua/icons/flags/gif/ci.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ci.gif
rename to assets/components/lingua/icons/flags/gif/ci.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ck.gif b/assets/components/lingua/icons/flags/gif/ck.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ck.gif
rename to assets/components/lingua/icons/flags/gif/ck.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cl.gif b/assets/components/lingua/icons/flags/gif/cl.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cl.gif
rename to assets/components/lingua/icons/flags/gif/cl.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cm.gif b/assets/components/lingua/icons/flags/gif/cm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cm.gif
rename to assets/components/lingua/icons/flags/gif/cm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cn.gif b/assets/components/lingua/icons/flags/gif/cn.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cn.gif
rename to assets/components/lingua/icons/flags/gif/cn.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/co.gif b/assets/components/lingua/icons/flags/gif/co.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/co.gif
rename to assets/components/lingua/icons/flags/gif/co.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cr.gif b/assets/components/lingua/icons/flags/gif/cr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cr.gif
rename to assets/components/lingua/icons/flags/gif/cr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cs.gif b/assets/components/lingua/icons/flags/gif/cs.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cs.gif
rename to assets/components/lingua/icons/flags/gif/cs.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cu.gif b/assets/components/lingua/icons/flags/gif/cu.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cu.gif
rename to assets/components/lingua/icons/flags/gif/cu.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cv.gif b/assets/components/lingua/icons/flags/gif/cv.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cv.gif
rename to assets/components/lingua/icons/flags/gif/cv.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cx.gif b/assets/components/lingua/icons/flags/gif/cx.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cx.gif
rename to assets/components/lingua/icons/flags/gif/cx.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cy.gif b/assets/components/lingua/icons/flags/gif/cy.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cy.gif
rename to assets/components/lingua/icons/flags/gif/cy.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/cz.gif b/assets/components/lingua/icons/flags/gif/cz.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/cz.gif
rename to assets/components/lingua/icons/flags/gif/cz.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/de.gif b/assets/components/lingua/icons/flags/gif/de.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/de.gif
rename to assets/components/lingua/icons/flags/gif/de.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/dj.gif b/assets/components/lingua/icons/flags/gif/dj.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/dj.gif
rename to assets/components/lingua/icons/flags/gif/dj.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/dk.gif b/assets/components/lingua/icons/flags/gif/dk.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/dk.gif
rename to assets/components/lingua/icons/flags/gif/dk.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/dm.gif b/assets/components/lingua/icons/flags/gif/dm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/dm.gif
rename to assets/components/lingua/icons/flags/gif/dm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/do.gif b/assets/components/lingua/icons/flags/gif/do.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/do.gif
rename to assets/components/lingua/icons/flags/gif/do.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/dz.gif b/assets/components/lingua/icons/flags/gif/dz.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/dz.gif
rename to assets/components/lingua/icons/flags/gif/dz.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ec.gif b/assets/components/lingua/icons/flags/gif/ec.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ec.gif
rename to assets/components/lingua/icons/flags/gif/ec.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ee.gif b/assets/components/lingua/icons/flags/gif/ee.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ee.gif
rename to assets/components/lingua/icons/flags/gif/ee.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/eg.gif b/assets/components/lingua/icons/flags/gif/eg.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/eg.gif
rename to assets/components/lingua/icons/flags/gif/eg.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/eh.gif b/assets/components/lingua/icons/flags/gif/eh.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/eh.gif
rename to assets/components/lingua/icons/flags/gif/eh.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/england.gif b/assets/components/lingua/icons/flags/gif/england.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/england.gif
rename to assets/components/lingua/icons/flags/gif/england.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/er.gif b/assets/components/lingua/icons/flags/gif/er.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/er.gif
rename to assets/components/lingua/icons/flags/gif/er.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/es.gif b/assets/components/lingua/icons/flags/gif/es.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/es.gif
rename to assets/components/lingua/icons/flags/gif/es.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/et.gif b/assets/components/lingua/icons/flags/gif/et.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/et.gif
rename to assets/components/lingua/icons/flags/gif/et.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/europeanunion.gif b/assets/components/lingua/icons/flags/gif/europeanunion.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/europeanunion.gif
rename to assets/components/lingua/icons/flags/gif/europeanunion.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/fam.gif b/assets/components/lingua/icons/flags/gif/fam.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/fam.gif
rename to assets/components/lingua/icons/flags/gif/fam.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/fi.gif b/assets/components/lingua/icons/flags/gif/fi.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/fi.gif
rename to assets/components/lingua/icons/flags/gif/fi.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/fj.gif b/assets/components/lingua/icons/flags/gif/fj.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/fj.gif
rename to assets/components/lingua/icons/flags/gif/fj.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/fk.gif b/assets/components/lingua/icons/flags/gif/fk.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/fk.gif
rename to assets/components/lingua/icons/flags/gif/fk.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/fm.gif b/assets/components/lingua/icons/flags/gif/fm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/fm.gif
rename to assets/components/lingua/icons/flags/gif/fm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/fo.gif b/assets/components/lingua/icons/flags/gif/fo.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/fo.gif
rename to assets/components/lingua/icons/flags/gif/fo.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/fr.gif b/assets/components/lingua/icons/flags/gif/fr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/fr.gif
rename to assets/components/lingua/icons/flags/gif/fr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ga.gif b/assets/components/lingua/icons/flags/gif/ga.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ga.gif
rename to assets/components/lingua/icons/flags/gif/ga.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gb.gif b/assets/components/lingua/icons/flags/gif/gb.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gb.gif
rename to assets/components/lingua/icons/flags/gif/gb.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gd.gif b/assets/components/lingua/icons/flags/gif/gd.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gd.gif
rename to assets/components/lingua/icons/flags/gif/gd.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ge.gif b/assets/components/lingua/icons/flags/gif/ge.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ge.gif
rename to assets/components/lingua/icons/flags/gif/ge.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gf.gif b/assets/components/lingua/icons/flags/gif/gf.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gf.gif
rename to assets/components/lingua/icons/flags/gif/gf.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gh.gif b/assets/components/lingua/icons/flags/gif/gh.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gh.gif
rename to assets/components/lingua/icons/flags/gif/gh.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gi.gif b/assets/components/lingua/icons/flags/gif/gi.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gi.gif
rename to assets/components/lingua/icons/flags/gif/gi.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gl.gif b/assets/components/lingua/icons/flags/gif/gl.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gl.gif
rename to assets/components/lingua/icons/flags/gif/gl.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gm.gif b/assets/components/lingua/icons/flags/gif/gm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gm.gif
rename to assets/components/lingua/icons/flags/gif/gm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gn.gif b/assets/components/lingua/icons/flags/gif/gn.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gn.gif
rename to assets/components/lingua/icons/flags/gif/gn.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gp.gif b/assets/components/lingua/icons/flags/gif/gp.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gp.gif
rename to assets/components/lingua/icons/flags/gif/gp.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gq.gif b/assets/components/lingua/icons/flags/gif/gq.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gq.gif
rename to assets/components/lingua/icons/flags/gif/gq.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gr.gif b/assets/components/lingua/icons/flags/gif/gr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gr.gif
rename to assets/components/lingua/icons/flags/gif/gr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gs.gif b/assets/components/lingua/icons/flags/gif/gs.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gs.gif
rename to assets/components/lingua/icons/flags/gif/gs.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gt.gif b/assets/components/lingua/icons/flags/gif/gt.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gt.gif
rename to assets/components/lingua/icons/flags/gif/gt.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gu.gif b/assets/components/lingua/icons/flags/gif/gu.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gu.gif
rename to assets/components/lingua/icons/flags/gif/gu.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gw.gif b/assets/components/lingua/icons/flags/gif/gw.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gw.gif
rename to assets/components/lingua/icons/flags/gif/gw.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/gy.gif b/assets/components/lingua/icons/flags/gif/gy.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/gy.gif
rename to assets/components/lingua/icons/flags/gif/gy.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/hk.gif b/assets/components/lingua/icons/flags/gif/hk.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/hk.gif
rename to assets/components/lingua/icons/flags/gif/hk.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/hm.gif b/assets/components/lingua/icons/flags/gif/hm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/hm.gif
rename to assets/components/lingua/icons/flags/gif/hm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/hn.gif b/assets/components/lingua/icons/flags/gif/hn.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/hn.gif
rename to assets/components/lingua/icons/flags/gif/hn.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/hr.gif b/assets/components/lingua/icons/flags/gif/hr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/hr.gif
rename to assets/components/lingua/icons/flags/gif/hr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ht.gif b/assets/components/lingua/icons/flags/gif/ht.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ht.gif
rename to assets/components/lingua/icons/flags/gif/ht.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/hu.gif b/assets/components/lingua/icons/flags/gif/hu.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/hu.gif
rename to assets/components/lingua/icons/flags/gif/hu.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/id.gif b/assets/components/lingua/icons/flags/gif/id.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/id.gif
rename to assets/components/lingua/icons/flags/gif/id.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ie.gif b/assets/components/lingua/icons/flags/gif/ie.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ie.gif
rename to assets/components/lingua/icons/flags/gif/ie.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/il.gif b/assets/components/lingua/icons/flags/gif/il.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/il.gif
rename to assets/components/lingua/icons/flags/gif/il.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/in.gif b/assets/components/lingua/icons/flags/gif/in.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/in.gif
rename to assets/components/lingua/icons/flags/gif/in.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/io.gif b/assets/components/lingua/icons/flags/gif/io.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/io.gif
rename to assets/components/lingua/icons/flags/gif/io.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/iq.gif b/assets/components/lingua/icons/flags/gif/iq.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/iq.gif
rename to assets/components/lingua/icons/flags/gif/iq.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ir.gif b/assets/components/lingua/icons/flags/gif/ir.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ir.gif
rename to assets/components/lingua/icons/flags/gif/ir.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/is.gif b/assets/components/lingua/icons/flags/gif/is.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/is.gif
rename to assets/components/lingua/icons/flags/gif/is.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/it.gif b/assets/components/lingua/icons/flags/gif/it.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/it.gif
rename to assets/components/lingua/icons/flags/gif/it.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/jm.gif b/assets/components/lingua/icons/flags/gif/jm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/jm.gif
rename to assets/components/lingua/icons/flags/gif/jm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/jo.gif b/assets/components/lingua/icons/flags/gif/jo.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/jo.gif
rename to assets/components/lingua/icons/flags/gif/jo.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/jp.gif b/assets/components/lingua/icons/flags/gif/jp.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/jp.gif
rename to assets/components/lingua/icons/flags/gif/jp.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ke.gif b/assets/components/lingua/icons/flags/gif/ke.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ke.gif
rename to assets/components/lingua/icons/flags/gif/ke.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/kg.gif b/assets/components/lingua/icons/flags/gif/kg.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/kg.gif
rename to assets/components/lingua/icons/flags/gif/kg.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/kh.gif b/assets/components/lingua/icons/flags/gif/kh.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/kh.gif
rename to assets/components/lingua/icons/flags/gif/kh.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ki.gif b/assets/components/lingua/icons/flags/gif/ki.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ki.gif
rename to assets/components/lingua/icons/flags/gif/ki.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/km.gif b/assets/components/lingua/icons/flags/gif/km.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/km.gif
rename to assets/components/lingua/icons/flags/gif/km.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/kn.gif b/assets/components/lingua/icons/flags/gif/kn.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/kn.gif
rename to assets/components/lingua/icons/flags/gif/kn.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/kp.gif b/assets/components/lingua/icons/flags/gif/kp.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/kp.gif
rename to assets/components/lingua/icons/flags/gif/kp.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/kr.gif b/assets/components/lingua/icons/flags/gif/kr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/kr.gif
rename to assets/components/lingua/icons/flags/gif/kr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/kw.gif b/assets/components/lingua/icons/flags/gif/kw.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/kw.gif
rename to assets/components/lingua/icons/flags/gif/kw.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ky.gif b/assets/components/lingua/icons/flags/gif/ky.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ky.gif
rename to assets/components/lingua/icons/flags/gif/ky.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/kz.gif b/assets/components/lingua/icons/flags/gif/kz.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/kz.gif
rename to assets/components/lingua/icons/flags/gif/kz.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/la.gif b/assets/components/lingua/icons/flags/gif/la.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/la.gif
rename to assets/components/lingua/icons/flags/gif/la.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/lb.gif b/assets/components/lingua/icons/flags/gif/lb.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/lb.gif
rename to assets/components/lingua/icons/flags/gif/lb.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/lc.gif b/assets/components/lingua/icons/flags/gif/lc.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/lc.gif
rename to assets/components/lingua/icons/flags/gif/lc.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/li.gif b/assets/components/lingua/icons/flags/gif/li.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/li.gif
rename to assets/components/lingua/icons/flags/gif/li.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/lk.gif b/assets/components/lingua/icons/flags/gif/lk.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/lk.gif
rename to assets/components/lingua/icons/flags/gif/lk.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/lr.gif b/assets/components/lingua/icons/flags/gif/lr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/lr.gif
rename to assets/components/lingua/icons/flags/gif/lr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ls.gif b/assets/components/lingua/icons/flags/gif/ls.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ls.gif
rename to assets/components/lingua/icons/flags/gif/ls.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/lt.gif b/assets/components/lingua/icons/flags/gif/lt.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/lt.gif
rename to assets/components/lingua/icons/flags/gif/lt.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/lu.gif b/assets/components/lingua/icons/flags/gif/lu.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/lu.gif
rename to assets/components/lingua/icons/flags/gif/lu.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/lv.gif b/assets/components/lingua/icons/flags/gif/lv.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/lv.gif
rename to assets/components/lingua/icons/flags/gif/lv.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ly.gif b/assets/components/lingua/icons/flags/gif/ly.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ly.gif
rename to assets/components/lingua/icons/flags/gif/ly.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ma.gif b/assets/components/lingua/icons/flags/gif/ma.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ma.gif
rename to assets/components/lingua/icons/flags/gif/ma.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mc.gif b/assets/components/lingua/icons/flags/gif/mc.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mc.gif
rename to assets/components/lingua/icons/flags/gif/mc.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/md.gif b/assets/components/lingua/icons/flags/gif/md.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/md.gif
rename to assets/components/lingua/icons/flags/gif/md.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/me.gif b/assets/components/lingua/icons/flags/gif/me.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/me.gif
rename to assets/components/lingua/icons/flags/gif/me.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mg.gif b/assets/components/lingua/icons/flags/gif/mg.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mg.gif
rename to assets/components/lingua/icons/flags/gif/mg.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mh.gif b/assets/components/lingua/icons/flags/gif/mh.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mh.gif
rename to assets/components/lingua/icons/flags/gif/mh.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mk.gif b/assets/components/lingua/icons/flags/gif/mk.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mk.gif
rename to assets/components/lingua/icons/flags/gif/mk.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ml.gif b/assets/components/lingua/icons/flags/gif/ml.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ml.gif
rename to assets/components/lingua/icons/flags/gif/ml.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mm.gif b/assets/components/lingua/icons/flags/gif/mm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mm.gif
rename to assets/components/lingua/icons/flags/gif/mm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mn.gif b/assets/components/lingua/icons/flags/gif/mn.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mn.gif
rename to assets/components/lingua/icons/flags/gif/mn.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mo.gif b/assets/components/lingua/icons/flags/gif/mo.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mo.gif
rename to assets/components/lingua/icons/flags/gif/mo.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mp.gif b/assets/components/lingua/icons/flags/gif/mp.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mp.gif
rename to assets/components/lingua/icons/flags/gif/mp.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mq.gif b/assets/components/lingua/icons/flags/gif/mq.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mq.gif
rename to assets/components/lingua/icons/flags/gif/mq.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mr.gif b/assets/components/lingua/icons/flags/gif/mr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mr.gif
rename to assets/components/lingua/icons/flags/gif/mr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ms.gif b/assets/components/lingua/icons/flags/gif/ms.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ms.gif
rename to assets/components/lingua/icons/flags/gif/ms.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mt.gif b/assets/components/lingua/icons/flags/gif/mt.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mt.gif
rename to assets/components/lingua/icons/flags/gif/mt.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mu.gif b/assets/components/lingua/icons/flags/gif/mu.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mu.gif
rename to assets/components/lingua/icons/flags/gif/mu.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mv.gif b/assets/components/lingua/icons/flags/gif/mv.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mv.gif
rename to assets/components/lingua/icons/flags/gif/mv.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mw.gif b/assets/components/lingua/icons/flags/gif/mw.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mw.gif
rename to assets/components/lingua/icons/flags/gif/mw.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mx.gif b/assets/components/lingua/icons/flags/gif/mx.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mx.gif
rename to assets/components/lingua/icons/flags/gif/mx.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/my.gif b/assets/components/lingua/icons/flags/gif/my.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/my.gif
rename to assets/components/lingua/icons/flags/gif/my.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/mz.gif b/assets/components/lingua/icons/flags/gif/mz.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/mz.gif
rename to assets/components/lingua/icons/flags/gif/mz.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/na.gif b/assets/components/lingua/icons/flags/gif/na.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/na.gif
rename to assets/components/lingua/icons/flags/gif/na.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/nc.gif b/assets/components/lingua/icons/flags/gif/nc.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/nc.gif
rename to assets/components/lingua/icons/flags/gif/nc.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ne.gif b/assets/components/lingua/icons/flags/gif/ne.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ne.gif
rename to assets/components/lingua/icons/flags/gif/ne.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/nf.gif b/assets/components/lingua/icons/flags/gif/nf.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/nf.gif
rename to assets/components/lingua/icons/flags/gif/nf.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ng.gif b/assets/components/lingua/icons/flags/gif/ng.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ng.gif
rename to assets/components/lingua/icons/flags/gif/ng.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ni.gif b/assets/components/lingua/icons/flags/gif/ni.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ni.gif
rename to assets/components/lingua/icons/flags/gif/ni.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/nl.gif b/assets/components/lingua/icons/flags/gif/nl.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/nl.gif
rename to assets/components/lingua/icons/flags/gif/nl.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/no.gif b/assets/components/lingua/icons/flags/gif/no.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/no.gif
rename to assets/components/lingua/icons/flags/gif/no.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/np.gif b/assets/components/lingua/icons/flags/gif/np.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/np.gif
rename to assets/components/lingua/icons/flags/gif/np.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/nr.gif b/assets/components/lingua/icons/flags/gif/nr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/nr.gif
rename to assets/components/lingua/icons/flags/gif/nr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/nu.gif b/assets/components/lingua/icons/flags/gif/nu.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/nu.gif
rename to assets/components/lingua/icons/flags/gif/nu.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/nz.gif b/assets/components/lingua/icons/flags/gif/nz.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/nz.gif
rename to assets/components/lingua/icons/flags/gif/nz.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/om.gif b/assets/components/lingua/icons/flags/gif/om.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/om.gif
rename to assets/components/lingua/icons/flags/gif/om.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pa.gif b/assets/components/lingua/icons/flags/gif/pa.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pa.gif
rename to assets/components/lingua/icons/flags/gif/pa.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pe.gif b/assets/components/lingua/icons/flags/gif/pe.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pe.gif
rename to assets/components/lingua/icons/flags/gif/pe.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pf.gif b/assets/components/lingua/icons/flags/gif/pf.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pf.gif
rename to assets/components/lingua/icons/flags/gif/pf.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pg.gif b/assets/components/lingua/icons/flags/gif/pg.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pg.gif
rename to assets/components/lingua/icons/flags/gif/pg.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ph.gif b/assets/components/lingua/icons/flags/gif/ph.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ph.gif
rename to assets/components/lingua/icons/flags/gif/ph.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pk.gif b/assets/components/lingua/icons/flags/gif/pk.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pk.gif
rename to assets/components/lingua/icons/flags/gif/pk.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pl.gif b/assets/components/lingua/icons/flags/gif/pl.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pl.gif
rename to assets/components/lingua/icons/flags/gif/pl.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pm.gif b/assets/components/lingua/icons/flags/gif/pm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pm.gif
rename to assets/components/lingua/icons/flags/gif/pm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pn.gif b/assets/components/lingua/icons/flags/gif/pn.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pn.gif
rename to assets/components/lingua/icons/flags/gif/pn.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pr.gif b/assets/components/lingua/icons/flags/gif/pr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pr.gif
rename to assets/components/lingua/icons/flags/gif/pr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ps.gif b/assets/components/lingua/icons/flags/gif/ps.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ps.gif
rename to assets/components/lingua/icons/flags/gif/ps.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pt.gif b/assets/components/lingua/icons/flags/gif/pt.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pt.gif
rename to assets/components/lingua/icons/flags/gif/pt.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/pw.gif b/assets/components/lingua/icons/flags/gif/pw.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/pw.gif
rename to assets/components/lingua/icons/flags/gif/pw.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/py.gif b/assets/components/lingua/icons/flags/gif/py.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/py.gif
rename to assets/components/lingua/icons/flags/gif/py.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/qa.gif b/assets/components/lingua/icons/flags/gif/qa.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/qa.gif
rename to assets/components/lingua/icons/flags/gif/qa.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/re.gif b/assets/components/lingua/icons/flags/gif/re.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/re.gif
rename to assets/components/lingua/icons/flags/gif/re.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ro.gif b/assets/components/lingua/icons/flags/gif/ro.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ro.gif
rename to assets/components/lingua/icons/flags/gif/ro.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/rs.gif b/assets/components/lingua/icons/flags/gif/rs.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/rs.gif
rename to assets/components/lingua/icons/flags/gif/rs.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ru.gif b/assets/components/lingua/icons/flags/gif/ru.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ru.gif
rename to assets/components/lingua/icons/flags/gif/ru.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/rw.gif b/assets/components/lingua/icons/flags/gif/rw.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/rw.gif
rename to assets/components/lingua/icons/flags/gif/rw.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sa.gif b/assets/components/lingua/icons/flags/gif/sa.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sa.gif
rename to assets/components/lingua/icons/flags/gif/sa.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sb.gif b/assets/components/lingua/icons/flags/gif/sb.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sb.gif
rename to assets/components/lingua/icons/flags/gif/sb.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sc.gif b/assets/components/lingua/icons/flags/gif/sc.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sc.gif
rename to assets/components/lingua/icons/flags/gif/sc.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/scotland.gif b/assets/components/lingua/icons/flags/gif/scotland.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/scotland.gif
rename to assets/components/lingua/icons/flags/gif/scotland.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sd.gif b/assets/components/lingua/icons/flags/gif/sd.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sd.gif
rename to assets/components/lingua/icons/flags/gif/sd.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/se.gif b/assets/components/lingua/icons/flags/gif/se.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/se.gif
rename to assets/components/lingua/icons/flags/gif/se.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sg.gif b/assets/components/lingua/icons/flags/gif/sg.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sg.gif
rename to assets/components/lingua/icons/flags/gif/sg.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sh.gif b/assets/components/lingua/icons/flags/gif/sh.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sh.gif
rename to assets/components/lingua/icons/flags/gif/sh.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/si.gif b/assets/components/lingua/icons/flags/gif/si.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/si.gif
rename to assets/components/lingua/icons/flags/gif/si.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sj.gif b/assets/components/lingua/icons/flags/gif/sj.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sj.gif
rename to assets/components/lingua/icons/flags/gif/sj.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sk.gif b/assets/components/lingua/icons/flags/gif/sk.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sk.gif
rename to assets/components/lingua/icons/flags/gif/sk.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sl.gif b/assets/components/lingua/icons/flags/gif/sl.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sl.gif
rename to assets/components/lingua/icons/flags/gif/sl.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sm.gif b/assets/components/lingua/icons/flags/gif/sm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sm.gif
rename to assets/components/lingua/icons/flags/gif/sm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sn.gif b/assets/components/lingua/icons/flags/gif/sn.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sn.gif
rename to assets/components/lingua/icons/flags/gif/sn.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/so.gif b/assets/components/lingua/icons/flags/gif/so.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/so.gif
rename to assets/components/lingua/icons/flags/gif/so.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sr.gif b/assets/components/lingua/icons/flags/gif/sr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sr.gif
rename to assets/components/lingua/icons/flags/gif/sr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/st.gif b/assets/components/lingua/icons/flags/gif/st.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/st.gif
rename to assets/components/lingua/icons/flags/gif/st.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sv.gif b/assets/components/lingua/icons/flags/gif/sv.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sv.gif
rename to assets/components/lingua/icons/flags/gif/sv.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sy.gif b/assets/components/lingua/icons/flags/gif/sy.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sy.gif
rename to assets/components/lingua/icons/flags/gif/sy.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/sz.gif b/assets/components/lingua/icons/flags/gif/sz.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/sz.gif
rename to assets/components/lingua/icons/flags/gif/sz.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tc.gif b/assets/components/lingua/icons/flags/gif/tc.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tc.gif
rename to assets/components/lingua/icons/flags/gif/tc.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/td.gif b/assets/components/lingua/icons/flags/gif/td.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/td.gif
rename to assets/components/lingua/icons/flags/gif/td.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tf.gif b/assets/components/lingua/icons/flags/gif/tf.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tf.gif
rename to assets/components/lingua/icons/flags/gif/tf.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tg.gif b/assets/components/lingua/icons/flags/gif/tg.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tg.gif
rename to assets/components/lingua/icons/flags/gif/tg.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/th.gif b/assets/components/lingua/icons/flags/gif/th.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/th.gif
rename to assets/components/lingua/icons/flags/gif/th.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tj.gif b/assets/components/lingua/icons/flags/gif/tj.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tj.gif
rename to assets/components/lingua/icons/flags/gif/tj.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tk.gif b/assets/components/lingua/icons/flags/gif/tk.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tk.gif
rename to assets/components/lingua/icons/flags/gif/tk.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tl.gif b/assets/components/lingua/icons/flags/gif/tl.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tl.gif
rename to assets/components/lingua/icons/flags/gif/tl.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tm.gif b/assets/components/lingua/icons/flags/gif/tm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tm.gif
rename to assets/components/lingua/icons/flags/gif/tm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tn.gif b/assets/components/lingua/icons/flags/gif/tn.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tn.gif
rename to assets/components/lingua/icons/flags/gif/tn.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/to.gif b/assets/components/lingua/icons/flags/gif/to.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/to.gif
rename to assets/components/lingua/icons/flags/gif/to.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tr.gif b/assets/components/lingua/icons/flags/gif/tr.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tr.gif
rename to assets/components/lingua/icons/flags/gif/tr.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tt.gif b/assets/components/lingua/icons/flags/gif/tt.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tt.gif
rename to assets/components/lingua/icons/flags/gif/tt.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tv.gif b/assets/components/lingua/icons/flags/gif/tv.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tv.gif
rename to assets/components/lingua/icons/flags/gif/tv.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tw.gif b/assets/components/lingua/icons/flags/gif/tw.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tw.gif
rename to assets/components/lingua/icons/flags/gif/tw.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/tz.gif b/assets/components/lingua/icons/flags/gif/tz.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/tz.gif
rename to assets/components/lingua/icons/flags/gif/tz.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ua.gif b/assets/components/lingua/icons/flags/gif/ua.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ua.gif
rename to assets/components/lingua/icons/flags/gif/ua.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ug.gif b/assets/components/lingua/icons/flags/gif/ug.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ug.gif
rename to assets/components/lingua/icons/flags/gif/ug.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/um.gif b/assets/components/lingua/icons/flags/gif/um.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/um.gif
rename to assets/components/lingua/icons/flags/gif/um.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/us.gif b/assets/components/lingua/icons/flags/gif/us.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/us.gif
rename to assets/components/lingua/icons/flags/gif/us.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/uy.gif b/assets/components/lingua/icons/flags/gif/uy.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/uy.gif
rename to assets/components/lingua/icons/flags/gif/uy.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/uz.gif b/assets/components/lingua/icons/flags/gif/uz.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/uz.gif
rename to assets/components/lingua/icons/flags/gif/uz.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/va.gif b/assets/components/lingua/icons/flags/gif/va.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/va.gif
rename to assets/components/lingua/icons/flags/gif/va.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/vc.gif b/assets/components/lingua/icons/flags/gif/vc.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/vc.gif
rename to assets/components/lingua/icons/flags/gif/vc.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ve.gif b/assets/components/lingua/icons/flags/gif/ve.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ve.gif
rename to assets/components/lingua/icons/flags/gif/ve.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/vg.gif b/assets/components/lingua/icons/flags/gif/vg.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/vg.gif
rename to assets/components/lingua/icons/flags/gif/vg.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/vi.gif b/assets/components/lingua/icons/flags/gif/vi.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/vi.gif
rename to assets/components/lingua/icons/flags/gif/vi.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/vn.gif b/assets/components/lingua/icons/flags/gif/vn.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/vn.gif
rename to assets/components/lingua/icons/flags/gif/vn.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/vu.gif b/assets/components/lingua/icons/flags/gif/vu.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/vu.gif
rename to assets/components/lingua/icons/flags/gif/vu.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/wales.gif b/assets/components/lingua/icons/flags/gif/wales.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/wales.gif
rename to assets/components/lingua/icons/flags/gif/wales.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/wf.gif b/assets/components/lingua/icons/flags/gif/wf.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/wf.gif
rename to assets/components/lingua/icons/flags/gif/wf.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ws.gif b/assets/components/lingua/icons/flags/gif/ws.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ws.gif
rename to assets/components/lingua/icons/flags/gif/ws.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/ye.gif b/assets/components/lingua/icons/flags/gif/ye.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/ye.gif
rename to assets/components/lingua/icons/flags/gif/ye.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/yt.gif b/assets/components/lingua/icons/flags/gif/yt.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/yt.gif
rename to assets/components/lingua/icons/flags/gif/yt.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/za.gif b/assets/components/lingua/icons/flags/gif/za.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/za.gif
rename to assets/components/lingua/icons/flags/gif/za.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/zm.gif b/assets/components/lingua/icons/flags/gif/zm.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/zm.gif
rename to assets/components/lingua/icons/flags/gif/zm.gif
diff --git a/www/assets/components/lingua/icons/flags/gif/zw.gif b/assets/components/lingua/icons/flags/gif/zw.gif
similarity index 100%
rename from www/assets/components/lingua/icons/flags/gif/zw.gif
rename to assets/components/lingua/icons/flags/gif/zw.gif
diff --git a/www/assets/components/lingua/icons/flags/png/.DS_Store b/assets/components/lingua/icons/flags/png/.DS_Store
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/.DS_Store
rename to assets/components/lingua/icons/flags/png/.DS_Store
diff --git a/www/assets/components/lingua/icons/flags/png/ad.png b/assets/components/lingua/icons/flags/png/ad.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ad.png
rename to assets/components/lingua/icons/flags/png/ad.png
diff --git a/www/assets/components/lingua/icons/flags/png/ae.png b/assets/components/lingua/icons/flags/png/ae.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ae.png
rename to assets/components/lingua/icons/flags/png/ae.png
diff --git a/www/assets/components/lingua/icons/flags/png/af.png b/assets/components/lingua/icons/flags/png/af.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/af.png
rename to assets/components/lingua/icons/flags/png/af.png
diff --git a/www/assets/components/lingua/icons/flags/png/ag.png b/assets/components/lingua/icons/flags/png/ag.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ag.png
rename to assets/components/lingua/icons/flags/png/ag.png
diff --git a/www/assets/components/lingua/icons/flags/png/ai.png b/assets/components/lingua/icons/flags/png/ai.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ai.png
rename to assets/components/lingua/icons/flags/png/ai.png
diff --git a/www/assets/components/lingua/icons/flags/png/al.png b/assets/components/lingua/icons/flags/png/al.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/al.png
rename to assets/components/lingua/icons/flags/png/al.png
diff --git a/www/assets/components/lingua/icons/flags/png/am.png b/assets/components/lingua/icons/flags/png/am.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/am.png
rename to assets/components/lingua/icons/flags/png/am.png
diff --git a/www/assets/components/lingua/icons/flags/png/an.png b/assets/components/lingua/icons/flags/png/an.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/an.png
rename to assets/components/lingua/icons/flags/png/an.png
diff --git a/www/assets/components/lingua/icons/flags/png/ao.png b/assets/components/lingua/icons/flags/png/ao.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ao.png
rename to assets/components/lingua/icons/flags/png/ao.png
diff --git a/www/assets/components/lingua/icons/flags/png/ar.png b/assets/components/lingua/icons/flags/png/ar.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ar.png
rename to assets/components/lingua/icons/flags/png/ar.png
diff --git a/www/assets/components/lingua/icons/flags/png/as.png b/assets/components/lingua/icons/flags/png/as.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/as.png
rename to assets/components/lingua/icons/flags/png/as.png
diff --git a/www/assets/components/lingua/icons/flags/png/at.png b/assets/components/lingua/icons/flags/png/at.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/at.png
rename to assets/components/lingua/icons/flags/png/at.png
diff --git a/www/assets/components/lingua/icons/flags/png/au.png b/assets/components/lingua/icons/flags/png/au.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/au.png
rename to assets/components/lingua/icons/flags/png/au.png
diff --git a/www/assets/components/lingua/icons/flags/png/aw.png b/assets/components/lingua/icons/flags/png/aw.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/aw.png
rename to assets/components/lingua/icons/flags/png/aw.png
diff --git a/www/assets/components/lingua/icons/flags/png/ax.png b/assets/components/lingua/icons/flags/png/ax.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ax.png
rename to assets/components/lingua/icons/flags/png/ax.png
diff --git a/www/assets/components/lingua/icons/flags/png/az.png b/assets/components/lingua/icons/flags/png/az.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/az.png
rename to assets/components/lingua/icons/flags/png/az.png
diff --git a/www/assets/components/lingua/icons/flags/png/ba.png b/assets/components/lingua/icons/flags/png/ba.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ba.png
rename to assets/components/lingua/icons/flags/png/ba.png
diff --git a/www/assets/components/lingua/icons/flags/png/bb.png b/assets/components/lingua/icons/flags/png/bb.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bb.png
rename to assets/components/lingua/icons/flags/png/bb.png
diff --git a/www/assets/components/lingua/icons/flags/png/bd.png b/assets/components/lingua/icons/flags/png/bd.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bd.png
rename to assets/components/lingua/icons/flags/png/bd.png
diff --git a/www/assets/components/lingua/icons/flags/png/be.png b/assets/components/lingua/icons/flags/png/be.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/be.png
rename to assets/components/lingua/icons/flags/png/be.png
diff --git a/www/assets/components/lingua/icons/flags/png/bf.png b/assets/components/lingua/icons/flags/png/bf.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bf.png
rename to assets/components/lingua/icons/flags/png/bf.png
diff --git a/www/assets/components/lingua/icons/flags/png/bg.png b/assets/components/lingua/icons/flags/png/bg.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bg.png
rename to assets/components/lingua/icons/flags/png/bg.png
diff --git a/www/assets/components/lingua/icons/flags/png/bh.png b/assets/components/lingua/icons/flags/png/bh.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bh.png
rename to assets/components/lingua/icons/flags/png/bh.png
diff --git a/www/assets/components/lingua/icons/flags/png/bi.png b/assets/components/lingua/icons/flags/png/bi.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bi.png
rename to assets/components/lingua/icons/flags/png/bi.png
diff --git a/www/assets/components/lingua/icons/flags/png/bj.png b/assets/components/lingua/icons/flags/png/bj.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bj.png
rename to assets/components/lingua/icons/flags/png/bj.png
diff --git a/www/assets/components/lingua/icons/flags/png/bm.png b/assets/components/lingua/icons/flags/png/bm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bm.png
rename to assets/components/lingua/icons/flags/png/bm.png
diff --git a/www/assets/components/lingua/icons/flags/png/bn.png b/assets/components/lingua/icons/flags/png/bn.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bn.png
rename to assets/components/lingua/icons/flags/png/bn.png
diff --git a/www/assets/components/lingua/icons/flags/png/bo.png b/assets/components/lingua/icons/flags/png/bo.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bo.png
rename to assets/components/lingua/icons/flags/png/bo.png
diff --git a/www/assets/components/lingua/icons/flags/png/br.png b/assets/components/lingua/icons/flags/png/br.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/br.png
rename to assets/components/lingua/icons/flags/png/br.png
diff --git a/www/assets/components/lingua/icons/flags/png/bs.png b/assets/components/lingua/icons/flags/png/bs.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bs.png
rename to assets/components/lingua/icons/flags/png/bs.png
diff --git a/www/assets/components/lingua/icons/flags/png/bt.png b/assets/components/lingua/icons/flags/png/bt.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bt.png
rename to assets/components/lingua/icons/flags/png/bt.png
diff --git a/www/assets/components/lingua/icons/flags/png/bv.png b/assets/components/lingua/icons/flags/png/bv.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bv.png
rename to assets/components/lingua/icons/flags/png/bv.png
diff --git a/www/assets/components/lingua/icons/flags/png/bw.png b/assets/components/lingua/icons/flags/png/bw.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bw.png
rename to assets/components/lingua/icons/flags/png/bw.png
diff --git a/www/assets/components/lingua/icons/flags/png/by.png b/assets/components/lingua/icons/flags/png/by.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/by.png
rename to assets/components/lingua/icons/flags/png/by.png
diff --git a/www/assets/components/lingua/icons/flags/png/bz.png b/assets/components/lingua/icons/flags/png/bz.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/bz.png
rename to assets/components/lingua/icons/flags/png/bz.png
diff --git a/www/assets/components/lingua/icons/flags/png/ca.png b/assets/components/lingua/icons/flags/png/ca.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ca.png
rename to assets/components/lingua/icons/flags/png/ca.png
diff --git a/www/assets/components/lingua/icons/flags/png/catalonia.png b/assets/components/lingua/icons/flags/png/catalonia.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/catalonia.png
rename to assets/components/lingua/icons/flags/png/catalonia.png
diff --git a/www/assets/components/lingua/icons/flags/png/cc.png b/assets/components/lingua/icons/flags/png/cc.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cc.png
rename to assets/components/lingua/icons/flags/png/cc.png
diff --git a/www/assets/components/lingua/icons/flags/png/cd.png b/assets/components/lingua/icons/flags/png/cd.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cd.png
rename to assets/components/lingua/icons/flags/png/cd.png
diff --git a/www/assets/components/lingua/icons/flags/png/cf.png b/assets/components/lingua/icons/flags/png/cf.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cf.png
rename to assets/components/lingua/icons/flags/png/cf.png
diff --git a/www/assets/components/lingua/icons/flags/png/cg.png b/assets/components/lingua/icons/flags/png/cg.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cg.png
rename to assets/components/lingua/icons/flags/png/cg.png
diff --git a/www/assets/components/lingua/icons/flags/png/ch.png b/assets/components/lingua/icons/flags/png/ch.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ch.png
rename to assets/components/lingua/icons/flags/png/ch.png
diff --git a/www/assets/components/lingua/icons/flags/png/ci.png b/assets/components/lingua/icons/flags/png/ci.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ci.png
rename to assets/components/lingua/icons/flags/png/ci.png
diff --git a/www/assets/components/lingua/icons/flags/png/ck.png b/assets/components/lingua/icons/flags/png/ck.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ck.png
rename to assets/components/lingua/icons/flags/png/ck.png
diff --git a/www/assets/components/lingua/icons/flags/png/cl.png b/assets/components/lingua/icons/flags/png/cl.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cl.png
rename to assets/components/lingua/icons/flags/png/cl.png
diff --git a/www/assets/components/lingua/icons/flags/png/cm.png b/assets/components/lingua/icons/flags/png/cm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cm.png
rename to assets/components/lingua/icons/flags/png/cm.png
diff --git a/www/assets/components/lingua/icons/flags/png/cn.png b/assets/components/lingua/icons/flags/png/cn.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cn.png
rename to assets/components/lingua/icons/flags/png/cn.png
diff --git a/www/assets/components/lingua/icons/flags/png/co.png b/assets/components/lingua/icons/flags/png/co.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/co.png
rename to assets/components/lingua/icons/flags/png/co.png
diff --git a/www/assets/components/lingua/icons/flags/png/cr.png b/assets/components/lingua/icons/flags/png/cr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cr.png
rename to assets/components/lingua/icons/flags/png/cr.png
diff --git a/www/assets/components/lingua/icons/flags/png/cs.png b/assets/components/lingua/icons/flags/png/cs.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cs.png
rename to assets/components/lingua/icons/flags/png/cs.png
diff --git a/www/assets/components/lingua/icons/flags/png/cu.png b/assets/components/lingua/icons/flags/png/cu.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cu.png
rename to assets/components/lingua/icons/flags/png/cu.png
diff --git a/www/assets/components/lingua/icons/flags/png/cv.png b/assets/components/lingua/icons/flags/png/cv.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cv.png
rename to assets/components/lingua/icons/flags/png/cv.png
diff --git a/www/assets/components/lingua/icons/flags/png/cx.png b/assets/components/lingua/icons/flags/png/cx.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cx.png
rename to assets/components/lingua/icons/flags/png/cx.png
diff --git a/www/assets/components/lingua/icons/flags/png/cy.png b/assets/components/lingua/icons/flags/png/cy.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cy.png
rename to assets/components/lingua/icons/flags/png/cy.png
diff --git a/www/assets/components/lingua/icons/flags/png/cz.png b/assets/components/lingua/icons/flags/png/cz.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/cz.png
rename to assets/components/lingua/icons/flags/png/cz.png
diff --git a/www/assets/components/lingua/icons/flags/png/de.png b/assets/components/lingua/icons/flags/png/de.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/de.png
rename to assets/components/lingua/icons/flags/png/de.png
diff --git a/www/assets/components/lingua/icons/flags/png/dj.png b/assets/components/lingua/icons/flags/png/dj.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/dj.png
rename to assets/components/lingua/icons/flags/png/dj.png
diff --git a/www/assets/components/lingua/icons/flags/png/dk.png b/assets/components/lingua/icons/flags/png/dk.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/dk.png
rename to assets/components/lingua/icons/flags/png/dk.png
diff --git a/www/assets/components/lingua/icons/flags/png/dm.png b/assets/components/lingua/icons/flags/png/dm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/dm.png
rename to assets/components/lingua/icons/flags/png/dm.png
diff --git a/www/assets/components/lingua/icons/flags/png/do.png b/assets/components/lingua/icons/flags/png/do.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/do.png
rename to assets/components/lingua/icons/flags/png/do.png
diff --git a/www/assets/components/lingua/icons/flags/png/dz.png b/assets/components/lingua/icons/flags/png/dz.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/dz.png
rename to assets/components/lingua/icons/flags/png/dz.png
diff --git a/www/assets/components/lingua/icons/flags/png/ec.png b/assets/components/lingua/icons/flags/png/ec.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ec.png
rename to assets/components/lingua/icons/flags/png/ec.png
diff --git a/www/assets/components/lingua/icons/flags/png/ee.png b/assets/components/lingua/icons/flags/png/ee.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ee.png
rename to assets/components/lingua/icons/flags/png/ee.png
diff --git a/www/assets/components/lingua/icons/flags/png/eg.png b/assets/components/lingua/icons/flags/png/eg.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/eg.png
rename to assets/components/lingua/icons/flags/png/eg.png
diff --git a/www/assets/components/lingua/icons/flags/png/eh.png b/assets/components/lingua/icons/flags/png/eh.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/eh.png
rename to assets/components/lingua/icons/flags/png/eh.png
diff --git a/www/assets/components/lingua/icons/flags/png/england.png b/assets/components/lingua/icons/flags/png/england.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/england.png
rename to assets/components/lingua/icons/flags/png/england.png
diff --git a/www/assets/components/lingua/icons/flags/png/er.png b/assets/components/lingua/icons/flags/png/er.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/er.png
rename to assets/components/lingua/icons/flags/png/er.png
diff --git a/www/assets/components/lingua/icons/flags/png/es.png b/assets/components/lingua/icons/flags/png/es.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/es.png
rename to assets/components/lingua/icons/flags/png/es.png
diff --git a/www/assets/components/lingua/icons/flags/png/et.png b/assets/components/lingua/icons/flags/png/et.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/et.png
rename to assets/components/lingua/icons/flags/png/et.png
diff --git a/www/assets/components/lingua/icons/flags/png/europeanunion.png b/assets/components/lingua/icons/flags/png/europeanunion.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/europeanunion.png
rename to assets/components/lingua/icons/flags/png/europeanunion.png
diff --git a/www/assets/components/lingua/icons/flags/png/fam.png b/assets/components/lingua/icons/flags/png/fam.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/fam.png
rename to assets/components/lingua/icons/flags/png/fam.png
diff --git a/www/assets/components/lingua/icons/flags/png/fi.png b/assets/components/lingua/icons/flags/png/fi.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/fi.png
rename to assets/components/lingua/icons/flags/png/fi.png
diff --git a/www/assets/components/lingua/icons/flags/png/fj.png b/assets/components/lingua/icons/flags/png/fj.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/fj.png
rename to assets/components/lingua/icons/flags/png/fj.png
diff --git a/www/assets/components/lingua/icons/flags/png/fk.png b/assets/components/lingua/icons/flags/png/fk.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/fk.png
rename to assets/components/lingua/icons/flags/png/fk.png
diff --git a/www/assets/components/lingua/icons/flags/png/fm.png b/assets/components/lingua/icons/flags/png/fm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/fm.png
rename to assets/components/lingua/icons/flags/png/fm.png
diff --git a/www/assets/components/lingua/icons/flags/png/fo.png b/assets/components/lingua/icons/flags/png/fo.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/fo.png
rename to assets/components/lingua/icons/flags/png/fo.png
diff --git a/www/assets/components/lingua/icons/flags/png/fr.png b/assets/components/lingua/icons/flags/png/fr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/fr.png
rename to assets/components/lingua/icons/flags/png/fr.png
diff --git a/www/assets/components/lingua/icons/flags/png/ga.png b/assets/components/lingua/icons/flags/png/ga.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ga.png
rename to assets/components/lingua/icons/flags/png/ga.png
diff --git a/www/assets/components/lingua/icons/flags/png/gb.png b/assets/components/lingua/icons/flags/png/gb.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gb.png
rename to assets/components/lingua/icons/flags/png/gb.png
diff --git a/www/assets/components/lingua/icons/flags/png/gd.png b/assets/components/lingua/icons/flags/png/gd.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gd.png
rename to assets/components/lingua/icons/flags/png/gd.png
diff --git a/www/assets/components/lingua/icons/flags/png/ge.png b/assets/components/lingua/icons/flags/png/ge.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ge.png
rename to assets/components/lingua/icons/flags/png/ge.png
diff --git a/www/assets/components/lingua/icons/flags/png/gf.png b/assets/components/lingua/icons/flags/png/gf.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gf.png
rename to assets/components/lingua/icons/flags/png/gf.png
diff --git a/www/assets/components/lingua/icons/flags/png/gh.png b/assets/components/lingua/icons/flags/png/gh.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gh.png
rename to assets/components/lingua/icons/flags/png/gh.png
diff --git a/www/assets/components/lingua/icons/flags/png/gi.png b/assets/components/lingua/icons/flags/png/gi.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gi.png
rename to assets/components/lingua/icons/flags/png/gi.png
diff --git a/www/assets/components/lingua/icons/flags/png/gl.png b/assets/components/lingua/icons/flags/png/gl.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gl.png
rename to assets/components/lingua/icons/flags/png/gl.png
diff --git a/www/assets/components/lingua/icons/flags/png/gm.png b/assets/components/lingua/icons/flags/png/gm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gm.png
rename to assets/components/lingua/icons/flags/png/gm.png
diff --git a/www/assets/components/lingua/icons/flags/png/gn.png b/assets/components/lingua/icons/flags/png/gn.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gn.png
rename to assets/components/lingua/icons/flags/png/gn.png
diff --git a/www/assets/components/lingua/icons/flags/png/gp.png b/assets/components/lingua/icons/flags/png/gp.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gp.png
rename to assets/components/lingua/icons/flags/png/gp.png
diff --git a/www/assets/components/lingua/icons/flags/png/gq.png b/assets/components/lingua/icons/flags/png/gq.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gq.png
rename to assets/components/lingua/icons/flags/png/gq.png
diff --git a/www/assets/components/lingua/icons/flags/png/gr.png b/assets/components/lingua/icons/flags/png/gr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gr.png
rename to assets/components/lingua/icons/flags/png/gr.png
diff --git a/www/assets/components/lingua/icons/flags/png/gs.png b/assets/components/lingua/icons/flags/png/gs.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gs.png
rename to assets/components/lingua/icons/flags/png/gs.png
diff --git a/www/assets/components/lingua/icons/flags/png/gt.png b/assets/components/lingua/icons/flags/png/gt.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gt.png
rename to assets/components/lingua/icons/flags/png/gt.png
diff --git a/www/assets/components/lingua/icons/flags/png/gu.png b/assets/components/lingua/icons/flags/png/gu.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gu.png
rename to assets/components/lingua/icons/flags/png/gu.png
diff --git a/www/assets/components/lingua/icons/flags/png/gw.png b/assets/components/lingua/icons/flags/png/gw.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gw.png
rename to assets/components/lingua/icons/flags/png/gw.png
diff --git a/www/assets/components/lingua/icons/flags/png/gy.png b/assets/components/lingua/icons/flags/png/gy.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/gy.png
rename to assets/components/lingua/icons/flags/png/gy.png
diff --git a/www/assets/components/lingua/icons/flags/png/hk.png b/assets/components/lingua/icons/flags/png/hk.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/hk.png
rename to assets/components/lingua/icons/flags/png/hk.png
diff --git a/www/assets/components/lingua/icons/flags/png/hm.png b/assets/components/lingua/icons/flags/png/hm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/hm.png
rename to assets/components/lingua/icons/flags/png/hm.png
diff --git a/www/assets/components/lingua/icons/flags/png/hn.png b/assets/components/lingua/icons/flags/png/hn.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/hn.png
rename to assets/components/lingua/icons/flags/png/hn.png
diff --git a/www/assets/components/lingua/icons/flags/png/hr.png b/assets/components/lingua/icons/flags/png/hr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/hr.png
rename to assets/components/lingua/icons/flags/png/hr.png
diff --git a/www/assets/components/lingua/icons/flags/png/ht.png b/assets/components/lingua/icons/flags/png/ht.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ht.png
rename to assets/components/lingua/icons/flags/png/ht.png
diff --git a/www/assets/components/lingua/icons/flags/png/hu.png b/assets/components/lingua/icons/flags/png/hu.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/hu.png
rename to assets/components/lingua/icons/flags/png/hu.png
diff --git a/www/assets/components/lingua/icons/flags/png/id.png b/assets/components/lingua/icons/flags/png/id.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/id.png
rename to assets/components/lingua/icons/flags/png/id.png
diff --git a/www/assets/components/lingua/icons/flags/png/ie.png b/assets/components/lingua/icons/flags/png/ie.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ie.png
rename to assets/components/lingua/icons/flags/png/ie.png
diff --git a/www/assets/components/lingua/icons/flags/png/il.png b/assets/components/lingua/icons/flags/png/il.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/il.png
rename to assets/components/lingua/icons/flags/png/il.png
diff --git a/www/assets/components/lingua/icons/flags/png/in.png b/assets/components/lingua/icons/flags/png/in.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/in.png
rename to assets/components/lingua/icons/flags/png/in.png
diff --git a/www/assets/components/lingua/icons/flags/png/io.png b/assets/components/lingua/icons/flags/png/io.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/io.png
rename to assets/components/lingua/icons/flags/png/io.png
diff --git a/www/assets/components/lingua/icons/flags/png/iq.png b/assets/components/lingua/icons/flags/png/iq.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/iq.png
rename to assets/components/lingua/icons/flags/png/iq.png
diff --git a/www/assets/components/lingua/icons/flags/png/ir.png b/assets/components/lingua/icons/flags/png/ir.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ir.png
rename to assets/components/lingua/icons/flags/png/ir.png
diff --git a/www/assets/components/lingua/icons/flags/png/is.png b/assets/components/lingua/icons/flags/png/is.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/is.png
rename to assets/components/lingua/icons/flags/png/is.png
diff --git a/www/assets/components/lingua/icons/flags/png/it.png b/assets/components/lingua/icons/flags/png/it.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/it.png
rename to assets/components/lingua/icons/flags/png/it.png
diff --git a/www/assets/components/lingua/icons/flags/png/jm.png b/assets/components/lingua/icons/flags/png/jm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/jm.png
rename to assets/components/lingua/icons/flags/png/jm.png
diff --git a/www/assets/components/lingua/icons/flags/png/jo.png b/assets/components/lingua/icons/flags/png/jo.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/jo.png
rename to assets/components/lingua/icons/flags/png/jo.png
diff --git a/www/assets/components/lingua/icons/flags/png/jp.png b/assets/components/lingua/icons/flags/png/jp.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/jp.png
rename to assets/components/lingua/icons/flags/png/jp.png
diff --git a/www/assets/components/lingua/icons/flags/png/ke.png b/assets/components/lingua/icons/flags/png/ke.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ke.png
rename to assets/components/lingua/icons/flags/png/ke.png
diff --git a/www/assets/components/lingua/icons/flags/png/kg.png b/assets/components/lingua/icons/flags/png/kg.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/kg.png
rename to assets/components/lingua/icons/flags/png/kg.png
diff --git a/www/assets/components/lingua/icons/flags/png/kh.png b/assets/components/lingua/icons/flags/png/kh.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/kh.png
rename to assets/components/lingua/icons/flags/png/kh.png
diff --git a/www/assets/components/lingua/icons/flags/png/ki.png b/assets/components/lingua/icons/flags/png/ki.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ki.png
rename to assets/components/lingua/icons/flags/png/ki.png
diff --git a/www/assets/components/lingua/icons/flags/png/km.png b/assets/components/lingua/icons/flags/png/km.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/km.png
rename to assets/components/lingua/icons/flags/png/km.png
diff --git a/www/assets/components/lingua/icons/flags/png/kn.png b/assets/components/lingua/icons/flags/png/kn.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/kn.png
rename to assets/components/lingua/icons/flags/png/kn.png
diff --git a/www/assets/components/lingua/icons/flags/png/kp.png b/assets/components/lingua/icons/flags/png/kp.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/kp.png
rename to assets/components/lingua/icons/flags/png/kp.png
diff --git a/www/assets/components/lingua/icons/flags/png/kr.png b/assets/components/lingua/icons/flags/png/kr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/kr.png
rename to assets/components/lingua/icons/flags/png/kr.png
diff --git a/www/assets/components/lingua/icons/flags/png/kw.png b/assets/components/lingua/icons/flags/png/kw.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/kw.png
rename to assets/components/lingua/icons/flags/png/kw.png
diff --git a/www/assets/components/lingua/icons/flags/png/ky.png b/assets/components/lingua/icons/flags/png/ky.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ky.png
rename to assets/components/lingua/icons/flags/png/ky.png
diff --git a/www/assets/components/lingua/icons/flags/png/kz.png b/assets/components/lingua/icons/flags/png/kz.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/kz.png
rename to assets/components/lingua/icons/flags/png/kz.png
diff --git a/www/assets/components/lingua/icons/flags/png/la.png b/assets/components/lingua/icons/flags/png/la.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/la.png
rename to assets/components/lingua/icons/flags/png/la.png
diff --git a/www/assets/components/lingua/icons/flags/png/lb.png b/assets/components/lingua/icons/flags/png/lb.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/lb.png
rename to assets/components/lingua/icons/flags/png/lb.png
diff --git a/www/assets/components/lingua/icons/flags/png/lc.png b/assets/components/lingua/icons/flags/png/lc.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/lc.png
rename to assets/components/lingua/icons/flags/png/lc.png
diff --git a/www/assets/components/lingua/icons/flags/png/li.png b/assets/components/lingua/icons/flags/png/li.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/li.png
rename to assets/components/lingua/icons/flags/png/li.png
diff --git a/www/assets/components/lingua/icons/flags/png/lk.png b/assets/components/lingua/icons/flags/png/lk.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/lk.png
rename to assets/components/lingua/icons/flags/png/lk.png
diff --git a/www/assets/components/lingua/icons/flags/png/lr.png b/assets/components/lingua/icons/flags/png/lr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/lr.png
rename to assets/components/lingua/icons/flags/png/lr.png
diff --git a/www/assets/components/lingua/icons/flags/png/ls.png b/assets/components/lingua/icons/flags/png/ls.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ls.png
rename to assets/components/lingua/icons/flags/png/ls.png
diff --git a/www/assets/components/lingua/icons/flags/png/lt.png b/assets/components/lingua/icons/flags/png/lt.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/lt.png
rename to assets/components/lingua/icons/flags/png/lt.png
diff --git a/www/assets/components/lingua/icons/flags/png/lu.png b/assets/components/lingua/icons/flags/png/lu.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/lu.png
rename to assets/components/lingua/icons/flags/png/lu.png
diff --git a/www/assets/components/lingua/icons/flags/png/lv.png b/assets/components/lingua/icons/flags/png/lv.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/lv.png
rename to assets/components/lingua/icons/flags/png/lv.png
diff --git a/www/assets/components/lingua/icons/flags/png/ly.png b/assets/components/lingua/icons/flags/png/ly.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ly.png
rename to assets/components/lingua/icons/flags/png/ly.png
diff --git a/www/assets/components/lingua/icons/flags/png/ma.png b/assets/components/lingua/icons/flags/png/ma.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ma.png
rename to assets/components/lingua/icons/flags/png/ma.png
diff --git a/www/assets/components/lingua/icons/flags/png/mc.png b/assets/components/lingua/icons/flags/png/mc.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mc.png
rename to assets/components/lingua/icons/flags/png/mc.png
diff --git a/www/assets/components/lingua/icons/flags/png/md.png b/assets/components/lingua/icons/flags/png/md.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/md.png
rename to assets/components/lingua/icons/flags/png/md.png
diff --git a/www/assets/components/lingua/icons/flags/png/me.png b/assets/components/lingua/icons/flags/png/me.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/me.png
rename to assets/components/lingua/icons/flags/png/me.png
diff --git a/www/assets/components/lingua/icons/flags/png/mg.png b/assets/components/lingua/icons/flags/png/mg.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mg.png
rename to assets/components/lingua/icons/flags/png/mg.png
diff --git a/www/assets/components/lingua/icons/flags/png/mh.png b/assets/components/lingua/icons/flags/png/mh.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mh.png
rename to assets/components/lingua/icons/flags/png/mh.png
diff --git a/www/assets/components/lingua/icons/flags/png/mk.png b/assets/components/lingua/icons/flags/png/mk.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mk.png
rename to assets/components/lingua/icons/flags/png/mk.png
diff --git a/www/assets/components/lingua/icons/flags/png/ml.png b/assets/components/lingua/icons/flags/png/ml.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ml.png
rename to assets/components/lingua/icons/flags/png/ml.png
diff --git a/www/assets/components/lingua/icons/flags/png/mm.png b/assets/components/lingua/icons/flags/png/mm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mm.png
rename to assets/components/lingua/icons/flags/png/mm.png
diff --git a/www/assets/components/lingua/icons/flags/png/mn.png b/assets/components/lingua/icons/flags/png/mn.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mn.png
rename to assets/components/lingua/icons/flags/png/mn.png
diff --git a/www/assets/components/lingua/icons/flags/png/mo.png b/assets/components/lingua/icons/flags/png/mo.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mo.png
rename to assets/components/lingua/icons/flags/png/mo.png
diff --git a/www/assets/components/lingua/icons/flags/png/mp.png b/assets/components/lingua/icons/flags/png/mp.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mp.png
rename to assets/components/lingua/icons/flags/png/mp.png
diff --git a/www/assets/components/lingua/icons/flags/png/mq.png b/assets/components/lingua/icons/flags/png/mq.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mq.png
rename to assets/components/lingua/icons/flags/png/mq.png
diff --git a/www/assets/components/lingua/icons/flags/png/mr.png b/assets/components/lingua/icons/flags/png/mr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mr.png
rename to assets/components/lingua/icons/flags/png/mr.png
diff --git a/www/assets/components/lingua/icons/flags/png/ms.png b/assets/components/lingua/icons/flags/png/ms.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ms.png
rename to assets/components/lingua/icons/flags/png/ms.png
diff --git a/www/assets/components/lingua/icons/flags/png/mt.png b/assets/components/lingua/icons/flags/png/mt.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mt.png
rename to assets/components/lingua/icons/flags/png/mt.png
diff --git a/www/assets/components/lingua/icons/flags/png/mu.png b/assets/components/lingua/icons/flags/png/mu.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mu.png
rename to assets/components/lingua/icons/flags/png/mu.png
diff --git a/www/assets/components/lingua/icons/flags/png/mv.png b/assets/components/lingua/icons/flags/png/mv.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mv.png
rename to assets/components/lingua/icons/flags/png/mv.png
diff --git a/www/assets/components/lingua/icons/flags/png/mw.png b/assets/components/lingua/icons/flags/png/mw.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mw.png
rename to assets/components/lingua/icons/flags/png/mw.png
diff --git a/www/assets/components/lingua/icons/flags/png/mx.png b/assets/components/lingua/icons/flags/png/mx.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mx.png
rename to assets/components/lingua/icons/flags/png/mx.png
diff --git a/www/assets/components/lingua/icons/flags/png/my.png b/assets/components/lingua/icons/flags/png/my.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/my.png
rename to assets/components/lingua/icons/flags/png/my.png
diff --git a/www/assets/components/lingua/icons/flags/png/mz.png b/assets/components/lingua/icons/flags/png/mz.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/mz.png
rename to assets/components/lingua/icons/flags/png/mz.png
diff --git a/www/assets/components/lingua/icons/flags/png/na.png b/assets/components/lingua/icons/flags/png/na.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/na.png
rename to assets/components/lingua/icons/flags/png/na.png
diff --git a/www/assets/components/lingua/icons/flags/png/nc.png b/assets/components/lingua/icons/flags/png/nc.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/nc.png
rename to assets/components/lingua/icons/flags/png/nc.png
diff --git a/www/assets/components/lingua/icons/flags/png/ne.png b/assets/components/lingua/icons/flags/png/ne.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ne.png
rename to assets/components/lingua/icons/flags/png/ne.png
diff --git a/www/assets/components/lingua/icons/flags/png/nf.png b/assets/components/lingua/icons/flags/png/nf.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/nf.png
rename to assets/components/lingua/icons/flags/png/nf.png
diff --git a/www/assets/components/lingua/icons/flags/png/ng.png b/assets/components/lingua/icons/flags/png/ng.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ng.png
rename to assets/components/lingua/icons/flags/png/ng.png
diff --git a/www/assets/components/lingua/icons/flags/png/ni.png b/assets/components/lingua/icons/flags/png/ni.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ni.png
rename to assets/components/lingua/icons/flags/png/ni.png
diff --git a/www/assets/components/lingua/icons/flags/png/nl.png b/assets/components/lingua/icons/flags/png/nl.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/nl.png
rename to assets/components/lingua/icons/flags/png/nl.png
diff --git a/www/assets/components/lingua/icons/flags/png/no.png b/assets/components/lingua/icons/flags/png/no.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/no.png
rename to assets/components/lingua/icons/flags/png/no.png
diff --git a/www/assets/components/lingua/icons/flags/png/np.png b/assets/components/lingua/icons/flags/png/np.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/np.png
rename to assets/components/lingua/icons/flags/png/np.png
diff --git a/www/assets/components/lingua/icons/flags/png/nr.png b/assets/components/lingua/icons/flags/png/nr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/nr.png
rename to assets/components/lingua/icons/flags/png/nr.png
diff --git a/www/assets/components/lingua/icons/flags/png/nu.png b/assets/components/lingua/icons/flags/png/nu.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/nu.png
rename to assets/components/lingua/icons/flags/png/nu.png
diff --git a/www/assets/components/lingua/icons/flags/png/nz.png b/assets/components/lingua/icons/flags/png/nz.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/nz.png
rename to assets/components/lingua/icons/flags/png/nz.png
diff --git a/www/assets/components/lingua/icons/flags/png/om.png b/assets/components/lingua/icons/flags/png/om.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/om.png
rename to assets/components/lingua/icons/flags/png/om.png
diff --git a/www/assets/components/lingua/icons/flags/png/pa.png b/assets/components/lingua/icons/flags/png/pa.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pa.png
rename to assets/components/lingua/icons/flags/png/pa.png
diff --git a/www/assets/components/lingua/icons/flags/png/pe.png b/assets/components/lingua/icons/flags/png/pe.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pe.png
rename to assets/components/lingua/icons/flags/png/pe.png
diff --git a/www/assets/components/lingua/icons/flags/png/pf.png b/assets/components/lingua/icons/flags/png/pf.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pf.png
rename to assets/components/lingua/icons/flags/png/pf.png
diff --git a/www/assets/components/lingua/icons/flags/png/pg.png b/assets/components/lingua/icons/flags/png/pg.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pg.png
rename to assets/components/lingua/icons/flags/png/pg.png
diff --git a/www/assets/components/lingua/icons/flags/png/ph.png b/assets/components/lingua/icons/flags/png/ph.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ph.png
rename to assets/components/lingua/icons/flags/png/ph.png
diff --git a/www/assets/components/lingua/icons/flags/png/pk.png b/assets/components/lingua/icons/flags/png/pk.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pk.png
rename to assets/components/lingua/icons/flags/png/pk.png
diff --git a/www/assets/components/lingua/icons/flags/png/pl.png b/assets/components/lingua/icons/flags/png/pl.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pl.png
rename to assets/components/lingua/icons/flags/png/pl.png
diff --git a/www/assets/components/lingua/icons/flags/png/pm.png b/assets/components/lingua/icons/flags/png/pm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pm.png
rename to assets/components/lingua/icons/flags/png/pm.png
diff --git a/www/assets/components/lingua/icons/flags/png/pn.png b/assets/components/lingua/icons/flags/png/pn.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pn.png
rename to assets/components/lingua/icons/flags/png/pn.png
diff --git a/www/assets/components/lingua/icons/flags/png/pr.png b/assets/components/lingua/icons/flags/png/pr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pr.png
rename to assets/components/lingua/icons/flags/png/pr.png
diff --git a/www/assets/components/lingua/icons/flags/png/ps.png b/assets/components/lingua/icons/flags/png/ps.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ps.png
rename to assets/components/lingua/icons/flags/png/ps.png
diff --git a/www/assets/components/lingua/icons/flags/png/pt.png b/assets/components/lingua/icons/flags/png/pt.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pt.png
rename to assets/components/lingua/icons/flags/png/pt.png
diff --git a/www/assets/components/lingua/icons/flags/png/pw.png b/assets/components/lingua/icons/flags/png/pw.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/pw.png
rename to assets/components/lingua/icons/flags/png/pw.png
diff --git a/www/assets/components/lingua/icons/flags/png/py.png b/assets/components/lingua/icons/flags/png/py.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/py.png
rename to assets/components/lingua/icons/flags/png/py.png
diff --git a/www/assets/components/lingua/icons/flags/png/qa.png b/assets/components/lingua/icons/flags/png/qa.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/qa.png
rename to assets/components/lingua/icons/flags/png/qa.png
diff --git a/www/assets/components/lingua/icons/flags/png/re.png b/assets/components/lingua/icons/flags/png/re.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/re.png
rename to assets/components/lingua/icons/flags/png/re.png
diff --git a/www/assets/components/lingua/icons/flags/png/ro.png b/assets/components/lingua/icons/flags/png/ro.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ro.png
rename to assets/components/lingua/icons/flags/png/ro.png
diff --git a/www/assets/components/lingua/icons/flags/png/rs.png b/assets/components/lingua/icons/flags/png/rs.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/rs.png
rename to assets/components/lingua/icons/flags/png/rs.png
diff --git a/www/assets/components/lingua/icons/flags/png/ru.png b/assets/components/lingua/icons/flags/png/ru.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ru.png
rename to assets/components/lingua/icons/flags/png/ru.png
diff --git a/www/assets/components/lingua/icons/flags/png/rw.png b/assets/components/lingua/icons/flags/png/rw.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/rw.png
rename to assets/components/lingua/icons/flags/png/rw.png
diff --git a/www/assets/components/lingua/icons/flags/png/sa.png b/assets/components/lingua/icons/flags/png/sa.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sa.png
rename to assets/components/lingua/icons/flags/png/sa.png
diff --git a/www/assets/components/lingua/icons/flags/png/sb.png b/assets/components/lingua/icons/flags/png/sb.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sb.png
rename to assets/components/lingua/icons/flags/png/sb.png
diff --git a/www/assets/components/lingua/icons/flags/png/sc.png b/assets/components/lingua/icons/flags/png/sc.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sc.png
rename to assets/components/lingua/icons/flags/png/sc.png
diff --git a/www/assets/components/lingua/icons/flags/png/scotland.png b/assets/components/lingua/icons/flags/png/scotland.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/scotland.png
rename to assets/components/lingua/icons/flags/png/scotland.png
diff --git a/www/assets/components/lingua/icons/flags/png/sd.png b/assets/components/lingua/icons/flags/png/sd.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sd.png
rename to assets/components/lingua/icons/flags/png/sd.png
diff --git a/www/assets/components/lingua/icons/flags/png/se.png b/assets/components/lingua/icons/flags/png/se.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/se.png
rename to assets/components/lingua/icons/flags/png/se.png
diff --git a/www/assets/components/lingua/icons/flags/png/sg.png b/assets/components/lingua/icons/flags/png/sg.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sg.png
rename to assets/components/lingua/icons/flags/png/sg.png
diff --git a/www/assets/components/lingua/icons/flags/png/sh.png b/assets/components/lingua/icons/flags/png/sh.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sh.png
rename to assets/components/lingua/icons/flags/png/sh.png
diff --git a/www/assets/components/lingua/icons/flags/png/si.png b/assets/components/lingua/icons/flags/png/si.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/si.png
rename to assets/components/lingua/icons/flags/png/si.png
diff --git a/www/assets/components/lingua/icons/flags/png/sj.png b/assets/components/lingua/icons/flags/png/sj.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sj.png
rename to assets/components/lingua/icons/flags/png/sj.png
diff --git a/www/assets/components/lingua/icons/flags/png/sk.png b/assets/components/lingua/icons/flags/png/sk.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sk.png
rename to assets/components/lingua/icons/flags/png/sk.png
diff --git a/www/assets/components/lingua/icons/flags/png/sl.png b/assets/components/lingua/icons/flags/png/sl.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sl.png
rename to assets/components/lingua/icons/flags/png/sl.png
diff --git a/www/assets/components/lingua/icons/flags/png/sm.png b/assets/components/lingua/icons/flags/png/sm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sm.png
rename to assets/components/lingua/icons/flags/png/sm.png
diff --git a/www/assets/components/lingua/icons/flags/png/sn.png b/assets/components/lingua/icons/flags/png/sn.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sn.png
rename to assets/components/lingua/icons/flags/png/sn.png
diff --git a/www/assets/components/lingua/icons/flags/png/so.png b/assets/components/lingua/icons/flags/png/so.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/so.png
rename to assets/components/lingua/icons/flags/png/so.png
diff --git a/www/assets/components/lingua/icons/flags/png/sr.png b/assets/components/lingua/icons/flags/png/sr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sr.png
rename to assets/components/lingua/icons/flags/png/sr.png
diff --git a/www/assets/components/lingua/icons/flags/png/st.png b/assets/components/lingua/icons/flags/png/st.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/st.png
rename to assets/components/lingua/icons/flags/png/st.png
diff --git a/www/assets/components/lingua/icons/flags/png/sv.png b/assets/components/lingua/icons/flags/png/sv.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sv.png
rename to assets/components/lingua/icons/flags/png/sv.png
diff --git a/www/assets/components/lingua/icons/flags/png/sy.png b/assets/components/lingua/icons/flags/png/sy.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sy.png
rename to assets/components/lingua/icons/flags/png/sy.png
diff --git a/www/assets/components/lingua/icons/flags/png/sz.png b/assets/components/lingua/icons/flags/png/sz.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/sz.png
rename to assets/components/lingua/icons/flags/png/sz.png
diff --git a/www/assets/components/lingua/icons/flags/png/tc.png b/assets/components/lingua/icons/flags/png/tc.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tc.png
rename to assets/components/lingua/icons/flags/png/tc.png
diff --git a/www/assets/components/lingua/icons/flags/png/td.png b/assets/components/lingua/icons/flags/png/td.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/td.png
rename to assets/components/lingua/icons/flags/png/td.png
diff --git a/www/assets/components/lingua/icons/flags/png/tf.png b/assets/components/lingua/icons/flags/png/tf.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tf.png
rename to assets/components/lingua/icons/flags/png/tf.png
diff --git a/www/assets/components/lingua/icons/flags/png/tg.png b/assets/components/lingua/icons/flags/png/tg.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tg.png
rename to assets/components/lingua/icons/flags/png/tg.png
diff --git a/www/assets/components/lingua/icons/flags/png/th.png b/assets/components/lingua/icons/flags/png/th.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/th.png
rename to assets/components/lingua/icons/flags/png/th.png
diff --git a/www/assets/components/lingua/icons/flags/png/tj.png b/assets/components/lingua/icons/flags/png/tj.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tj.png
rename to assets/components/lingua/icons/flags/png/tj.png
diff --git a/www/assets/components/lingua/icons/flags/png/tk.png b/assets/components/lingua/icons/flags/png/tk.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tk.png
rename to assets/components/lingua/icons/flags/png/tk.png
diff --git a/www/assets/components/lingua/icons/flags/png/tl.png b/assets/components/lingua/icons/flags/png/tl.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tl.png
rename to assets/components/lingua/icons/flags/png/tl.png
diff --git a/www/assets/components/lingua/icons/flags/png/tm.png b/assets/components/lingua/icons/flags/png/tm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tm.png
rename to assets/components/lingua/icons/flags/png/tm.png
diff --git a/www/assets/components/lingua/icons/flags/png/tn.png b/assets/components/lingua/icons/flags/png/tn.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tn.png
rename to assets/components/lingua/icons/flags/png/tn.png
diff --git a/www/assets/components/lingua/icons/flags/png/to.png b/assets/components/lingua/icons/flags/png/to.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/to.png
rename to assets/components/lingua/icons/flags/png/to.png
diff --git a/www/assets/components/lingua/icons/flags/png/tr.png b/assets/components/lingua/icons/flags/png/tr.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tr.png
rename to assets/components/lingua/icons/flags/png/tr.png
diff --git a/www/assets/components/lingua/icons/flags/png/tt.png b/assets/components/lingua/icons/flags/png/tt.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tt.png
rename to assets/components/lingua/icons/flags/png/tt.png
diff --git a/www/assets/components/lingua/icons/flags/png/tv.png b/assets/components/lingua/icons/flags/png/tv.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tv.png
rename to assets/components/lingua/icons/flags/png/tv.png
diff --git a/www/assets/components/lingua/icons/flags/png/tw.png b/assets/components/lingua/icons/flags/png/tw.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tw.png
rename to assets/components/lingua/icons/flags/png/tw.png
diff --git a/www/assets/components/lingua/icons/flags/png/tz.png b/assets/components/lingua/icons/flags/png/tz.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/tz.png
rename to assets/components/lingua/icons/flags/png/tz.png
diff --git a/www/assets/components/lingua/icons/flags/png/ua.png b/assets/components/lingua/icons/flags/png/ua.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ua.png
rename to assets/components/lingua/icons/flags/png/ua.png
diff --git a/www/assets/components/lingua/icons/flags/png/ug.png b/assets/components/lingua/icons/flags/png/ug.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ug.png
rename to assets/components/lingua/icons/flags/png/ug.png
diff --git a/www/assets/components/lingua/icons/flags/png/um.png b/assets/components/lingua/icons/flags/png/um.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/um.png
rename to assets/components/lingua/icons/flags/png/um.png
diff --git a/www/assets/components/lingua/icons/flags/png/us.png b/assets/components/lingua/icons/flags/png/us.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/us.png
rename to assets/components/lingua/icons/flags/png/us.png
diff --git a/www/assets/components/lingua/icons/flags/png/uy.png b/assets/components/lingua/icons/flags/png/uy.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/uy.png
rename to assets/components/lingua/icons/flags/png/uy.png
diff --git a/www/assets/components/lingua/icons/flags/png/uz.png b/assets/components/lingua/icons/flags/png/uz.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/uz.png
rename to assets/components/lingua/icons/flags/png/uz.png
diff --git a/www/assets/components/lingua/icons/flags/png/va.png b/assets/components/lingua/icons/flags/png/va.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/va.png
rename to assets/components/lingua/icons/flags/png/va.png
diff --git a/www/assets/components/lingua/icons/flags/png/vc.png b/assets/components/lingua/icons/flags/png/vc.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/vc.png
rename to assets/components/lingua/icons/flags/png/vc.png
diff --git a/www/assets/components/lingua/icons/flags/png/ve.png b/assets/components/lingua/icons/flags/png/ve.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ve.png
rename to assets/components/lingua/icons/flags/png/ve.png
diff --git a/www/assets/components/lingua/icons/flags/png/vg.png b/assets/components/lingua/icons/flags/png/vg.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/vg.png
rename to assets/components/lingua/icons/flags/png/vg.png
diff --git a/www/assets/components/lingua/icons/flags/png/vi.png b/assets/components/lingua/icons/flags/png/vi.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/vi.png
rename to assets/components/lingua/icons/flags/png/vi.png
diff --git a/www/assets/components/lingua/icons/flags/png/vn.png b/assets/components/lingua/icons/flags/png/vn.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/vn.png
rename to assets/components/lingua/icons/flags/png/vn.png
diff --git a/www/assets/components/lingua/icons/flags/png/vu.png b/assets/components/lingua/icons/flags/png/vu.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/vu.png
rename to assets/components/lingua/icons/flags/png/vu.png
diff --git a/www/assets/components/lingua/icons/flags/png/wales.png b/assets/components/lingua/icons/flags/png/wales.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/wales.png
rename to assets/components/lingua/icons/flags/png/wales.png
diff --git a/www/assets/components/lingua/icons/flags/png/wf.png b/assets/components/lingua/icons/flags/png/wf.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/wf.png
rename to assets/components/lingua/icons/flags/png/wf.png
diff --git a/www/assets/components/lingua/icons/flags/png/ws.png b/assets/components/lingua/icons/flags/png/ws.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ws.png
rename to assets/components/lingua/icons/flags/png/ws.png
diff --git a/www/assets/components/lingua/icons/flags/png/ye.png b/assets/components/lingua/icons/flags/png/ye.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/ye.png
rename to assets/components/lingua/icons/flags/png/ye.png
diff --git a/www/assets/components/lingua/icons/flags/png/yt.png b/assets/components/lingua/icons/flags/png/yt.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/yt.png
rename to assets/components/lingua/icons/flags/png/yt.png
diff --git a/www/assets/components/lingua/icons/flags/png/za.png b/assets/components/lingua/icons/flags/png/za.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/za.png
rename to assets/components/lingua/icons/flags/png/za.png
diff --git a/www/assets/components/lingua/icons/flags/png/zm.png b/assets/components/lingua/icons/flags/png/zm.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/zm.png
rename to assets/components/lingua/icons/flags/png/zm.png
diff --git a/www/assets/components/lingua/icons/flags/png/zw.png b/assets/components/lingua/icons/flags/png/zw.png
similarity index 100%
rename from www/assets/components/lingua/icons/flags/png/zw.png
rename to assets/components/lingua/icons/flags/png/zw.png
diff --git a/www/assets/components/lingua/icons/flags/readme.txt b/assets/components/lingua/icons/flags/readme.txt
similarity index 100%
rename from www/assets/components/lingua/icons/flags/readme.txt
rename to assets/components/lingua/icons/flags/readme.txt
diff --git a/assets/components/lingua/index.html b/assets/components/lingua/index.html
new file mode 100644
index 0000000..e69de29
diff --git a/www/assets/components/lingua/js/mgr/fcinit.js b/assets/components/lingua/js/mgr/fcinit.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/fcinit.js
rename to assets/components/lingua/js/mgr/fcinit.js
diff --git a/www/assets/components/lingua/js/mgr/lingua.js b/assets/components/lingua/js/mgr/lingua.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/lingua.js
rename to assets/components/lingua/js/mgr/lingua.js
diff --git a/www/assets/components/lingua/js/mgr/resource.js b/assets/components/lingua/js/mgr/resource.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/resource.js
rename to assets/components/lingua/js/mgr/resource.js
diff --git a/www/assets/components/lingua/js/mgr/sections/index.js b/assets/components/lingua/js/mgr/sections/index.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/sections/index.js
rename to assets/components/lingua/js/mgr/sections/index.js
diff --git a/www/assets/components/lingua/js/mgr/widgets/combo.resource.js b/assets/components/lingua/js/mgr/widgets/combo.resource.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/widgets/combo.resource.js
rename to assets/components/lingua/js/mgr/widgets/combo.resource.js
diff --git a/www/assets/components/lingua/js/mgr/widgets/combo.tv.js b/assets/components/lingua/js/mgr/widgets/combo.tv.js
similarity index 92%
rename from www/assets/components/lingua/js/mgr/widgets/combo.tv.js
rename to assets/components/lingua/js/mgr/widgets/combo.tv.js
index f2a22d1..8568a2c 100644
--- a/www/assets/components/lingua/js/mgr/widgets/combo.tv.js
+++ b/assets/components/lingua/js/mgr/widgets/combo.tv.js
@@ -4,7 +4,7 @@ Lingua.combo.TV = function(config) {
Ext.applyIf(config, {
url: Lingua.config.connectorUrl,
baseParams: {
- action: 'mgr/tv/combogetlist',
+ action: 'Lingua\\Processors\\Tv\\ComboGetList',
excludeExisting: 1
},
width: 300,
diff --git a/www/assets/components/lingua/js/mgr/widgets/grid.langs.js b/assets/components/lingua/js/mgr/widgets/grid.langs.js
similarity index 94%
rename from www/assets/components/lingua/js/mgr/widgets/grid.langs.js
rename to assets/components/lingua/js/mgr/widgets/grid.langs.js
index 9d4e04e..665e1e7 100644
--- a/www/assets/components/lingua/js/mgr/widgets/grid.langs.js
+++ b/assets/components/lingua/js/mgr/widgets/grid.langs.js
@@ -4,13 +4,13 @@ Lingua.grid.Langs = function (config) {
Ext.applyIf(config, {
id: 'lingua-grid-langs',
url: Lingua.config.connectorUrl,
- baseParams: {action: 'mgr/langs/getList'},
+ baseParams: {action: 'Lingua\\Processors\\Langs\\GetList'},
fields: ['id', 'active', 'local_name', 'lang_code', 'lcid_string', 'lcid_dec',
'date_format_lite', 'date_format_full', 'is_rtl', 'flag'],
paging: true,
remoteSort: true,
anchor: '97%',
- save_action: 'mgr/langs/updateFromGrid',
+ save_action: 'Lingua\\Processors\\Langs\\UpdateFromGrid',
autosave: true,
autoExpandColumn: 'local_name',
columns: [{
@@ -54,7 +54,7 @@ Lingua.grid.Langs = function (config) {
MODx.Ajax.request({
url: Lingua.config.connectorUrl,
params: {
- action: 'mgr/langs/updateFromGrid',
+ action: 'Lingua\\Processors\\Langs\\UpdateFromGrid',
data: JSON.stringify(selectedRow.data)
}
});
@@ -112,7 +112,7 @@ Lingua.grid.Langs = function (config) {
xtype: 'lingua-window-lang',
title: _('lingua.lang_create'),
baseParams: {
- action: 'mgr/langs/create'
+ action: 'Lingua\\Processors\\Langs\\Create'
},
blankValues: true
}
@@ -167,7 +167,7 @@ Ext.extend(Lingua.grid.Langs, MODx.grid.Grid, {
MODx.Ajax.request({
url: Lingua.config.connectorUrl,
params: {
- action: 'mgr/langs/updateFromGrid',
+ action: 'Lingua\\Processors\\Langs\\UpdateFromGrid',
data: JSON.stringify(record.data)
},
listeners: {
@@ -189,7 +189,7 @@ Ext.extend(Lingua.grid.Langs, MODx.grid.Grid, {
xtype: 'lingua-window-lang',
title: _('lingua.update'),
baseParams: {
- action: 'mgr/langs/update'
+ action: 'Lingua\\Processors\\Langs\\Update'
},
listeners: {
'success': {
@@ -209,7 +209,7 @@ Ext.extend(Lingua.grid.Langs, MODx.grid.Grid, {
text: _('lingua.delete_lang_confirm'),
url: this.config.url,
params: {
- action: 'mgr/langs/remove',
+ action: 'Lingua\\Processors\\Langs\\Remove',
id: this.menu.record.id
},
listeners: {
diff --git a/www/assets/components/lingua/js/mgr/widgets/grid.resourcescopes.js b/assets/components/lingua/js/mgr/widgets/grid.resourcescopes.js
similarity index 93%
rename from www/assets/components/lingua/js/mgr/widgets/grid.resourcescopes.js
rename to assets/components/lingua/js/mgr/widgets/grid.resourcescopes.js
index 558676d..b0f84d6 100644
--- a/www/assets/components/lingua/js/mgr/widgets/grid.resourcescopes.js
+++ b/assets/components/lingua/js/mgr/widgets/grid.resourcescopes.js
@@ -4,7 +4,7 @@ Lingua.grid.ResourceScopes = function (config) {
Ext.applyIf(config, {
id: 'lingua-grid-resourcescopes',
url: Lingua.config.connectorUrl,
- baseParams: {action: 'mgr/resourcescopes/getList'},
+ baseParams: {action: 'Lingua\\Processors\\ResourceScopes\\GetList'},
fields: ['id', 'resource_id', 'pagetitle', 'properties', 'property_langs',
'as_parent', 'as_ancestor', 'exclude_self'],
paging: true,
@@ -65,7 +65,7 @@ Lingua.grid.ResourceScopes = function (config) {
xtype: 'lingua-window-resourcescope',
title: _('lingua.resourcescope_create'),
baseParams: {
- action: 'mgr/resourcescopes/create'
+ action: 'Lingua\\Processors\\ResourceScopes\\Create'
},
blankValues: true
}
@@ -120,7 +120,7 @@ Ext.extend(Lingua.grid.ResourceScopes, MODx.grid.Grid, {
MODx.Ajax.request({
url: Lingua.config.connectorUrl,
params: {
- action: 'mgr/resourcescopes/updateFromGrid',
+ action: 'Lingua\\Processors\\ResourceScopes\\UpdateFromGrid',
data: JSON.stringify(record.data)
},
listeners: {
@@ -141,7 +141,7 @@ Ext.extend(Lingua.grid.ResourceScopes, MODx.grid.Grid, {
xtype: 'lingua-window-resourcescope',
title: _('lingua.update'),
baseParams: {
- action: 'mgr/resourcescopes/update',
+ action: 'Lingua\\Processors\\ResourceScopes\\Update',
id: this.menu.record.id
},
closeAction: 'close',
@@ -161,7 +161,7 @@ Ext.extend(Lingua.grid.ResourceScopes, MODx.grid.Grid, {
text: _('lingua.delete_resourcescope_confirm'),
url: this.config.url,
params: {
- action: 'mgr/resourcescopes/remove',
+ action: 'Lingua\\Processors\\ResourceScopes\\Remove',
id: this.menu.record.id
},
listeners: {
diff --git a/www/assets/components/lingua/js/mgr/widgets/grid.sync.js b/assets/components/lingua/js/mgr/widgets/grid.sync.js
similarity index 96%
rename from www/assets/components/lingua/js/mgr/widgets/grid.sync.js
rename to assets/components/lingua/js/mgr/widgets/grid.sync.js
index a1c449c..eb6dc56 100644
--- a/www/assets/components/lingua/js/mgr/widgets/grid.sync.js
+++ b/assets/components/lingua/js/mgr/widgets/grid.sync.js
@@ -57,7 +57,7 @@ Ext.extend(Lingua.grid.Sync, MODx.grid.LocalGrid, {
MODx.Ajax.request({
url: Lingua.config.connectorUrl,
params: {
- action: 'mgr/contexts/getlist',
+ action: 'Lingua\\Processors\\Contexts\\GetList',
},
listeners: {
'success': {
@@ -84,7 +84,7 @@ Ext.extend(Lingua.grid.Sync, MODx.grid.LocalGrid, {
title: _('lingua.auto_sync'),
contexts: contexts,
baseParams: {
- action: 'mgr/tools/autosync',
+ action: 'Lingua\\Processors\\Tools\\AutoSync',
limit: 20,
start: 0
},
@@ -124,7 +124,7 @@ Ext.extend(Lingua.grid.Sync, MODx.grid.LocalGrid, {
MODx.Ajax.request({
url: Lingua.config.connectorUrl,
params: {
- action: 'mgr/tools/autosync',
+ action: 'Lingua\\Processors\\Tools\\AutoSync',
limit: (limit ? limit : 20),
start: (start ? start : 0)
},
@@ -193,7 +193,7 @@ Ext.extend(Lingua.grid.Sync, MODx.grid.LocalGrid, {
MODx.Ajax.request({
url: Lingua.config.connectorUrl,
params: {
- action: 'mgr/tools/manualsync',
+ action: 'Lingua\\Processors\\Tools\\ManualSync',
limit: (limit ? limit : 20),
start: (start ? start : 0),
ids: JSON.stringify(ids)
diff --git a/www/assets/components/lingua/js/mgr/widgets/grid.tvs.js b/assets/components/lingua/js/mgr/widgets/grid.tvs.js
similarity index 93%
rename from www/assets/components/lingua/js/mgr/widgets/grid.tvs.js
rename to assets/components/lingua/js/mgr/widgets/grid.tvs.js
index 61f1a7c..c93c571 100644
--- a/www/assets/components/lingua/js/mgr/widgets/grid.tvs.js
+++ b/assets/components/lingua/js/mgr/widgets/grid.tvs.js
@@ -4,7 +4,7 @@ Lingua.grid.TVs = function(config) {
Ext.applyIf(config, {
id: 'lingua-grid-tvs',
url: Lingua.config.connectorUrl,
- baseParams: {action: 'mgr/tv/getList'},
+ baseParams: {action: 'Lingua\\Processors\\Tv\\GetList'},
fields: ['id', 'name', 'type'],
paging: true,
remoteSort: true,
@@ -31,7 +31,7 @@ Lingua.grid.TVs = function(config) {
xtype: 'lingua-window-tv',
title: _('lingua.add_tv'),
baseParams: {
- action: 'mgr/tv/create'
+ action: 'Lingua\\Processors\\Tv\\Create'
},
blankValues: true
}
@@ -83,7 +83,7 @@ Ext.extend(Lingua.grid.TVs, MODx.grid.Grid, {
text: _('lingua.delete_tv_confirm'),
url: this.config.url,
params: {
- action: 'mgr/tv/remove',
+ action: 'Lingua\\Processors\\Tv\\Remove',
id: this.menu.record.id
},
listeners: {
diff --git a/www/assets/components/lingua/js/mgr/widgets/grid.tvspatterns.js b/assets/components/lingua/js/mgr/widgets/grid.tvspatterns.js
similarity index 91%
rename from www/assets/components/lingua/js/mgr/widgets/grid.tvspatterns.js
rename to assets/components/lingua/js/mgr/widgets/grid.tvspatterns.js
index 3bce79e..31c3464 100644
--- a/www/assets/components/lingua/js/mgr/widgets/grid.tvspatterns.js
+++ b/assets/components/lingua/js/mgr/widgets/grid.tvspatterns.js
@@ -4,12 +4,12 @@ Lingua.grid.TVsPatterns = function(config) {
Ext.applyIf(config, {
id: 'lingua-grid-tvspatterns',
url: Lingua.config.connectorUrl,
- baseParams: {action: 'mgr/tvpatterns/getList'},
+ baseParams: {action: 'Lingua\\Processors\\TvPatterns\\GetList'},
fields: ['id', 'type', 'search', 'replacement'],
paging: true,
remoteSort: true,
anchor: '97%',
- save_action: 'mgr/tvpatterns/updateFromGrid',
+ save_action: 'Lingua\\Processors\\TvPatterns\\UpdateFromGrid',
autosave: true,
autoExpandColumn: 'search',
columns: [{
@@ -40,7 +40,7 @@ Lingua.grid.TVsPatterns = function(config) {
xtype: 'lingua-window-tvpattern',
title: _('lingua.add_pattern'),
baseParams: {
- action: 'mgr/tvpatterns/create'
+ action: 'Lingua\\Processors\\TvPatterns\\Create'
},
blankValues: true
}
@@ -98,7 +98,7 @@ Ext.extend(Lingua.grid.TVsPatterns, MODx.grid.Grid, {
xtype: 'lingua-window-tvpattern',
title: _('lingua.update'),
baseParams: {
- action: 'mgr/tvpatterns/update'
+ action: 'Lingua\\Processors\\TvPatterns\\Update'
},
listeners: {
'success': {
@@ -118,7 +118,7 @@ Ext.extend(Lingua.grid.TVsPatterns, MODx.grid.Grid, {
xtype: 'lingua-window-tvpattern',
title: _('duplicate'),
baseParams: {
- action: 'mgr/tvpatterns/create'
+ action: 'Lingua\\Processors\\TvPatterns\\Create'
},
listeners: {
'success': {
@@ -139,7 +139,7 @@ Ext.extend(Lingua.grid.TVsPatterns, MODx.grid.Grid, {
text: _('lingua.delete_lang_confirm'),
url: this.config.url,
params: {
- action: 'mgr/tvpatterns/remove',
+ action: 'Lingua\\Processors\\TvPatterns\\Remove',
id: this.menu.record.id
},
listeners: {
diff --git a/www/assets/components/lingua/js/mgr/widgets/panel.home.js b/assets/components/lingua/js/mgr/widgets/panel.home.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/widgets/panel.home.js
rename to assets/components/lingua/js/mgr/widgets/panel.home.js
diff --git a/www/assets/components/lingua/js/mgr/widgets/window.autosync.js b/assets/components/lingua/js/mgr/widgets/window.autosync.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/widgets/window.autosync.js
rename to assets/components/lingua/js/mgr/widgets/window.autosync.js
diff --git a/www/assets/components/lingua/js/mgr/widgets/window.lang.js b/assets/components/lingua/js/mgr/widgets/window.lang.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/widgets/window.lang.js
rename to assets/components/lingua/js/mgr/widgets/window.lang.js
diff --git a/www/assets/components/lingua/js/mgr/widgets/window.manualsync.js b/assets/components/lingua/js/mgr/widgets/window.manualsync.js
similarity index 97%
rename from www/assets/components/lingua/js/mgr/widgets/window.manualsync.js
rename to assets/components/lingua/js/mgr/widgets/window.manualsync.js
index 773f965..34ceebc 100644
--- a/www/assets/components/lingua/js/mgr/widgets/window.manualsync.js
+++ b/assets/components/lingua/js/mgr/widgets/window.manualsync.js
@@ -18,7 +18,7 @@ Lingua.window.ManualSync = function (config) {
anchor: '100%',
url: Lingua.config.connectorUrl,
baseParams: {
- action: 'mgr/resource/getlist',
+ action: 'Lingua\\Processors\\Resource\\GetList',
combo: true
},
displayField: 'pagetitle',
diff --git a/www/assets/components/lingua/js/mgr/widgets/window.resourcescope.js b/assets/components/lingua/js/mgr/widgets/window.resourcescope.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/widgets/window.resourcescope.js
rename to assets/components/lingua/js/mgr/widgets/window.resourcescope.js
diff --git a/www/assets/components/lingua/js/mgr/widgets/window.tv.js b/assets/components/lingua/js/mgr/widgets/window.tv.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/widgets/window.tv.js
rename to assets/components/lingua/js/mgr/widgets/window.tv.js
diff --git a/www/assets/components/lingua/js/mgr/widgets/window.tvpattern.js b/assets/components/lingua/js/mgr/widgets/window.tvpattern.js
similarity index 100%
rename from www/assets/components/lingua/js/mgr/widgets/window.tvpattern.js
rename to assets/components/lingua/js/mgr/widgets/window.tvpattern.js
diff --git a/www/assets/components/lingua/js/ux/CheckColumn.js b/assets/components/lingua/js/ux/CheckColumn.js
similarity index 100%
rename from www/assets/components/lingua/js/ux/CheckColumn.js
rename to assets/components/lingua/js/ux/CheckColumn.js
diff --git a/core/components/lingua/bootstrap.php b/core/components/lingua/bootstrap.php
new file mode 100644
index 0000000..20250e5
--- /dev/null
+++ b/core/components/lingua/bootstrap.php
@@ -0,0 +1,13 @@
+addPackage('Lingua\Model', $namespace['path'] . 'src/', null, 'Lingua\\');
+
+$modx->services->add('Lingua', function ($c) use ($modx) {
+ return new Lingua\Lingua($modx);
+});
diff --git a/core/components/lingua/controllers/home.class.php b/core/components/lingua/controllers/home.class.php
index 441345c..1331635 100644
--- a/core/components/lingua/controllers/home.class.php
+++ b/core/components/lingua/controllers/home.class.php
@@ -1,5 +1,7 @@
modx->lexicon('lingua');
- }
-
- public function loadCustomCssJs() {
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/window.autosync.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/window.manualsync.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/grid.sync.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/combo.resource.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/window.resourcescope.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/grid.resourcescopes.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'ux/CheckColumn.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/window.tvpattern.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/grid.tvspatterns.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/combo.tv.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/window.tv.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/grid.tvs.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/window.lang.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/grid.langs.js');
- $this->addJavascript($this->lingua->config['jsUrl'] . 'mgr/widgets/panel.home.js');
- $this->addLastJavascript($this->lingua->config['jsUrl'] . 'mgr/sections/index.js');
- }
-
- public function getTemplateFile() {
- return $this->lingua->config['templatesPath'] . 'home.tpl';
- }
-
-}
\ No newline at end of file
+class LinguaHomeManagerController extends modExtraManagerController
+{
+ /** @var Lingua\Lingua $Lingua */
+ public $Lingua;
+
+
+ /**
+ *
+ */
+ public function initialize()
+ {
+ $this->Lingua = $this->modx->services->get('Lingua');
+
+ $this->addCss($this->Lingua->config['cssUrl'] . 'mgr.css');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/lingua.js');
+ $this->addHtml('');
+
+ parent::initialize();
+ }
+
+
+ /**
+ * @return array
+ */
+ public function getLanguageTopics()
+ {
+ return ['lingua:default', 'lingua:cmp'];
+ }
+
+
+ /**
+ * @return bool
+ */
+ public function checkPermissions()
+ {
+ return true;
+ }
+
+
+ /**
+ * @return null|string
+ */
+ public function getPageTitle()
+ {
+ return $this->modx->lexicon('lingua');
+ }
+
+
+ /**
+ * @return void
+ */
+ public function loadCustomCssJs()
+ {
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/window.autosync.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/window.manualsync.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/grid.sync.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/combo.resource.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/window.resourcescope.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/grid.resourcescopes.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'ux/CheckColumn.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/window.tvpattern.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/grid.tvspatterns.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/combo.tv.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/window.tv.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/grid.tvs.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/window.lang.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/grid.langs.js');
+ $this->addJavascript($this->Lingua->config['jsUrl'] . 'mgr/widgets/panel.home.js');
+ $this->addLastJavascript($this->Lingua->config['jsUrl'] . 'mgr/sections/index.js');
+ }
+
+
+ /**
+ * @return string
+ */
+ public function getTemplateFile()
+ {
+ return $this->Lingua->config['templatesPath'] . 'home.tpl';
+ }
+}
diff --git a/core/components/lingua/defaults/default.langs.php b/core/components/lingua/defaults/default.langs.php
index 78eadc8..8475d3f 100644
--- a/core/components/lingua/defaults/default.langs.php
+++ b/core/components/lingua/defaults/default.langs.php
@@ -27,7 +27,7 @@
$collection = array();
$langs = include dirname(__FILE__) . '/modx_lingua_langs.php';
foreach ($langs as $lang) {
- $oldLang = $modx->getObject('linguaLangs', array(
+ $oldLang = $modx->getObject('Lingua\\Model\\LinguaLangs', array(
'lang_code' => $lang['lang_code'],
'lcid_string' => $lang['lcid_string'],
'lcid_dec' => $lang['lcid_dec'],
@@ -35,7 +35,7 @@
if ($oldLang) {
continue;
}
- $newLang = $modx->newObject('linguaLangs');
+ $newLang = $modx->newObject('Lingua\\Model\\LinguaLangs');
$newLang->fromArray(array(
'active' => $lang['lang_code'] === 'en' ? 1 : 0,
'local_name' => $lang['local_name'],
diff --git a/core/components/lingua/defaults/default.patterns.php b/core/components/lingua/defaults/default.patterns.php
index db5c103..ce02d63 100644
--- a/core/components/lingua/defaults/default.patterns.php
+++ b/core/components/lingua/defaults/default.patterns.php
@@ -27,7 +27,7 @@
$collection = array();
$patterns = include dirname(__FILE__) . '/modx_lingua_site_tmplvars_patterns.php';
foreach ($patterns as $pattern) {
- $oldPattern = $modx->getObject('linguaSiteTmplvarsPatterns', array(
+ $oldPattern = $modx->getObject('Lingua\\Model\\LinguaSiteTmplvarsPatterns', array(
'type' => $pattern['type'],
'search' => $pattern['search'],
'replacement' => $pattern['replacement'],
@@ -35,7 +35,7 @@
if ($oldPattern) {
continue;
}
- $newPattern = $modx->newObject('linguaSiteTmplvarsPatterns');
+ $newPattern = $modx->newObject('Lingua\\Model\\LinguaSiteTmplvarsPatterns');
$newPattern->fromArray(array(
'type' => $pattern['type'],
'search' => $pattern['search'],
diff --git a/core/components/lingua/defaults/modx_lingua_site_tmplvars_patterns.php b/core/components/lingua/defaults/modx_lingua_site_tmplvars_patterns.php
index 4a936dc..d907d98 100644
--- a/core/components/lingua/defaults/modx_lingua_site_tmplvars_patterns.php
+++ b/core/components/lingua/defaults/modx_lingua_site_tmplvars_patterns.php
@@ -49,5 +49,13 @@
array('id' => '42','type' => 'migx','search' => '/("|\'){1}migx_iframewin_json_{{tvId}}("|\'){1}/','replacement' => '${1}migx_iframewin_json_{{tvCloneId}}${2}'),
array('id' => '43','type' => 'migx','search' => '/("|\'){1}migx_iframewin_co_id_{{tvId}}("|\'){1}/','replacement' => '${1}migx_iframewin_co_id_{{tvCloneId}}${2}'),
array('id' => '44','type' => 'migx','search' => '/("|\'){1}migx_iframewin_store_params_{{tvId}}("|\'){1}/','replacement' => '${1}migx_iframewin_store_params_{{tvCloneId}}${2}'),
- array('id' => '45','type' => 'migx','search' => '/tv_id:(\\s)*("|\'){1}{{tvId}}("|\'){1}/','replacement' => 'tv_id:${1}${2}{{tvCloneId}}${3}')
+ array('id' => '45','type' => 'migx','search' => '/tv_id:(\\s)*("|\'){1}{{tvId}}("|\'){1}/','replacement' => 'tv_id:${1}${2}{{tvCloneId}}${3}'),
+ array('id' => '46','type' => 'calltoactiontv','search' => '/("|\')modx-calltoactiontv-tv{{tvId}}/','replacement' => '${1}modx-calltoactiontv-tv{{tvCloneId}}'),
+ array('id' => '47','type' => 'calltoactiontv','search' => '/("|\'){1}tv{{tvId}}("|\'){1}/','replacement' => '${1}tv{{tvCloneId}}${2}'),
+ array('id' => '48','type' => 'calltoactiontv','search' => '/tvId: \'{{tvId}}\'/','replacement' => 'tvId: \'{{tvCloneId}}\''),
+ array('id' => '49','type' => 'superboxselect','search' => '/("|\')superboxselect-tv-{{tvId}}/','replacement' => '${1}superboxselect-tv-{{tvCloneId}}'),
+ array('id' => '50','type' => 'superboxselect','search' => '/("|\'){1}tvdef{{tvId}}("|\'){1}/','replacement' => '${1}tvdef{{tvCloneId}}${2}'),
+ array('id' => '51','type' => 'superboxselect','search' => '/tvid: ("|\'){1}{{tvId}}("|\'){1}/','replacement' => 'tvid: ${1}{{tvCloneId}}${2}'),
+ array('id' => '52','type' => 'superboxselect','search' => '/tv{{tvId}}store/','replacement' => 'tv{{tvCloneId}}store'),
+ array('id' => '53','type' => 'superboxselect','search' => '/"tvid": "{{tvId}}"/','replacement' => '"tvid": "{{tvCloneId}}"')
);
diff --git a/core/components/lingua/docs/changelog.txt b/core/components/lingua/docs/changelog.txt
index a9bca8c..771b1a3 100644
--- a/core/components/lingua/docs/changelog.txt
+++ b/core/components/lingua/docs/changelog.txt
@@ -1,3 +1,19 @@
+Lingua 3.0.3-beta
+======================================
+- New tv patterns
+
+Lingua 3.0.2-dev
+======================================
+- Fix findResource parameter in _cleanResourceIdentifier method
+
+Lingua 3.0.1-dev
+======================================
+- Fix modRequest.class settings
+
+Lingua 3.0.0-dev
+======================================
+- Add compatibility with MODX 3
+
Lingua 2.1.0-dev
======================================
- [#48] TV saving problem: saving empty value
@@ -117,4 +133,4 @@ Lingua 1.0.0-dev.2
Lingua 1.0.0-dev.1
=================================
-- initial setup
\ No newline at end of file
+- initial setup
diff --git a/core/components/lingua/docs/license.txt b/core/components/lingua/docs/license.txt
index 20d40b6..94a9ed0 100644
--- a/core/components/lingua/docs/license.txt
+++ b/core/components/lingua/docs/license.txt
@@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
-.
\ No newline at end of file
+.
diff --git a/core/components/lingua/docs/readme.txt b/core/components/lingua/docs/readme.txt
index c1c77c4..fde587d 100644
--- a/core/components/lingua/docs/readme.txt
+++ b/core/components/lingua/docs/readme.txt
@@ -12,4 +12,4 @@ Lingua is a multi-lingual plugin system for MODX Revolution.
References:
1. http://en.wikipedia.org/wiki/ISO_639-1_language_matrix
2. http://www.science.co.il/language/locale-codes.asp
-3. http://www.php.net/manual/en/book.intl.php
\ No newline at end of file
+3. http://www.php.net/manual/en/book.intl.php
diff --git a/core/components/lingua/elements/chunks/lingua.resourcetv.hidden.row.chunk.tpl b/core/components/lingua/elements/chunks/lingua.resourcetv.hidden.row.chunk.tpl
new file mode 100644
index 0000000..846ca6b
--- /dev/null
+++ b/core/components/lingua/elements/chunks/lingua.resourcetv.hidden.row.chunk.tpl
@@ -0,0 +1,5 @@
+
+
+
+[[+tv.formElement]]
+
\ No newline at end of file
diff --git a/core/components/lingua/elements/chunks/lingua.resourcetv.row.chunk.tpl b/core/components/lingua/elements/chunks/lingua.resourcetv.row.chunk.tpl
index ebabc1d..06c5902 100644
--- a/core/components/lingua/elements/chunks/lingua.resourcetv.row.chunk.tpl
+++ b/core/components/lingua/elements/chunks/lingua.resourcetv.row.chunk.tpl
@@ -1,6 +1,5 @@
-[[+tv.type:isnot=`hidden`:then=`