├── README.md └── site-processvue ├── assets └── index.php ├── config.php ├── install ├── files │ ├── 1018 │ │ ├── crocus-2107024_1280.0x260.jpg │ │ ├── crocus-2107024_1280.1200x900.jpg │ │ ├── crocus-2107024_1280.400x300.jpg │ │ ├── crocus-2107024_1280.400x400.jpg │ │ ├── crocus-2107024_1280.800x600.jpg │ │ ├── crocus-2107024_1280.jpg │ │ ├── fruit-1534494_1280.0x260.jpg │ │ ├── fruit-1534494_1280.1200x900.jpg │ │ ├── fruit-1534494_1280.400x300.jpg │ │ ├── fruit-1534494_1280.400x400.jpg │ │ ├── fruit-1534494_1280.800x600.jpg │ │ ├── fruit-1534494_1280.jpg │ │ ├── mountain-landscape-2031539_1920.0x260.jpg │ │ ├── mountain-landscape-2031539_1920.1200x900.jpg │ │ ├── mountain-landscape-2031539_1920.400x300.jpg │ │ ├── mountain-landscape-2031539_1920.400x400.jpg │ │ ├── mountain-landscape-2031539_1920.800x600.jpg │ │ └── mountain-landscape-2031539_1920.jpg │ └── README.txt ├── info.php ├── install.sql └── screenshot.jpg ├── modules ├── Helloworld │ └── Helloworld.module ├── InputfieldCKEditor │ ├── README.txt │ ├── config-body.js │ ├── config.js │ ├── contents-inline.css │ ├── contents.css │ ├── mystyles.js │ └── plugins │ │ └── README.txt └── README.txt └── templates ├── README.txt ├── admin.php ├── client ├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── dev-client.js │ ├── dev-server.js │ ├── utils.js │ ├── vue-loader.conf.js │ ├── webpack.base.conf.js │ ├── webpack.dev.conf.js │ └── webpack.prod.conf.js ├── config │ ├── dev.env.js │ ├── index.js │ └── prod.env.js ├── index.html ├── package.json ├── src │ ├── app.js │ ├── assets │ │ └── logo.png │ ├── components │ │ ├── PwApp.vue │ │ ├── PwDefault.vue │ │ ├── PwHome.vue │ │ ├── PwLoader.vue │ │ └── PwNav.vue │ ├── config │ │ └── index.js │ ├── main.js │ ├── router │ │ └── index.js │ └── store │ │ └── index.js └── static │ └── .gitkeep ├── errors ├── 500.html └── README.txt ├── home.php ├── inc ├── pagefields.php └── rest.php ├── nav.php └── pages.php /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # ProcessWire Site Profile for Vue 2.0 4 | 5 | ProcessVue is a boilerplate for getting started with ProcessWire 3.0 as a headless CMS for Vue 2.0 SPAs. 6 | 7 | ## Features: 8 | 9 | - REST API 10 | - Fetch title fields 11 | - Fetch textearea fields 12 | - Fetch image/gallery fields (included resizing) 13 | - Fetch repeater fields 14 | - Fetch children pages 15 | - Vue Webpack boilerplate 16 | - Vue Router 17 | - Vue Meta (to update metatags) 18 | - Vuex (store management) 19 | 20 | ## To Install site profile 21 | 22 | Grab a copy of the latest ProcessWire. Copy or upload the /site-processvue/ directory and everything in it to the root of your ProcessWire files. This is the same directory that ProcessWire's index.php and /site-default/ directories live. So you'll have a /site-processvue/ alongside ProcessWire's /site-default/ and any other profiles it comes with. 23 | 24 | Load the URL to your ProcessWire installation in your browser to initiate the installer. Select the "ProcessVue" profile from the dropdown when prompted to do so. The installer will take care of the rest. 25 | 26 | ## To Install npm packages 27 | 28 | 1. Update `site/templates/client/config/index.js` proxyTable with your domain name 29 | 2. Install npm packages from `site/templates/client` by running `npm i` 30 | 3. Run webpack dev server by running `npm run dev`, or compile all assets with `npm run build` 31 | 32 | #### Note 33 | 34 | If your website is in localhost (for example http://localhost/processvue) and not in a virtual server (i.e. http://processvue.localdev), with the command `npm run build` the website may not be visible because the js files point to the wrong path, so you may need a proper virtual server to browse the site correctly. However, the `npm run dev` command should work fine without setting up a virtual server. 35 | 36 | ## Support 37 | 38 | Check [this ProcessWire forum thread](https://processwire.com/talk/topic/15790-vue-20-boilerplate-for-processwire-30/) for further details about how this site profile works. -------------------------------------------------------------------------------- /site-processvue/assets/index.php: -------------------------------------------------------------------------------- 1 | debug = false; 36 | 37 | 38 | 39 | /*** INSTALLER CONFIG ********************************************************************/ 40 | 41 | 42 | -------------------------------------------------------------------------------- /site-processvue/install/files/1018/crocus-2107024_1280.0x260.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/crocus-2107024_1280.0x260.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/crocus-2107024_1280.1200x900.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/crocus-2107024_1280.1200x900.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/crocus-2107024_1280.400x300.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/crocus-2107024_1280.400x300.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/crocus-2107024_1280.400x400.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/crocus-2107024_1280.400x400.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/crocus-2107024_1280.800x600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/crocus-2107024_1280.800x600.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/crocus-2107024_1280.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/crocus-2107024_1280.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/fruit-1534494_1280.0x260.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/fruit-1534494_1280.0x260.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/fruit-1534494_1280.1200x900.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/fruit-1534494_1280.1200x900.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/fruit-1534494_1280.400x300.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/fruit-1534494_1280.400x300.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/fruit-1534494_1280.400x400.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/fruit-1534494_1280.400x400.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/fruit-1534494_1280.800x600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/fruit-1534494_1280.800x600.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/fruit-1534494_1280.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/fruit-1534494_1280.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/mountain-landscape-2031539_1920.0x260.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/mountain-landscape-2031539_1920.0x260.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/mountain-landscape-2031539_1920.1200x900.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/mountain-landscape-2031539_1920.1200x900.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/mountain-landscape-2031539_1920.400x300.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/mountain-landscape-2031539_1920.400x300.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/mountain-landscape-2031539_1920.400x400.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/mountain-landscape-2031539_1920.400x400.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/mountain-landscape-2031539_1920.800x600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/mountain-landscape-2031539_1920.800x600.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/1018/mountain-landscape-2031539_1920.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/files/1018/mountain-landscape-2031539_1920.jpg -------------------------------------------------------------------------------- /site-processvue/install/files/README.txt: -------------------------------------------------------------------------------- 1 | This file is here to ensure Git adds the dir to the repo. You may delete this file. 2 | -------------------------------------------------------------------------------- /site-processvue/install/info.php: -------------------------------------------------------------------------------- 1 | "ProcessVue", 4 | 'summary' => "ProcessVue is a boilerplate for getting started with ProcessWire as a headless CMS for VueJS SPAs", 5 | 'screenshot' => "screenshot.jpg" 6 | ); 7 | -------------------------------------------------------------------------------- /site-processvue/install/install.sql: -------------------------------------------------------------------------------- 1 | # --- WireDatabaseBackup {"time":"2017-03-18 11:24:12","user":"","dbName":"processvue_pw","description":"","tables":[],"excludeTables":["pages_drafts","pages_roles","permissions","roles","roles_permissions","users","users_roles","user","role","permission"],"excludeCreateTables":[],"excludeExportTables":["field_roles","field_permissions","field_email","field_pass","caches","session_login_throttle","page_path_history"]} 2 | 3 | DROP TABLE IF EXISTS `caches`; 4 | CREATE TABLE `caches` ( 5 | `name` varchar(250) NOT NULL, 6 | `data` mediumtext NOT NULL, 7 | `expires` datetime NOT NULL, 8 | PRIMARY KEY (`name`), 9 | KEY `expires` (`expires`) 10 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 11 | 12 | DROP TABLE IF EXISTS `field_content`; 13 | CREATE TABLE `field_content` ( 14 | `pages_id` int(10) unsigned NOT NULL, 15 | `data` mediumtext NOT NULL, 16 | PRIMARY KEY (`pages_id`), 17 | KEY `data_exact` (`data`(250)), 18 | FULLTEXT KEY `data` (`data`) 19 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 20 | 21 | INSERT INTO `field_content` (`pages_id`, `data`) VALUES('1', '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ut augue quam. Duis dignissim dui mauris, vel volutpat sem vulputate in. Duis cursus convallis dui, eu posuere odio eleifend ac. Proin ullamcorper eget quam a finibus. Aenean ultricies sem odio, ut vulputate nisi sagittis eu. Phasellus tempus scelerisque ultricies. Cras sapien ex, maximus id ultrices ac, molestie sed odio. Ut ex lectus, iaculis ac maximus sed, efficitur quis tortor. Etiam egestas laoreet dui, sit amet ullamcorper ligula tristique sit amet.

\n\n

Maecenas consectetur sem id condimentum ornare. Vivamus eget lacus a augue vestibulum pharetra. Nunc ut diam non velit suscipit ullamcorper. Phasellus felis risus, pharetra a euismod quis, hendrerit quis risus. Nulla nibh magna, vulputate at libero nec, rutrum maximus metus. Curabitur luctus vehicula auctor. Mauris a ante dui. Donec vel tortor nec urna maximus fermentum.

\n\n

In enim nunc, luctus id faucibus sed, faucibus viverra nibh. Nullam eu neque tincidunt, convallis libero sit amet, pellentesque nibh. Morbi eget ligula semper, consectetur magna a, fermentum neque. Donec vel eros cursus, ultrices ipsum ac, maximus dui. Aenean eu magna at elit eleifend congue at sit amet enim. In hac habitasse platea dictumst. Nullam molestie tristique diam. Morbi scelerisque ullamcorper augue. Nulla elementum vitae ipsum ac pharetra. Ut nec nibh ligula. Nulla placerat ipsum vel lorem eleifend, in aliquam sem vehicula. Ut tempus tellus id nisi sodales tincidunt.

'); 22 | INSERT INTO `field_content` (`pages_id`, `data`) VALUES('1018', '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ut augue quam. Duis dignissim dui mauris, vel volutpat sem vulputate in. Duis cursus convallis dui, eu posuere odio eleifend ac. Proin ullamcorper eget quam a finibus. Aenean ultricies sem odio, ut vulputate nisi sagittis eu. Phasellus tempus scelerisque ultricies. Cras sapien ex, maximus id ultrices ac, molestie sed odio. Ut ex lectus, iaculis ac maximus sed, efficitur quis tortor. Etiam egestas laoreet dui, sit amet ullamcorper ligula tristique sit amet.

\n\n

Maecenas consectetur sem id condimentum ornare. Vivamus eget lacus a augue vestibulum pharetra. Nunc ut diam non velit suscipit ullamcorper. Phasellus felis risus, pharetra a euismod quis, hendrerit quis risus. Nulla nibh magna, vulputate at libero nec, rutrum maximus metus. Curabitur luctus vehicula auctor. Mauris a ante dui. Donec vel tortor nec urna maximus fermentum.

\n\n

In enim nunc, luctus id faucibus sed, faucibus viverra nibh. Nullam eu neque tincidunt, convallis libero sit amet, pellentesque nibh. Morbi eget ligula semper, consectetur magna a, fermentum neque. Donec vel eros cursus, ultrices ipsum ac, maximus dui. Aenean eu magna at elit eleifend congue at sit amet enim. In hac habitasse platea dictumst. Nullam molestie tristique diam. Morbi scelerisque ullamcorper augue. Nulla elementum vitae ipsum ac pharetra. Ut nec nibh ligula. Nulla placerat ipsum vel lorem eleifend, in aliquam sem vehicula. Ut tempus tellus id nisi sodales tincidunt.

'); 23 | INSERT INTO `field_content` (`pages_id`, `data`) VALUES('1022', '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ut augue quam. Duis dignissim dui mauris, vel volutpat sem vulputate in. Duis cursus convallis dui, eu posuere odio eleifend ac. Proin ullamcorper eget quam a finibus.

'); 24 | INSERT INTO `field_content` (`pages_id`, `data`) VALUES('1023', '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ut augue quam. Duis dignissim dui mauris, vel volutpat sem vulputate in. Duis cursus convallis dui, eu posuere odio eleifend ac. Proin ullamcorper eget quam a finibus.

'); 25 | INSERT INTO `field_content` (`pages_id`, `data`) VALUES('1024', '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ut augue quam. Duis dignissim dui mauris, vel volutpat sem vulputate in. Duis cursus convallis dui, eu posuere odio eleifend ac. Proin ullamcorper eget quam a finibus.

'); 26 | INSERT INTO `field_content` (`pages_id`, `data`) VALUES('1025', '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ut augue quam. Duis dignissim dui mauris, vel volutpat sem vulputate in. Duis cursus convallis dui, eu posuere odio eleifend ac. Proin ullamcorper eget quam a finibus. Aenean ultricies sem odio, ut vulputate nisi sagittis eu. Phasellus tempus scelerisque ultricies. Cras sapien ex, maximus id ultrices ac, molestie sed odio. Ut ex lectus, iaculis ac maximus sed, efficitur quis tortor. Etiam egestas laoreet dui, sit amet ullamcorper ligula tristique sit amet.

\n\n

Maecenas consectetur sem id condimentum ornare. Vivamus eget lacus a augue vestibulum pharetra. Nunc ut diam non velit suscipit ullamcorper. Phasellus felis risus, pharetra a euismod quis, hendrerit quis risus. Nulla nibh magna, vulputate at libero nec, rutrum maximus metus. Curabitur luctus vehicula auctor. Mauris a ante dui. Donec vel tortor nec urna maximus fermentum.

\n\n

In enim nunc, luctus id faucibus sed, faucibus viverra nibh. Nullam eu neque tincidunt, convallis libero sit amet, pellentesque nibh. Morbi eget ligula semper, consectetur magna a, fermentum neque. Donec vel eros cursus, ultrices ipsum ac, maximus dui. Aenean eu magna at elit eleifend congue at sit amet enim. In hac habitasse platea dictumst. Nullam molestie tristique diam. Morbi scelerisque ullamcorper augue. Nulla elementum vitae ipsum ac pharetra. Ut nec nibh ligula. Nulla placerat ipsum vel lorem eleifend, in aliquam sem vehicula. Ut tempus tellus id nisi sodales tincidunt.

'); 27 | INSERT INTO `field_content` (`pages_id`, `data`) VALUES('1027', '

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ut augue quam. Duis dignissim dui mauris, vel volutpat sem vulputate in. Duis cursus convallis dui, eu posuere odio eleifend ac. Proin ullamcorper eget quam a finibus. Aenean ultricies sem odio, ut vulputate nisi sagittis eu. Phasellus tempus scelerisque ultricies. Cras sapien ex, maximus id ultrices ac, molestie sed odio. Ut ex lectus, iaculis ac maximus sed, efficitur quis tortor. Etiam egestas laoreet dui, sit amet ullamcorper ligula tristique sit amet.

\n\n

Maecenas consectetur sem id condimentum ornare. Vivamus eget lacus a augue vestibulum pharetra. Nunc ut diam non velit suscipit ullamcorper. Phasellus felis risus, pharetra a euismod quis, hendrerit quis risus. Nulla nibh magna, vulputate at libero nec, rutrum maximus metus. Curabitur luctus vehicula auctor. Mauris a ante dui. Donec vel tortor nec urna maximus fermentum.

\n\n

In enim nunc, luctus id faucibus sed, faucibus viverra nibh. Nullam eu neque tincidunt, convallis libero sit amet, pellentesque nibh. Morbi eget ligula semper, consectetur magna a, fermentum neque. Donec vel eros cursus, ultrices ipsum ac, maximus dui. Aenean eu magna at elit eleifend congue at sit amet enim. In hac habitasse platea dictumst. Nullam molestie tristique diam. Morbi scelerisque ullamcorper augue. Nulla elementum vitae ipsum ac pharetra. Ut nec nibh ligula. Nulla placerat ipsum vel lorem eleifend, in aliquam sem vehicula. Ut tempus tellus id nisi sodales tincidunt.

'); 28 | INSERT INTO `field_content` (`pages_id`, `data`) VALUES('1029', '

Maecenas consectetur sem id condimentum ornare. Vivamus eget lacus a augue vestibulum pharetra. Nunc ut diam non velit suscipit ullamcorper. Phasellus felis risus, pharetra a euismod quis, hendrerit quis risus. Nulla nibh magna, vulputate at libero nec, rutrum maximus metus. Curabitur luctus vehicula auctor. Mauris a ante dui. Donec vel tortor nec urna maximus fermentum.

\n\n

In enim nunc, luctus id faucibus sed, faucibus viverra nibh. Nullam eu neque tincidunt, convallis libero sit amet, pellentesque nibh. Morbi eget ligula semper, consectetur magna a, fermentum neque. Donec vel eros cursus, ultrices ipsum ac, maximus dui. Aenean eu magna at elit eleifend congue at sit amet enim. In hac habitasse platea dictumst. Nullam molestie tristique diam. Morbi scelerisque ullamcorper augue. Nulla elementum vitae ipsum ac pharetra. Ut nec nibh ligula. Nulla placerat ipsum vel lorem eleifend, in aliquam sem vehicula. Ut tempus tellus id nisi sodales tincidunt.

'); 29 | INSERT INTO `field_content` (`pages_id`, `data`) VALUES('1031', '

Maecenas consectetur sem id condimentum ornare. Vivamus eget lacus a augue vestibulum pharetra. Nunc ut diam non velit suscipit ullamcorper. Phasellus felis risus, pharetra a euismod quis, hendrerit quis risus. Nulla nibh magna, vulputate at libero nec, rutrum maximus metus. Curabitur luctus vehicula auctor. Mauris a ante dui. Donec vel tortor nec urna maximus fermentum.

\n\n

In enim nunc, luctus id faucibus sed, faucibus viverra nibh. Nullam eu neque tincidunt, convallis libero sit amet, pellentesque nibh. Morbi eget ligula semper, consectetur magna a, fermentum neque. Donec vel eros cursus, ultrices ipsum ac, maximus dui. Aenean eu magna at elit eleifend congue at sit amet enim. In hac habitasse platea dictumst. Nullam molestie tristique diam. Morbi scelerisque ullamcorper augue. Nulla elementum vitae ipsum ac pharetra. Ut nec nibh ligula. Nulla placerat ipsum vel lorem eleifend, in aliquam sem vehicula. Ut tempus tellus id nisi sodales tincidunt.

'); 30 | INSERT INTO `field_content` (`pages_id`, `data`) VALUES('1033', '

Maecenas consectetur sem id condimentum ornare. Vivamus eget lacus a augue vestibulum pharetra. Nunc ut diam non velit suscipit ullamcorper. Phasellus felis risus, pharetra a euismod quis, hendrerit quis risus. Nulla nibh magna, vulputate at libero nec, rutrum maximus metus. Curabitur luctus vehicula auctor. Mauris a ante dui. Donec vel tortor nec urna maximus fermentum.

\n\n

In enim nunc, luctus id faucibus sed, faucibus viverra nibh. Nullam eu neque tincidunt, convallis libero sit amet, pellentesque nibh. Morbi eget ligula semper, consectetur magna a, fermentum neque. Donec vel eros cursus, ultrices ipsum ac, maximus dui. Aenean eu magna at elit eleifend congue at sit amet enim. In hac habitasse platea dictumst. Nullam molestie tristique diam. Morbi scelerisque ullamcorper augue. Nulla elementum vitae ipsum ac pharetra. Ut nec nibh ligula. Nulla placerat ipsum vel lorem eleifend, in aliquam sem vehicula. Ut tempus tellus id nisi sodales tincidunt.

'); 31 | 32 | DROP TABLE IF EXISTS `field_email`; 33 | CREATE TABLE `field_email` ( 34 | `pages_id` int(10) unsigned NOT NULL, 35 | `data` varchar(250) NOT NULL DEFAULT '', 36 | PRIMARY KEY (`pages_id`), 37 | KEY `data_exact` (`data`), 38 | FULLTEXT KEY `data` (`data`) 39 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 40 | 41 | DROP TABLE IF EXISTS `field_faq_list`; 42 | CREATE TABLE `field_faq_list` ( 43 | `pages_id` int(10) unsigned NOT NULL, 44 | `data` text NOT NULL, 45 | `count` int(11) NOT NULL, 46 | `parent_id` int(11) NOT NULL, 47 | PRIMARY KEY (`pages_id`), 48 | KEY `data_exact` (`data`(1)), 49 | KEY `count` (`count`,`pages_id`), 50 | KEY `parent_id` (`parent_id`,`pages_id`), 51 | FULLTEXT KEY `data` (`data`) 52 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 53 | 54 | INSERT INTO `field_faq_list` (`pages_id`, `data`, `count`, `parent_id`) VALUES('1018', '1022,1023,1024', '3', '1021'); 55 | INSERT INTO `field_faq_list` (`pages_id`, `data`, `count`, `parent_id`) VALUES('1025', '', '0', '1026'); 56 | INSERT INTO `field_faq_list` (`pages_id`, `data`, `count`, `parent_id`) VALUES('1027', '', '0', '1028'); 57 | INSERT INTO `field_faq_list` (`pages_id`, `data`, `count`, `parent_id`) VALUES('1029', '', '0', '1030'); 58 | INSERT INTO `field_faq_list` (`pages_id`, `data`, `count`, `parent_id`) VALUES('1031', '', '0', '1032'); 59 | INSERT INTO `field_faq_list` (`pages_id`, `data`, `count`, `parent_id`) VALUES('1033', '', '0', '1034'); 60 | 61 | DROP TABLE IF EXISTS `field_gallery`; 62 | CREATE TABLE `field_gallery` ( 63 | `pages_id` int(10) unsigned NOT NULL, 64 | `data` varchar(250) NOT NULL, 65 | `sort` int(10) unsigned NOT NULL, 66 | `description` text NOT NULL, 67 | `modified` datetime DEFAULT NULL, 68 | `created` datetime DEFAULT NULL, 69 | PRIMARY KEY (`pages_id`,`sort`), 70 | KEY `data` (`data`), 71 | KEY `modified` (`modified`), 72 | KEY `created` (`created`), 73 | FULLTEXT KEY `description` (`description`) 74 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 75 | 76 | INSERT INTO `field_gallery` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1018', 'crocus-2107024_1280.jpg', '2', '', '2017-03-12 01:54:12', '2017-03-12 01:54:12'); 77 | INSERT INTO `field_gallery` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1018', 'mountain-landscape-2031539_1920.jpg', '1', '', '2017-03-12 01:54:12', '2017-03-12 01:54:12'); 78 | INSERT INTO `field_gallery` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1018', 'fruit-1534494_1280.jpg', '0', '', '2017-03-12 01:54:12', '2017-03-12 01:54:12'); 79 | 80 | DROP TABLE IF EXISTS `field_pass`; 81 | CREATE TABLE `field_pass` ( 82 | `pages_id` int(10) unsigned NOT NULL, 83 | `data` char(40) NOT NULL, 84 | `salt` char(32) NOT NULL, 85 | PRIMARY KEY (`pages_id`), 86 | KEY `data` (`data`) 87 | ) ENGINE=MyISAM DEFAULT CHARSET=ascii; 88 | 89 | DROP TABLE IF EXISTS `field_permissions`; 90 | CREATE TABLE `field_permissions` ( 91 | `pages_id` int(10) unsigned NOT NULL, 92 | `data` int(11) NOT NULL, 93 | `sort` int(10) unsigned NOT NULL, 94 | PRIMARY KEY (`pages_id`,`sort`), 95 | KEY `data` (`data`,`pages_id`,`sort`) 96 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 97 | 98 | DROP TABLE IF EXISTS `field_process`; 99 | CREATE TABLE `field_process` ( 100 | `pages_id` int(11) NOT NULL DEFAULT '0', 101 | `data` int(11) NOT NULL DEFAULT '0', 102 | PRIMARY KEY (`pages_id`), 103 | KEY `data` (`data`) 104 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 105 | 106 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('6', '17'); 107 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('3', '12'); 108 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('8', '12'); 109 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('9', '14'); 110 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('10', '7'); 111 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('11', '47'); 112 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('16', '48'); 113 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('300', '104'); 114 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('21', '50'); 115 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('29', '66'); 116 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('23', '10'); 117 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('304', '138'); 118 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('31', '136'); 119 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('22', '76'); 120 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('30', '68'); 121 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('303', '129'); 122 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('2', '87'); 123 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('302', '121'); 124 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('301', '109'); 125 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('28', '76'); 126 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('1007', '150'); 127 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('1010', '159'); 128 | INSERT INTO `field_process` (`pages_id`, `data`) VALUES('1012', '160'); 129 | 130 | DROP TABLE IF EXISTS `field_roles`; 131 | CREATE TABLE `field_roles` ( 132 | `pages_id` int(10) unsigned NOT NULL, 133 | `data` int(11) NOT NULL, 134 | `sort` int(10) unsigned NOT NULL, 135 | PRIMARY KEY (`pages_id`,`sort`), 136 | KEY `data` (`data`,`pages_id`,`sort`) 137 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 138 | 139 | DROP TABLE IF EXISTS `field_summary`; 140 | CREATE TABLE `field_summary` ( 141 | `pages_id` int(10) unsigned NOT NULL, 142 | `data` mediumtext NOT NULL, 143 | PRIMARY KEY (`pages_id`), 144 | KEY `data_exact` (`data`(250)), 145 | FULLTEXT KEY `data` (`data`) 146 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 147 | 148 | INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1018', 'Description seo page1'); 149 | INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1025', 'Description seo page2'); 150 | INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1027', 'Description seo page3'); 151 | 152 | DROP TABLE IF EXISTS `field_title`; 153 | CREATE TABLE `field_title` ( 154 | `pages_id` int(10) unsigned NOT NULL, 155 | `data` text NOT NULL, 156 | PRIMARY KEY (`pages_id`), 157 | KEY `data_exact` (`data`(255)), 158 | FULLTEXT KEY `data` (`data`) 159 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 160 | 161 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('11', 'Templates'); 162 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('16', 'Fields'); 163 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('22', 'Setup'); 164 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('3', 'Pages'); 165 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('6', 'Add Page'); 166 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('8', 'Tree'); 167 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('9', 'Save Sort'); 168 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('10', 'Edit'); 169 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('21', 'Modules'); 170 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('29', 'Users'); 171 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('30', 'Roles'); 172 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('2', 'Admin'); 173 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('7', 'Trash'); 174 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('27', '404 Not Found'); 175 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('302', 'Insert Link'); 176 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('23', 'Login'); 177 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('304', 'Profile'); 178 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('301', 'Empty Trash'); 179 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('300', 'Search'); 180 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('303', 'Insert Image'); 181 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('28', 'Access'); 182 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('31', 'Permissions'); 183 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('32', 'Edit pages'); 184 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('34', 'Delete pages'); 185 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('35', 'Move pages (change parent)'); 186 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('36', 'View pages'); 187 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('50', 'Sort child pages'); 188 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('51', 'Change templates on pages'); 189 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('52', 'Administer users'); 190 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('53', 'User can update profile/password'); 191 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('54', 'Lock or unlock a page'); 192 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1', 'Home'); 193 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1006', 'Use Page Lister'); 194 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1007', 'Find'); 195 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1010', 'Recent'); 196 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1011', 'Can see recently edited pages'); 197 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1012', 'Logs'); 198 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1013', 'Can view system logs'); 199 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1014', 'Can manage system logs'); 200 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1015', 'api'); 201 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1016', 'nav'); 202 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1017', 'pages'); 203 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1018', 'Page1'); 204 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1019', 'Repeaters'); 205 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1020', 'faq_list'); 206 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1021', 'page1'); 207 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1022', 'What bubu?'); 208 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1023', 'What dudu?'); 209 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1024', 'What cucu?'); 210 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1025', 'Page2'); 211 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1026', 'page2'); 212 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1027', 'Page3'); 213 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1028', 'page3'); 214 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1029', 'SubPage1'); 215 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1030', 'subpage1'); 216 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1031', 'SubPage2'); 217 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1032', 'subpage2'); 218 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1033', 'SubPage3'); 219 | INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1034', 'subpage3'); 220 | 221 | DROP TABLE IF EXISTS `fieldgroups`; 222 | CREATE TABLE `fieldgroups` ( 223 | `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 224 | `name` varchar(250) CHARACTER SET ascii NOT NULL, 225 | PRIMARY KEY (`id`), 226 | UNIQUE KEY `name` (`name`) 227 | ) ENGINE=MyISAM AUTO_INCREMENT=102 DEFAULT CHARSET=utf8; 228 | 229 | INSERT INTO `fieldgroups` (`id`, `name`) VALUES('2', 'admin'); 230 | INSERT INTO `fieldgroups` (`id`, `name`) VALUES('3', 'user'); 231 | INSERT INTO `fieldgroups` (`id`, `name`) VALUES('4', 'role'); 232 | INSERT INTO `fieldgroups` (`id`, `name`) VALUES('5', 'permission'); 233 | INSERT INTO `fieldgroups` (`id`, `name`) VALUES('1', 'home'); 234 | INSERT INTO `fieldgroups` (`id`, `name`) VALUES('98', 'api'); 235 | INSERT INTO `fieldgroups` (`id`, `name`) VALUES('97', 'default'); 236 | INSERT INTO `fieldgroups` (`id`, `name`) VALUES('99', 'pages'); 237 | INSERT INTO `fieldgroups` (`id`, `name`) VALUES('100', 'nav'); 238 | INSERT INTO `fieldgroups` (`id`, `name`) VALUES('101', 'repeater_faq_list'); 239 | 240 | DROP TABLE IF EXISTS `fieldgroups_fields`; 241 | CREATE TABLE `fieldgroups_fields` ( 242 | `fieldgroups_id` int(10) unsigned NOT NULL DEFAULT '0', 243 | `fields_id` int(10) unsigned NOT NULL DEFAULT '0', 244 | `sort` int(11) unsigned NOT NULL DEFAULT '0', 245 | `data` text, 246 | PRIMARY KEY (`fieldgroups_id`,`fields_id`) 247 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 248 | 249 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('2', '2', '1', NULL); 250 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('3', '4', '2', NULL); 251 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('4', '5', '0', NULL); 252 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('5', '1', '0', NULL); 253 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('3', '3', '0', NULL); 254 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('98', '1', '0', NULL); 255 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '1', '0', NULL); 256 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('97', '97', '2', NULL); 257 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('99', '1', '0', NULL); 258 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('100', '1', '0', NULL); 259 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('2', '1', '0', NULL); 260 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('97', '100', '1', NULL); 261 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '100', '1', NULL); 262 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('101', '97', '1', NULL); 263 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('97', '1', '0', NULL); 264 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('101', '1', '0', NULL); 265 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('3', '92', '1', NULL); 266 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('97', '98', '3', NULL); 267 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('97', '99', '4', NULL); 268 | INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '97', '2', NULL); 269 | 270 | DROP TABLE IF EXISTS `fields`; 271 | CREATE TABLE `fields` ( 272 | `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 273 | `type` varchar(128) CHARACTER SET ascii NOT NULL, 274 | `name` varchar(250) CHARACTER SET ascii NOT NULL, 275 | `flags` int(11) NOT NULL DEFAULT '0', 276 | `label` varchar(250) NOT NULL DEFAULT '', 277 | `data` text NOT NULL, 278 | PRIMARY KEY (`id`), 279 | UNIQUE KEY `name` (`name`), 280 | KEY `type` (`type`) 281 | ) ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=utf8; 282 | 283 | INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('1', 'FieldtypePageTitle', 'title', '13', 'Title', '{\"required\":1,\"textformatters\":[\"TextformatterEntities\"],\"size\":0,\"maxlength\":255}'); 284 | INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('2', 'FieldtypeModule', 'process', '25', 'Process', '{\"description\":\"The process that is executed on this page. Since this is mostly used by ProcessWire internally, it is recommended that you don\'t change the value of this unless adding your own pages in the admin.\",\"collapsed\":1,\"required\":1,\"moduleTypes\":[\"Process\"],\"permanent\":1}'); 285 | INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('3', 'FieldtypePassword', 'pass', '24', 'Set Password', '{\"collapsed\":1,\"size\":50,\"maxlength\":128}'); 286 | INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('5', 'FieldtypePage', 'permissions', '24', 'Permissions', '{\"derefAsPage\":0,\"parent_id\":31,\"labelFieldName\":\"title\",\"inputfield\":\"InputfieldCheckboxes\"}'); 287 | INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('4', 'FieldtypePage', 'roles', '24', 'Roles', '{\"derefAsPage\":0,\"parent_id\":30,\"labelFieldName\":\"name\",\"inputfield\":\"InputfieldCheckboxes\",\"description\":\"User will inherit the permissions assigned to each role. You may assign multiple roles to a user. When accessing a page, the user will only inherit permissions from the roles that are also assigned to the page\'s template.\"}'); 288 | INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('92', 'FieldtypeEmail', 'email', '9', 'E-Mail Address', '{\"size\":70,\"maxlength\":255}'); 289 | INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('97', 'FieldtypeTextarea', 'content', '0', 'Content', '{\"inputfieldClass\":\"InputfieldCKEditor\",\"contentType\":0,\"collapsed\":0,\"minlength\":0,\"maxlength\":0,\"showCount\":0,\"rows\":5,\"toolbar\":\"Format, Styles, -, Bold, Italic, -, RemoveFormat\\nNumberedList, BulletedList, -, Blockquote\\nPWLink, Unlink, Anchor\\nPWImage, Table, HorizontalRule, SpecialChar\\nPasteText, PasteFromWord\\nScayt, -, Sourcedialog\",\"inlineMode\":0,\"useACF\":1,\"usePurifier\":1,\"formatTags\":\"p;h1;h2;h3;h4;h5;h6;pre;address\",\"extraPlugins\":[\"pwimage\",\"pwlink\",\"sourcedialog\"],\"removePlugins\":\"image,magicline\"}'); 290 | INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('98', 'FieldtypeImage', 'gallery', '0', 'Gallery', '{\"extensions\":\"gif jpg jpeg png\",\"maxFiles\":0,\"outputFormat\":1,\"defaultValuePage\":0,\"inputfieldClass\":\"InputfieldImage\",\"descriptionRows\":1,\"gridMode\":\"grid\",\"maxReject\":0,\"dimensionsByAspectRatio\":0,\"fileSchema\":2}'); 291 | INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('99', 'FieldtypeRepeater', 'faq_list', '0', 'FAQ', '{\"template_id\":47,\"parent_id\":1020,\"repeaterFields\":[1,97],\"repeaterCollapse\":0,\"repeaterLoading\":1,\"collapsed\":0}'); 292 | INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('100', 'FieldtypeTextarea', 'summary', '0', 'Summary', '{\"textformatters\":[\"TextformatterEntities\"],\"inputfieldClass\":\"InputfieldTextarea\",\"contentType\":0,\"collapsed\":2,\"minlength\":0,\"maxlength\":0,\"showCount\":0,\"rows\":5}'); 293 | 294 | DROP TABLE IF EXISTS `modules`; 295 | CREATE TABLE `modules` ( 296 | `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 297 | `class` varchar(128) CHARACTER SET ascii NOT NULL, 298 | `flags` int(11) NOT NULL DEFAULT '0', 299 | `data` text NOT NULL, 300 | `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 301 | PRIMARY KEY (`id`), 302 | UNIQUE KEY `class` (`class`) 303 | ) ENGINE=MyISAM AUTO_INCREMENT=166 DEFAULT CHARSET=utf8; 304 | 305 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('1', 'FieldtypeTextarea', '0', '', '2017-03-12 00:18:33'); 306 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('2', 'FieldtypeNumber', '0', '', '2017-03-12 00:18:33'); 307 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('3', 'FieldtypeText', '0', '', '2017-03-12 00:18:33'); 308 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('4', 'FieldtypePage', '0', '', '2017-03-12 00:18:33'); 309 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('30', 'InputfieldForm', '0', '', '2017-03-12 00:18:33'); 310 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('6', 'FieldtypeFile', '0', '', '2017-03-12 00:18:33'); 311 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('7', 'ProcessPageEdit', '1', '', '2017-03-12 00:18:33'); 312 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('10', 'ProcessLogin', '0', '', '2017-03-12 00:18:33'); 313 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('12', 'ProcessPageList', '0', '{\"pageLabelField\":\"title\",\"paginationLimit\":25,\"limit\":50}', '2017-03-12 00:18:33'); 314 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('121', 'ProcessPageEditLink', '1', '', '2017-03-12 00:18:33'); 315 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('14', 'ProcessPageSort', '0', '', '2017-03-12 00:18:33'); 316 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('15', 'InputfieldPageListSelect', '0', '', '2017-03-12 00:18:33'); 317 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('117', 'JqueryUI', '1', '', '2017-03-12 00:18:33'); 318 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('17', 'ProcessPageAdd', '0', '', '2017-03-12 00:18:33'); 319 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('125', 'SessionLoginThrottle', '11', '', '2017-03-12 00:18:33'); 320 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('122', 'InputfieldPassword', '0', '', '2017-03-12 00:18:33'); 321 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('25', 'InputfieldAsmSelect', '0', '', '2017-03-12 00:18:33'); 322 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('116', 'JqueryCore', '1', '', '2017-03-12 00:18:33'); 323 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('27', 'FieldtypeModule', '0', '', '2017-03-12 00:18:33'); 324 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('28', 'FieldtypeDatetime', '0', '', '2017-03-12 00:18:33'); 325 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('29', 'FieldtypeEmail', '0', '', '2017-03-12 00:18:33'); 326 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('108', 'InputfieldURL', '0', '', '2017-03-12 00:18:33'); 327 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('32', 'InputfieldSubmit', '0', '', '2017-03-12 00:18:33'); 328 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('33', 'InputfieldWrapper', '0', '', '2017-03-12 00:18:33'); 329 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('34', 'InputfieldText', '0', '', '2017-03-12 00:18:33'); 330 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('35', 'InputfieldTextarea', '0', '', '2017-03-12 00:18:33'); 331 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('36', 'InputfieldSelect', '0', '', '2017-03-12 00:18:33'); 332 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('37', 'InputfieldCheckbox', '0', '', '2017-03-12 00:18:33'); 333 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('38', 'InputfieldCheckboxes', '0', '', '2017-03-12 00:18:33'); 334 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('39', 'InputfieldRadios', '0', '', '2017-03-12 00:18:33'); 335 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('40', 'InputfieldHidden', '0', '', '2017-03-12 00:18:33'); 336 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('41', 'InputfieldName', '0', '', '2017-03-12 00:18:33'); 337 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('43', 'InputfieldSelectMultiple', '0', '', '2017-03-12 00:18:33'); 338 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('45', 'JqueryWireTabs', '0', '', '2017-03-12 00:18:33'); 339 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('46', 'ProcessPage', '0', '', '2017-03-12 00:18:33'); 340 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('47', 'ProcessTemplate', '0', '', '2017-03-12 00:18:33'); 341 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('48', 'ProcessField', '32', '', '2017-03-12 00:18:33'); 342 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('50', 'ProcessModule', '0', '', '2017-03-12 00:18:33'); 343 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('114', 'PagePermissions', '3', '', '2017-03-12 00:18:33'); 344 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('97', 'FieldtypeCheckbox', '1', '', '2017-03-12 00:18:33'); 345 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('115', 'PageRender', '3', '{\"clearCache\":1}', '2017-03-12 00:18:33'); 346 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('55', 'InputfieldFile', '0', '', '2017-03-12 00:18:33'); 347 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('56', 'InputfieldImage', '0', '', '2017-03-12 00:18:33'); 348 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('57', 'FieldtypeImage', '0', '', '2017-03-12 00:18:33'); 349 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('60', 'InputfieldPage', '0', '{\"inputfieldClasses\":[\"InputfieldSelect\",\"InputfieldSelectMultiple\",\"InputfieldCheckboxes\",\"InputfieldRadios\",\"InputfieldAsmSelect\",\"InputfieldPageListSelect\",\"InputfieldPageListSelectMultiple\",\"InputfieldPageAutocomplete\"]}', '2017-03-12 00:18:33'); 350 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('61', 'TextformatterEntities', '0', '', '2017-03-12 00:18:33'); 351 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('66', 'ProcessUser', '0', '{\"showFields\":[\"name\",\"email\",\"roles\"]}', '2017-03-12 00:18:33'); 352 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('67', 'MarkupAdminDataTable', '0', '', '2017-03-12 00:18:33'); 353 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('68', 'ProcessRole', '0', '{\"showFields\":[\"name\"]}', '2017-03-12 00:18:33'); 354 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('76', 'ProcessList', '0', '', '2017-03-12 00:18:33'); 355 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('78', 'InputfieldFieldset', '0', '', '2017-03-12 00:18:33'); 356 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('79', 'InputfieldMarkup', '0', '', '2017-03-12 00:18:33'); 357 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('80', 'InputfieldEmail', '0', '', '2017-03-12 00:18:33'); 358 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('89', 'FieldtypeFloat', '1', '', '2017-03-12 00:18:33'); 359 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('83', 'ProcessPageView', '0', '', '2017-03-12 00:18:33'); 360 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('84', 'FieldtypeInteger', '0', '', '2017-03-12 00:18:33'); 361 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('85', 'InputfieldInteger', '0', '', '2017-03-12 00:18:33'); 362 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('86', 'InputfieldPageName', '0', '', '2017-03-12 00:18:33'); 363 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('87', 'ProcessHome', '0', '', '2017-03-12 00:18:33'); 364 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('90', 'InputfieldFloat', '0', '', '2017-03-12 00:18:33'); 365 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('94', 'InputfieldDatetime', '0', '', '2017-03-12 00:18:33'); 366 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('98', 'MarkupPagerNav', '0', '', '2017-03-12 00:18:33'); 367 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('129', 'ProcessPageEditImageSelect', '1', '', '2017-03-12 00:18:33'); 368 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('103', 'JqueryTableSorter', '1', '', '2017-03-12 00:18:33'); 369 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('104', 'ProcessPageSearch', '1', '{\"searchFields\":\"title\",\"displayField\":\"title path\"}', '2017-03-12 00:18:33'); 370 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('105', 'FieldtypeFieldsetOpen', '1', '', '2017-03-12 00:18:33'); 371 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('106', 'FieldtypeFieldsetClose', '1', '', '2017-03-12 00:18:33'); 372 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('107', 'FieldtypeFieldsetTabOpen', '1', '', '2017-03-12 00:18:33'); 373 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('109', 'ProcessPageTrash', '1', '', '2017-03-12 00:18:33'); 374 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('111', 'FieldtypePageTitle', '1', '', '2017-03-12 00:18:33'); 375 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('112', 'InputfieldPageTitle', '0', '', '2017-03-12 00:18:33'); 376 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('113', 'MarkupPageArray', '3', '', '2017-03-12 00:18:33'); 377 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('131', 'InputfieldButton', '0', '', '2017-03-12 00:18:33'); 378 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('133', 'FieldtypePassword', '1', '', '2017-03-12 00:18:33'); 379 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('134', 'ProcessPageType', '33', '{\"showFields\":[]}', '2017-03-12 00:18:33'); 380 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('135', 'FieldtypeURL', '1', '', '2017-03-12 00:18:33'); 381 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('136', 'ProcessPermission', '1', '{\"showFields\":[\"name\",\"title\"]}', '2017-03-12 00:18:33'); 382 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('137', 'InputfieldPageListSelectMultiple', '0', '', '2017-03-12 00:18:33'); 383 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('138', 'ProcessProfile', '1', '{\"profileFields\":[\"pass\",\"email\"]}', '2017-03-12 00:18:33'); 384 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('139', 'SystemUpdater', '1', '{\"systemVersion\":15,\"coreVersion\":\"3.0.42\"}', '2017-03-12 00:18:33'); 385 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('148', 'AdminThemeDefault', '10', '{\"colors\":\"classic\"}', '2017-03-12 00:18:33'); 386 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('149', 'InputfieldSelector', '42', '', '2017-03-12 00:18:33'); 387 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('150', 'ProcessPageLister', '32', '', '2017-03-12 00:18:33'); 388 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('151', 'JqueryMagnific', '1', '', '2017-03-12 00:18:33'); 389 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('155', 'InputfieldCKEditor', '0', '', '2017-03-12 00:18:33'); 390 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('156', 'MarkupHTMLPurifier', '0', '', '2017-03-12 00:18:33'); 391 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('159', 'ProcessRecentPages', '1', '', '2017-03-12 00:19:08'); 392 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('160', 'ProcessLogger', '1', '', '2017-03-12 00:19:32'); 393 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('161', 'InputfieldIcon', '0', '', '2017-03-12 00:19:32'); 394 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('162', 'FieldtypeRepeater', '35', '{\"repeatersRootPageID\":1019}', '2017-03-12 00:49:06'); 395 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('163', 'InputfieldRepeater', '0', '', '2017-03-12 00:49:06'); 396 | INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('164', 'InputfieldPageAutocomplete', '0', '', '2017-03-12 00:50:54'); 397 | 398 | DROP TABLE IF EXISTS `pages`; 399 | CREATE TABLE `pages` ( 400 | `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 401 | `parent_id` int(11) unsigned NOT NULL DEFAULT '0', 402 | `templates_id` int(11) unsigned NOT NULL DEFAULT '0', 403 | `name` varchar(128) CHARACTER SET ascii NOT NULL, 404 | `status` int(10) unsigned NOT NULL DEFAULT '1', 405 | `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 406 | `modified_users_id` int(10) unsigned NOT NULL DEFAULT '2', 407 | `created` timestamp NOT NULL DEFAULT '2015-12-18 06:09:00', 408 | `created_users_id` int(10) unsigned NOT NULL DEFAULT '2', 409 | `published` datetime DEFAULT NULL, 410 | `sort` int(11) NOT NULL DEFAULT '0', 411 | PRIMARY KEY (`id`), 412 | UNIQUE KEY `name_parent_id` (`name`,`parent_id`), 413 | KEY `parent_id` (`parent_id`), 414 | KEY `templates_id` (`templates_id`), 415 | KEY `modified` (`modified`), 416 | KEY `created` (`created`), 417 | KEY `status` (`status`), 418 | KEY `published` (`published`) 419 | ) ENGINE=MyISAM AUTO_INCREMENT=1036 DEFAULT CHARSET=utf8; 420 | 421 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1', '0', '1', 'home', '9', '2017-03-12 02:47:15', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '0'); 422 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('2', '1', '2', 'processwire', '1035', '2017-03-12 00:19:09', '40', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '8'); 423 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('3', '2', '2', 'page', '21', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '0'); 424 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('6', '3', '2', 'add', '21', '2017-03-12 00:19:41', '40', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '0'); 425 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('7', '1', '2', 'trash', '1039', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '9'); 426 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('8', '3', '2', 'list', '1045', '2017-03-12 00:19:43', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '1'); 427 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('9', '3', '2', 'sort', '1047', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '2'); 428 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('10', '3', '2', 'edit', '1045', '2017-03-12 00:19:43', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '3'); 429 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('11', '22', '2', 'template', '21', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '0'); 430 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('16', '22', '2', 'field', '21', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '2'); 431 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('21', '2', '2', 'module', '21', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '2'); 432 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('22', '2', '2', 'setup', '21', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '1'); 433 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('23', '2', '2', 'login', '1035', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '4'); 434 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('27', '1', '43', 'http404', '1035', '2017-03-12 00:39:55', '41', '2017-03-12 00:18:33', '3', '2017-03-12 00:18:33', '6'); 435 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('28', '2', '2', 'access', '13', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '3'); 436 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('29', '28', '2', 'users', '29', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '0'); 437 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('30', '28', '2', 'roles', '29', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '1'); 438 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('31', '28', '2', 'permissions', '29', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '2'); 439 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('32', '31', '5', 'page-edit', '25', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '2'); 440 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('34', '31', '5', 'page-delete', '25', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '3'); 441 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('35', '31', '5', 'page-move', '25', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '4'); 442 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('36', '31', '5', 'page-view', '25', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '0'); 443 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('37', '30', '4', 'guest', '25', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '0'); 444 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('38', '30', '4', 'superuser', '25', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '1'); 445 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('41', '29', '3', 'admin', '1', '2017-03-12 00:19:09', '40', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '0'); 446 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('40', '29', '3', 'guest', '25', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '1'); 447 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('50', '31', '5', 'page-sort', '25', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '5'); 448 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('51', '31', '5', 'page-template', '25', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '6'); 449 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('52', '31', '5', 'user-admin', '25', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '10'); 450 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('53', '31', '5', 'profile-edit', '1', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '13'); 451 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('54', '31', '5', 'page-lock', '1', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '8'); 452 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('300', '3', '2', 'search', '1045', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '5'); 453 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('301', '3', '2', 'trash', '1047', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '5'); 454 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('302', '3', '2', 'link', '1041', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '6'); 455 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('303', '3', '2', 'image', '1041', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '2', '2017-03-12 00:18:33', '7'); 456 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('304', '2', '2', 'profile', '1025', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '41', '2017-03-12 00:18:33', '5'); 457 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1006', '31', '5', 'page-lister', '1', '2017-03-12 00:18:33', '40', '2017-03-12 00:18:33', '40', '2017-03-12 00:18:33', '9'); 458 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1007', '3', '2', 'lister', '1', '2017-03-12 00:18:33', '40', '2017-03-12 00:18:33', '40', '2017-03-12 00:18:33', '8'); 459 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1010', '3', '2', 'recent-pages', '1', '2017-03-12 00:19:08', '40', '2017-03-12 00:19:08', '40', '2017-03-12 00:19:08', '9'); 460 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1011', '31', '5', 'page-edit-recent', '1', '2017-03-12 00:19:08', '40', '2017-03-12 00:19:08', '40', '2017-03-12 00:19:08', '10'); 461 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1012', '22', '2', 'logs', '1', '2017-03-12 00:19:32', '40', '2017-03-12 00:19:32', '40', '2017-03-12 00:19:32', '2'); 462 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1013', '31', '5', 'logs-view', '1', '2017-03-12 00:19:32', '40', '2017-03-12 00:19:32', '40', '2017-03-12 00:19:32', '11'); 463 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1014', '31', '5', 'logs-edit', '1', '2017-03-12 00:19:32', '40', '2017-03-12 00:19:32', '40', '2017-03-12 00:19:32', '12'); 464 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1015', '1', '44', 'api', '1025', '2017-03-12 02:47:15', '41', '2017-03-12 00:41:57', '41', '2017-03-12 00:41:57', '7'); 465 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1016', '1015', '46', 'nav', '1', '2017-03-12 00:44:46', '41', '2017-03-12 00:44:46', '41', '2017-03-12 00:44:46', '0'); 466 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1017', '1015', '45', 'pages', '1', '2017-03-12 00:45:03', '41', '2017-03-12 00:45:03', '41', '2017-03-12 00:45:03', '1'); 467 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1018', '1', '43', 'page1', '1', '2017-03-12 02:49:39', '41', '2017-03-12 00:46:26', '41', '2017-03-12 00:46:26', '3'); 468 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1019', '2', '2', 'repeaters', '1036', '2017-03-12 00:49:06', '41', '2017-03-12 00:49:06', '41', '2017-03-12 00:49:06', '6'); 469 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1020', '1019', '2', 'for-field-99', '17', '2017-03-12 00:49:30', '41', '2017-03-12 00:49:30', '41', '2017-03-12 00:49:30', '0'); 470 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1021', '1020', '2', 'for-page-1018', '17', '2017-03-12 00:51:16', '41', '2017-03-12 00:51:16', '41', '2017-03-12 00:51:16', '0'); 471 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1022', '1021', '47', '1489280017-2805-1', '1', '2017-03-12 00:54:28', '41', '2017-03-12 00:53:37', '41', '2017-03-12 00:54:12', '0'); 472 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1023', '1021', '47', '1489280037-9457-1', '1', '2017-03-12 00:54:28', '41', '2017-03-12 00:53:57', '41', '2017-03-12 00:54:12', '1'); 473 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1024', '1021', '47', '1489280045-0155-1', '1', '2017-03-12 00:54:28', '41', '2017-03-12 00:54:05', '41', '2017-03-12 00:54:12', '2'); 474 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1025', '1', '43', 'page2', '1', '2017-03-12 02:49:54', '41', '2017-03-12 00:54:40', '41', '2017-03-12 00:54:50', '4'); 475 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1026', '1020', '2', 'for-page-1025', '17', '2017-03-12 00:54:40', '41', '2017-03-12 00:54:40', '41', '2017-03-12 00:54:40', '1'); 476 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1027', '1', '43', 'page3', '1', '2017-03-12 02:50:10', '41', '2017-03-12 00:55:02', '41', '2017-03-12 00:55:08', '5'); 477 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1028', '1020', '2', 'for-page-1027', '17', '2017-03-12 00:55:02', '41', '2017-03-12 00:55:02', '41', '2017-03-12 00:55:02', '2'); 478 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1029', '1025', '43', 'subpage1', '1', '2017-03-12 13:19:31', '41', '2017-03-12 13:19:20', '41', '2017-03-12 13:19:27', '0'); 479 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1030', '1020', '2', 'for-page-1029', '17', '2017-03-12 13:19:20', '41', '2017-03-12 13:19:20', '41', '2017-03-12 13:19:20', '3'); 480 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1031', '1025', '43', 'subpage2', '1', '2017-03-12 13:19:54', '41', '2017-03-12 13:19:36', '41', '2017-03-12 13:19:44', '1'); 481 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1032', '1020', '2', 'for-page-1031', '17', '2017-03-12 13:19:36', '41', '2017-03-12 13:19:36', '41', '2017-03-12 13:19:36', '4'); 482 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1033', '1025', '43', 'subpage3', '1', '2017-03-12 13:20:02', '41', '2017-03-12 13:19:58', '41', '2017-03-12 13:20:02', '2'); 483 | INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `published`, `sort`) VALUES('1034', '1020', '2', 'for-page-1033', '17', '2017-03-12 13:19:58', '41', '2017-03-12 13:19:58', '41', '2017-03-12 13:19:58', '5'); 484 | 485 | DROP TABLE IF EXISTS `pages_access`; 486 | CREATE TABLE `pages_access` ( 487 | `pages_id` int(11) NOT NULL, 488 | `templates_id` int(11) NOT NULL, 489 | `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 490 | PRIMARY KEY (`pages_id`), 491 | KEY `templates_id` (`templates_id`) 492 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 493 | 494 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('37', '2', '2017-03-12 00:18:33'); 495 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('38', '2', '2017-03-12 00:18:33'); 496 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('32', '2', '2017-03-12 00:18:33'); 497 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('34', '2', '2017-03-12 00:18:33'); 498 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('35', '2', '2017-03-12 00:18:33'); 499 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('36', '2', '2017-03-12 00:18:33'); 500 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('50', '2', '2017-03-12 00:18:33'); 501 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('51', '2', '2017-03-12 00:18:33'); 502 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('52', '2', '2017-03-12 00:18:33'); 503 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('53', '2', '2017-03-12 00:18:33'); 504 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('54', '2', '2017-03-12 00:18:33'); 505 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1006', '2', '2017-03-12 00:18:33'); 506 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1011', '2', '2017-03-12 00:19:08'); 507 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1013', '2', '2017-03-12 00:19:32'); 508 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1014', '2', '2017-03-12 00:19:32'); 509 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('27', '1', '2017-03-12 00:39:55'); 510 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1015', '1', '2017-03-12 00:41:57'); 511 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1016', '1', '2017-03-12 00:44:46'); 512 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1017', '1', '2017-03-12 00:45:03'); 513 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1018', '1', '2017-03-12 00:46:26'); 514 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1022', '2', '2017-03-12 00:53:37'); 515 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1023', '2', '2017-03-12 00:53:57'); 516 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1024', '2', '2017-03-12 00:54:05'); 517 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1025', '1', '2017-03-12 00:54:40'); 518 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1027', '1', '2017-03-12 00:55:02'); 519 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1029', '1', '2017-03-12 13:19:20'); 520 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1031', '1', '2017-03-12 13:19:36'); 521 | INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1033', '1', '2017-03-12 13:19:58'); 522 | 523 | DROP TABLE IF EXISTS `pages_parents`; 524 | CREATE TABLE `pages_parents` ( 525 | `pages_id` int(10) unsigned NOT NULL, 526 | `parents_id` int(10) unsigned NOT NULL, 527 | PRIMARY KEY (`pages_id`,`parents_id`) 528 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 529 | 530 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('2', '1'); 531 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('3', '1'); 532 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('3', '2'); 533 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('7', '1'); 534 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('22', '1'); 535 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('22', '2'); 536 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('28', '1'); 537 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('28', '2'); 538 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('29', '1'); 539 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('29', '2'); 540 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('29', '28'); 541 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('30', '1'); 542 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('30', '2'); 543 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('30', '28'); 544 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('31', '1'); 545 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('31', '2'); 546 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('31', '28'); 547 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1019', '2'); 548 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1020', '2'); 549 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1020', '1019'); 550 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1021', '2'); 551 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1021', '1019'); 552 | INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1021', '1020'); 553 | 554 | DROP TABLE IF EXISTS `pages_sortfields`; 555 | CREATE TABLE `pages_sortfields` ( 556 | `pages_id` int(10) unsigned NOT NULL DEFAULT '0', 557 | `sortfield` varchar(20) NOT NULL DEFAULT '', 558 | PRIMARY KEY (`pages_id`) 559 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 560 | 561 | 562 | DROP TABLE IF EXISTS `session_login_throttle`; 563 | CREATE TABLE `session_login_throttle` ( 564 | `name` varchar(128) NOT NULL, 565 | `attempts` int(10) unsigned NOT NULL DEFAULT '0', 566 | `last_attempt` int(10) unsigned NOT NULL, 567 | PRIMARY KEY (`name`) 568 | ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 569 | 570 | DROP TABLE IF EXISTS `templates`; 571 | CREATE TABLE `templates` ( 572 | `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 573 | `name` varchar(250) CHARACTER SET ascii NOT NULL, 574 | `fieldgroups_id` int(10) unsigned NOT NULL DEFAULT '0', 575 | `flags` int(11) NOT NULL DEFAULT '0', 576 | `cache_time` mediumint(9) NOT NULL DEFAULT '0', 577 | `data` text NOT NULL, 578 | PRIMARY KEY (`id`), 579 | UNIQUE KEY `name` (`name`), 580 | KEY `fieldgroups_id` (`fieldgroups_id`) 581 | ) ENGINE=MyISAM AUTO_INCREMENT=48 DEFAULT CHARSET=utf8; 582 | 583 | INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('2', 'admin', '2', '8', '0', '{\"useRoles\":1,\"parentTemplates\":[2],\"allowPageNum\":1,\"redirectLogin\":23,\"slashUrls\":1,\"noGlobal\":1,\"compile\":3,\"modified\":1480103882,\"ns\":\"ProcessWire\"}'); 584 | INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('3', 'user', '3', '8', '0', '{\"useRoles\":1,\"noChildren\":1,\"parentTemplates\":[2],\"slashUrls\":1,\"pageClass\":\"User\",\"noGlobal\":1,\"noMove\":1,\"noTrash\":1,\"noSettings\":1,\"noChangeTemplate\":1,\"nameContentTab\":1}'); 585 | INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('4', 'role', '4', '8', '0', '{\"noChildren\":1,\"parentTemplates\":[2],\"slashUrls\":1,\"pageClass\":\"Role\",\"noGlobal\":1,\"noMove\":1,\"noTrash\":1,\"noSettings\":1,\"noChangeTemplate\":1,\"nameContentTab\":1}'); 586 | INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('5', 'permission', '5', '8', '0', '{\"noChildren\":1,\"parentTemplates\":[2],\"slashUrls\":1,\"guestSearchable\":1,\"pageClass\":\"Permission\",\"noGlobal\":1,\"noMove\":1,\"noTrash\":1,\"noSettings\":1,\"noChangeTemplate\":1,\"nameContentTab\":1}'); 587 | INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('1', 'home', '1', '0', '0', '{\"useRoles\":1,\"noParents\":1,\"urlSegments\":1,\"slashUrls\":1,\"compile\":3,\"modified\":1489327680,\"ns\":\"\\\\\",\"roles\":[37]}'); 588 | INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('44', 'api', '98', '0', '0', '{\"noParents\":-1,\"slashUrls\":1,\"compile\":3,\"modified\":1489279397}'); 589 | INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('43', 'default', '97', '0', '0', '{\"slashUrls\":1,\"altFilename\":\"home\",\"compile\":3,\"modified\":1489327680,\"ns\":\"\\\\\"}'); 590 | INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('45', 'pages', '99', '0', '0', '{\"urlSegments\":1,\"slashUrls\":1,\"compile\":3,\"modified\":1489282025,\"ns\":\"\\\\\"}'); 591 | INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('46', 'nav', '100', '0', '0', '{\"urlSegments\":1,\"slashUrls\":1,\"compile\":3,\"modified\":1489279473,\"ns\":\"\\\\\"}'); 592 | INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('47', 'repeater_faq_list', '101', '8', '0', '{\"noChildren\":1,\"noParents\":1,\"slashUrls\":1,\"noGlobal\":1,\"compile\":3,\"modified\":1489279770}'); 593 | 594 | UPDATE pages SET created_users_id=41, modified_users_id=41, created=NOW(), modified=NOW(); 595 | 596 | # --- /WireDatabaseBackup {"numTables":15,"numCreateTables":21,"numInserts":360,"numSeconds":0} -------------------------------------------------------------------------------- /site-processvue/install/screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/install/screenshot.jpg -------------------------------------------------------------------------------- /site-processvue/modules/Helloworld/Helloworld.module: -------------------------------------------------------------------------------- 1 | 'Hello World', 32 | 33 | // version number 34 | 'version' => 3, 35 | 36 | // summary is brief description of what this module is 37 | 'summary' => 'An example module used for demonstration purposes.', 38 | 39 | // Optional URL to more information about the module 40 | 'href' => 'https://processwire.com', 41 | 42 | // singular=true: indicates that only one instance of the module is allowed. 43 | // This is usually what you want for modules that attach hooks. 44 | 'singular' => true, 45 | 46 | // autoload=true: indicates the module should be started with ProcessWire. 47 | // This is necessary for any modules that attach runtime hooks, otherwise those 48 | // hooks won't get attached unless some other code calls the module on it's own. 49 | // Note that autoload modules are almost always also 'singular' (seen above). 50 | 'autoload' => true, 51 | 52 | // Optional font-awesome icon name, minus the 'fa-' part 53 | 'icon' => 'smile-o', 54 | ); 55 | } 56 | 57 | /** 58 | * Initialize the module 59 | * 60 | * ProcessWire calls this when the module is loaded. For 'autoload' modules, this will be called 61 | * when ProcessWire's API is ready. As a result, this is a good place to attach hooks. 62 | * 63 | */ 64 | public function init() { 65 | 66 | // add a hook after the $pages->save, to issue a notice every time a page is saved 67 | $this->pages->addHookAfter('save', $this, 'example1'); 68 | 69 | // add a hook after each page is rendered and modify the output 70 | $this->addHookAfter('Page::render', $this, 'example2'); 71 | 72 | // add a 'hello' method to every page that returns "Hello World" 73 | // use "echo $page->hello();" in your template file to display output 74 | $this->addHook('Page::hello', $this, 'example3'); 75 | 76 | // add a 'hello_world' property to every page that returns "Hello [user]" 77 | // use "echo $page->hello_world;" in your template file to display output 78 | $this->addHookProperty('Page::hello_world', $this, 'example4'); 79 | } 80 | 81 | /** 82 | * Example1 hooks into the pages->save method and displays a notice every time a page is saved 83 | * 84 | * @param HookEvent $event 85 | * 86 | */ 87 | public function example1($event) { 88 | /** @var Page $page */ 89 | $page = $event->arguments[0]; 90 | $this->message("Hello World! You saved {$page->path}."); 91 | } 92 | 93 | 94 | /** 95 | * Example2 hooks into every page after it's rendered and adds "Hello World" text at the bottom 96 | * 97 | * @param HookEvent $event 98 | * 99 | */ 100 | public function example2($event) { 101 | 102 | /** @var Page $page */ 103 | $page = $event->object; 104 | 105 | // don't add this to the admin pages 106 | if($page->template == 'admin') return; 107 | 108 | // add a "Hello World" paragraph right before the closing body tag 109 | $event->return = str_replace("", "

Hello World!

", $event->return); 110 | } 111 | 112 | /** 113 | * Example3 adds a 'hello' method (not property) to every page that simply returns "Hello World" 114 | * 115 | * @param HookEvent $event 116 | * 117 | */ 118 | public function example3($event) { 119 | $event->return = "Hello World"; 120 | } 121 | 122 | /** 123 | * Example 4 adds a 'hello_world' property (not method) to every page that returns "Hello [user]" 124 | * 125 | * @param HookEvent $event 126 | * 127 | */ 128 | public function example4($event) { 129 | $event->return = "Hello " . $this->user->name; 130 | } 131 | 132 | } 133 | -------------------------------------------------------------------------------- /site-processvue/modules/InputfieldCKEditor/README.txt: -------------------------------------------------------------------------------- 1 | This InputfieldCKEditor directory is here to provide optional extra configuration options 2 | and plugins to the CKEditor Inputfield module. 3 | 4 | 5 | plugins/ 6 | ======== 7 | Directory to place additional CKEditor plugins in. You can then activate them 8 | from your CKEditor field settings. 9 | 10 | 11 | contents.css 12 | ============ 13 | Example CSS file for the admin editor. To make CKEditor use this file, go to your CKEditor 14 | field settings and specify /site/modules/InputfieldCKEditor/contents.css as the regular 15 | mode Contents CSS file. 16 | 17 | 18 | contents-inline.css 19 | =================== 20 | Same as contents.css but for the inline mode editor. 21 | 22 | 23 | mystyles.js 24 | =========== 25 | Optional configuration for the CKEditor Styles option. To use this file, go to your 26 | CKEditor field settings and set the Custom Styles Set to be this file. 27 | 28 | 29 | config.js 30 | ========= 31 | Custom config file used by all CKEditor instances (except instances configured by their 32 | own custom config file, see below...) 33 | 34 | 35 | config-body.js 36 | ============== 37 | Example of field-specific custom config file. This one applies to a field named "body". 38 | Note that these config settings can also be specified directly in your CKEditor field 39 | settings in the admin, which many may prefer. 40 | 41 | -------------------------------------------------------------------------------- /site-processvue/modules/InputfieldCKEditor/config-body.js: -------------------------------------------------------------------------------- 1 | /** 2 | * CKEditor field-specific (body) custom config file for ProcessWire 3 | * 4 | * Use this file to specify additional config options to a field named "body". 5 | * This is here just for example purposes. If you wanted to create a config 6 | * specific to some other field, like "sidebar", you would create another file 7 | * exactly like this named: config-sidebar.js 8 | * 9 | * If you wanted to use the same config.js for all of your CKEditor fields, 10 | * you would remove this file and just use the config.js file instead. Meaning, 11 | * this file completely overrides config.js if the field being edited is named 12 | * "body". The regular config.js file is not loaded when this one is loaded. 13 | * 14 | */ 15 | 16 | /** 17 | * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. 18 | * For licensing, see LICENSE.html or http://ckeditor.com/license 19 | */ 20 | 21 | CKEDITOR.editorConfig = function( config ) { 22 | // Define changes to default configuration here. For example: 23 | // config.uiColor = '#AADC6E'; 24 | }; -------------------------------------------------------------------------------- /site-processvue/modules/InputfieldCKEditor/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * CKEditor custom config file for ProcessWire 3 | * 4 | * Use this file to specify additional config options to all CKEditor instances, 5 | * except those that have field-specific config files, i.e. config-body.js for 6 | * config specific to a field named "body". 7 | * 8 | */ 9 | 10 | /** 11 | * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. 12 | * For licensing, see LICENSE.html or http://ckeditor.com/license 13 | */ 14 | 15 | CKEDITOR.editorConfig = function( config ) { 16 | // Define changes to default configuration here. For example: 17 | // config.uiColor = '#AADC6E'; 18 | }; -------------------------------------------------------------------------------- /site-processvue/modules/InputfieldCKEditor/contents-inline.css: -------------------------------------------------------------------------------- 1 | /** 2 | * contents-inline.css 3 | * 4 | * CKEditor editor styles for inline mode editor 5 | * 6 | * See also: contents-inline.scss 7 | * 8 | * PLEASE NOTE: 9 | * 10 | * It's possible this file may be out of date since it is in /site/ rather than /wire/, 11 | * and the version of this file will reflect whatever version you had when you first 12 | * installed this copy of ProcessWire. 13 | * 14 | * If you intend to use this, you may first want to get the newest copy out of: 15 | * /wire/modules/Inputfield/InputfieldCKEditor/contents-inline.css 16 | * 17 | * Original file copyright (as included with CKEditor): 18 | * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. 19 | * For licensing, see LICENSE.html or http://ckeditor.com/license 20 | * 21 | */ 22 | 23 | .InputfieldForm .InputfieldCKEditorInline { 24 | font-family: Arial, sans-serif; 25 | } 26 | .InputfieldForm .InputfieldCKEditorInline p, 27 | .InputfieldForm .InputfieldCKEditorInline li, 28 | .InputfieldForm .InputfieldCKEditorInline dl, 29 | .InputfieldForm .InputfieldCKEditorInline td { 30 | font-size: 1em; 31 | color: #333333; 32 | background: white; 33 | } 34 | .InputfieldForm .InputfieldCKEditorInline a { 35 | color: #444444; 36 | background: none; 37 | text-decoration: underline; 38 | } 39 | .InputfieldForm .InputfieldCKEditorInline a:hover { 40 | color: #222222; 41 | background: #ffffdd; 42 | } 43 | .InputfieldForm .InputfieldCKEditorInline i, 44 | .InputfieldForm .InputfieldCKEditorInline em { 45 | font-style: italic; 46 | } 47 | .InputfieldForm .InputfieldCKEditorInline b, 48 | .InputfieldForm .InputfieldCKEditorInline strong { 49 | font-weight: bold; 50 | } 51 | .InputfieldForm .InputfieldCKEditorInline strong em, 52 | .InputfieldForm .InputfieldCKEditorInline em strong { 53 | font-weight: bold; 54 | font-style: italic; 55 | } 56 | .InputfieldForm .InputfieldCKEditorInline small { 57 | font-size: 0.875em; 58 | } 59 | .InputfieldForm .InputfieldCKEditorInline pre, 60 | .InputfieldForm .InputfieldCKEditorInline code { 61 | font-family: Menlo, Monaco, 'Andale Mono', 'Lucida Console', 'Courier New', monospace; 62 | } 63 | .InputfieldForm .InputfieldCKEditorInline code { 64 | display: inline; 65 | background: #fff2a8; 66 | } 67 | .InputfieldForm .InputfieldCKEditorInline ul li, 68 | .InputfieldForm .InputfieldCKEditorInline ol li { 69 | list-style: disc; 70 | display: list-item; 71 | margin: 0 0 0 2em; 72 | } 73 | .InputfieldForm .InputfieldCKEditorInline ol li { 74 | list-style: decimal; 75 | } 76 | .InputfieldForm .InputfieldCKEditorInline blockquote { 77 | padding-left: 1em; 78 | border-left: 3px solid #ccc; 79 | } 80 | .InputfieldForm .InputfieldCKEditorInline h1, 81 | .InputfieldForm .InputfieldCKEditorInline h2, 82 | .InputfieldForm .InputfieldCKEditorInline h3, 83 | .InputfieldForm .InputfieldCKEditorInline h4, 84 | .InputfieldForm .InputfieldCKEditorInline h5 { 85 | color: #222222; 86 | font-family: Arial, sans-serif; 87 | font-weight: normal; 88 | text-transform: none; 89 | } 90 | .InputfieldForm .InputfieldCKEditorInline h1 { 91 | font-size: 2.0em; 92 | } 93 | .InputfieldForm .InputfieldCKEditorInline h2 { 94 | font-size: 1.7em; 95 | } 96 | .InputfieldForm .InputfieldCKEditorInline h3 { 97 | font-size: 1.5em; 98 | } 99 | .InputfieldForm .InputfieldCKEditorInline h4 { 100 | font-size: 1.3em; 101 | } 102 | .InputfieldForm .InputfieldCKEditorInline h5 { 103 | font-size: 1.2em; 104 | } 105 | .InputfieldForm .InputfieldCKEditorInline h6 { 106 | font-size: 1.1em; 107 | } 108 | .InputfieldForm .InputfieldCKEditorInline table td, 109 | .InputfieldForm .InputfieldCKEditorInline table th { 110 | padding: 3px; 111 | } 112 | .InputfieldForm .InputfieldCKEditorInline table th { 113 | font-weight: bold; 114 | } 115 | .InputfieldForm .InputfieldCKEditorInline img { 116 | max-width: 100%; 117 | } 118 | .InputfieldForm .InputfieldCKEditorInline img.cke_anchor { 119 | display: inline; 120 | } 121 | 122 | -------------------------------------------------------------------------------- /site-processvue/modules/InputfieldCKEditor/contents.css: -------------------------------------------------------------------------------- 1 | /** 2 | * contents.css 3 | * 4 | * CKEditor editor styles for regular (non-inline) editor 5 | * See contents-inline.css for inline editor styles. 6 | * 7 | * Note that this file is not in use unless you configure your editor settings to use it 8 | * in the "Custom Editor CSS File (regular mode)" option. As a result, this file is here 9 | * primarily as a placeholder and for instructions, though you may certainly modify and 10 | * use it as-is. 11 | * 12 | * PLEASE NOTE: 13 | * 14 | * It's possible this file may be out of date since it is in /site/ rather than /wire/, 15 | * and the version of this file will reflect whatever version you had when you first 16 | * installed this copy of ProcessWire. 17 | * 18 | * If you intend to use this, you may first want to get the newest copy out of: 19 | * /wire/modules/Inputfield/InputfieldCKEditor/contents.css 20 | * 21 | * Original file copyright (as included with CKEditor): 22 | * Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. 23 | * For licensing, see LICENSE.html or http://ckeditor.com/license 24 | * 25 | */ 26 | 27 | body { 28 | /* Font */ 29 | font-family: sans-serif, Arial, Verdana, "Trebuchet MS"; 30 | font-size: 14px; 31 | 32 | /* Text color */ 33 | color: #333; 34 | 35 | /* Remove the background color to make it transparent */ 36 | background-color: #fff; 37 | 38 | margin: 10px; 39 | } 40 | 41 | .cke_editable { 42 | font-size: 14px; 43 | line-height: 1.6em; 44 | } 45 | 46 | blockquote { 47 | font-style: italic; 48 | font-family: Georgia, Times, "Times New Roman", serif; 49 | padding: 2px 0; 50 | border-style: solid; 51 | border-color: #ccc; 52 | border-width: 0; 53 | } 54 | 55 | .cke_contents_ltr blockquote { 56 | padding-left: 20px; 57 | padding-right: 8px; 58 | border-left-width: 5px; 59 | } 60 | 61 | .cke_contents_rtl blockquote { 62 | padding-left: 8px; 63 | padding-right: 20px; 64 | border-right-width: 5px; 65 | } 66 | 67 | a { 68 | color: #0782C1; 69 | } 70 | 71 | ol,ul,dl { 72 | /* IE7: reset rtl list margin. (#7334) */ 73 | *margin-right: 0px; 74 | /* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/ 75 | padding: 0 40px; 76 | } 77 | 78 | h1,h2,h3,h4,h5,h6 { 79 | font-weight: bold; 80 | line-height: 1.2em; 81 | } 82 | 83 | hr { 84 | border: 0px; 85 | border-top: 1px solid #ccc; 86 | } 87 | 88 | img { 89 | max-width: 100%; 90 | } 91 | 92 | img.right, 93 | img.align_right, 94 | img.align-right { 95 | /* RCD */ 96 | border: 1px solid #ccc; 97 | float: right; 98 | margin-left: 15px; 99 | padding: 5px; 100 | } 101 | 102 | img.left, 103 | img.align_left, 104 | img.align-left { 105 | /* RCD */ 106 | border: 1px solid #ccc; 107 | float: left; 108 | margin-right: 15px; 109 | padding: 5px; 110 | } 111 | 112 | img.align_center, 113 | img.align-center { 114 | /* RCD */ 115 | display: block; 116 | margin-left: auto; 117 | margin-right: auto; 118 | } 119 | 120 | img:hover { 121 | opacity: .9; 122 | filter: alpha(opacity = 90); 123 | } 124 | 125 | pre { 126 | white-space: pre-wrap; 127 | word-wrap: break-word; 128 | -moz-tab-size: 4; 129 | -o-tab-size: 4; 130 | -webkit-tab-size: 4; 131 | tab-size: 4; 132 | } 133 | 134 | .marker { 135 | background-color: Yellow; 136 | } 137 | 138 | span[lang] { 139 | font-style: italic; 140 | } 141 | 142 | figure { 143 | text-align: center; 144 | border: solid 1px #ccc; 145 | border-radius: 2px; 146 | background: rgba(0,0,0,0.05); 147 | padding: 10px; 148 | margin: 10px 20px; 149 | display: inline-block; 150 | } 151 | 152 | figure > figcaption { 153 | text-align: center; 154 | display: block; /* For IE8 */ 155 | } 156 | 157 | code { 158 | /* RCD */ 159 | background: #fff2a8; 160 | } 161 | 162 | a > img { 163 | padding: 1px; 164 | margin: 1px; 165 | border: none; 166 | outline: 1px solid #0782C1; 167 | } 168 | 169 | 170 | -------------------------------------------------------------------------------- /site-processvue/modules/InputfieldCKEditor/mystyles.js: -------------------------------------------------------------------------------- 1 | /** 2 | * mystyles.js - for ProcessWire CKEditor "Custom Editor Styles Set" option 3 | * 4 | * Example file for "Custom Editor Styles Set" as seen in your CKEditor field config. 5 | * This file is not in use unless you specify it for that configuration item. 6 | * 7 | * PLEASE NOTE: 8 | * 9 | * It's possible this file may be out of date since it is in /site/ rather than /wire/, 10 | * and the version of this file will reflect whatever version you had when you first 11 | * installed this copy of ProcessWire. 12 | * 13 | * If you intend to use this, you may first want to get the newest copy out of: 14 | * /wire/modules/Inputfield/InputfieldCKEditor/mystyles.js 15 | * 16 | * For a more comprehensive example, see: 17 | * /wire/modules/Inputfield/InputfieldCKEditor/ckeditor-[version]/styles.js 18 | * 19 | */ 20 | 21 | CKEDITOR.stylesSet.add( 'mystyles', [ 22 | { name: 'Inline Code', element: 'code' }, 23 | { name: 'Inline Quotation', element: 'q' }, 24 | { name: 'Left Aligned Photo', element: 'img', attributes: { 'class': 'align_left' } }, 25 | { name: 'Right Aligned Photo', element: 'img', attributes: { 'class': 'align_right' } }, 26 | { name: 'Centered Photo', element: 'img', attributes: { 'class': 'align_center' } }, 27 | { name: 'Small', element: 'small' }, 28 | { name: 'Deleted Text', element: 'del' }, 29 | { name: 'Inserted Text', element: 'ins' }, 30 | { name: 'Cited Work', element: 'cite' } 31 | ]); 32 | 33 | -------------------------------------------------------------------------------- /site-processvue/modules/InputfieldCKEditor/plugins/README.txt: -------------------------------------------------------------------------------- 1 | Directory to place additional CKEditor plugins in. You can then activate them 2 | from your CKEditor field settings. Place each plugin in its own directory 3 | having the same name as the plugin. 4 | -------------------------------------------------------------------------------- /site-processvue/modules/README.txt: -------------------------------------------------------------------------------- 1 | ABOUT /SITE/MODULES/ 2 | ==================== 3 | This directory /site/modules/ is where you may install additional plugin modules. 4 | These modules are specific to your site only. There is also a corresponding 5 | /wire/modules/ directory, which contains ProcessWire's core modules (and best to 6 | leave those alone). 7 | 8 | If safe for your hosting environment, you may wish to make this directory 9 | writable to PHP so that the installation of your modules can be managed from 10 | ProcessWire's admin. However, this is not necessarily safe in all shared hosting 11 | environments and is completely optional. 12 | 13 | 14 | Where to get modules? 15 | --------------------- 16 | Visit the modules directory at: http://modules.processwire.com 17 | 18 | 19 | Installing modules from the ProcessWire admin 20 | --------------------------------------------- 21 | If your /site/modules/ directory is writable, you can install modules from 22 | ProcessWire's admin directly from the Modules Directory, from a ZIP file or from 23 | a URL to a ZIP file. In your ProcessWire admin, see Modules > New for 24 | installation options. 25 | 26 | 27 | Installing modules from the file system 28 | --------------------------------------- 29 | Each module (and any related files) should live in a directory of its own. The 30 | directory should generally carry the same name as the module. For instance, if 31 | you are installing a module named ProcessDatabaseBackups.module, then it should 32 | live in the directory /site/modules/ProcessDatabaseBackups/. 33 | 34 | Once you have placed a new module in this directory, you need to let ProcessWire 35 | know about it. Login to the admin and click "Modules". Then click the "Check for 36 | new modules" button. It will find your new module(s). Click the "Install" button 37 | next to any new modules that you want to install. 38 | 39 | 40 | Removing modules 41 | ---------------- 42 | The first step in removing a module is to uninstall it from ProcessWire (if it 43 | isn't already). You do this by going to the "Modules" page, and "Site" tab in 44 | your ProcessWire admin. Click the "Uninstall" button next to the module you 45 | want to remove. 46 | 47 | After the module is uninstalled, you may remove the module files. If your 48 | modules file system is writable to ProcessWire, it will give you a "Delete" 49 | button next to the module in your "Modules" admin page. You may click that to 50 | remove the module files. 51 | 52 | If your file system is not writable, you may remove the module files manually 53 | from the file system (via SFTP or whatever tool you are using to manage your 54 | files on the server). 55 | 56 | 57 | Interested in learning how to make your own modules? 58 | ---------------------------------------------------- 59 | We've created two "Hello World" modules as examples for those interested in 60 | learning module development: 61 | 62 | - Helloworld.module demonstrates the basics of modules and hooks. 63 | http://modules.processwire.com/modules/helloworld/ 64 | 65 | - ProcessHello.module demonstrates the basics of how to create a Process 66 | module. Process modules are those that create applications in the admin. 67 | http://modules.processwire.com/modules/process-hello/ 68 | 69 | There is a module development forum located at: 70 | https://processwire.com/talk/forum/19-moduleplugin-development/ 71 | 72 | For a tutorial on how to create modules, see: 73 | http://wiki.processwire.com/index.php/Module_Creation 74 | 75 | 76 | Additional resources 77 | -------------------- 78 | 79 | To find and download new modules, see the modules directory at: 80 | http://modules.processwire.com/ 81 | 82 | For more information about modules, see the documentation at: 83 | http://processwire.com/api/modules/ 84 | 85 | For discussion and support of modules, see: 86 | http://processwire.com/talk/forum/4-modulesplugins/ 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /site-processvue/templates/README.txt: -------------------------------------------------------------------------------- 1 | This file is here to ensure Git adds the dir to the repo. You may delete this file. 2 | -------------------------------------------------------------------------------- /site-processvue/templates/admin.php: -------------------------------------------------------------------------------- 1 | paths->adminTemplates . 'controller.php'); 16 | -------------------------------------------------------------------------------- /site-processvue/templates/client/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { "modules": false }], 4 | "stage-2" 5 | ], 6 | "plugins": ["transform-runtime"], 7 | "comments": false, 8 | "env": { 9 | "test": { 10 | "presets": ["env", "stage-2"], 11 | "plugins": [ "istanbul" ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /site-processvue/templates/client/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /site-processvue/templates/client/.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | config/*.js 3 | -------------------------------------------------------------------------------- /site-processvue/templates/client/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: 'babel-eslint', 4 | parserOptions: { 5 | sourceType: 'module' 6 | }, 7 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 8 | extends: 'standard', 9 | // required to lint *.vue files 10 | plugins: [ 11 | 'html' 12 | ], 13 | // add your custom rules here 14 | 'rules': { 15 | // "no-new": 0, 16 | "space-before-function-paren": ["error", { 17 | "anonymous": "ignore", 18 | "named": "ignore", 19 | "asyncArrow": "ignore" 20 | }], 21 | // allow paren-less arrow functions 22 | 'arrow-parens': 0, 23 | // allow async-await 24 | 'generator-star-spacing': 0, 25 | // allow debugger during development 26 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /site-processvue/templates/client/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log 5 | yarn-error.log 6 | -------------------------------------------------------------------------------- /site-processvue/templates/client/.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserlist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /site-processvue/templates/client/README.md: -------------------------------------------------------------------------------- 1 | # processvue 2 | 3 | > A ProcessWire Vue integration 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # serve with hot reload at localhost:8080 12 | npm run dev 13 | 14 | # build for production with minification 15 | npm run build 16 | 17 | # build for production and view the bundle analyzer report 18 | npm run build --report 19 | ``` 20 | 21 | For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 22 | -------------------------------------------------------------------------------- /site-processvue/templates/client/build/build.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | process.env.NODE_ENV = 'production' 4 | 5 | var ora = require('ora') 6 | var rm = require('rimraf') 7 | var path = require('path') 8 | var chalk = require('chalk') 9 | var webpack = require('webpack') 10 | var config = require('../config') 11 | var webpackConfig = require('./webpack.prod.conf') 12 | 13 | var spinner = ora('building for production...') 14 | spinner.start() 15 | 16 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 17 | if (err) throw err 18 | webpack(webpackConfig, function (err, stats) { 19 | spinner.stop() 20 | if (err) throw err 21 | process.stdout.write(stats.toString({ 22 | colors: true, 23 | modules: false, 24 | children: false, 25 | chunks: false, 26 | chunkModules: false 27 | }) + '\n\n') 28 | 29 | console.log(chalk.cyan(' Build complete.\n')) 30 | console.log(chalk.yellow( 31 | ' Tip: built files are meant to be served over an HTTP server.\n' + 32 | ' Opening index.html over file:// won\'t work.\n' 33 | )) 34 | }) 35 | }) 36 | -------------------------------------------------------------------------------- /site-processvue/templates/client/build/check-versions.js: -------------------------------------------------------------------------------- 1 | var chalk = require('chalk') 2 | var semver = require('semver') 3 | var packageConfig = require('../package.json') 4 | 5 | function exec (cmd) { 6 | return require('child_process').execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | { 16 | name: 'npm', 17 | currentVersion: exec('npm --version'), 18 | versionRequirement: packageConfig.engines.npm 19 | } 20 | ] 21 | 22 | module.exports = function () { 23 | var warnings = [] 24 | for (var i = 0; i < versionRequirements.length; i++) { 25 | var mod = versionRequirements[i] 26 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 27 | warnings.push(mod.name + ': ' + 28 | chalk.red(mod.currentVersion) + ' should be ' + 29 | chalk.green(mod.versionRequirement) 30 | ) 31 | } 32 | } 33 | 34 | if (warnings.length) { 35 | console.log('') 36 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 37 | console.log() 38 | for (var i = 0; i < warnings.length; i++) { 39 | var warning = warnings[i] 40 | console.log(' ' + warning) 41 | } 42 | console.log() 43 | process.exit(1) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /site-processvue/templates/client/build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /site-processvue/templates/client/build/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | var config = require('../config') 4 | if (!process.env.NODE_ENV) { 5 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 6 | } 7 | 8 | var opn = require('opn') 9 | var path = require('path') 10 | var express = require('express') 11 | var webpack = require('webpack') 12 | var proxyMiddleware = require('http-proxy-middleware') 13 | var webpackConfig = require('./webpack.dev.conf') 14 | 15 | // default port where dev server listens for incoming traffic 16 | var port = process.env.PORT || config.dev.port 17 | // automatically open browser, if not set will be false 18 | var autoOpenBrowser = !!config.dev.autoOpenBrowser 19 | // Define HTTP proxies to your custom API backend 20 | // https://github.com/chimurai/http-proxy-middleware 21 | var proxyTable = config.dev.proxyTable 22 | 23 | var app = express() 24 | var compiler = webpack(webpackConfig) 25 | 26 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 27 | publicPath: webpackConfig.output.publicPath, 28 | quiet: true 29 | }) 30 | 31 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 32 | log: () => {} 33 | }) 34 | // force page reload when html-webpack-plugin template changes 35 | compiler.plugin('compilation', function (compilation) { 36 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 37 | hotMiddleware.publish({ action: 'reload' }) 38 | cb() 39 | }) 40 | }) 41 | 42 | // proxy api requests 43 | Object.keys(proxyTable).forEach(function (context) { 44 | var options = proxyTable[context] 45 | if (typeof options === 'string') { 46 | options = { target: options } 47 | } 48 | app.use(proxyMiddleware(options.filter || context, options)) 49 | }) 50 | 51 | // handle fallback for HTML5 history API 52 | app.use(require('connect-history-api-fallback')()) 53 | 54 | // serve webpack bundle output 55 | app.use(devMiddleware) 56 | 57 | // enable hot-reload and state-preserving 58 | // compilation error display 59 | app.use(hotMiddleware) 60 | 61 | // serve pure static assets 62 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 63 | app.use(staticPath, express.static('./static')) 64 | 65 | var uri = 'http://localhost:' + port 66 | 67 | devMiddleware.waitUntilValid(function () { 68 | console.log('> Listening at ' + uri + '\n') 69 | }) 70 | 71 | module.exports = app.listen(port, function (err) { 72 | if (err) { 73 | console.log(err) 74 | return 75 | } 76 | 77 | // when env is testing, don't need open it 78 | if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { 79 | opn(uri) 80 | } 81 | }) 82 | -------------------------------------------------------------------------------- /site-processvue/templates/client/build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | 15 | var cssLoader = { 16 | loader: 'css-loader', 17 | options: { 18 | minimize: process.env.NODE_ENV === 'production', 19 | sourceMap: options.sourceMap 20 | } 21 | } 22 | 23 | // generate loader string to be used with extract text plugin 24 | function generateLoaders (loader, loaderOptions) { 25 | var loaders = [cssLoader] 26 | if (loader) { 27 | loaders.push({ 28 | loader: loader + '-loader', 29 | options: Object.assign({}, loaderOptions, { 30 | sourceMap: options.sourceMap 31 | }) 32 | }) 33 | } 34 | 35 | // Extract CSS when that option is specified 36 | // (which is the case during production build) 37 | if (options.extract) { 38 | return ExtractTextPlugin.extract({ 39 | use: loaders, 40 | fallback: 'vue-style-loader' 41 | }) 42 | } else { 43 | return ['vue-style-loader'].concat(loaders) 44 | } 45 | } 46 | 47 | // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html 48 | return { 49 | css: generateLoaders(), 50 | postcss: generateLoaders(), 51 | less: generateLoaders('less'), 52 | sass: generateLoaders('sass', { indentedSyntax: true }), 53 | scss: generateLoaders('sass'), 54 | stylus: generateLoaders('stylus'), 55 | styl: generateLoaders('stylus') 56 | } 57 | } 58 | 59 | // Generate loaders for standalone style files (outside of .vue) 60 | exports.styleLoaders = function (options) { 61 | var output = [] 62 | var loaders = exports.cssLoaders(options) 63 | for (var extension in loaders) { 64 | var loader = loaders[extension] 65 | output.push({ 66 | test: new RegExp('\\.' + extension + '$'), 67 | use: loader 68 | }) 69 | } 70 | return output 71 | } 72 | -------------------------------------------------------------------------------- /site-processvue/templates/client/build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var config = require('../config') 3 | var isProduction = process.env.NODE_ENV === 'production' 4 | 5 | module.exports = { 6 | loaders: utils.cssLoaders({ 7 | sourceMap: isProduction 8 | ? config.build.productionSourceMap 9 | : config.dev.cssSourceMap, 10 | extract: isProduction 11 | }) 12 | } 13 | -------------------------------------------------------------------------------- /site-processvue/templates/client/build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('./utils') 3 | var config = require('../config') 4 | var vueLoaderConfig = require('./vue-loader.conf') 5 | 6 | function resolve (dir) { 7 | return path.join(__dirname, '..', dir) 8 | } 9 | 10 | module.exports = { 11 | entry: { 12 | app: './src/main.js' 13 | }, 14 | output: { 15 | path: config.build.assetsRoot, 16 | filename: '[name].js', 17 | publicPath: process.env.NODE_ENV === 'production' 18 | ? config.build.assetsPublicPath 19 | : config.dev.assetsPublicPath 20 | }, 21 | resolve: { 22 | extensions: ['.js', '.vue', '.json'], 23 | alias: { 24 | 'vue$': 'vue/dist/vue.esm.js', 25 | '@': resolve('src'), 26 | } 27 | }, 28 | module: { 29 | rules: [ 30 | { 31 | test: /\.(js|vue)$/, 32 | loader: 'eslint-loader', 33 | enforce: "pre", 34 | include: [resolve('src'), resolve('test')], 35 | options: { 36 | formatter: require('eslint-friendly-formatter') 37 | } 38 | }, 39 | { 40 | test: /\.vue$/, 41 | loader: 'vue-loader', 42 | options: vueLoaderConfig 43 | }, 44 | { 45 | test: /\.js$/, 46 | loader: 'babel-loader', 47 | include: [resolve('src'), resolve('test')] 48 | }, 49 | { 50 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 51 | loader: 'url-loader', 52 | query: { 53 | limit: 10000, 54 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 55 | } 56 | }, 57 | { 58 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 59 | loader: 'url-loader', 60 | query: { 61 | limit: 10000, 62 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 63 | } 64 | } 65 | ] 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /site-processvue/templates/client/build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var webpack = require('webpack') 3 | var config = require('../config') 4 | var merge = require('webpack-merge') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // cheap-module-eval-source-map is faster for development 19 | devtool: '#cheap-module-eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.HotModuleReplacementPlugin(), 26 | new webpack.NoEmitOnErrorsPlugin(), 27 | // https://github.com/ampedandwired/html-webpack-plugin 28 | new HtmlWebpackPlugin({ 29 | filename: 'index.html', 30 | template: 'index.html', 31 | inject: true 32 | }), 33 | new FriendlyErrorsPlugin() 34 | ] 35 | }) 36 | -------------------------------------------------------------------------------- /site-processvue/templates/client/build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('./utils') 3 | var webpack = require('webpack') 4 | var config = require('../config') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.conf') 7 | var CopyWebpackPlugin = require('copy-webpack-plugin') 8 | var HtmlWebpackPlugin = require('html-webpack-plugin') 9 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 10 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 11 | 12 | var env = config.build.env 13 | 14 | var webpackConfig = merge(baseWebpackConfig, { 15 | module: { 16 | rules: utils.styleLoaders({ 17 | sourceMap: config.build.productionSourceMap, 18 | extract: true 19 | }) 20 | }, 21 | devtool: config.build.productionSourceMap ? '#source-map' : false, 22 | output: { 23 | path: config.build.assetsRoot, 24 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 25 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 26 | }, 27 | plugins: [ 28 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 29 | new webpack.DefinePlugin({ 30 | 'process.env': env 31 | }), 32 | new webpack.optimize.UglifyJsPlugin({ 33 | compress: { 34 | warnings: false 35 | }, 36 | sourceMap: true 37 | }), 38 | // extract css into its own file 39 | new ExtractTextPlugin({ 40 | filename: utils.assetsPath('css/[name].[contenthash].css') 41 | }), 42 | // Compress extracted CSS. We are using this plugin so that possible 43 | // duplicated CSS from different components can be deduped. 44 | new OptimizeCSSPlugin(), 45 | // generate dist index.html with correct asset hash for caching. 46 | // you can customize output by editing /index.html 47 | // see https://github.com/ampedandwired/html-webpack-plugin 48 | new HtmlWebpackPlugin({ 49 | filename: config.build.index, 50 | template: 'index.html', 51 | inject: true, 52 | minify: { 53 | removeComments: true, 54 | collapseWhitespace: true, 55 | removeAttributeQuotes: true 56 | // more options: 57 | // https://github.com/kangax/html-minifier#options-quick-reference 58 | }, 59 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 60 | chunksSortMode: 'dependency' 61 | }), 62 | // split vendor js into its own file 63 | new webpack.optimize.CommonsChunkPlugin({ 64 | name: 'vendor', 65 | minChunks: function (module, count) { 66 | // any required modules inside node_modules are extracted to vendor 67 | return ( 68 | module.resource && 69 | /\.js$/.test(module.resource) && 70 | module.resource.indexOf( 71 | path.join(__dirname, '../node_modules') 72 | ) === 0 73 | ) 74 | } 75 | }), 76 | // extract webpack runtime and module manifest to its own file in order to 77 | // prevent vendor hash from being updated whenever app bundle is updated 78 | new webpack.optimize.CommonsChunkPlugin({ 79 | name: 'manifest', 80 | chunks: ['vendor'] 81 | }), 82 | // copy custom static assets 83 | new CopyWebpackPlugin([ 84 | { 85 | from: path.resolve(__dirname, '../static'), 86 | to: config.build.assetsSubDirectory, 87 | ignore: ['.*'] 88 | } 89 | ]) 90 | ] 91 | }) 92 | 93 | if (config.build.productionGzip) { 94 | var CompressionWebpackPlugin = require('compression-webpack-plugin') 95 | 96 | webpackConfig.plugins.push( 97 | new CompressionWebpackPlugin({ 98 | asset: '[path].gz[query]', 99 | algorithm: 'gzip', 100 | test: new RegExp( 101 | '\\.(' + 102 | config.build.productionGzipExtensions.join('|') + 103 | ')$' 104 | ), 105 | threshold: 10240, 106 | minRatio: 0.8 107 | }) 108 | ) 109 | } 110 | 111 | if (config.build.bundleAnalyzerReport) { 112 | var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 113 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 114 | } 115 | 116 | module.exports = webpackConfig 117 | -------------------------------------------------------------------------------- /site-processvue/templates/client/config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /site-processvue/templates/client/config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../../home.php'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/site/templates/client/dist/', 11 | productionSourceMap: false, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'], 18 | // Run the build command with an extra argument to 19 | // View the bundle analyzer report after build finishes: 20 | // `npm run build --report` 21 | // Set to `true` or `false` to always turn it on or off 22 | bundleAnalyzerReport: process.env.npm_config_report 23 | }, 24 | dev: { 25 | env: require('./dev.env'), 26 | port: 8080, 27 | autoOpenBrowser: true, 28 | assetsSubDirectory: 'static', 29 | assetsPublicPath: '/', 30 | proxyTable: { 31 | // proxy all requests starting with /api to jsonplaceholder 32 | '/api': { 33 | target: 'http://www.processvue.localdev', 34 | changeOrigin: true 35 | } 36 | }, 37 | // CSS Sourcemaps off by default because relative paths are "buggy" 38 | // with this option, according to the CSS-Loader README 39 | // (https://github.com/webpack/css-loader#sourcemaps) 40 | // In our experience, they generally work as expected, 41 | // just be aware of this issue when enabling this option. 42 | cssSourceMap: false 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /site-processvue/templates/client/config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /site-processvue/templates/client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Home | ProcessVue boilerplate 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /site-processvue/templates/client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "processvue", 3 | "version": "1.0.0", 4 | "description": "A ProcessWire Vue integration", 5 | "author": "microcipcip ", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "build": "node build/build.js", 10 | "lint": "eslint --ext .js,.vue src" 11 | }, 12 | "dependencies": { 13 | "axios": "^0.15.3", 14 | "vue": "^2.2.2", 15 | "vue-meta": "^0.5.5", 16 | "vue-router": "^2.2.0", 17 | "vuex": "^2.2.1", 18 | "vuex-router-sync": "^4.1.2" 19 | }, 20 | "devDependencies": { 21 | "autoprefixer": "^6.7.2", 22 | "babel-core": "^6.22.1", 23 | "babel-eslint": "^7.1.1", 24 | "babel-loader": "^6.2.10", 25 | "babel-plugin-transform-runtime": "^6.22.0", 26 | "babel-preset-env": "^1.2.1", 27 | "babel-preset-stage-2": "^6.22.0", 28 | "babel-register": "^6.22.0", 29 | "chalk": "^1.1.3", 30 | "connect-history-api-fallback": "^1.3.0", 31 | "copy-webpack-plugin": "^4.0.1", 32 | "css-loader": "^0.26.1", 33 | "eslint": "^3.14.1", 34 | "eslint-config-standard": "^6.2.1", 35 | "eslint-friendly-formatter": "^2.0.7", 36 | "eslint-loader": "^1.6.1", 37 | "eslint-plugin-html": "^2.0.0", 38 | "eslint-plugin-promise": "^3.4.0", 39 | "eslint-plugin-standard": "^2.0.1", 40 | "eventsource-polyfill": "^0.9.6", 41 | "express": "^4.14.1", 42 | "extract-text-webpack-plugin": "^2.0.0", 43 | "file-loader": "^0.10.0", 44 | "friendly-errors-webpack-plugin": "^1.1.3", 45 | "function-bind": "^1.1.0", 46 | "html-webpack-plugin": "^2.28.0", 47 | "http-proxy-middleware": "^0.17.3", 48 | "node-sass": "^4.5.0", 49 | "opn": "^4.0.2", 50 | "optimize-css-assets-webpack-plugin": "^1.3.0", 51 | "ora": "^1.1.0", 52 | "rimraf": "^2.6.0", 53 | "sass-loader": "^6.0.3", 54 | "semver": "^5.3.0", 55 | "url-loader": "^0.5.7", 56 | "vue-loader": "^11.1.4", 57 | "vue-style-loader": "^2.0.0", 58 | "vue-template-compiler": "^2.2.1", 59 | "webpack": "^2.2.1", 60 | "webpack-bundle-analyzer": "^2.2.1", 61 | "webpack-dev-middleware": "^1.10.0", 62 | "webpack-hot-middleware": "^2.16.1", 63 | "webpack-merge": "^2.6.1" 64 | }, 65 | "engines": { 66 | "node": ">= 4.0.0", 67 | "npm": ">= 3.0.0" 68 | }, 69 | "browserslist": [ 70 | "> 1%", 71 | "last 2 versions", 72 | "not ie <= 8" 73 | ] 74 | } 75 | -------------------------------------------------------------------------------- /site-processvue/templates/client/src/app.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import {sync} from 'vuex-router-sync' 3 | import router from '@/router' 4 | import store from '@/store' 5 | import PwApp from '@/components/PwApp' 6 | 7 | Vue.config.productionTip = false 8 | 9 | sync(store, router) 10 | 11 | const app = new Vue({ 12 | router, 13 | store, 14 | ...PwApp 15 | }) 16 | 17 | export {app, router, store} 18 | -------------------------------------------------------------------------------- /site-processvue/templates/client/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/templates/client/src/assets/logo.png -------------------------------------------------------------------------------- /site-processvue/templates/client/src/components/PwApp.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 79 | 80 | 173 | -------------------------------------------------------------------------------- /site-processvue/templates/client/src/components/PwDefault.vue: -------------------------------------------------------------------------------- 1 | 36 | 37 | 95 | -------------------------------------------------------------------------------- /site-processvue/templates/client/src/components/PwHome.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 58 | -------------------------------------------------------------------------------- /site-processvue/templates/client/src/components/PwLoader.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 19 | -------------------------------------------------------------------------------- /site-processvue/templates/client/src/components/PwNav.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 34 | -------------------------------------------------------------------------------- /site-processvue/templates/client/src/config/index.js: -------------------------------------------------------------------------------- 1 | let $html = document.querySelector('html') 2 | let titleEl = $html.querySelector('title').innerText 3 | 4 | export const env = process.env.NODE_ENV 5 | 6 | export const isDev = env === 'development' 7 | export const isProd = env === 'production' 8 | 9 | export const apiURL = '/api/pages/' 10 | export const apiNavURL = '/api/nav/' 11 | 12 | export const title = titleEl.slice(0, titleEl.indexOf('|')).trim() 13 | export const websiteName = titleEl.slice(titleEl.indexOf('|') + 1, titleEl.length).trim() 14 | export const titleFallback = `${title} | ${websiteName}` 15 | export const description = $html.querySelector('meta[name="description"]').content 16 | -------------------------------------------------------------------------------- /site-processvue/templates/client/src/main.js: -------------------------------------------------------------------------------- 1 | import { app } from '@/app' 2 | 3 | app.$mount('#app') 4 | -------------------------------------------------------------------------------- /site-processvue/templates/client/src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | import Meta from 'vue-meta' 4 | import { app } from '@/app' 5 | 6 | import PwHome from '@/components/PwHome' 7 | import PwDefault from '@/components/PwDefault' 8 | 9 | Vue.use(Router) 10 | Vue.use(Meta) 11 | 12 | var router = new Router({ 13 | mode: 'history', 14 | routes: [ 15 | { 16 | path: '/', 17 | name: 'Home', 18 | component: PwHome 19 | }, 20 | { 21 | name: 'default', 22 | path: '*', 23 | component: PwDefault 24 | } 25 | ] 26 | }) 27 | 28 | router.beforeEach((to, from, next) => { 29 | if (app) { 30 | app.$store.dispatch('loading', true) 31 | } 32 | next() 33 | }) 34 | 35 | export default router 36 | 37 | -------------------------------------------------------------------------------- /site-processvue/templates/client/src/store/index.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import Vue from 'vue' 3 | import Vuex from 'vuex' 4 | import * as config from '@/config' 5 | import router from '@/router' 6 | 7 | Vue.use(Vuex) 8 | 9 | const state = { 10 | loading: true, 11 | navData: {}, 12 | pageData: {}, 13 | error: '' 14 | } 15 | 16 | const mutations = { 17 | loading(state, payload) { 18 | state.loading = payload.loading 19 | }, 20 | navdata(state, payload) { 21 | state.navData = payload.navData 22 | }, 23 | pagedata(state, payload) { 24 | state.pageData = payload.pageData 25 | } 26 | } 27 | 28 | const actions = { 29 | loading({ commit }, payload) { 30 | commit({ 31 | type: 'loading', 32 | loading: payload 33 | }) 34 | }, 35 | setNavData({ commit }, query) { 36 | return axios.get(config.apiNavURL + query) 37 | .then((response) => { 38 | commit({ 39 | type: 'navdata', 40 | navData: response.data 41 | }) 42 | }) 43 | .catch((err) => { 44 | state.error = err.toString() 45 | commit({ 46 | type: 'navdata', 47 | navData: {} 48 | }) 49 | }) 50 | }, 51 | setPageData({ commit }, query = '') { 52 | return axios.get(config.apiURL + query) 53 | .then((response) => { 54 | commit({ 55 | type: 'pagedata', 56 | pageData: response.data 57 | }) 58 | }) 59 | .catch((err) => { 60 | state.error = err.toString() 61 | router.push({ path: '/http404/' }) 62 | }) 63 | } 64 | } 65 | 66 | const getters = { 67 | loading: state => state.loading, 68 | navData: state => state.navData, 69 | pageData: state => state.pageData 70 | } 71 | 72 | const store = new Vuex.Store({ 73 | state, 74 | mutations, 75 | actions, 76 | getters 77 | }) 78 | 79 | export default store 80 | -------------------------------------------------------------------------------- /site-processvue/templates/client/static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microcipcip/processvue/ddda6007717d85a57f13bdc2140401c076a6527b/site-processvue/templates/client/static/.gitkeep -------------------------------------------------------------------------------- /site-processvue/templates/errors/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 500 Internal Server Error 5 | 6 | 7 |

Internal Server Error

8 |

The server encountered an internal error or misconfiguration and was unable to complete your request.

9 |

{message}

10 | 11 | 12 | -------------------------------------------------------------------------------- /site-processvue/templates/errors/README.txt: -------------------------------------------------------------------------------- 1 | When a fatal error occurs, ProcessWire displays the message: 2 | 3 | "Unable to complete this request due to an error." 4 | 5 | The message is intentionally vague for security purposes. 6 | Details will be logged to /site/assets/logs/errors.txt. 7 | 8 | When present in this directory, the file 500.html will be 9 | displayed instead of the generic error message above. Feel 10 | free to modify this file to show whatever you would like. 11 | Please note the following: 12 | 13 | * 500.html is plain HTML and has no PHP or API access. 14 | 15 | * You may enter the tag {message} and ProcessWire will 16 | replace this with additional details when applicable. 17 | When not applicable, it will make it blank. 18 | 19 | * If you are logged in as an admin, ProcessWire will 20 | give you a detailed error message rather than 500.html. 21 | 22 | -------------------------------------------------------------------------------- /site-processvue/templates/home.php: -------------------------------------------------------------------------------- 1 | Home | ProcessVue boilerplate
-------------------------------------------------------------------------------- /site-processvue/templates/inc/pagefields.php: -------------------------------------------------------------------------------- 1 | ['parentID', 'id', 'name', 'url', 'httpUrl', 'template'], 13 | 14 | // further core fields to include on a specific template or pageID 15 | 'fld_core_included_overrides' => [], 16 | 17 | // include all fields globally? 18 | 'fld_include_all' => true, 19 | 20 | // fields to exclude globally 21 | // works only if fld_include_all is true 22 | 'fld_excluded' => [], 23 | 24 | // further fields to exclude on a specific template or pageID 25 | // works only if fld_include_all is true 26 | 'fld_excluded_overrides' => [], 27 | 28 | // fields to include globally 29 | // works only if fld_include_all is false 30 | 'fld_included' => [], 31 | 32 | // further fields to include on a specific template or pageID 33 | // works only if fld_include_all is false 34 | 'fld_included_overrides' => [], 35 | 36 | // global image settings 37 | // https://processwire.com/api/fieldtypes/images/ 38 | 'image_fields' => [ 39 | 'resize' => [1200, 900, ['quality' => 90, 'cropping' => 'c']], 40 | 'thumb' => [ 400, 400, ['quality' => 90, 'cropping' => 'c']], 41 | 'fields' => ['description', 'httpUrl', 'width', 'height'], 42 | 'srcset' => true, 43 | 'bp_type' => 'width', 44 | 'bp_list' => true, 45 | 'bp_exclude' => ['description', 'width', 'height'], 46 | 'bp' => [400, 800, 1200], 47 | ], 48 | 49 | // override global image settings 50 | // for each field 51 | 'img_fld_overrides' => [ 52 | // example for an image field named 'banners' 53 | // 'banners' => [ 'fields' => ['httpUrl'], 'bp_list' => false ] 54 | ], 55 | 56 | // get queries 57 | 'queries' => [], 58 | 59 | // allow nested children? 60 | 'children' => true 61 | ]; 62 | 63 | /* 64 | * constructor 65 | * 66 | * */ 67 | public function __construct($page, array $config = []) { 68 | // set page (required) 69 | $this->page = $page; 70 | 71 | // set configuration options (optional) 72 | if (is_array($config)) { 73 | foreach ($this->conf as $key => $property) { 74 | // allow only parameters that are already defined 75 | // on $conf and have same typecast 76 | if ( 77 | array_key_exists($key, $config) && 78 | gettype($this->conf[$key]) === gettype($config[$key]) 79 | ) { 80 | $this->conf[$key] = $config[$key]; 81 | } 82 | } 83 | } 84 | } 85 | 86 | /* 87 | * allow getting private conf keys 88 | * 89 | * */ 90 | public function __get($key) { 91 | return $this->conf; 92 | } 93 | 94 | /* 95 | * check if this field should override the globals 96 | * 97 | * */ 98 | private function isFieldOverride($p, $fldsOverrideList = null, $fldName = null) { 99 | if (!empty($fldsOverrideList[$fldName])) { 100 | $override = $fldsOverrideList[$fldName]; 101 | } else { 102 | return false; 103 | } 104 | 105 | $fldOverrideKey = $override[0]; 106 | $fldOverrideValue = $override[1]; 107 | 108 | switch($fldOverrideKey) { 109 | case 'template': 110 | return $p->template->name === $fldOverrideValue; 111 | case 'id': 112 | return $p->id === $fldOverrideValue; 113 | case 'parents': 114 | $parents = explode('|', $p->parents); 115 | return in_array($fldOverrideValue, $parents); 116 | default: 117 | return false; 118 | } 119 | } 120 | 121 | /* 122 | * check whether is included/excluded field 123 | * 124 | * */ 125 | private function isNotAllowedField($p, $fldName = null) { 126 | if ($this->conf['fld_include_all']) { 127 | $fldExcluded = in_array($fldName, $this->conf['fld_excluded']); 128 | $fldOverride = $this->isFieldOverride($p, $this->conf['fld_excluded_overrides'], $fldName); 129 | 130 | return $fldOverride || $fldExcluded; 131 | } else { 132 | $fldIncluded = in_array($fldName, $this->conf['fld_included']); 133 | $fldOverride = $this->isFieldOverride($p, $this->conf['fld_included_overrides'], $fldName); 134 | 135 | return !($fldOverride || $fldIncluded); 136 | } 137 | } 138 | 139 | /* 140 | * resize image 141 | * 142 | * */ 143 | private function resizeImg($image, $imgConf, $bpType = 'width', $bp = []) { 144 | $imgW = $imgConf[0]; 145 | $imgH = $imgConf[1]; 146 | $imgOps = $imgConf[2]; 147 | 148 | if ($bp) { 149 | // keep aspect ratio based on 150 | // the default width/height 151 | // that has been defined 152 | if ($bpType === 'width') { 153 | $imgH = $bp / $imgW * $imgH; 154 | $imgW = $bp; 155 | } else { 156 | $imgW = $bp / $imgH * $imgW; 157 | $imgH = $bp; 158 | } 159 | } 160 | 161 | // assume size function 162 | if ($imgW && $imgH) { 163 | return $image->size($imgW, $imgH, $imgOps); 164 | } 165 | 166 | // assume width function 167 | if ($imgW && !$imgH) { 168 | return $image->width($imgW, $imgOps); 169 | } 170 | 171 | // assume height function 172 | if (!$imgW && $imgH) { 173 | return $image->height($imgH, $imgOps); 174 | } 175 | } 176 | 177 | /* 178 | * get core fields 179 | * 180 | * */ 181 | private function getCoreFields($p) { 182 | $p->of(false); 183 | $coreFields = []; 184 | foreach ($this->conf['fld_core_included'] as $coreField) { 185 | $coreFields[$coreField] = $coreField !== 'template' ? $p[$coreField] : $p[$coreField]->name; 186 | } 187 | 188 | // also check override fields 189 | foreach ($this->conf['fld_core_included_overrides'] as $coreField => $coreValue) { 190 | if ($this->isFieldOverride($p, $this->conf['fld_core_included_overrides'], $coreField)) { 191 | $coreFields[$coreField] = $p->get($coreField); 192 | } 193 | } 194 | return $coreFields; 195 | } 196 | 197 | /* 198 | * get page fields, except images fields 199 | * 200 | * */ 201 | private function getFields($p, $fld) { 202 | $fldName = $fld->name; 203 | $fldType = $fld->type; 204 | $fldVal = $p->get($fldName); 205 | 206 | $flds = []; 207 | $flds[$fldName] = $fldType->sleepValue($p, $fld, $fldVal); 208 | return $flds; 209 | } 210 | 211 | /* 212 | * get page repeaters 213 | * 214 | * */ 215 | private function getRepeaters($p, $fld) { 216 | $fldName = $fld->name; 217 | $fldVal = $p->get($fldName); 218 | 219 | $flds = []; 220 | $repeaterIndex = 0; 221 | // loop repeater pages 222 | foreach($fldVal as $repeaterPage) { 223 | // skip repeater if is unpublished 224 | if ($repeaterPage['status'] !== 1) continue; 225 | $flds[$fldName][$repeaterIndex] = $this->getAllFields($repeaterPage); 226 | $repeaterIndex++; 227 | } 228 | return $flds; 229 | } 230 | 231 | 232 | /* 233 | * get page images fields 234 | * 235 | * */ 236 | private function getImages($p, $fld) { 237 | $fldName = $fld->name; 238 | $images = []; 239 | $i = 0; 240 | foreach($p[$fldName] as $image) { 241 | // check if you should use the img_fld_overrides config 242 | // or the image_fields config 243 | $imgConf = $this->conf['image_fields']; 244 | if (!empty($this->conf['img_fld_overrides'][$fldName])) { 245 | $imgConf = $this->conf['img_fld_overrides'][$fldName]; 246 | } 247 | 248 | // add fallback if not all parameters have been defined 249 | if (!empty($this->conf['img_fld_overrides'][$fldName])) { 250 | foreach ($this->conf['image_fields'] as $key => $property) { 251 | if (array_key_exists($key, $imgConf)) continue; 252 | $imgConf[$key] = $this->conf['image_fields'][$key]; 253 | } 254 | } 255 | 256 | // override cropping for thumb and resized image if defined at the page level 257 | if (is_numeric($image->imgpos_x) && is_numeric($image->imgpos_y)) { 258 | $imgConf['resize'][2]['cropping'] = "{$image->imgpos_x}%, {$image->imgpos_y}%"; 259 | $imgConf['thumb'][2]['cropping'] = "{$image->imgpos_x}%, {$image->imgpos_y}%"; 260 | } 261 | 262 | // check if srcset is available 263 | $srcSetAvailable = $imgConf['srcset'] && $imgConf['bp_type'] === 'width'; 264 | 265 | // add origin 266 | foreach ($imgConf['fields'] as $imageField) { 267 | $images[$fldName][$i]['origin'][$imageField] = $image[$imageField]; 268 | } 269 | 270 | // add thumbnail 271 | if (count($imgConf['thumb'])) { 272 | $thumb = $image->size($imgConf['thumb'][0], $imgConf['thumb'][1], $imgConf['thumb'][2]); 273 | $images[$fldName][$i]['thumb']['httpUrl'] = $thumb->httpUrl; 274 | $images[$fldName][$i]['thumb']['width'] = $thumb->width; 275 | $images[$fldName][$i]['thumb']['height'] = $thumb->height; 276 | $images[$fldName][$i]['thumb']['orientation'] = $thumb->orientation; 277 | } 278 | 279 | // get image based on resize options 280 | // and on breakpoint sizing 281 | if (count($imgConf['bp'])) { 282 | $imgSrcSetData = []; 283 | 284 | // breakpoints 285 | foreach ($imgConf['bp'] as $bp) { 286 | $imageEl = $this->resizeImg($image, $imgConf['resize'], $imgConf['bp_type'], $bp); 287 | 288 | if ($imgConf['bp_list']) { 289 | foreach ($imgConf['fields'] as $imageField) { 290 | if (in_array($imageField, $imgConf['bp_exclude'])) continue; 291 | $images[$fldName][$i]['bp'][$bp][$imageField] = $imageEl[$imageField]; 292 | } 293 | } 294 | 295 | if ($srcSetAvailable) { 296 | array_push($imgSrcSetData, $imageEl->httpUrl.' '.$imageEl->width.'w'); 297 | } 298 | } 299 | 300 | // add srcset 301 | if ($srcSetAvailable) { 302 | $images[$fldName][$i]['srcset'] = implode(',', $imgSrcSetData); 303 | } 304 | } else { 305 | // resized 306 | $imageEl = $this->resizeImg($image, $imgConf['resize']); 307 | foreach ($imgConf['fields'] as $imageField) { 308 | $images[$fldName][$i]['resized'][$imageField] = $imageEl[$imageField]; 309 | } 310 | } 311 | $i++; 312 | } 313 | return $images; 314 | } 315 | 316 | /* 317 | * get page fields, except images fields 318 | * 319 | * */ 320 | private function getAllFields($p) { 321 | $p->of(false); 322 | $flds = []; 323 | 324 | foreach($p->template->fields as $fld) { 325 | $fldName = $fld->name; 326 | $fldType = $fld->type; 327 | 328 | // before adding the fields, let's check if they're allowed 329 | if ( 330 | $fldType instanceof FieldtypeFieldsetOpen || 331 | $this->isNotAllowedField($p, $fldName) 332 | ) continue; 333 | 334 | if ($fldType instanceof FieldtypeImage) { 335 | $flds = array_merge($this->getImages($p, $fld), $flds); 336 | } else if ($fldType instanceof FieldtypeRepeater) { 337 | $flds = array_merge($this->getRepeaters($p, $fld), $flds); 338 | } else { 339 | $flds = array_merge($this->getFields($p, $fld), $flds); 340 | } 341 | 342 | } 343 | return $flds; 344 | } 345 | 346 | /* 347 | * get all page fields, all page children, listing 348 | * 349 | * */ 350 | public function getPageFields($p) { 351 | $result = []; 352 | 353 | $includeParents = false; 354 | if (!empty($this->conf['queries']['parent_included'])) { 355 | $includeParents = $this->conf['queries']['parent_included']; 356 | } 357 | 358 | $isListingAllowed = false; 359 | if (!empty($this->conf['queries']['listing'])) { 360 | $isListingAllowed = $this->conf['queries']['listing']; 361 | } 362 | 363 | $isChildrenAllowed = false; 364 | if (!empty($this->conf['queries']['children'])) { 365 | $isChildrenAllowed = $this->conf['queries']['children']; 366 | } 367 | 368 | $isSortedBy = false; 369 | if (!empty($this->conf['queries']['sort'])) { 370 | $isSortedBy = $this->conf['queries']['sort']; 371 | } 372 | 373 | // get fields for pageId 374 | if (!$isListingAllowed) { 375 | $result = $this->getCoreFields($p); 376 | $result = array_merge($result, $this->getAllFields($p)); 377 | 378 | // get children pages 379 | if ( 380 | $p->child->id && 381 | $this->conf['children'] && 382 | $isChildrenAllowed 383 | ) { 384 | $children = $isSortedBy ? $p->children('sort='.$isSortedBy) : $p->children(); 385 | foreach ($children as $i => $pChild) { 386 | $result['children'][$i] = $this->getCoreFields($pChild); 387 | $result['children'][$i] = array_merge($result['children'][$i], $this->getAllFields($pChild)); 388 | } 389 | } 390 | } 391 | 392 | // get listing 393 | if ($isListingAllowed && $p->child->id) { 394 | $children = $isSortedBy ? $children('sort='.$isSortedBy) : $p->children(); 395 | if ($includeParents) { 396 | $children->prepend($p); 397 | } 398 | foreach ($children as $i => $pChild) { 399 | $result[$i] = $this->getCoreFields($pChild); 400 | $result[$i] = array_merge($result[$i], $this->getAllFields($pChild)); 401 | } 402 | } 403 | 404 | return $result; 405 | } 406 | } 407 | -------------------------------------------------------------------------------- /site-processvue/templates/inc/rest.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Some portions of code are based on the Lime Project 8 | * https://github.com/aheinze/Lime/ 9 | * Copyright (c) 2014 Artur Heinze 10 | * 11 | * Permission is hereby granted, free of charge, to any person obtaining a copy 12 | * of this software and associated documentation files (the "Software"), to deal 13 | * in the Software without restriction, including without limitation the rights 14 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 15 | * copies of the Software, and to permit persons to whom the Software is furnished 16 | * to do so, subject to the following conditions: 17 | * 18 | * The above copyright notice and this permission notice shall be included in all 19 | * copies or substantial portions of the Software. 20 | * 21 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 26 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 27 | * THE SOFTWARE. 28 | */ 29 | 30 | namespace Rest; 31 | 32 | class Header { 33 | public static $statusCodes = array( 34 | // Informational 1xx 35 | 100 => 'Continue', 36 | 101 => 'Switching Protocols', 37 | // Successful 2xx 38 | 200 => 'OK', 39 | 201 => 'Created', 40 | 202 => 'Accepted', 41 | 203 => 'Non-Authoritative Information', 42 | 204 => 'No Content', 43 | 205 => 'Reset Content', 44 | 206 => 'Partial Content', 45 | // Redirection 3xx 46 | 300 => 'Multiple Choices', 47 | 301 => 'Moved Permanently', 48 | 302 => 'Found', 49 | 303 => 'See Other', 50 | 304 => 'Not Modified', 51 | 305 => 'Use Proxy', 52 | 307 => 'Temporary Redirect', 53 | // Client Error 4xx 54 | 400 => 'Bad Request', 55 | 401 => 'Unauthorized', 56 | 402 => 'Payment Required', 57 | 403 => 'Forbidden', 58 | 404 => 'Not Found', 59 | 405 => 'Method Not Allowed', 60 | 406 => 'Not Acceptable', 61 | 407 => 'Proxy Authentication Required', 62 | 408 => 'Request Timeout', 63 | 409 => 'Conflict', 64 | 410 => 'Gone', 65 | 411 => 'Length Required', 66 | 412 => 'Precondition Failed', 67 | 413 => 'Request Entity Too Large', 68 | 414 => 'Request-URI Too Long', 69 | 415 => 'Unsupported Media Type', 70 | 416 => 'Request Range Not Satisfiable', 71 | 417 => 'Expectation Failed', 72 | // Server Error 5xx 73 | 500 => 'Internal Server Error', 74 | 501 => 'Not Implemented', 75 | 502 => 'Bad Gateway', 76 | 503 => 'Service Unavailable', 77 | 504 => 'Gateway Timeout', 78 | 505 => 'HTTP Version Not Supported' 79 | ); 80 | 81 | /* mime types */ 82 | public static $mimeTypes = array( 83 | 'asc' => 'text/plain', 84 | 'au' => 'audio/basic', 85 | 'avi' => 'video/x-msvideo', 86 | 'bin' => 'application/octet-stream', 87 | 'class' => 'application/octet-stream', 88 | 'css' => 'text/css', 89 | 'csv' => 'application/vnd.ms-excel', 90 | 'doc' => 'application/msword', 91 | 'dll' => 'application/octet-stream', 92 | 'dvi' => 'application/x-dvi', 93 | 'exe' => 'application/octet-stream', 94 | 'htm' => 'text/html', 95 | 'html' => 'text/html', 96 | 'json' => 'application/json', 97 | 'js' => 'application/x-javascript', 98 | 'txt' => 'text/plain', 99 | 'bmp' => 'image/bmp', 100 | 'rss' => 'application/rss+xml', 101 | 'atom' => 'application/atom+xml', 102 | 'gif' => 'image/gif', 103 | 'jpeg' => 'image/jpeg', 104 | 'jpg' => 'image/jpeg', 105 | 'jpe' => 'image/jpeg', 106 | 'png' => 'image/png', 107 | 'ico' => 'image/vnd.microsoft.icon', 108 | 'mpeg' => 'video/mpeg', 109 | 'mpg' => 'video/mpeg', 110 | 'mpe' => 'video/mpeg', 111 | 'qt' => 'video/quicktime', 112 | 'mov' => 'video/quicktime', 113 | 'wmv' => 'video/x-ms-wmv', 114 | 'mp2' => 'audio/mpeg', 115 | 'mp3' => 'audio/mpeg', 116 | 'rm' => 'audio/x-pn-realaudio', 117 | 'ram' => 'audio/x-pn-realaudio', 118 | 'rpm' => 'audio/x-pn-realaudio-plugin', 119 | 'ra' => 'audio/x-realaudio', 120 | 'wav' => 'audio/x-wav', 121 | 'zip' => 'application/zip', 122 | 'pdf' => 'application/pdf', 123 | 'xls' => 'application/vnd.ms-excel', 124 | 'ppt' => 'application/vnd.ms-powerpoint', 125 | 'wbxml' => 'application/vnd.wap.wbxml', 126 | 'wmlc' => 'application/vnd.wap.wmlc', 127 | 'wmlsc' => 'application/vnd.wap.wmlscriptc', 128 | 'spl' => 'application/x-futuresplash', 129 | 'gtar' => 'application/x-gtar', 130 | 'gzip' => 'application/x-gzip', 131 | 'swf' => 'application/x-shockwave-flash', 132 | 'tar' => 'application/x-tar', 133 | 'xhtml' => 'application/xhtml+xml', 134 | 'snd' => 'audio/basic', 135 | 'midi' => 'audio/midi', 136 | 'mid' => 'audio/midi', 137 | 'm3u' => 'audio/x-mpegurl', 138 | 'tiff' => 'image/tiff', 139 | 'tif' => 'image/tiff', 140 | 'rtf' => 'text/rtf', 141 | 'wml' => 'text/vnd.wap.wml', 142 | 'wmls' => 'text/vnd.wap.wmlscript', 143 | 'xsl' => 'text/xml', 144 | 'xml' => 'text/xml' 145 | ); 146 | 147 | public static function mimeType($_mime) { 148 | $mime = Header::$mimeTypes[$_mime]; 149 | $mime = "Content-Type: $mime"; 150 | return $mime; 151 | } 152 | } 153 | 154 | class Request { 155 | public static $types = array 156 | ( 157 | 'get', 158 | 'post', 159 | 'put', 160 | 'patch', 161 | 'delete', 162 | 'options', 163 | 'ajax', 164 | 'mobile', 165 | 'ssl' 166 | ); 167 | 168 | /** 169 | * Request helper function 170 | * @param String $type 171 | * @return Boolean 172 | */ 173 | public static function is($type){ 174 | 175 | switch(strtolower($type)){ 176 | case 'ajax': 177 | return ( 178 | (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) || 179 | (isset($_SERVER["CONTENT_TYPE"]) && stripos($_SERVER["CONTENT_TYPE"],'application/json')!==false) || 180 | (isset($_SERVER["HTTP_CONTENT_TYPE"]) && stripos($_SERVER["HTTP_CONTENT_TYPE"],'application/json')!==false) 181 | ); 182 | break; 183 | 184 | case 'mobile': 185 | 186 | $mobileDevices = array( 187 | "midp","240x320","blackberry","netfront","nokia","panasonic","portalmmm","sharp","sie-","sonyericsson", 188 | "symbian","windows ce","benq","mda","mot-","opera mini","philips","pocket pc","sagem","samsung", 189 | "sda","sgh-","vodafone","xda","iphone", "ipod","android" 190 | ); 191 | 192 | return preg_match('/(' . implode('|', $mobileDevices). ')/i',strtolower($_SERVER['HTTP_USER_AGENT'])); 193 | break; 194 | 195 | case 'post': 196 | return (strtolower($_SERVER['REQUEST_METHOD']) == 'post'); 197 | break; 198 | 199 | case 'get': 200 | return (strtolower($_SERVER['REQUEST_METHOD']) == 'get'); 201 | break; 202 | 203 | case 'put': 204 | return (strtolower($_SERVER['REQUEST_METHOD']) == 'put'); 205 | break; 206 | 207 | case 'options': 208 | return (strtolower($_SERVER['REQUEST_METHOD']) == 'options'); 209 | break; 210 | 211 | case 'patch': 212 | return (strtolower($_SERVER['REQUEST_METHOD']) == 'patch'); 213 | break; 214 | 215 | case 'delete': 216 | return (strtolower($_SERVER['REQUEST_METHOD']) == 'delete'); 217 | break; 218 | 219 | case 'ssl': 220 | return (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'); 221 | break; 222 | } 223 | 224 | return false; 225 | } 226 | 227 | /** 228 | * Get current request type 229 | * @return String 230 | */ 231 | public static function currentType() { 232 | $currentType = null; 233 | foreach(Request::$types as $type) { 234 | if(Request::is($type)){ 235 | $currentType = $type; 236 | break; 237 | } 238 | } 239 | 240 | return $currentType; 241 | } 242 | 243 | /** 244 | * Get request variables 245 | * @param String $index 246 | * @param Misc $default 247 | * @param Array $source 248 | * @return Misc 249 | */ 250 | public static function params($index=null, $default = null, $source = null) { 251 | 252 | // check for php://input and merge with $_REQUEST 253 | if ((isset($_SERVER["CONTENT_TYPE"]) && 254 | stripos($_SERVER["CONTENT_TYPE"],'application/json') !== false) || 255 | (isset($_SERVER["HTTP_CONTENT_TYPE"]) && 256 | stripos($_SERVER["HTTP_CONTENT_TYPE"],'application/json') !== false) // PHP build in Webserver !? 257 | ) { 258 | if ($json = json_decode(@file_get_contents('php://input'), true)) { 259 | $_REQUEST = array_merge($_REQUEST, $json); 260 | } 261 | } 262 | 263 | $src = $source ? $source : $_REQUEST; 264 | 265 | //Basic HTTP Authetication 266 | if (isset($_SERVER['PHP_AUTH_USER'])) { 267 | $credentials = [ 268 | "uname" => $_SERVER['PHP_AUTH_USER'], 269 | "upass" => $_SERVER['PHP_AUTH_PW'] 270 | ]; 271 | $src = array_merge($src, $credentials); 272 | } 273 | 274 | return REQUEST::fetch_from_array($src, $index, $default); 275 | } 276 | 277 | /** 278 | * Helper function for params method 279 | */ 280 | public static function fetch_from_array(&$array, $index=null, $default = null) { 281 | 282 | if (is_null($index)) { 283 | 284 | return $array; 285 | 286 | } elseif (isset($array[$index])) { 287 | 288 | return $array[$index]; 289 | 290 | } elseif (strpos($index, '/')) { 291 | 292 | $keys = explode('/', $index); 293 | 294 | switch(count($keys)){ 295 | 296 | case 1: 297 | if (isset($array[$keys[0]])){ 298 | return $array[$keys[0]]; 299 | } 300 | break; 301 | 302 | case 2: 303 | if (isset($array[$keys[0]][$keys[1]])){ 304 | return $array[$keys[0]][$keys[1]]; 305 | } 306 | break; 307 | 308 | case 3: 309 | if (isset($array[$keys[0]][$keys[1]][$keys[2]])){ 310 | return $array[$keys[0]][$keys[1]][$keys[2]]; 311 | } 312 | break; 313 | 314 | case 4: 315 | if (isset($array[$keys[0]][$keys[1]][$keys[2]][$keys[3]])){ 316 | return $array[$keys[0]][$keys[1]][$keys[2]][$keys[3]]; 317 | } 318 | break; 319 | } 320 | } 321 | 322 | return $default; 323 | } 324 | } 325 | 326 | /* end of file templates/helpers/Rest.php */ 327 | -------------------------------------------------------------------------------- /site-processvue/templates/nav.php: -------------------------------------------------------------------------------- 1 | get("/"); 11 | $p = null; 12 | $urlSegmentsLength = count($input->urlSegments()); 13 | 14 | if ($urlSegmentsLength) { 15 | $segments = implode($input->urlSegments(), '/'); 16 | $p = $pages->get('/'.$segments.'/'); 17 | } else { 18 | // get home if there are no segments 19 | $p = $pages->get('/'); 20 | } 21 | 22 | if ($p->id) { 23 | // page exist, get fields 24 | $pageFields = new PageFields($p, [ 25 | 'queries' => $input->get->getArray(), 26 | 'fld_include_all' => false 27 | ]); 28 | $response = $pageFields->getPageFields($p); 29 | } else { 30 | // page does not exist 31 | $response['error'] = 'The page does not exist'; 32 | $statuscode = 404; // Not Found (see /site/templates/inc/Rest.php) 33 | } 34 | } else { 35 | // Not a get request 36 | $response['error'] = 'Wrong request'; 37 | $statuscode = 404; // Not Found (see /site/templates/inc/Rest.php) 38 | } 39 | 40 | // enable debug mode 41 | if ($input->get('debug') && $config->debug) return; 42 | 43 | // render the response and body 44 | http_response_code($statuscode); 45 | header(Rest\Header::mimeType('json')); 46 | 47 | // output everything 48 | echo json_encode($response); 49 | -------------------------------------------------------------------------------- /site-processvue/templates/pages.php: -------------------------------------------------------------------------------- 1 | urlSegments()); 13 | 14 | if ($urlSegmentsLength) { 15 | $segments = implode($input->urlSegments(), '/'); 16 | $p = $pages->get('/'.$segments.'/'); 17 | } else { 18 | // get home if there are no segments 19 | $p = $pages->get('/'); 20 | } 21 | 22 | if ($p->id) { 23 | // page exist, get fields 24 | $pageFields = new PageFields($p, [ 25 | 'queries' => $input->get->getArray() 26 | ]); 27 | $response = $pageFields->getPageFields($p); 28 | } else { 29 | // page does not exist 30 | $response['error'] = 'The page does not exist'; 31 | $statuscode = 404; // Not Found (see /site/templates/inc/Rest.php) 32 | } 33 | } else { 34 | // Not a get request 35 | $response['error'] = 'Wrong request'; 36 | $statuscode = 404; // Not Found (see /site/templates/inc/Rest.php) 37 | } 38 | 39 | // enable debug mode 40 | if ($input->get('debug') && $config->debug) return; 41 | 42 | // render the response and body 43 | http_response_code($statuscode); 44 | header(Rest\Header::mimeType('json')); 45 | 46 | // output everything 47 | echo json_encode($response); 48 | --------------------------------------------------------------------------------