Version Description
(9th July 2016) = * Requires PHP 5.4 * Fixed bug with custom trigger * Updated Polylang Support * Removed extend() function from Pimple Container as it was throwing security notices in VaultPress - thanks to Brin @ WinningWp.com
Download this release
Release Info
Developer | ResponsiveMenu |
Plugin | Responsive Menu |
Version | 3.0.3 |
Comparing to | |
See all releases |
Code changes from version 3.0.2 to 3.0.3
- readme.txt +8 -1
- responsive-menu.php +24 -3
- src/app/Controllers/{Admin/Main.php → Admin.php} +22 -23
- src/app/Controllers/Admin/Base.php +0 -16
- src/app/Controllers/Base.php +0 -16
- src/app/Controllers/Front.php +10 -4
- src/app/Database/Database.php +5 -6
- src/app/Database/Migration.php +20 -30
- src/app/Database/WpDatabase.php +19 -20
- src/app/Factories/OptionFactory.php +15 -22
- src/app/Formatters/Tabs.php +0 -53
- src/app/Formatters/Text.php +0 -16
- src/app/Mappers/JsMapper.php +2 -1
- src/app/Models/ComplexOption.php +0 -130
- src/app/Models/Option.php +34 -6
- src/app/Models/SimpleOption.php +0 -36
- src/app/Repositories/OptionRepository.php +39 -0
- src/app/Repositories/Options/BaseOptionRepository.php +0 -13
- src/app/Repositories/Options/ComplexOptionRepository.php +0 -25
- src/app/Repositories/Options/ReadRepository.php +0 -7
- src/app/Repositories/Options/Repository.php +0 -9
- src/app/Repositories/Options/SimpleOptionReadRepository.php +0 -18
- src/app/Routing/Container.php +0 -41
- src/app/Routing/WpRouting.php +4 -8
- src/app/ViewModels/Components/Button/Button.php +7 -0
- src/app/ViewModels/Components/Menu/Menu.php +5 -0
- src/app/ViewModels/Components/Menu/Title.php +11 -2
- src/config/route_dependencies.php +3 -7
- translations/responsive-menu-es_ES.mo +0 -0
- translations/responsive-menu-es_ES.po +756 -0
readme.txt
CHANGED
@@ -1,9 +1,10 @@
|
|
1 |
=== Responsive Menu ===
|
2 |
Contributors: ResponsiveMenu
|
|
|
3 |
Tags: responsive, menu, responsive menu, mobile menu, wordpress responsive menu, wp responsive menu, tablet menu, mobile, tablet, 3 lines, 3 line, three line, three lines
|
4 |
Requires at least: 3.5.0
|
5 |
Tested up to: 4.5.3
|
6 |
-
Stable tag: 3.0.
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -145,6 +146,12 @@ To view our whole FAQ, please go to https://responsive.menu/faq/
|
|
145 |
|
146 |
== Changelog ==
|
147 |
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
= 3.0.2 (8th July 2016) =
|
149 |
* **Requires PHP 5.4**
|
150 |
* Fixed issue with close on link click option
|
1 |
=== Responsive Menu ===
|
2 |
Contributors: ResponsiveMenu
|
3 |
+
Donate link: https://responsive.menu/donate
|
4 |
Tags: responsive, menu, responsive menu, mobile menu, wordpress responsive menu, wp responsive menu, tablet menu, mobile, tablet, 3 lines, 3 line, three line, three lines
|
5 |
Requires at least: 3.5.0
|
6 |
Tested up to: 4.5.3
|
7 |
+
Stable tag: 3.0.3
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
146 |
|
147 |
== Changelog ==
|
148 |
|
149 |
+
= 3.0.3 (9th July 2016) =
|
150 |
+
* **Requires PHP 5.4**
|
151 |
+
* Fixed bug with custom trigger
|
152 |
+
* Updated Polylang Support
|
153 |
+
* Removed extend() function from Pimple Container as it was throwing security notices in VaultPress - thanks to Brin @ WinningWp.com
|
154 |
+
|
155 |
= 3.0.2 (8th July 2016) =
|
156 |
* **Requires PHP 5.4**
|
157 |
* Fixed issue with close on link click option
|
responsive-menu.php
CHANGED
@@ -2,12 +2,12 @@
|
|
2 |
|
3 |
/*
|
4 |
Plugin Name: Responsive Menu
|
5 |
-
Plugin URI:
|
6 |
Description: Highly Customisable Responsive Menu Plugin for WordPress
|
7 |
-
Version: 3.0.
|
8 |
Author: Responsive Menu
|
9 |
Text Domain: responsive-menu
|
10 |
-
Author URI:
|
11 |
License: GPL2
|
12 |
Tags: responsive, menu, responsive menu
|
13 |
*/
|
@@ -35,10 +35,31 @@ $wp_router = new ResponsiveMenu\Routing\WpRouting($container);
|
|
35 |
$wp_router->route();
|
36 |
|
37 |
if(is_admin()):
|
|
|
|
|
38 |
add_action('admin_init', function() use($container) {
|
39 |
include dirname(__FILE__) . '/src/config/default_options.php';
|
40 |
$migration = new ResponsiveMenu\Database\Migration($container['database'], $default_options);
|
41 |
$migration->setup();
|
42 |
$migration->synchronise();
|
43 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
endif;
|
2 |
|
3 |
/*
|
4 |
Plugin Name: Responsive Menu
|
5 |
+
Plugin URI: https://responsive.menu
|
6 |
Description: Highly Customisable Responsive Menu Plugin for WordPress
|
7 |
+
Version: 3.0.3
|
8 |
Author: Responsive Menu
|
9 |
Text Domain: responsive-menu
|
10 |
+
Author URI: https://responsive.menu
|
11 |
License: GPL2
|
12 |
Tags: responsive, menu, responsive menu
|
13 |
*/
|
35 |
$wp_router->route();
|
36 |
|
37 |
if(is_admin()):
|
38 |
+
/*
|
39 |
+
* Initial Migration and Version Check synchronisation */
|
40 |
add_action('admin_init', function() use($container) {
|
41 |
include dirname(__FILE__) . '/src/config/default_options.php';
|
42 |
$migration = new ResponsiveMenu\Database\Migration($container['database'], $default_options);
|
43 |
$migration->setup();
|
44 |
$migration->synchronise();
|
45 |
});
|
46 |
+
|
47 |
+
/*
|
48 |
+
Polylang Integration Section */
|
49 |
+
add_action('plugins_loaded', function() use($container) {
|
50 |
+
if(function_exists('pll_register_string')):
|
51 |
+
$repo = $container['option_repository'];
|
52 |
+
$options = $repo->all();
|
53 |
+
|
54 |
+
$menu_to_use = isset($options['menu_to_use']) ? $options['menu_to_use']->getValue() : '';
|
55 |
+
$button_title = isset($options['button_title']) ? $options['button_title']->getValue() : '';
|
56 |
+
$menu_title = isset($options['menu_title']) ? $options['menu_title']->getValue() : '';
|
57 |
+
$menu_title_link = isset($options['menu_title_link']) ? $options['menu_title_link']->getValue() : '';
|
58 |
+
|
59 |
+
pll_register_string('Menu Slug', $menu_to_use, 'Responsive Menu');
|
60 |
+
pll_register_string('Button Title', $button_title, 'Responsive Menu');
|
61 |
+
pll_register_string('Menu Title', $menu_title, 'Responsive Menu');
|
62 |
+
pll_register_string('Menu Title Link', $menu_title_link, 'Responsive Menu');
|
63 |
+
endif;
|
64 |
+
});
|
65 |
endif;
|
src/app/Controllers/{Admin/Main.php → Admin.php}
RENAMED
@@ -1,23 +1,26 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace ResponsiveMenu\Controllers
|
|
|
|
|
4 |
use ResponsiveMenu\Factories\OptionFactory as OptionFactory;
|
5 |
use ResponsiveMenu\Factories\AdminSaveFactory as SaveFactory;
|
6 |
use ResponsiveMenu\WPML\WPML as WPML;
|
7 |
|
8 |
-
class
|
9 |
-
{
|
10 |
|
11 |
-
|
12 |
-
|
|
|
|
|
|
|
|
|
13 |
|
14 |
$options = array_merge($default_options, $_POST['menu']);
|
15 |
|
16 |
-
|
17 |
-
|
18 |
-
$
|
19 |
-
$this->repository->update($option);
|
20 |
-
endforeach;
|
21 |
|
22 |
$options = $this->repository->all();
|
23 |
$save_factory = new SaveFactory();
|
@@ -31,14 +34,11 @@ class Main extends Base
|
|
31 |
|
32 |
}
|
33 |
|
34 |
-
public function reset($default_options)
|
35 |
-
{
|
36 |
|
37 |
-
|
38 |
-
|
39 |
-
$
|
40 |
-
$this->repository->update($option);
|
41 |
-
endforeach;
|
42 |
|
43 |
$options = $this->repository->all();
|
44 |
$save_factory = new SaveFactory();
|
@@ -61,11 +61,10 @@ class Main extends Base
|
|
61 |
if(!empty($_FILES['responsive_menu_import_file']['tmp_name'])):
|
62 |
$file = file_get_contents($_FILES['responsive_menu_import_file']['tmp_name']);
|
63 |
$decoded = json_decode($file);
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
$this->repository->update($
|
68 |
-
endforeach;
|
69 |
|
70 |
$options = $this->repository->all();
|
71 |
$save_factory = new SaveFactory();
|
@@ -78,7 +77,7 @@ class Main extends Base
|
|
78 |
|
79 |
$wpml = new WPML;
|
80 |
$wpml->saveFromOptions($options);
|
81 |
-
|
82 |
$this->view->render('main', ['options' => $options, 'flash' => $flash]);
|
83 |
}
|
84 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace ResponsiveMenu\Controllers;
|
4 |
+
use ResponsiveMenu\View\View as View;
|
5 |
+
use ResponsiveMenu\Repositories\OptionRepository as OptionRepository;
|
6 |
use ResponsiveMenu\Factories\OptionFactory as OptionFactory;
|
7 |
use ResponsiveMenu\Factories\AdminSaveFactory as SaveFactory;
|
8 |
use ResponsiveMenu\WPML\WPML as WPML;
|
9 |
|
10 |
+
class Admin {
|
|
|
11 |
|
12 |
+
public function __construct(OptionRepository $repository, View $view) {
|
13 |
+
$this->repository = $repository;
|
14 |
+
$this->view = $view;
|
15 |
+
}
|
16 |
+
|
17 |
+
public function update($default_options) {
|
18 |
|
19 |
$options = array_merge($default_options, $_POST['menu']);
|
20 |
|
21 |
+
$option_factory = new OptionFactory;
|
22 |
+
foreach($options as $key => $val)
|
23 |
+
$this->repository->update($option_factory->build($key, $val));
|
|
|
|
|
24 |
|
25 |
$options = $this->repository->all();
|
26 |
$save_factory = new SaveFactory();
|
34 |
|
35 |
}
|
36 |
|
37 |
+
public function reset($default_options) {
|
|
|
38 |
|
39 |
+
$option_factory = new OptionFactory;
|
40 |
+
foreach($default_options as $key => $val)
|
41 |
+
$this->repository->update($option_factory->build($key, $val));
|
|
|
|
|
42 |
|
43 |
$options = $this->repository->all();
|
44 |
$save_factory = new SaveFactory();
|
61 |
if(!empty($_FILES['responsive_menu_import_file']['tmp_name'])):
|
62 |
$file = file_get_contents($_FILES['responsive_menu_import_file']['tmp_name']);
|
63 |
$decoded = json_decode($file);
|
64 |
+
|
65 |
+
$option_factory = new OptionFactory;
|
66 |
+
foreach($decoded as $key => $val)
|
67 |
+
$this->repository->update($option_factory->build($key, $val));
|
|
|
68 |
|
69 |
$options = $this->repository->all();
|
70 |
$save_factory = new SaveFactory();
|
77 |
|
78 |
$wpml = new WPML;
|
79 |
$wpml->saveFromOptions($options);
|
80 |
+
|
81 |
$this->view->render('main', ['options' => $options, 'flash' => $flash]);
|
82 |
}
|
83 |
|
src/app/Controllers/Admin/Base.php
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Controllers\Admin;
|
4 |
-
use ResponsiveMenu\View\View as View;
|
5 |
-
use ResponsiveMenu\Repositories\Options\Repository as Repository;
|
6 |
-
|
7 |
-
class Base
|
8 |
-
{
|
9 |
-
|
10 |
-
public function __construct(Repository $repository, View $view)
|
11 |
-
{
|
12 |
-
$this->repository = $repository;
|
13 |
-
$this->view = $view;
|
14 |
-
}
|
15 |
-
|
16 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Controllers/Base.php
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Controllers;
|
4 |
-
use ResponsiveMenu\View\View as View;
|
5 |
-
use ResponsiveMenu\Repositories\Options\ReadRepository as Repository;
|
6 |
-
|
7 |
-
class Base
|
8 |
-
{
|
9 |
-
|
10 |
-
public function __construct(Repository $repository, View $view)
|
11 |
-
{
|
12 |
-
$this->repository = $repository;
|
13 |
-
$this->view = $view;
|
14 |
-
}
|
15 |
-
|
16 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Controllers/Front.php
CHANGED
@@ -1,16 +1,22 @@
|
|
1 |
<?php
|
2 |
|
3 |
namespace ResponsiveMenu\Controllers;
|
|
|
|
|
4 |
use ResponsiveMenu\Controllers\Base as Base;
|
5 |
use ResponsiveMenu\ViewModels\Menu as MenuViewModel;
|
6 |
use ResponsiveMenu\ViewModels\Button as ButtonViewModel;
|
7 |
use ResponsiveMenu\Factories\FrontDisplayFactory as DisplayFactory;
|
8 |
use ResponsiveMenu\Shortcodes\ResponsiveMenuShortcode as Shortcode;
|
9 |
|
10 |
-
class Front
|
11 |
-
|
12 |
-
|
13 |
-
|
|
|
|
|
|
|
|
|
14 |
# Get Latest Options
|
15 |
$options = $this->repository->all();
|
16 |
|
1 |
<?php
|
2 |
|
3 |
namespace ResponsiveMenu\Controllers;
|
4 |
+
use ResponsiveMenu\View\View as View;
|
5 |
+
use ResponsiveMenu\Repositories\OptionRepository as OptionRepository;
|
6 |
use ResponsiveMenu\Controllers\Base as Base;
|
7 |
use ResponsiveMenu\ViewModels\Menu as MenuViewModel;
|
8 |
use ResponsiveMenu\ViewModels\Button as ButtonViewModel;
|
9 |
use ResponsiveMenu\Factories\FrontDisplayFactory as DisplayFactory;
|
10 |
use ResponsiveMenu\Shortcodes\ResponsiveMenuShortcode as Shortcode;
|
11 |
|
12 |
+
class Front {
|
13 |
+
|
14 |
+
public function __construct(OptionRepository $repository, View $view) {
|
15 |
+
$this->repository = $repository;
|
16 |
+
$this->view = $view;
|
17 |
+
}
|
18 |
+
|
19 |
+
public function index() {
|
20 |
# Get Latest Options
|
21 |
$options = $this->repository->all();
|
22 |
|
src/app/Database/Database.php
CHANGED
@@ -2,10 +2,9 @@
|
|
2 |
|
3 |
namespace ResponsiveMenu\Database;
|
4 |
|
5 |
-
interface Database
|
6 |
-
|
7 |
-
public function
|
8 |
-
public function
|
9 |
-
public function
|
10 |
-
public function insert(array $arguments);
|
11 |
}
|
2 |
|
3 |
namespace ResponsiveMenu\Database;
|
4 |
|
5 |
+
interface Database {
|
6 |
+
public function update($table, array $to_update, array $where);
|
7 |
+
public function delete($table, $name);
|
8 |
+
public function all($table);
|
9 |
+
public function insert($table, array $arguments);
|
|
|
10 |
}
|
src/app/Database/Migration.php
CHANGED
@@ -10,20 +10,19 @@ class Migration{
|
|
10 |
|
11 |
protected static $version_var = 'RMVer';
|
12 |
protected static $old_options_var = 'RMOptions';
|
|
|
13 |
|
14 |
-
public function __construct(Database $db, $default_options)
|
15 |
-
{
|
16 |
$this->db = $db;
|
17 |
$this->defaults = $default_options;
|
18 |
}
|
19 |
|
20 |
-
protected function addNewOptions()
|
21 |
-
{
|
22 |
# If DB is empty we need to fill it up!
|
23 |
-
$options = $this->db->all();
|
24 |
if(empty($options)):
|
25 |
foreach($this->defaults as $name => $value)
|
26 |
-
$this->db->insert(array('name' => $name, 'value' => $value));
|
27 |
# Otherwise we only add new options
|
28 |
else:
|
29 |
foreach($options as $converted)
|
@@ -31,37 +30,34 @@ class Migration{
|
|
31 |
$final = array_diff_key($this->defaults, $current);
|
32 |
if(is_array($final)):
|
33 |
foreach($final as $name => $value)
|
34 |
-
$this->db->insert(array('name' => $name, 'value' => $value));
|
35 |
endif;
|
36 |
endif;
|
37 |
}
|
38 |
|
39 |
-
protected function tidyUpOptions()
|
40 |
-
|
41 |
-
$current = array_map(function($a) { return $a->name; }, $this->db->all());
|
42 |
foreach(array_diff($current, array_keys($this->defaults)) as $to_delete)
|
43 |
-
$this->db->delete(array('name' => $to_delete));
|
44 |
}
|
45 |
|
46 |
-
public function setup()
|
47 |
-
{
|
48 |
# Create the database table if it doesn't exist
|
49 |
if(!$this->isVersion3($this->getOldVersion())):
|
50 |
-
$sql = "CREATE TABLE " . $this->db->table . " (
|
51 |
name varchar(50) NOT NULL,
|
52 |
value varchar(5000) DEFAULT NULL,
|
53 |
created_at datetime NOT NULL,
|
54 |
updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
55 |
PRIMARY KEY (name)
|
56 |
-
) " . $this->db->
|
57 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php' );
|
58 |
dbDelta($sql);
|
59 |
$this->synchronise();
|
60 |
endif;
|
61 |
}
|
62 |
|
63 |
-
public function synchronise()
|
64 |
-
{
|
65 |
# First Thing we need to do is migrate any old options
|
66 |
if(!$this->isVersion3($this->getOldVersion())):
|
67 |
$this->migrateVersion2Options();
|
@@ -81,28 +77,23 @@ class Migration{
|
|
81 |
endif;
|
82 |
}
|
83 |
|
84 |
-
protected function needsUpdate($current_version, $old_version)
|
85 |
-
{
|
86 |
return version_compare($current_version, $old_version, '<');
|
87 |
}
|
88 |
|
89 |
-
protected function getOldVersion()
|
90 |
-
{
|
91 |
return get_option(self::$version_var);
|
92 |
}
|
93 |
|
94 |
-
protected function updateVersion()
|
95 |
-
{
|
96 |
update_option(self::$version_var, $this->getCurrentVersion());
|
97 |
}
|
98 |
|
99 |
-
protected function isVersion3($version)
|
100 |
-
{
|
101 |
return substr($version, 0, 1) == 3;
|
102 |
}
|
103 |
|
104 |
-
protected function migrateVersion2Options()
|
105 |
-
{
|
106 |
$old_options = get_option(self::$old_options_var);
|
107 |
|
108 |
$new_options = [
|
@@ -185,12 +176,11 @@ class Migration{
|
|
185 |
];
|
186 |
|
187 |
foreach(array_filter($new_options) as $key => $val)
|
188 |
-
$this->db->insert(array('name' => $key, 'value' => $val));
|
189 |
|
190 |
}
|
191 |
|
192 |
-
public function getCurrentVersion()
|
193 |
-
{
|
194 |
$plugin_data = get_plugin_data(dirname(dirname(dirname(dirname(__FILE__)))) . '/responsive-menu.php', false, false);
|
195 |
return $plugin_data['Version'];
|
196 |
}
|
10 |
|
11 |
protected static $version_var = 'RMVer';
|
12 |
protected static $old_options_var = 'RMOptions';
|
13 |
+
protected static $table = 'responsive_menu';
|
14 |
|
15 |
+
public function __construct(Database $db, $default_options) {
|
|
|
16 |
$this->db = $db;
|
17 |
$this->defaults = $default_options;
|
18 |
}
|
19 |
|
20 |
+
protected function addNewOptions() {
|
|
|
21 |
# If DB is empty we need to fill it up!
|
22 |
+
$options = $this->db->all(self::$table);
|
23 |
if(empty($options)):
|
24 |
foreach($this->defaults as $name => $value)
|
25 |
+
$this->db->insert(self::$table, array('name' => $name, 'value' => $value));
|
26 |
# Otherwise we only add new options
|
27 |
else:
|
28 |
foreach($options as $converted)
|
30 |
$final = array_diff_key($this->defaults, $current);
|
31 |
if(is_array($final)):
|
32 |
foreach($final as $name => $value)
|
33 |
+
$this->db->insert(self::$table, array('name' => $name, 'value' => $value));
|
34 |
endif;
|
35 |
endif;
|
36 |
}
|
37 |
|
38 |
+
protected function tidyUpOptions() {
|
39 |
+
$current = array_map(function($a) { return $a->name; }, $this->db->all(self::$table));
|
|
|
40 |
foreach(array_diff($current, array_keys($this->defaults)) as $to_delete)
|
41 |
+
$this->db->delete(self::$table, array('name' => $to_delete));
|
42 |
}
|
43 |
|
44 |
+
public function setup() {
|
|
|
45 |
# Create the database table if it doesn't exist
|
46 |
if(!$this->isVersion3($this->getOldVersion())):
|
47 |
+
$sql = "CREATE TABLE " . $this->db->getPrefix() . self::$table . " (
|
48 |
name varchar(50) NOT NULL,
|
49 |
value varchar(5000) DEFAULT NULL,
|
50 |
created_at datetime NOT NULL,
|
51 |
updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
52 |
PRIMARY KEY (name)
|
53 |
+
) " . $this->db->getCharset() . ";";
|
54 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php' );
|
55 |
dbDelta($sql);
|
56 |
$this->synchronise();
|
57 |
endif;
|
58 |
}
|
59 |
|
60 |
+
public function synchronise() {
|
|
|
61 |
# First Thing we need to do is migrate any old options
|
62 |
if(!$this->isVersion3($this->getOldVersion())):
|
63 |
$this->migrateVersion2Options();
|
77 |
endif;
|
78 |
}
|
79 |
|
80 |
+
protected function needsUpdate($current_version, $old_version) {
|
|
|
81 |
return version_compare($current_version, $old_version, '<');
|
82 |
}
|
83 |
|
84 |
+
protected function getOldVersion() {
|
|
|
85 |
return get_option(self::$version_var);
|
86 |
}
|
87 |
|
88 |
+
protected function updateVersion() {
|
|
|
89 |
update_option(self::$version_var, $this->getCurrentVersion());
|
90 |
}
|
91 |
|
92 |
+
protected function isVersion3($version) {
|
|
|
93 |
return substr($version, 0, 1) == 3;
|
94 |
}
|
95 |
|
96 |
+
protected function migrateVersion2Options() {
|
|
|
97 |
$old_options = get_option(self::$old_options_var);
|
98 |
|
99 |
$new_options = [
|
176 |
];
|
177 |
|
178 |
foreach(array_filter($new_options) as $key => $val)
|
179 |
+
$this->db->insert(self::$table, array('name' => $key, 'value' => $val));
|
180 |
|
181 |
}
|
182 |
|
183 |
+
public function getCurrentVersion() {
|
|
|
184 |
$plugin_data = get_plugin_data(dirname(dirname(dirname(dirname(__FILE__)))) . '/responsive-menu.php', false, false);
|
185 |
return $plugin_data['Version'];
|
186 |
}
|
src/app/Database/WpDatabase.php
CHANGED
@@ -4,39 +4,38 @@ namespace ResponsiveMenu\Database;
|
|
4 |
|
5 |
class WpDatabase implements Database {
|
6 |
|
7 |
-
|
8 |
-
|
9 |
-
public function __construct()
|
10 |
-
{
|
11 |
global $wpdb;
|
12 |
$this->db = $wpdb;
|
13 |
-
$this->table = $this->db->prefix . self::$table_name;
|
14 |
}
|
15 |
|
16 |
-
public function update(array $to_update, array $where)
|
17 |
-
|
18 |
-
$this->db->update($this->table, $to_update, $where);
|
19 |
}
|
20 |
|
21 |
-
public function delete($name)
|
22 |
-
|
23 |
-
$this->db->delete($this->table, $name);
|
24 |
}
|
25 |
|
26 |
-
public function all()
|
27 |
-
|
28 |
-
return $this->db->get_results("SELECT * FROM $this->table");
|
29 |
}
|
30 |
|
31 |
-
public function insert(array $arguments)
|
32 |
-
{
|
33 |
$arguments['created_at'] = current_time('mysql');
|
34 |
-
$this->db->insert($this->table, $arguments);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
|
37 |
-
public function
|
38 |
-
|
39 |
-
return $this->db->get_results("SELECT * FROM $this->table WHERE $column = '$value';");
|
40 |
}
|
41 |
|
42 |
}
|
4 |
|
5 |
class WpDatabase implements Database {
|
6 |
|
7 |
+
public function __construct() {
|
|
|
|
|
|
|
8 |
global $wpdb;
|
9 |
$this->db = $wpdb;
|
|
|
10 |
}
|
11 |
|
12 |
+
public function update($table, array $to_update, array $where) {
|
13 |
+
$this->db->update($this->db->prefix . $table, $to_update, $where);
|
|
|
14 |
}
|
15 |
|
16 |
+
public function delete($table, $name) {
|
17 |
+
$this->db->delete($this->db->prefix . $table, $name);
|
|
|
18 |
}
|
19 |
|
20 |
+
public function all($table) {
|
21 |
+
return $this->db->get_results("SELECT * FROM {$this->db->prefix}{$table}");
|
|
|
22 |
}
|
23 |
|
24 |
+
public function insert($table, array $arguments) {
|
|
|
25 |
$arguments['created_at'] = current_time('mysql');
|
26 |
+
$this->db->insert($this->db->prefix . $table, $arguments);
|
27 |
+
}
|
28 |
+
|
29 |
+
public function select($table, $column, $value) {
|
30 |
+
return $this->db->get_results("SELECT * FROM {$this->prexix}{$table} WHERE $column = '$value';");
|
31 |
+
}
|
32 |
+
|
33 |
+
public function getPrefix() {
|
34 |
+
return $this->db->prefix;
|
35 |
}
|
36 |
|
37 |
+
public function getCharset() {
|
38 |
+
return $this->db->get_charset_collate();
|
|
|
39 |
}
|
40 |
|
41 |
}
|
src/app/Factories/OptionFactory.php
CHANGED
@@ -1,34 +1,27 @@
|
|
1 |
<?php
|
2 |
|
3 |
namespace ResponsiveMenu\Factories;
|
4 |
-
use ResponsiveMenu\Models\
|
5 |
-
use ResponsiveMenu\Helpers\OptionHelper as Helper;
|
6 |
|
7 |
-
class OptionFactory
|
8 |
-
{
|
9 |
-
public function build($name, $value)
|
10 |
-
{
|
11 |
-
include dirname(dirname(dirname(__FILE__))) . '/config/option_helpers.php';
|
12 |
-
include dirname(dirname(dirname(__FILE__))) . '/config/default_options.php';
|
13 |
|
14 |
-
|
15 |
-
|
16 |
-
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
-
$
|
19 |
-
? new $
|
20 |
-
: new \ResponsiveMenu\
|
21 |
|
22 |
-
$value = isset($value) || $value === '0' ? $value : $
|
23 |
$value = stripslashes_deep($value);
|
24 |
-
$option = new
|
25 |
$option->setFilter($filter);
|
26 |
-
$option->setFormComponent($form_component);
|
27 |
-
$option->setData(isset($option_helpers[$name]['custom'])?$option_helpers[$name]['custom']:null);
|
28 |
-
$option->setIsPro(isset($option_helpers[$name]['pro'])?$option_helpers[$name]['pro']:null);
|
29 |
-
$option->setIsSemiPro(isset($option_helpers[$name]['semi_pro'])?$option_helpers[$name]['semi_pro']:null);
|
30 |
-
$option->setPosition(isset($option_helpers[$name]['position'])?$option_helpers[$name]['position']:null);
|
31 |
-
$option->setLabel(isset($option_helpers[$name]['label'])?$option_helpers[$name]['label']:null);
|
32 |
return $option;
|
33 |
}
|
34 |
|
1 |
<?php
|
2 |
|
3 |
namespace ResponsiveMenu\Factories;
|
4 |
+
use ResponsiveMenu\Models\Option as Option;
|
|
|
5 |
|
6 |
+
class OptionFactory {
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
+
public function __construct() {
|
9 |
+
include dirname(dirname(dirname(__FILE__))) . '/config/option_helpers.php';
|
10 |
+
include dirname(dirname(dirname(__FILE__))) . '/config/default_options.php';
|
11 |
+
$this->defaults = $default_options;
|
12 |
+
$this->helper = $option_helpers;
|
13 |
+
}
|
14 |
+
|
15 |
+
public function build($name, $value) {
|
16 |
|
17 |
+
$filter = isset($this->helper[$name]['filter'])
|
18 |
+
? new $this->helper[$name]['filter']
|
19 |
+
: new \ResponsiveMenu\Filters\TextFilter;
|
20 |
|
21 |
+
$value = isset($value) || $value === '0' ? $value : $this->defaults[$name];
|
22 |
$value = stripslashes_deep($value);
|
23 |
+
$option = new Option($name, $value);
|
24 |
$option->setFilter($filter);
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
return $option;
|
26 |
}
|
27 |
|
src/app/Formatters/Tabs.php
DELETED
@@ -1,53 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Formatters;
|
4 |
-
use ResponsiveMenu\Collections\OptionsCollection as OptionsCollection;
|
5 |
-
|
6 |
-
class Tabs
|
7 |
-
{
|
8 |
-
public static function render(OptionsCollection $options)
|
9 |
-
{
|
10 |
-
$tabs = self::getTabs($options);
|
11 |
-
foreach($tabs as $key => $val):
|
12 |
-
$is_active = $val == reset($tabs) ? ' active_tab' : '';
|
13 |
-
echo '<a class="tab page-title-action' . $is_active . '" id="tab_' . $key . '">' . $val . '</a>';
|
14 |
-
endforeach;
|
15 |
-
}
|
16 |
-
|
17 |
-
public static function getTabs(OptionsCollection $options)
|
18 |
-
{
|
19 |
-
$final = array();
|
20 |
-
foreach($options->all() as $option):
|
21 |
-
if($option->getPosition()):
|
22 |
-
$item = explode('.',$option->getPosition());
|
23 |
-
$final[$item[0]] = ucwords(str_replace('_', ' ', $item[0]));
|
24 |
-
endif;
|
25 |
-
endforeach;
|
26 |
-
return array_unique(array_filter($final));
|
27 |
-
}
|
28 |
-
|
29 |
-
public static function getSubTabs($tab, OptionsCollection $options)
|
30 |
-
{
|
31 |
-
$final = array();
|
32 |
-
foreach($options->all() as $option):
|
33 |
-
if($option->getPosition()):
|
34 |
-
$item = explode('.',$option->getPosition());
|
35 |
-
$final[] = $item[0] == $tab ? $option->getPosition() : null;
|
36 |
-
endif;
|
37 |
-
endforeach;
|
38 |
-
return array_unique(array_filter($final));
|
39 |
-
}
|
40 |
-
|
41 |
-
public static function getTabOptions($tab_name, OptionsCollection $options)
|
42 |
-
{
|
43 |
-
$final = array();
|
44 |
-
foreach($options->all() as $option) :
|
45 |
-
if($option->getPosition()) :
|
46 |
-
if($tab_name == $option->getPosition())
|
47 |
-
$final[] = $option;
|
48 |
-
endif;
|
49 |
-
endforeach;
|
50 |
-
return $final;
|
51 |
-
}
|
52 |
-
|
53 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Formatters/Text.php
DELETED
@@ -1,16 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Formatters;
|
4 |
-
|
5 |
-
class Text
|
6 |
-
{
|
7 |
-
public static function underscoreToWord($text, $echo = true)
|
8 |
-
{
|
9 |
-
$words = ucwords(str_replace('_', ' ', $text));
|
10 |
-
if($echo)
|
11 |
-
echo $words;
|
12 |
-
else
|
13 |
-
return $words;
|
14 |
-
}
|
15 |
-
|
16 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Mappers/JsMapper.php
CHANGED
@@ -127,7 +127,8 @@ class JsMapper
|
|
127 |
},
|
128 |
init: function() {
|
129 |
var self = this;
|
130 |
-
$(this.trigger).on(this.triggerTypes, function(){
|
|
|
131 |
self.triggerMenu();
|
132 |
});
|
133 |
$('.responsive-menu-subarrow').on('click', function(e) {
|
127 |
},
|
128 |
init: function() {
|
129 |
var self = this;
|
130 |
+
$(this.trigger).on(this.triggerTypes, function(e){
|
131 |
+
e.stopPropagation();
|
132 |
self.triggerMenu();
|
133 |
});
|
134 |
$('.responsive-menu-subarrow').on('click', function(e) {
|
src/app/Models/ComplexOption.php
DELETED
@@ -1,130 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Models;
|
4 |
-
use ResponsiveMenu\Filters\Filter as Filter;
|
5 |
-
use ResponsiveMenu\Form\FormComponent as FormComponent;
|
6 |
-
|
7 |
-
class ComplexOption implements Option {
|
8 |
-
|
9 |
-
private $value;
|
10 |
-
private $name;
|
11 |
-
private $filter;
|
12 |
-
private $form_component;
|
13 |
-
private $is_pro;
|
14 |
-
private $is_semi_pro;
|
15 |
-
private $position;
|
16 |
-
private $data;
|
17 |
-
private $label;
|
18 |
-
|
19 |
-
public function __construct($name, $value)
|
20 |
-
{
|
21 |
-
$this->name = $name;
|
22 |
-
$this->value = $value;
|
23 |
-
}
|
24 |
-
|
25 |
-
public function setFilter(Filter $filter)
|
26 |
-
{
|
27 |
-
$this->filter = $filter;
|
28 |
-
}
|
29 |
-
|
30 |
-
public function setFormComponent(FormComponent $form_component)
|
31 |
-
{
|
32 |
-
$this->form_component = $form_component;
|
33 |
-
}
|
34 |
-
|
35 |
-
public function getName()
|
36 |
-
{
|
37 |
-
return $this->name;
|
38 |
-
}
|
39 |
-
|
40 |
-
public function getValue()
|
41 |
-
{
|
42 |
-
return $this->value;
|
43 |
-
}
|
44 |
-
|
45 |
-
public function getFiltered() {
|
46 |
-
return $this->filter->filter($this->value);
|
47 |
-
}
|
48 |
-
|
49 |
-
public function setValue($value)
|
50 |
-
{
|
51 |
-
$this->value = $value;
|
52 |
-
}
|
53 |
-
|
54 |
-
public function setIsPro($is_pro = false)
|
55 |
-
{
|
56 |
-
$this->is_pro = $is_pro;
|
57 |
-
}
|
58 |
-
|
59 |
-
public function isPro()
|
60 |
-
{
|
61 |
-
return $this->is_pro;
|
62 |
-
}
|
63 |
-
|
64 |
-
public function setIsSemiPro($is_semi_pro = false)
|
65 |
-
{
|
66 |
-
$this->is_semi_pro = $is_semi_pro;
|
67 |
-
}
|
68 |
-
|
69 |
-
public function isSemiPro()
|
70 |
-
{
|
71 |
-
return $this->is_semi_pro;
|
72 |
-
}
|
73 |
-
|
74 |
-
public function getFormComponent()
|
75 |
-
{
|
76 |
-
return $this->form_component;
|
77 |
-
}
|
78 |
-
|
79 |
-
public function setPosition($position = null)
|
80 |
-
{
|
81 |
-
$this->position = $position;
|
82 |
-
}
|
83 |
-
|
84 |
-
public function getPosition()
|
85 |
-
{
|
86 |
-
return $this->position;
|
87 |
-
}
|
88 |
-
|
89 |
-
public function getFilter()
|
90 |
-
{
|
91 |
-
return $this->filter;
|
92 |
-
}
|
93 |
-
|
94 |
-
public function __toString()
|
95 |
-
{
|
96 |
-
return (string) $this->value;
|
97 |
-
}
|
98 |
-
|
99 |
-
public function getBasePosition()
|
100 |
-
{
|
101 |
-
$position = $this->position;
|
102 |
-
$positions = explode('.', $position);
|
103 |
-
return isset($positions[1]) ? $positions[1] : null;
|
104 |
-
}
|
105 |
-
|
106 |
-
public function getData($data)
|
107 |
-
{
|
108 |
-
return $this->data[$data];
|
109 |
-
}
|
110 |
-
|
111 |
-
public function setData($data = null) {
|
112 |
-
$this->data = $data;
|
113 |
-
}
|
114 |
-
|
115 |
-
public function hasLabel()
|
116 |
-
{
|
117 |
-
return $this->label ? true : false;
|
118 |
-
}
|
119 |
-
|
120 |
-
public function getLabel()
|
121 |
-
{
|
122 |
-
return $this->label;
|
123 |
-
}
|
124 |
-
|
125 |
-
public function setLabel($label = null)
|
126 |
-
{
|
127 |
-
$this->label = $label;
|
128 |
-
}
|
129 |
-
|
130 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Models/Option.php
CHANGED
@@ -1,13 +1,41 @@
|
|
1 |
<?php
|
2 |
|
3 |
namespace ResponsiveMenu\Models;
|
|
|
4 |
|
5 |
-
|
6 |
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
public function setValue($value);
|
11 |
-
public function __toString();
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
}
|
1 |
<?php
|
2 |
|
3 |
namespace ResponsiveMenu\Models;
|
4 |
+
use ResponsiveMenu\Filters\Filter as Filter;
|
5 |
|
6 |
+
class Option {
|
7 |
|
8 |
+
private $value;
|
9 |
+
private $name;
|
10 |
+
private $filter;
|
|
|
|
|
11 |
|
12 |
+
public function __construct($name, $value) {
|
13 |
+
$this->name = $name;
|
14 |
+
$this->value = $value;
|
15 |
+
}
|
16 |
+
|
17 |
+
public function setFilter(Filter $filter) {
|
18 |
+
$this->filter = $filter;
|
19 |
+
}
|
20 |
+
|
21 |
+
public function getName() {
|
22 |
+
return $this->name;
|
23 |
+
}
|
24 |
+
|
25 |
+
public function getValue() {
|
26 |
+
return $this->value;
|
27 |
+
}
|
28 |
+
|
29 |
+
public function getFiltered() {
|
30 |
+
return $this->filter->filter($this->value);
|
31 |
+
}
|
32 |
+
|
33 |
+
public function getFilter() {
|
34 |
+
return $this->filter;
|
35 |
+
}
|
36 |
+
|
37 |
+
public function __toString() {
|
38 |
+
return (string) $this->value;
|
39 |
+
}
|
40 |
+
|
41 |
}
|
src/app/Models/SimpleOption.php
DELETED
@@ -1,36 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Models;
|
4 |
-
|
5 |
-
class SimpleOption implements Option {
|
6 |
-
|
7 |
-
private $value;
|
8 |
-
private $name;
|
9 |
-
|
10 |
-
public function __construct($name, $value)
|
11 |
-
{
|
12 |
-
$this->name = $name;
|
13 |
-
$this->value = $value;
|
14 |
-
}
|
15 |
-
|
16 |
-
public function getName()
|
17 |
-
{
|
18 |
-
return $this->name;
|
19 |
-
}
|
20 |
-
|
21 |
-
public function getValue()
|
22 |
-
{
|
23 |
-
return $this->value;
|
24 |
-
}
|
25 |
-
|
26 |
-
public function setValue($value)
|
27 |
-
{
|
28 |
-
return $this->value = $value;
|
29 |
-
}
|
30 |
-
|
31 |
-
public function __toString()
|
32 |
-
{
|
33 |
-
return (string) $this->value;
|
34 |
-
}
|
35 |
-
|
36 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Repositories/OptionRepository.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace ResponsiveMenu\Repositories;
|
4 |
+
use ResponsiveMenu\Models\Option as Option;
|
5 |
+
use ResponsiveMenu\Collections\OptionsCollection as OptionsCollection;
|
6 |
+
|
7 |
+
class OptionRepository {
|
8 |
+
|
9 |
+
protected static $table = 'responsive_menu';
|
10 |
+
|
11 |
+
public function __construct($db, $factory) {
|
12 |
+
$this->db = $db;
|
13 |
+
$this->factory = $factory;
|
14 |
+
}
|
15 |
+
|
16 |
+
public function all() {
|
17 |
+
$options = $this->db->all(self::$table);
|
18 |
+
$collection = new OptionsCollection;
|
19 |
+
foreach($options as $option)
|
20 |
+
$collection->add($this->factory->build($option->name, $option->value));
|
21 |
+
return $collection;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function update(Option $option) {
|
25 |
+
$this->db->update(self::$table, ['value' => $option->getFiltered()], ['name' => $option->getName()]);
|
26 |
+
}
|
27 |
+
|
28 |
+
public function create($name, $value) {
|
29 |
+
$arguments['name'] = $name;
|
30 |
+
$arguments['value'] = $value;
|
31 |
+
$arguments['created_at'] = current_time('mysql');
|
32 |
+
$this->db->insert(self::$table, $arguments);
|
33 |
+
}
|
34 |
+
|
35 |
+
public function remove($name) {
|
36 |
+
$this->db->delete(self::$table, $name);
|
37 |
+
}
|
38 |
+
|
39 |
+
}
|
src/app/Repositories/Options/BaseOptionRepository.php
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Repositories\Options;
|
4 |
-
use ResponsiveMenu\Database\Database as Database;
|
5 |
-
|
6 |
-
class BaseOptionRepository {
|
7 |
-
|
8 |
-
public function __construct(Database $db)
|
9 |
-
{
|
10 |
-
$this->db = $db;
|
11 |
-
}
|
12 |
-
|
13 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Repositories/Options/ComplexOptionRepository.php
DELETED
@@ -1,25 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Repositories\Options;
|
4 |
-
use ResponsiveMenu\Factories\OptionFactory as Factory;
|
5 |
-
use ResponsiveMenu\Models\ComplexOption as ComplexOption;
|
6 |
-
use ResponsiveMenu\Collections\OptionsCollection as OptionsCollection;
|
7 |
-
|
8 |
-
class ComplexOptionRepository extends BaseOptionRepository implements Repository {
|
9 |
-
|
10 |
-
public function update(ComplexOption $option)
|
11 |
-
{
|
12 |
-
$this->db->update(array('value' => $option->getFiltered()), array('name' => $option->getName()));
|
13 |
-
}
|
14 |
-
|
15 |
-
public function all()
|
16 |
-
{
|
17 |
-
$options = $this->db->all();
|
18 |
-
$collection = new OptionsCollection;
|
19 |
-
$factory = new Factory;
|
20 |
-
foreach($options as $option)
|
21 |
-
$collection->add($factory->build($option->name, $option->value));
|
22 |
-
return $collection;
|
23 |
-
}
|
24 |
-
|
25 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Repositories/Options/ReadRepository.php
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Repositories\Options;
|
4 |
-
|
5 |
-
interface ReadRepository {
|
6 |
-
public function all();
|
7 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Repositories/Options/Repository.php
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Repositories\Options;
|
4 |
-
use ResponsiveMenu\Models\ComplexOption as ComplexOption;
|
5 |
-
|
6 |
-
interface Repository {
|
7 |
-
public function all();
|
8 |
-
public function update(ComplexOption $option);
|
9 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Repositories/Options/SimpleOptionReadRepository.php
DELETED
@@ -1,18 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ResponsiveMenu\Repositories\Options;
|
4 |
-
use ResponsiveMenu\Models\SimpleOption as SimpleOption;
|
5 |
-
use ResponsiveMenu\Collections\OptionsCollection as OptionsCollection;
|
6 |
-
|
7 |
-
class SimpleOptionReadRepository extends BaseOptionRepository implements ReadRepository {
|
8 |
-
|
9 |
-
public function all()
|
10 |
-
{
|
11 |
-
$options = $this->db->all();
|
12 |
-
$collection = new OptionsCollection;
|
13 |
-
foreach($options as $option)
|
14 |
-
$collection->add(new SimpleOption($option->name, $option->value));
|
15 |
-
return $collection;
|
16 |
-
}
|
17 |
-
|
18 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/app/Routing/Container.php
CHANGED
@@ -210,47 +210,6 @@ class Container implements \ArrayAccess
|
|
210 |
return $this->values[$id];
|
211 |
}
|
212 |
|
213 |
-
/**
|
214 |
-
* Extends an object definition.
|
215 |
-
*
|
216 |
-
* Useful when you want to extend an existing object definition,
|
217 |
-
* without necessarily loading that object.
|
218 |
-
*
|
219 |
-
* @param string $id The unique identifier for the object
|
220 |
-
* @param callable $callable A service definition to extend the original
|
221 |
-
*
|
222 |
-
* @return callable The wrapped callable
|
223 |
-
*
|
224 |
-
* @throws \InvalidArgumentException if the identifier is not defined or not a service definition
|
225 |
-
*/
|
226 |
-
public function extend($id, $callable)
|
227 |
-
{
|
228 |
-
if (!isset($this->keys[$id])) {
|
229 |
-
throw new \InvalidArgumentException(sprintf('Identifier "%s" is not defined.', $id));
|
230 |
-
}
|
231 |
-
|
232 |
-
if (!is_object($this->values[$id]) || !method_exists($this->values[$id], '__invoke')) {
|
233 |
-
throw new \InvalidArgumentException(sprintf('Identifier "%s" does not contain an object definition.', $id));
|
234 |
-
}
|
235 |
-
|
236 |
-
if (!is_object($callable) || !method_exists($callable, '__invoke')) {
|
237 |
-
throw new \InvalidArgumentException('Extension service definition is not a Closure or invokable object.');
|
238 |
-
}
|
239 |
-
|
240 |
-
$factory = $this->values[$id];
|
241 |
-
|
242 |
-
$extended = function ($c) use ($callable, $factory) {
|
243 |
-
return $callable($factory($c), $c);
|
244 |
-
};
|
245 |
-
|
246 |
-
if (isset($this->factories[$factory])) {
|
247 |
-
$this->factories->detach($factory);
|
248 |
-
$this->factories->attach($extended);
|
249 |
-
}
|
250 |
-
|
251 |
-
return $this[$id] = $extended;
|
252 |
-
}
|
253 |
-
|
254 |
/**
|
255 |
* Returns all defined value names.
|
256 |
*
|
210 |
return $this->values[$id];
|
211 |
}
|
212 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
/**
|
214 |
* Returns all defined value names.
|
215 |
*
|
src/app/Routing/WpRouting.php
CHANGED
@@ -3,26 +3,22 @@
|
|
3 |
namespace ResponsiveMenu\Routing;
|
4 |
use ResponsiveMenu\Routing\Container as Container;
|
5 |
|
6 |
-
class WpRouting implements Routing
|
7 |
-
{
|
8 |
|
9 |
protected $container;
|
10 |
|
11 |
-
public function __construct(Container $container)
|
12 |
-
{
|
13 |
$this->container = $container;
|
14 |
}
|
15 |
|
16 |
-
public function route()
|
17 |
-
{
|
18 |
if(is_admin())
|
19 |
add_action('admin_menu', [$this, 'adminPage']);
|
20 |
else
|
21 |
add_action('template_redirect', [$this->container['front_controller'], 'index']);
|
22 |
}
|
23 |
|
24 |
-
public function adminPage()
|
25 |
-
{
|
26 |
/* Heavily reliant on WordPress so very hard coded */
|
27 |
if(isset($_POST['responsive_menu_submit'])):
|
28 |
$method = 'update';
|
3 |
namespace ResponsiveMenu\Routing;
|
4 |
use ResponsiveMenu\Routing\Container as Container;
|
5 |
|
6 |
+
class WpRouting implements Routing {
|
|
|
7 |
|
8 |
protected $container;
|
9 |
|
10 |
+
public function __construct(Container $container) {
|
|
|
11 |
$this->container = $container;
|
12 |
}
|
13 |
|
14 |
+
public function route() {
|
|
|
15 |
if(is_admin())
|
16 |
add_action('admin_menu', [$this, 'adminPage']);
|
17 |
else
|
18 |
add_action('template_redirect', [$this->container['front_controller'], 'index']);
|
19 |
}
|
20 |
|
21 |
+
public function adminPage() {
|
|
|
22 |
/* Heavily reliant on WordPress so very hard coded */
|
23 |
if(isset($_POST['responsive_menu_submit'])):
|
24 |
$method = 'update';
|
src/app/ViewModels/Components/Button/Button.php
CHANGED
@@ -10,8 +10,15 @@ class Button implements ViewComponent {
|
|
10 |
public function render(OptionsCollection $options) {
|
11 |
|
12 |
$button_title = apply_filters('wpml_translate_single_string', $options['button_title']->getValue(), 'Responsive Menu', 'button_title');
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
$button_title_pos = $options['button_title_position']->getValue();
|
14 |
$button_title_html = $button_title != '' ? '<span class="responsive-menu-label responsive-menu-label-'.$button_title_pos.'">'.$button_title.'</span>' : '';
|
|
|
15 |
$accessible = in_array($button_title_pos, array('left', 'right')) ? 'responsive-menu-accessible' : '';
|
16 |
$content = '';
|
17 |
|
10 |
public function render(OptionsCollection $options) {
|
11 |
|
12 |
$button_title = apply_filters('wpml_translate_single_string', $options['button_title']->getValue(), 'Responsive Menu', 'button_title');
|
13 |
+
|
14 |
+
/*
|
15 |
+
Add Polylang Support */
|
16 |
+
if(function_exists('pll__'))
|
17 |
+
$button_title = pll__($button_title);
|
18 |
+
|
19 |
$button_title_pos = $options['button_title_position']->getValue();
|
20 |
$button_title_html = $button_title != '' ? '<span class="responsive-menu-label responsive-menu-label-'.$button_title_pos.'">'.$button_title.'</span>' : '';
|
21 |
+
|
22 |
$accessible = in_array($button_title_pos, array('left', 'right')) ? 'responsive-menu-accessible' : '';
|
23 |
$content = '';
|
24 |
|
src/app/ViewModels/Components/Menu/Menu.php
CHANGED
@@ -12,6 +12,11 @@ class Menu implements ViewComponent {
|
|
12 |
|
13 |
$menu = apply_filters('wpml_translate_single_string', $options['menu_to_use']->getValue(), 'Responsive Menu', 'menu_to_use');
|
14 |
|
|
|
|
|
|
|
|
|
|
|
15 |
return wp_nav_menu(
|
16 |
[
|
17 |
'container' => '',
|
12 |
|
13 |
$menu = apply_filters('wpml_translate_single_string', $options['menu_to_use']->getValue(), 'Responsive Menu', 'menu_to_use');
|
14 |
|
15 |
+
/*
|
16 |
+
Add Polylang Support */
|
17 |
+
if(function_exists('pll__'))
|
18 |
+
$menu = pll__($menu);
|
19 |
+
|
20 |
return wp_nav_menu(
|
21 |
[
|
22 |
'container' => '',
|
src/app/ViewModels/Components/Menu/Title.php
CHANGED
@@ -9,15 +9,24 @@ class Title implements ViewComponent {
|
|
9 |
|
10 |
public function render(OptionsCollection $options) {
|
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
if($options['menu_title']->getValue() || $options->getTitleImage()):
|
13 |
$content = '<div id="responsive-menu-title">';
|
14 |
if($options->getTitleImage())
|
15 |
$content .= '<div id="responsive-menu-title-image">' . $options->getTitleImage() . '</div>';
|
16 |
if($options['menu_title_link']->getValue()):
|
17 |
-
$link = apply_filters('wpml_translate_single_string', $options['menu_title_link']->getValue(), 'Responsive Menu', 'menu_title_link');
|
18 |
$content .= '<a href="'.$link.'" target="'.$options['menu_title_link_location'].'">';
|
19 |
endif;
|
20 |
-
$content .=
|
21 |
if($options['menu_title_link']->getValue())
|
22 |
$content .= '</a>';
|
23 |
$content .= '</div>';
|
9 |
|
10 |
public function render(OptionsCollection $options) {
|
11 |
|
12 |
+
$title = apply_filters('wpml_translate_single_string', $options['menu_title']->getValue(), 'Responsive Menu', 'menu_title');
|
13 |
+
$link = apply_filters('wpml_translate_single_string', $options['menu_title_link']->getValue(), 'Responsive Menu', 'menu_title_link');
|
14 |
+
|
15 |
+
/*
|
16 |
+
Add Polylang Support */
|
17 |
+
if(function_exists('pll__')):
|
18 |
+
$title = pll__($title);
|
19 |
+
$link = pll__($link);
|
20 |
+
endif;
|
21 |
+
|
22 |
if($options['menu_title']->getValue() || $options->getTitleImage()):
|
23 |
$content = '<div id="responsive-menu-title">';
|
24 |
if($options->getTitleImage())
|
25 |
$content .= '<div id="responsive-menu-title-image">' . $options->getTitleImage() . '</div>';
|
26 |
if($options['menu_title_link']->getValue()):
|
|
|
27 |
$content .= '<a href="'.$link.'" target="'.$options['menu_title_link_location'].'">';
|
28 |
endif;
|
29 |
+
$content .= $title;
|
30 |
if($options['menu_title_link']->getValue())
|
31 |
$content .= '</a>';
|
32 |
$content .= '</div>';
|
src/config/route_dependencies.php
CHANGED
@@ -11,11 +11,7 @@ $container['option_factory'] = function($c) {
|
|
11 |
};
|
12 |
|
13 |
$container['option_repository'] = function($c) {
|
14 |
-
|
15 |
-
};
|
16 |
-
|
17 |
-
$container['simple_option_repository'] = function($c) {
|
18 |
-
return new ResponsiveMenu\Repositories\Options\SimpleOptionReadRepository($c['database']);
|
19 |
};
|
20 |
|
21 |
$container['admin_view'] = function($c) {
|
@@ -27,9 +23,9 @@ $container['front_view'] = function($c) {
|
|
27 |
};
|
28 |
|
29 |
$container['admin_controller'] = function($c) {
|
30 |
-
return new ResponsiveMenu\Controllers\Admin
|
31 |
};
|
32 |
|
33 |
$container['front_controller'] = function($c) {
|
34 |
-
return new ResponsiveMenu\Controllers\Front($c['
|
35 |
};
|
11 |
};
|
12 |
|
13 |
$container['option_repository'] = function($c) {
|
14 |
+
return new ResponsiveMenu\Repositories\OptionRepository($c['database'], $c['option_factory']);
|
|
|
|
|
|
|
|
|
15 |
};
|
16 |
|
17 |
$container['admin_view'] = function($c) {
|
23 |
};
|
24 |
|
25 |
$container['admin_controller'] = function($c) {
|
26 |
+
return new ResponsiveMenu\Controllers\Admin($c['option_repository'], $c['admin_view']);
|
27 |
};
|
28 |
|
29 |
$container['front_controller'] = function($c) {
|
30 |
+
return new ResponsiveMenu\Controllers\Front($c['option_repository'], $c['front_view']);
|
31 |
};
|
translations/responsive-menu-es_ES.mo
ADDED
Binary file
|
translations/responsive-menu-es_ES.po
ADDED
@@ -0,0 +1,756 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Responsive Menu - 3.0.3\n"
|
4 |
+
"POT-Creation-Date: 2016-07-09 18:03+0100\n"
|
5 |
+
"PO-Revision-Date: 2016-07-09 18:04+0100\n"
|
6 |
+
"Last-Translator: \n"
|
7 |
+
"Language-Team: Responsive Menu <support@responsive.menu>\n"
|
8 |
+
"Language: es\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 1.8.7.1\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
15 |
+
"X-Poedit-KeywordsList: _;__;_e\n"
|
16 |
+
"X-Poedit-SearchPath-0: .\n"
|
17 |
+
|
18 |
+
#: src/app/Controllers/Admin.php:28
|
19 |
+
msgid "Responsive Menu Options Updated Successfully"
|
20 |
+
msgstr ""
|
21 |
+
|
22 |
+
#: src/app/Controllers/Admin.php:46 src/app/Controllers/Admin.php:72
|
23 |
+
msgid "Responsive Menu Options Reset Successfully"
|
24 |
+
msgstr ""
|
25 |
+
|
26 |
+
#: src/app/Controllers/Admin.php:74
|
27 |
+
msgid "No file selected"
|
28 |
+
msgstr ""
|
29 |
+
|
30 |
+
#: src/app/Factories/AdminSaveFactory.php:26
|
31 |
+
msgid "Unable to make data directory"
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: src/app/Factories/AdminSaveFactory.php:27
|
35 |
+
msgid "Unable to make CSS data directory"
|
36 |
+
msgstr ""
|
37 |
+
|
38 |
+
#: src/app/Factories/AdminSaveFactory.php:28
|
39 |
+
msgid "Unable to make JS data directory"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: src/app/Factories/AdminSaveFactory.php:35
|
43 |
+
msgid "Unable to create CSS file"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: src/app/Factories/AdminSaveFactory.php:38
|
47 |
+
msgid "Unable to create JS file"
|
48 |
+
msgstr ""
|
49 |
+
|
50 |
+
#: src/app/Form/Export.php:10
|
51 |
+
msgid "Export Options"
|
52 |
+
msgstr ""
|
53 |
+
|
54 |
+
#: src/app/Form/FontIconPageList.php:17
|
55 |
+
msgid "Id"
|
56 |
+
msgstr ""
|
57 |
+
|
58 |
+
#: src/app/Form/FontIconPageList.php:17
|
59 |
+
msgid "Icon"
|
60 |
+
msgstr ""
|
61 |
+
|
62 |
+
#: src/app/Form/FontIconPageList.php:59
|
63 |
+
msgid "Add New Font Icon"
|
64 |
+
msgstr ""
|
65 |
+
|
66 |
+
#: src/app/Form/Import.php:11
|
67 |
+
msgid "Import Options"
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#: src/app/Form/Reset.php:10
|
71 |
+
msgid "Reset Options"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: src/app/ViewModels/Components/Admin/Boxes.php:25
|
75 |
+
msgid "Toggle panel: Location"
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
#: src/config/admin_ordering.php:16
|
79 |
+
msgid "Initial Setup"
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
#: src/config/admin_ordering.php:17 src/config/admin_ordering.php:47
|
83 |
+
#: src/config/admin_ordering.php:812
|
84 |
+
msgid "Menu"
|
85 |
+
msgstr ""
|
86 |
+
|
87 |
+
#: src/config/admin_ordering.php:21 src/config/admin_ordering.php:893
|
88 |
+
msgid "Breakpoint"
|
89 |
+
msgstr ""
|
90 |
+
|
91 |
+
#: src/config/admin_ordering.php:22
|
92 |
+
msgid "" |