From 60f63ccfe674e8a35ec13cec97ad6604ada00011 Mon Sep 17 00:00:00 2001
From: marco
Date: Thu, 13 Aug 2015 21:57:05 +0200
Subject: [PATCH 2/6] Router skeleton.
---
lib/Router/Router.php | 36 +++++++++++++++++++++++
lib/Router/Settings.php | 18 ++++++++++++
views/settings.html | 63 +++++++++++++++++++++++++++++++++++++++--
3 files changed, 114 insertions(+), 3 deletions(-)
create mode 100644 lib/Router/Router.php
create mode 100644 lib/Router/Settings.php
diff --git a/lib/Router/Router.php b/lib/Router/Router.php
new file mode 100644
index 0000000000..e8241603b4
--- /dev/null
+++ b/lib/Router/Router.php
@@ -0,0 +1,36 @@
+setToken();
+ }
+
+ function setup() {
+ $this->securityCheck();
+ $endpoint = ucfirst($_POST['endpoint']);
+ $action = $_POST['action'];
+ $args = $_POST['args'];
+ $route = new $endpoint();
+ $route->$action($args);
+ }
+
+ function setToken() {
+ $token = wp_create_nonce('mailpoet_token');
+ wp_localize_script($token);
+ }
+
+ function securityCheck() {
+ if (!current_user_can('manage_options')) {die();}
+ if (!wp_verify_nonce($_POST['token'])) {die();}
+ }
+}
diff --git a/lib/Router/Settings.php b/lib/Router/Settings.php
new file mode 100644
index 0000000000..98b741a6b0
--- /dev/null
+++ b/lib/Router/Settings.php
@@ -0,0 +1,18 @@
+ 'John',
+ 'last_name' => 'Mailer',
+ 'email' => 'john@mailpoet.com'
+ );
+ echo json_encode($data);
+ }
+}
diff --git a/views/settings.html b/views/settings.html
index ff5dced7ee..857d874c4d 100644
--- a/views/settings.html
+++ b/views/settings.html
@@ -2,7 +2,64 @@
<% block content %>
<%= 'Settings' %>
- <%= __('First Name') %>
- <%= __('Last Name') %>
- <%= __('Email') %>
+
+
+
+
<% endblock %>
From 0b0539dc8391ee0d7b6b1898a968bc2fac576e47 Mon Sep 17 00:00:00 2001
From: Laurent Szyster
Date: Fri, 14 Aug 2015 12:01:08 +0200
Subject: [PATCH 3/6] #66 added a build command to RoboFile.php
---
RoboFile.php | 49 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)
diff --git a/RoboFile.php b/RoboFile.php
index 8ad4575275..8dd214241b 100644
--- a/RoboFile.php
+++ b/RoboFile.php
@@ -88,7 +88,7 @@ class RoboFile extends \Robo\Tasks {
}
function testAll() {
- $this->loadEnv();
+ $this->loadEnv();
$this->_exec('vendor/bin/codecept build');
$this
->taskexec('phantomjs --webdriver=4444')
@@ -104,6 +104,53 @@ class RoboFile extends \Robo\Tasks {
$this->_exec('vendor/bin/codecept run unit --debug');
}
+ function zip() {
+ $rootPath = realpath('wysija-newsletters');
+ $zip = new ZipArchive();
+ $zip->open('mailpoet.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);
+ $directory = new \RecursiveDirectoryIterator(
+ $rootPath, \FilesystemIterator::FOLLOW_SYMLINKS
+ );
+ $filter = new \RecursiveCallbackFilterIterator(
+ $directory, function ($current, $key, $iterator) {
+ return ($current->getFilename()[0] !== '.');
+ }
+ );
+ $files = new \RecursiveIteratorIterator($filter);
+ foreach ($files as $name => $file) {
+ $filePath = $file->getRealPath();
+ $relativePath = substr($filePath, strlen($rootPath) + 1);
+ $zip->addFile($filePath, $relativePath);
+ }
+ $zip->close();
+ }
+
+ function build() {
+ $this->_exec('mkdir wysija-newsletters');
+ $this->_exec('mkdir wysija-newsletters/vendor');
+ $this->_exec('cp index.php wysija-newsletters/index.php');
+ $this->_exec('cp mailpoet.php wysija-newsletters/mailpoet.php');
+ $this->_exec('cp package.json wysija-newsletters/package.json');
+ $this->_exec('cp composer.* wysija-newsletters/');
+ $this->taskCopyDir(array(
+ 'assets' => 'wysija-newsletters/assets',
+ 'lang' => 'wysija-newsletters/lang',
+ 'lib' => 'wysija-newsletters/lib',
+ 'views' => 'wysija-newsletters/views'
+ ))->run();
+ chdir('./wysija-newsletters');
+ $this->taskExecStack()
+ ->stopOnFail()
+ // ->exec('cd wysija-newsletters') does not work as intended
+ ->exec('./composer.phar install --no-dev')
+ ->run();
+ chdir('..');
+ $this->_exec('rm wysija-newsletters/package.json');
+ $this->_exec('rm wysija-newsletters/composer.*');
+ $this->zip();
+ $this->taskDeleteDir('wysija-newsletters')->run();
+ }
+
protected function loadEnv() {
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
From 745700e5fe331b5a09a4a7bccafeedb819311d86 Mon Sep 17 00:00:00 2001
From: marco
Date: Fri, 14 Aug 2015 23:39:38 +0200
Subject: [PATCH 4/6] Global bash script with Linux and OSX compatibility.
---
.gitignore | 1 +
RoboFile.php | 55 ++++-----------------------------------------------
build | 47 +++++++++++++++++++++++++++++++++++++++++++
composer.lock | 2 +-
4 files changed, 53 insertions(+), 52 deletions(-)
create mode 100755 build
diff --git a/.gitignore b/.gitignore
index beaa2e65f5..084ddd26a0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@ npm-debug.log
/views/cache/**
temp
.idea
+wysija-newsletters.zip
diff --git a/RoboFile.php b/RoboFile.php
index 8dd214241b..54936dcfdb 100644
--- a/RoboFile.php
+++ b/RoboFile.php
@@ -48,15 +48,15 @@ class RoboFile extends \Robo\Tasks {
function makepot() {
$this->_exec('grunt makepot'.
- ' --gruntfile '.__DIR__.'/tasks/makepot/makepot.js'.
- ' --base_path '.__DIR__
+ ' --gruntfile '.__DIR__.'/tasks/makepot/makepot.js'.
+ ' --base_path '.__DIR__
);
}
function pushpot() {
$this->_exec('grunt pushpot'.
- ' --gruntfile '.__DIR__.'/tasks/makepot/makepot.js'.
- ' --base_path '.__DIR__
+ ' --gruntfile '.__DIR__.'/tasks/makepot/makepot.js'.
+ ' --base_path '.__DIR__
);
}
@@ -104,53 +104,6 @@ class RoboFile extends \Robo\Tasks {
$this->_exec('vendor/bin/codecept run unit --debug');
}
- function zip() {
- $rootPath = realpath('wysija-newsletters');
- $zip = new ZipArchive();
- $zip->open('mailpoet.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);
- $directory = new \RecursiveDirectoryIterator(
- $rootPath, \FilesystemIterator::FOLLOW_SYMLINKS
- );
- $filter = new \RecursiveCallbackFilterIterator(
- $directory, function ($current, $key, $iterator) {
- return ($current->getFilename()[0] !== '.');
- }
- );
- $files = new \RecursiveIteratorIterator($filter);
- foreach ($files as $name => $file) {
- $filePath = $file->getRealPath();
- $relativePath = substr($filePath, strlen($rootPath) + 1);
- $zip->addFile($filePath, $relativePath);
- }
- $zip->close();
- }
-
- function build() {
- $this->_exec('mkdir wysija-newsletters');
- $this->_exec('mkdir wysija-newsletters/vendor');
- $this->_exec('cp index.php wysija-newsletters/index.php');
- $this->_exec('cp mailpoet.php wysija-newsletters/mailpoet.php');
- $this->_exec('cp package.json wysija-newsletters/package.json');
- $this->_exec('cp composer.* wysija-newsletters/');
- $this->taskCopyDir(array(
- 'assets' => 'wysija-newsletters/assets',
- 'lang' => 'wysija-newsletters/lang',
- 'lib' => 'wysija-newsletters/lib',
- 'views' => 'wysija-newsletters/views'
- ))->run();
- chdir('./wysija-newsletters');
- $this->taskExecStack()
- ->stopOnFail()
- // ->exec('cd wysija-newsletters') does not work as intended
- ->exec('./composer.phar install --no-dev')
- ->run();
- chdir('..');
- $this->_exec('rm wysija-newsletters/package.json');
- $this->_exec('rm wysija-newsletters/composer.*');
- $this->zip();
- $this->taskDeleteDir('wysija-newsletters')->run();
- }
-
protected function loadEnv() {
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
diff --git a/build b/build
new file mode 100755
index 0000000000..c298b18bb3
--- /dev/null
+++ b/build
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# remove previouz build.
+rm wysija-newsletters.zip;
+
+# Create temp dir.
+mkdir wysija-newsletters;
+
+# Cleanup Composer and NPM.
+rm -rf vendor;
+rm -rf node_modules;
+rm composer.lock;
+
+# Install Composer and NPM deps.
+./composer.phar install --no-dev;
+npm install --production;
+
+# Copy release folders.
+cp -rf lang wysija-newsletters;
+cp -rf assets wysija-newsletters;
+cp -rf lib wysija-newsletters;
+# cp -rf node_modules wysija-newsletters;
+cp -rf vendor wysija-newsletters;
+cp -rf views wysija-newsletters;
+
+# Copy release files.
+cp LICENSE wysija-newsletters;
+cp index.php wysija-newsletters;
+cp mailpoet.php wysija-newsletters;
+cp readme.txt wysija-newsletters;
+cp uninstall.php wysija-newsletters;
+cp webpack.config.js wysija-newsletters;
+
+# Zip final release.
+zip -r wysija-newsletters.zip wysija-newsletters;
+
+# Remove temp dir.
+rm -rf wysija-newsletters;
+
+# Cleanup Composer and NPM.
+rm -rf vendor;
+rm -rf node_modules;
+rm composer.lock;
+
+# Reinstall dev dependencies.
+./composer.phar install;
+./do install;
diff --git a/composer.lock b/composer.lock
index c2e547a0a7..ccf94fe148 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "ff54fd1b75cd31ce67aaf2fa0ee617da",
+ "hash": "0e2b177a6de46c3a1263386f1b803faf",
"packages": [
{
"name": "cerdic/css-tidy",
From 5c1f3f43deb91c318aa6ce989bb7da71dc1f7ae2 Mon Sep 17 00:00:00 2001
From: marco
Date: Fri, 14 Aug 2015 23:41:46 +0200
Subject: [PATCH 5/6] There's no need to copy node_modules.
---
build | 1 -
1 file changed, 1 deletion(-)
diff --git a/build b/build
index c298b18bb3..4f3331b2ca 100755
--- a/build
+++ b/build
@@ -19,7 +19,6 @@ npm install --production;
cp -rf lang wysija-newsletters;
cp -rf assets wysija-newsletters;
cp -rf lib wysija-newsletters;
-# cp -rf node_modules wysija-newsletters;
cp -rf vendor wysija-newsletters;
cp -rf views wysija-newsletters;
From 60919e6171fa072187fd4a42a45716e9fa209d1a Mon Sep 17 00:00:00 2001
From: marco
Date: Sun, 16 Aug 2015 20:21:34 +0200
Subject: [PATCH 6/6] Router works for POST requests.
---
lib/Config/Initializer.php | 7 ++++++
lib/Router/Router.php | 21 +++++++++++------
lib/Router/Settings.php | 2 +-
views/settings.html | 46 +++++++++++++++-----------------------
4 files changed, 40 insertions(+), 36 deletions(-)
diff --git a/lib/Config/Initializer.php b/lib/Config/Initializer.php
index 94acae3ad4..6235aef037 100644
--- a/lib/Config/Initializer.php
+++ b/lib/Config/Initializer.php
@@ -1,6 +1,7 @@
setupRenderer();
$this->setupLocalizer();
$this->setupMenu();
+ $this->setupRouter();
}
function setupDB() {
@@ -54,4 +56,9 @@ class Initializer {
);
$menu->init();
}
+
+ function setupRouter() {
+ $router = new Router\Router();
+ $router->init();
+ }
}
diff --git a/lib/Router/Router.php b/lib/Router/Router.php
index e8241603b4..9e01381a84 100644
--- a/lib/Router/Router.php
+++ b/lib/Router/Router.php
@@ -8,29 +8,36 @@ class Router {
}
function init() {
+ add_action(
+ 'admin_head',
+ array($this, 'setToken')
+ );
add_action(
'wp_ajax_mailpoet',
array($this, 'setup')
);
- $this->setToken();
}
function setup() {
$this->securityCheck();
- $endpoint = ucfirst($_POST['endpoint']);
- $action = $_POST['action'];
+ $class = ucfirst($_POST['endpoint']);
+ $endpoint = __NAMESPACE__ . "\\" . $class;
+ $method = $_POST['method'];
$args = $_POST['args'];
- $route = new $endpoint();
- $route->$action($args);
+ $endpoint = new $endpoint();
+ $endpoint->$method(json_encode($args));
}
function setToken() {
$token = wp_create_nonce('mailpoet_token');
- wp_localize_script($token);
+ $global = '/n";
+ echo $global;
}
function securityCheck() {
if (!current_user_can('manage_options')) {die();}
- if (!wp_verify_nonce($_POST['token'])) {die();}
+ if (!wp_verify_nonce($_POST['token'], 'mailpoet_token')) {die();}
}
}
diff --git a/lib/Router/Settings.php b/lib/Router/Settings.php
index 98b741a6b0..0b4d27be4b 100644
--- a/lib/Router/Settings.php
+++ b/lib/Router/Settings.php
@@ -13,6 +13,6 @@ class Settings {
'last_name' => 'Mailer',
'email' => 'john@mailpoet.com'
);
- echo json_encode($data);
+ wp_send_json($params);
}
}
diff --git a/views/settings.html b/views/settings.html
index 857d874c4d..e3e1500ea6 100644
--- a/views/settings.html
+++ b/views/settings.html
@@ -32,34 +32,24 @@
-
+});
+
<% endblock %>