1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-23 14:56:51 +02:00

621 Commits

Author SHA1 Message Date
Ryan Cramer
fdb5a19941 Bump version to 3.0.226 2023-08-25 14:32:50 -04:00
Ryan Cramer
571c2dd1c2 Minor CSS adjustment for InputfieldRepeater, fixes issue where wrong background color could appear on depth-enabled repeater in fieldset 2023-08-25 08:44:08 -04:00
Ryan Cramer
d61436256e Replace PHP 8.2 deprecated mb_convert_encoding() call in Sanitizer 2023-08-25 08:43:35 -04:00
Ryan Cramer
92eef72fc1 Fix issue processwire/processwire-issues#1803 2023-08-25 08:37:50 -04:00
Ryan Cramer
8292e7d8f0 Update for processwire/processwire-issues#1467 2023-08-22 11:13:02 -04:00
Ryan Cramer
359c048862 Fix issue processwire/processwire-issues#1801 2023-08-22 11:05:45 -04:00
Ryan Cramer
088cd57160 Fix issue processwire/processwire-issues#1802 2023-08-22 09:49:16 -04:00
Ryan Cramer
af80005a9c Bump version to 3.0.225 2023-08-18 15:00:22 -04:00
matjazpotocnik
a8894391a2 Fix issue processwire/processwire-issues#1571 which adds support for adding _END fieldset item with ProcessTemplateFieldCreator 2023-08-18 09:00:47 -04:00
Ryan Cramer
754fb2b1fd Add Page::matchesDatabase() method to accompany existing matches() method but query the database rather than in memory 2023-08-17 12:09:01 -04:00
Ryan Cramer
1ff6f147f8 Various minor unrelated updates 2023-08-17 11:58:59 -04:00
matjazpotocnik
efbe13ae9d Fix issue processwire/processwire-issues#1644 2023-08-17 10:57:30 -04:00
Ryan Cramer
3ce686d1e3 Update for processwire/processwire-issues#1730
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2023-08-17 10:29:59 -04:00
Ryan Cramer
db88618e2d Fix issue processwire/processwire-issues#1730
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2023-08-17 10:28:18 -04:00
Ryan Cramer
0efd5eec99 Fix issue processwire/processwire-issues#1462 2023-08-17 08:56:54 -04:00
Ryan Cramer
a0200795a5 Fix issue processwire/processwire-issues#901 2023-08-11 11:16:27 -04:00
Ryan Cramer
27fd0bf93e Fix issue processwire/processwire-issues#1201 2023-08-11 10:54:25 -04:00
Ryan Cramer
5a50ca01d8 Update for processwire/processwire-issues#1791 2023-08-07 09:46:53 -04:00
Ryan Cramer
0cdba2e307 Update for processwire/processwire-issues#1701 2023-08-07 09:23:32 -04:00
Ryan Cramer
7afe6fa9cf Bump version to 3.0.224 2023-08-04 14:34:36 -04:00
Ryan Cramer
0f8615bf88 phpdoc typo fix in Selectors.php 2023-08-04 11:46:57 -04:00
Ryan Cramer
044175df04 Fix issue processwire/processwire-issues#1492 2023-08-04 11:39:52 -04:00
Ryan Cramer
d6a0df74d6 Add wirePageId() and pageId() functions per processwire/processwire-issues#896 2023-08-04 10:33:50 -04:00
Ryan Cramer
13114afe08 Update Page::matches() to perform comparison with database rather than in-memory per processwire/processwire-issues#1701 2023-08-04 10:30:56 -04:00
Ryan Cramer
6266d1d86b PHP 8.1+ updates per processwire/processwire-issues#1664 2023-08-04 08:35:33 -04:00
Ryan Cramer
b7c232972e Fix issue processwire/processwire-issues#800 2023-08-03 10:58:05 -04:00
Ryan Cramer
3b5e1adb7d Update URLs for cache busting per processwire/processwire-issues#1518 2023-08-03 10:22:36 -04:00
Ryan Cramer
2f60f98992 Update to previous commit 2023-08-03 10:16:26 -04:00
Ryan Cramer
166ac1d703 Remove unused module names from wire/core/install.sql and site-blank/install/install.sql per processwire/processwire-issues#1307 2023-08-03 10:14:18 -04:00
Ryan Cramer
09300ebb96 Update PagesLoader::count() method to fully support selectors argument that is instanceof Selectors object 2023-08-02 10:14:46 -04:00
Ryan Cramer
223c0e79be Minor unrelated adjustments 2023-08-01 11:19:29 -04:00
Ryan Cramer
1271fa684a Add support for processwire/processwire-issues#1795 2023-08-01 11:15:30 -04:00
Ryan Cramer
df08140712 Update for processwire/processwire-issues#1793 2023-08-01 09:31:24 -04:00
Ryan Cramer
0245895d39 Fix issue processwire/processwire-issues#1793 2023-07-31 09:36:32 -04:00
Ryan Cramer
a2d5d62131 Fix issue processwire/processwire-issues#1792 2023-07-27 09:57:15 -04:00
Ryan Cramer
308ca91daf Fix issue processwire/processwire-issues#1762 2023-07-27 09:41:06 -04:00
Ryan Cramer
d6ca1232e2 Fix issue processwire/processwire-issues#1657 2023-07-27 09:24:40 -04:00
Ryan Cramer
b656b254e8 phpdoc update and hook example in wire/core/Users.php 2023-07-26 14:04:47 -04:00
Ryan Cramer
3dc00d6c15 Small update in InputfieldPageAutocomplete 2023-07-26 13:57:27 -04:00
Ryan Cramer
5e9a62e405 Add support for autocomplete in selecting page created user in page editor settings tab, related to processwire/processwire-issues#1318
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2023-07-26 13:54:17 -04:00
Ryan Cramer
838d4363bf Fix issue processwire/processwire-issues#1788 2023-07-26 11:16:53 -04:00
Ryan Cramer
b170dfec16 Updates for processwire/processwire-issues#1664 2023-07-25 09:37:57 -04:00
Ryan Cramer
e81da24679 Fix issue processwire/processwire-issues#1518 2023-07-25 09:34:57 -04:00
Ryan Cramer
c1a939be0c Fix issue processwire/processwire-issues#1790 2023-07-24 11:37:28 -04:00
Ryan Cramer
98aa3b2dab Bump version to 3.0.223 2023-07-21 15:18:41 -04:00
Ryan Cramer
cdba83f115 Update for processwire/processwire-issues#1443 2023-07-21 11:47:10 -04:00
Ryan Cramer
4c6c2b7c89 Fix issue processwire/processwire-issues#889 2023-07-21 11:05:27 -04:00
Ryan Cramer
3b1e349a4a Add 4 new hookable methods to ProcessLogin 2023-07-21 10:06:02 -04:00
Ryan Cramer
1c70f8b5e3 Improve InputfieldPageAutoComplete so that it can use more selector features for fewer limitations on what/how you can match pages. This is to support features requested in processwire/processwire-issues#550 2023-07-21 08:51:55 -04:00
Ryan Cramer
211dd04c81 Various improvements to ProcessPageSearch module, including support for search selectors that don't pass through user input, opening more search options (see next commit with autocomplete improvements, which uses it) 2023-07-21 08:49:35 -04:00
Ryan Cramer
879b482b6a Updates to user-admin-[role] permission logic in PagePermissions.module. This (and the previous 2 commits) hopefully also fixes processwire/processwire-issues#1737 2023-07-19 14:44:45 -04:00
Ryan Cramer
05cdf08949 Update Role and User classes to use new $permissions->getDelegatedMethod() where appropriate 2023-07-19 14:29:36 -04:00
Ryan Cramer
bf144afd65 Add new methods to Permissions class ($permissions API var): getPermissionNameIds(), getDelegatedPermission(), and getDelegatedMethod() 2023-07-19 14:26:44 -04:00
Ryan Cramer
f835d8ecf9 Update for processwire/processwire-issues#1568 - clone tags with fieldset_END fields, and suppress showing fieldset_END field lists unless system or advanced mode 2023-07-19 10:14:14 -04:00
Ryan Cramer
bde089afd3 Attempt fix for issue that could cause one autoload module requiring another to load in incorrect order under certain cases 2023-07-16 10:52:44 -04:00
Ryan Cramer
407ec4b11d Various minor code updates primarily in Process modules. 2023-07-14 14:44:45 -04:00
Ryan Cramer
b77d7f98c6 Add null argument option to InputfieldForm::getErrors(null) which adds support for clearing internal errors cache 2023-07-14 14:21:05 -04:00
Ryan Cramer
67b6f5817b Fix issue processwire/processwire-issues#1784 2023-07-12 16:23:53 -04:00
Ryan Cramer
fa5fae9c58 Update for processwire/processwire-issues#1780 2023-07-12 11:27:35 -04:00
Ryan Cramer
a53e809fc4 Add support for sorting by page path or URL to PageFinder (requires PagePaths module be installed) 2023-07-10 13:39:20 -04:00
Ryan Cramer
206cd8c280 Fix issue processwire/processwire-issues#1780 2023-07-10 10:11:21 -04:00
Ryan Cramer
3b0462271d Update for processwire/processwire-issues#1757 2023-07-10 09:33:27 -04:00
Ryan Cramer
e0239d0381 Bump version to 3.0.222 2023-07-07 15:04:02 -04:00
Ryan Cramer
1d295ad04b Make ProcessPageEditLink::getFilesPage() method hookable per @Toutouwai 2023-07-07 15:03:10 -04:00
Ryan Cramer
44e5a29e0c Fix issue where files listed in ProcessLanguageTranslator were unsorted 2023-07-07 15:00:58 -04:00
Ryan Cramer
47437ced0d Fix issue processwire/processwire-issues#1403 2023-07-07 14:45:29 -04:00
Ryan Cramer
20d5016017 Minor updates in ProcessLogger, plus this should fix processwire/processwire-issues#1084 2023-07-07 14:43:35 -04:00
Ryan Cramer
203488bd4a Add support for conditional hooks that match by argument type. More details here: https://processwire.com/docs/modules/hooks/#conditional-hooks-by-type 2023-07-07 11:37:52 -04:00
Ryan Cramer
52ac627506 Fix issue in PageFrontEdit.js where trigger() was being called on non-jQuery element, converted to JS click() 2023-07-06 12:32:37 -04:00
Ryan Cramer
2759109de5 Fix issue processwire/processwire-issues#1777 2023-07-05 11:35:03 -04:00
Ryan Cramer
530a2c4ecd WireHttp upgrades and fixes from processwire/processwire-issues#1090 - the main upgrade is adding support for buffered download to the downloadFopen method. Also fixes cleanup issue when download method fails and a backup method takes over 2023-07-03 10:38:36 -04:00
Ryan Cramer
3f184f9c14 Add support for multi-language translatable months and days (full and abbreviated) to WireDateTime class. This is necessary in PHP 8.1+ since PHP dropped the strftime() function. This is also related to the request in processwire/processwire-issues#1774 2023-07-03 09:28:24 -04:00
Ryan Cramer
5169693f57 Fix issue processwire/processwire-issues#1776 2023-07-03 08:30:13 -04:00
Ryan Cramer
91184cefb3 Fix issue processwire/processwire-issues#1773 2023-06-30 10:10:48 -04:00
Ryan Cramer
834ddfba75 Add delete(), patch() and put() methods to WireHttp 2023-06-30 09:59:46 -04:00
Ryan Cramer
2349599aa8 Fix issue processwire/processwire-issues#1770 2023-06-29 15:10:43 -04:00
Ryan Cramer
19be4b3b90 Fix issue processwire/processwire-issues#1771 2023-06-29 13:56:55 -04:00
Ryan Cramer
6339410283 Fix issue processwire/processwire-issues#1769 2023-06-28 09:26:25 -04:00
Ryan Cramer
1749ba17ac Fix issue processwire/processwire-issues#1767 2023-06-28 09:14:22 -04:00
Ryan Cramer
c8e9b6c65a Fix issue processwire/processwire-issues#1766 2023-06-26 10:33:56 -04:00
Ryan Cramer
c049dd4f58 Fix issue processwire/processwire-issues#1768 2023-06-26 10:11:30 -04:00
Ryan Cramer
1830bf124b Fix issue in ProcessPageLister/ProcessPageListerPro where it wasn't allowing header click-to-sort on all columns where it was supported 2023-06-25 09:10:26 -04:00
Ryan Cramer
3fa65dfc83 Bump version to 3.0.221 2023-06-23 13:49:33 -04:00
Ryan Cramer
18d2fdf94a Update ProcessPageEditImageSelect to use proper HTML class name attributes for checkbox and radio buttons when used with AdminThemeUikit. Plus other minor code improvements 2023-06-23 13:47:34 -04:00
Ryan Cramer
d6ba21fcaf Attempt fix for processwire/processwire-issues#1760 2023-06-23 12:43:23 -04:00
Ryan Cramer
3e98166a2a Attempt fix for issue processwire/processwire-issues#1756 2023-06-23 11:32:25 -04:00
Ryan Cramer
a6795b61ce Add feature request processwire/processwire-issues#1757 which adds support for non-plural translations of 0 quantities in the _n('%d item', %d items', 0); translation function. To use, translate the file wire/modules/LanguageSupport/LanguageTranslator.php and edi the "Is zero (0) plural or singular?" setting at the top. 2023-06-23 11:03:44 -04:00
Ryan Cramer
a01b922efb Add support for InputfieldSelect and InputfieldRadios that can be specified in language translation comment, i.e. __('Red'); // Color to use for this language? options=[Red,Blue,Green] type=radios 2023-06-23 10:55:14 -04:00
Ryan Cramer
73ab10658c Fix issue processwire/processwire-issues#1761 2023-06-22 12:44:04 -04:00
Ryan Cramer
ead96474c6 Fix issue processwire/processwire-issues#1763 2023-06-22 11:40:23 -04:00
Ryan Cramer
d089e07a63 Attempt fix for processwire/processwire-issues#1764 2023-06-22 11:31:35 -04:00
Ryan Cramer
fc5b67508f Fix issue processwire/processwire-issues#1765 2023-06-22 10:44:41 -04:00
Ryan Cramer
f1c20282f6 Minor code updates in ProcessPageAdd 2023-06-16 12:16:24 -04:00
Ryan Cramer
9353a8ea43 Add PR #273 Make error messages translatable in ProcessPageAdd
Co-authored-by: jmartsch <jmartsch@gmail.com>
2023-06-16 11:59:11 -04:00
Ryan Cramer
3fd4073f34 Minor code improvements to PageTable, plus add PR #266
Co-authored-by: jmartsch <jmartsch@gmail.com>
2023-06-16 11:45:58 -04:00
Ryan Cramer
fde9c1c2e2 Fix issue processwire/processwire-issues#1755 2023-06-16 09:02:23 -04:00
Ryan Cramer
55ec568070 Fix issue processwire/processwire-issues#1753
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2023-06-15 09:11:29 -04:00
Ryan Cramer
0040345932 Fix issue processwire/processwire-issues#1751 2023-06-13 11:58:16 -04:00
Ryan Cramer
c8c5b46e77 Fix issue ryancramerdesign/InputfieldTinyMCE#20 TinyMCE when used with blank object properties in custom JSON settings 2023-06-13 11:39:36 -04:00
Ryan Cramer
dfcbb10f9d Bump version to 3.0.220 2023-06-09 15:28:28 -04:00
Ryan Cramer
b8da82d5c2 Fix issue processwire/processwire-issues#1738 2023-06-09 10:56:48 -04:00
Ryan Cramer
e59a44a83d Fix issue processwire/processwire-issues#1743 2023-06-08 16:42:34 -04:00
Ryan Cramer
16d0d77d4c Fix issue processwire/processwire-issues#1617 using suggestion from @BitPoet
Co-authored-by: BitPoet <BitPoet@users.noreply.github.com>
2023-06-08 16:31:52 -04:00
Ryan Cramer
2d790b6c64 Small fix to hookable saveModuleConfigData() in Modules.php 2023-06-08 15:27:45 -04:00
Ryan Cramer
6fe5c10dde Fix issue processwire/processwire-issues#1744 2023-06-07 12:47:01 -04:00
Ryan Cramer
bc3cd4615e Fix issue processwire/processwire-issues#1750 2023-06-07 12:40:28 -04:00
Ryan Cramer
3f14a29ff3 Fix issue processwire/processwire-issues#1664 ModulePlaceholder class mentioned by @designconcepts 2023-06-06 12:03:10 -04:00
Ryan Cramer
8129d4a6e1 Fix issue processwire/processwire-issues#1742 2023-06-06 09:43:37 -04:00
Ryan Cramer
176bd8eeac Minor updates in various classes 2023-06-05 13:35:04 -04:00
Ryan Cramer
aef78c9ca4 Fix issue processwire/processwire-issues#1747 2023-06-05 13:31:02 -04:00
Ryan Cramer
ac0239e5be Fix issue processwire/processwire-issues#1748 2023-06-05 13:25:45 -04:00
Ryan Cramer
50db3684fb Minor code updates in InputfieldSelector 2023-06-03 11:01:14 -04:00
Ryan Cramer
3b5bad2c58 Update in Modules to correct fatal error when upgrading from a much older version of ProcessWire 2023-06-03 10:31:39 -04:00
Ryan Cramer
0503a1bf68 Fix typo in Modules.php 2023-06-02 18:34:06 -04:00
Ryan Cramer
5f4da6e8f8 Bump version to 3.0.219 2023-06-02 14:55:00 -04:00
Ryan Cramer
3afdc531e0 Fix issue processwire/processwire-issues#1745 2023-06-02 14:54:21 -04:00
Ryan Cramer
e2179a6ec1 Major overhaul of Modules class, splitting it up into 6 other more focused classes 2023-06-02 14:53:12 -04:00
Ryan Cramer
02e3e0cd1b Add support for a WireCacheInterface::maintenance($obj) method as mentioned by @BitPoet 2023-05-30 15:28:03 -04:00
Ryan Cramer
f3a0b265ee Fix issue processwire/processwire-issues#1741 2023-05-30 13:45:00 -04:00
Ryan Cramer
8046f1989b Additional performance optimizations to Modules class, plus fix issue with some moduleInfo properties falling back to default value when they weren't supposed to 2023-05-30 12:02:16 -04:00
Ryan Cramer
caed81876e Bump version to 3.0.218 2023-05-26 13:50:45 -04:00
Ryan Cramer
ce06ffa496 Additional improvements to WireCache, WireCacheInterface and WireCacheDatabase 2023-05-26 13:35:30 -04:00
Ryan Cramer
0747c54ddf Update Modules class to use its own internal caches rather than using those from $cache API var. Now it only uses $cache as a backup. This means you can now safely omit the 'caches' table from DB exports, or you delete the caches table, and it'll get re-created etc. After upgrading to this version, you'll have to do a 'Modules > Refresh' before it'll start using its own caches. 2023-05-26 13:29:02 -04:00
Ryan Cramer
797d6c9b37 Fix typo in Modules.php that makes moduleInfo[versionStr] return 0.0.0 rather than correct version string 2023-05-22 16:06:05 -04:00
Ryan Cramer
d455ab71cb Add $pages->loader()->findCache() method - Find pages and cache the result for specified period of time. This is an experimental method that may find it's way to the public $pages API but is currently behind $pages->loader() while we experiment with it more and make sure it's worthwhile. 2023-05-19 14:54:04 -04:00
Ryan Cramer
481f6bbbdb Various improvements to the Modules class for improved module loading and boot time performance 2023-05-19 11:18:55 -04:00
Ryan Cramer
6981e3009e Major refactor of WireCache which now isolates the cache getting/saving/deleting to a separate module/class implementing the WireCacheInterface interface. Eventually this will enable one to modify/replace where and how PW's cache data is stored. For instance, file system, Redis, Memcache, etc. The default class is WireCacheDatabase which stores cache data in the database, as WireCache did prior to this update. 2023-05-19 11:12:49 -04:00
Ryan Cramer
a76e54193e Fix issue processwire/processwire-issues#1735 2023-05-18 11:50:29 -04:00
Ryan Cramer
3598fb113b Fix issue processwire/processwire-issues#1732 2023-05-18 09:41:08 -04:00
Ryan Cramer
47086751d2 Bump version to 3.0.217 2023-05-05 13:00:14 -04:00
Ryan Cramer
013f9ebade Add an additional check to WireDatabaseBackup so that a non-readable DB file doesn't cause a fatal exception 2023-05-05 08:53:15 -04:00
Ryan Cramer
6661f0490a Update ProcessPageEditLink by adding a ___buildForm() method so that one can manipulate what the "edit link" form shows by hooking that new method 2023-05-05 08:51:44 -04:00
Ryan Cramer
daeb6d4087 Fix jQuery 3.x issue where modal dialog buttons weren't displaying when launched from asmSelect edit links 2023-05-05 08:50:13 -04:00
Ryan Cramer
3b2c456c1a Fix issue processwire/processwire-issues#1729 2023-05-05 08:45:32 -04:00
Ryan Cramer
f2a72ad8ea Fix issue processwire/processwire-issues#1716 2023-05-03 14:05:58 -04:00
Ryan Cramer
a9b656c45e Minor adjustments in MarkupFieldtype class 2023-05-03 11:07:00 -04:00
Ryan Cramer
9bfce99352 Fix issue processwire/processwire-issues#1719 2023-05-03 11:03:34 -04:00
Ryan Cramer
f6c2ad6ed5 Fix issue processwire/processwire-issues#1726 2023-05-03 10:31:10 -04:00
Ryan Cramer
3658efd3af Fix issue processwire/processwire-issues#1727 2023-05-03 10:21:55 -04:00
netcarver
580641d69f Add PR #270 - fix missing apostrophe in a phpdoc section of WireInput 2023-05-02 10:06:58 -04:00
Ryan Cramer
d832982228 Add PR #269 for support of overriding browser title in AdminThemeFramework class
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2023-05-02 10:02:08 -04:00
Ryan Cramer
908479d786 Fix issue where Inputfield showIf condition that matches a single period "." was not working correctly due to jQuery adjustments from a couple weeks ago 2023-05-02 09:08:59 -04:00
Ryan Cramer
2fcb2f4bda Fix issue in Lister where displaying File (single) > Count displayed blank rather than 0 or 1. 2023-05-01 08:30:33 -04:00
Ryan Cramer
28eb798c9c Fix issue processwire/processwire-issues#1720 2023-04-25 10:46:06 -04:00
Ryan Cramer
665a462501 Bump version to 3.0.216 plus some other minor updates 2023-04-21 14:48:00 -04:00
Ryan Cramer
0d2346baab Update Vex version to to 4.1.0 2023-04-21 10:50:31 -04:00
Ryan Cramer
749d64a756 Upgrade jQuery Magnific popup version to 1.1.0 and modify for jQuery 3.x deprecations
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2023-04-21 10:32:45 -04:00
Ryan Cramer
3052f0c77d Update jQuery UI timepicker addon to latest version
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2023-04-21 09:33:53 -04:00
Ryan Cramer
3d6278e23d Additional .js file updates for jQuery 3.6 2023-04-21 09:16:12 -04:00
Ryan Cramer
3fc952f674 Other minor unrelated updates 2023-04-20 12:24:40 -04:00
Ryan Cramer
3430610092 Add new $modules->getModuleInstallUrl('ModuleName'); method that returns the URL to install given module name 2023-04-20 11:02:40 -04:00
Ryan Cramer
440f649e39 Minor updates to site-blank profile, primarily to replace default rich-text editor with TinyMCE for new site-blank installs 2023-04-20 11:01:51 -04:00
Ryan Cramer
e307eab3f3 Add InputfieldTinyMCE to core 2023-04-20 10:31:59 -04:00
Ryan Cramer
844a45ff2f Upgrade jQuery TableSorter version to 2.31.3
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2023-04-19 10:11:34 -04:00
Ryan Cramer
1d7f029fa5 Update many other .js files for jQuery 3.x deprecations 2023-04-19 10:08:54 -04:00
Ryan Cramer
3f2488de7d Fix inputfields.js JS issue mentioned in forum via @matjazpotocnik
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2023-04-16 09:58:51 -04:00
Ryan Cramer
318bc0aba3 Bump version to 3.0.215 2023-04-14 15:54:35 -04:00
Ryan Cramer
1e60c69b97 Additional .js file updates for newer jQuery 2023-04-14 15:15:22 -04:00
Ryan Cramer
bd0253477e Update lots of core .js files for jQuery 3.6.4 support 2023-04-14 11:54:28 -04:00
Ryan Cramer
f11843562a Add support for latest version of jQuery UI (v1.13.2). This is used when $config->debug = 'dev'; in /site/config.php. Expect occasional JS/output issues when using this latest version of jQuery UI. We'll be upgrading the default core version to this over a period of time, which is why it's only used if $config->debug=='dev'; at present. 2023-04-14 09:25:25 -04:00
Ryan Cramer
885e94733a Update core jQuery versions to 1.12.4 and 3.6.4 (dev/latest). Note the dev version is used in the admin when $config->debug='dev'; 2023-04-13 09:49:21 -04:00
Ryan Cramer
0d18728523 Update InputfieldPage to support dynamic page properties in selector when used without FieldtypePage 2023-04-10 10:04:22 -04:00
Ryan Cramer
f4a05789f1 Attempt fix for issue #1714, plus a couple other minor unrelated class code improvements that were already in the queue 2023-04-07 09:34:18 -04:00
Ryan Cramer
de8307a2a9 Add method to MarkupAdminDataTable for specifying that a particular column is not sortable in an otherwise sortable table 2023-03-31 11:08:35 -04:00
Ryan Cramer
4f75a7e81c Minor code updates for various core classes 2023-03-31 11:06:33 -04:00
Ryan Cramer
57a9d224de Minor code improvements in ProcessPageList module files 2023-03-31 10:18:54 -04:00
Ryan Cramer
dad712ebb2 Updated PaginatedArray::getTotal() method to return the count() quantity when no total has been set (previously it returned 0 if not set) 2023-03-31 09:42:26 -04:00
Ryan Cramer
134edd9445 Fix issue processwire/processwire-issues#1713 2023-03-31 09:05:32 -04:00
Ryan Cramer
7352d1d7f3 Fix issue processwire/processwire-issues#1712 2023-03-30 09:28:24 -04:00
Ryan Cramer
371ea35036 Fix issue processwire/processwire-issues#1711 2023-03-30 08:46:17 -04:00
Ryan Cramer
5c23e85a79 Fix issue processwire/processwire-issues#1705
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2023-03-30 07:47:35 -04:00
Ryan Cramer
b7bec30fb7 Minor adjustment to preparation of table + column helper in WireDatabasePDO 2023-03-24 13:12:56 -04:00
Ryan Cramer
43aa000f02 Fix issue processwire/processwire-issues#1709 2023-03-24 11:33:10 -04:00
Ryan Cramer
16be65c454 Correct issue with all logs returning same mtime and size in ProcessLogger 2023-03-24 10:59:22 -04:00
Ryan Cramer
f7ee00d785 Fix issue with WireLog::getLogs() returning regular PHP array rather than associative array indexed by log name 2023-03-22 14:29:59 -04:00
Ryan Cramer
547fb4cf71 Bump version to 3.0.214 2023-03-17 14:46:13 -04:00
Ryan Cramer
504dd173a1 Minor code improvements to MarkupQA class 2023-03-17 14:43:43 -04:00
Ryan Cramer
e36742528f Fix issue processwire/processwire-issues#1703 PageFrontEdit and InputfieldTinyMCE 2023-03-17 12:15:51 -04:00
Ryan Cramer
3af565ccc3 Add a new $files->size($path) method that returns the size (bytes) of the given $path (file or directory). When given a directory, it returns the combined size of all files in the directory, recursively. 2023-03-17 09:41:05 -04:00
Ryan Cramer
b41fc7feff Minor improvements to WireDatabaseBackup class 2023-03-17 09:40:28 -04:00
Ryan Cramer
4960d8f891 Improve documentation for $session->close(); method, explaining in detail when you might use the method. 2023-03-17 09:39:08 -04:00
Ryan Cramer
f2a1ebb7b4 Various improvements to FileLog and WireLog classes. Plus add new deleteAll() and pruneAll() methods to WireLog class. 2023-03-17 09:37:33 -04:00
Ryan Cramer
7021347dec Move logic for wireBytesStr() function into WireNumberTools class bytesToStr() method, while also making improvements to the method. Also add a strTobytes() method that does the opposite of bytesToStr. This also incorporates the addition of terabytes support submitted in another PR from @matjazpotocnik. 2023-03-10 13:03:30 -05:00
Ryan Cramer
42e56c5f3e Add PR #260 which makes improvements to MarkupPagerNav pagination
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2023-03-09 11:14:53 -05:00
netcarver
edcfa915d8 Add PR #262 - Fix potentially missed else conditionals 2023-03-09 10:26:06 -05:00
chriswthomson
dafceffc6f Add PR #261 - Added page-edit-redirects optional permission 2023-03-09 10:17:41 -05:00
Ryan Cramer
fb980f24c7 Additional update to previous commit that prevents field_repeater.count=0 from matching any pages that don't have field_repeater, even if template not specified in the selector. 2023-03-09 09:21:54 -05:00
Ryan Cramer
4f00c1f6f1 Add pages.find selector support for matching repeaters with no row present in field_repeater table. Examples: repeater_field.count=0, repeater_field.count<2, repeater_field.count!=1, repeater_field.count>=0, etc. Previously these would only match if the page having the repeater field had been saved at least once since the repeater field was added (and thus it had a DB row to match). Now it no longer needs a DB row present to match 0 count. Related to processwire/processwire-issues#1701 2023-03-09 09:02:14 -05:00
Ryan Cramer
09163d2a76 Attempt fix issue processwire/processwire-issues#1689 2023-03-08 11:40:09 -05:00
Ryan Cramer
1c8ac461f2 Fix issue processwire/processwire-issues#1697 2023-03-08 11:02:01 -05:00
Ryan Cramer
bd6fe70347 Fix issue processwire/processwire-issues#1699 2023-03-08 10:22:30 -05:00
Ryan Cramer
592a443bf1 Fix issue in InputfieldSelect where non-default language label for optional "Please select" label was not translated when options are added using a newline-separated string. 2023-03-08 07:59:02 -05:00
Ryan Cramer
d2cde11e4d Bump version to 3.0.213 2023-02-24 14:06:06 -05:00
Ryan Cramer
2b47a39950 Add a new WireNumberTools core class. More will be added later, but this class starts with one method for unique number/ID generation. This is useful for generating unique IDs for things that may not already have them, and ensuring that the ID remains unique for the lifetime of the installation. 2023-02-24 10:23:23 -05:00
Ryan Cramer
80f700096a Add support for Fieldtype::getFieldSetups() to ProcessField. Also add some additional grouping logic to the field Type selection when creating new fields. In addition to the new optgroups shown, it also shows an optgroup for uninstalled Fieldtypes. 2023-02-24 10:20:22 -05:00
Ryan Cramer
5855c8c8b6 Implement new getFieldSetups() method in these Fieldtypes: Datetime, File, Image, Options, Page, and Textarea. 2023-02-24 10:19:32 -05:00
Ryan Cramer
b3913a8791 Add a new hookable Fieldtype::___getFieldSetups() that lets any Fieldtype specify different configurations available when creating new fields. These configurations will be selectable when creating a new field in the admin, or when setting the $field->type = 'FieldtypeName.setupName"; 2023-02-24 10:15:05 -05:00
Ryan Cramer
91f4b7cd6e Bump version to 3.0.212 2023-02-17 10:43:54 -05:00
Ryan Cramer
5a4ac84301 Additional updates for ProcessPageEditLink module 2023-02-17 09:45:52 -05:00
Ryan Cramer
7fa8fd21f0 Add new uploadName() method/property to Pagefile/Pageimage that returns original unsanitized uploaded filename. This works only for files uploaded following this commit, since we didn't previously record the info. This is to answer the feature request in processwire/processwire-requests#56 and this uploadName idea was suggested by @BernhardBaumrock 2023-02-17 08:52:52 -05:00
Ryan Cramer
a716232172 Add feature request processwire/processwire-requests#480 to support other file extensions for translatable files in ProcessLanguageTranslator.module as a module config setting 2023-02-16 09:21:53 -05:00
Ryan Cramer
b155596089 Add 2 new methods to $sanitizer: htmlClass() and htmlClasses(), for sanitizing HTML class attribute values. 2023-02-15 10:26:11 -05:00
Ryan Cramer
a29da160af Upgrades to ProcessPageEditLink with most notable addition being support for using link classes specified in the TinyMCE/CKEditor rather having to also add them to the ProcessPageEditLink module configuration 2023-02-15 10:22:50 -05:00
Ryan Cramer
d272fc9b09 Updates to InputfieldEmail that were supposed to be in the previous commit 2023-02-15 08:33:59 -05:00
Ryan Cramer
1a633a74ae Add support for IDN email and UTF-8 local-part emails to InputfieldEmail per processwire/processwire-issues#1680 and PR #259
Co-authored-by: poljpocket <poljpocket@gmail.com>
2023-02-14 11:52:20 -05:00
Ryan Cramer
104c1cddbe Add feature request processwire/processwire-requests#479 2023-02-14 11:29:57 -05:00
Ryan Cramer
c3b9c72df9 Additional updates for processwire/processwire-issues#1467 2023-02-14 09:28:03 -05:00
Ryan Cramer
ff1ba95e37 Fix issue processwire/processwire-issues#1687 2023-02-14 09:00:21 -05:00
Ryan Cramer
a1a72e5ca3 Fix issue processwire/processwire-issues#1684 2023-02-14 08:57:09 -05:00
Ryan Cramer
0f6cd3c148 Add a session cache for column options, optimization in ProcessPageLister 2023-02-09 13:55:23 -05:00
Ryan Cramer
792eff6d41 Fix issue processwire/processwire-issues#1683 2023-02-09 11:56:29 -05:00
Ryan Cramer
b289cb03aa Update FieldtypeText to automatically add "HTML Entity Encoder" textformatter to newly created text fields (and descending types). Also update it to add warning when editing an existing field and it allows HTML in formatted output, and we aren't sure that's intended. Lastly, update FieldtypeTextarea to identify when the HTML Entity Encoder has been added to a field where HTML is clearly intended and warn the user that they should remove that from the Text formatters. (This is necessary since it may have been automatically added when the field was created.) 2023-02-09 10:49:06 -05:00
Ryan Cramer
1171241f5d Add new Fieldtype::saveFieldReady(Field $field) hook that is called right before a Field object is about to be saved. For newly created fields, the given $field will have $field->id==0 2023-02-09 09:54:28 -05:00
Ryan Cramer
e86eb7fcf8 Code improvements to ProcessPageEdit link module, plus add feature request processwire/processwire-requests#477 2023-02-03 14:00:31 -05:00
Ryan Cramer
b1313438ea Add PR #257 which replaces deprecated utf8_encode() with mb_convert_encoding() in PWPNG.php
Co-authored-by: jnessier <jnessier@users.noreply.github.com>
2023-02-03 10:13:34 -05:00
Ryan Cramer
a3fa73aec6 A few phpdoc updates in config.php 2023-02-03 09:29:04 -05:00
Ryan Cramer
0e709b148c Fix issue processwire/processwire-issues#1677 while also optimizing the debug mode detection code in ProcessWire.php 2023-02-03 09:27:11 -05:00
Ryan Cramer
36bb44e0a5 Fix issue processwire/processwire-issues#1675 2023-02-03 08:15:43 -05:00
Ryan Cramer
83dfad0199 Fix issue processwire/processwire-issues#1673 2023-02-03 08:07:21 -05:00
Ryan Cramer
d5c59e7f10 Fix issue processwire/processwire-issues#1678 2023-02-03 07:48:32 -05:00
Ryan Cramer
22250b483f Update so that requests containing a double slash at the end of the path get redirected to the single slash (or no-slash) version 2023-02-02 14:21:53 -05:00
Ryan Cramer
dd93de3f91 Add getAccessTemplate() method to RepeaterPage class to fix issue where some repeater permissions did not always inherit from the page that owns it, resulting in a case where files in repeater using 'secureFiles' option could be blocked when they should have been available. 2023-02-02 14:19:53 -05:00
Ryan Cramer
b74f6ca359 Attempt fix for processwire/processwire-issues#1459 and processwire/processwire-issues#1297 by rewriting code that builds pages_parents table and requires fewer changes to the table. This is called on page parent changes and clone operations. Needs further testing on installation with 1+ million pages to compare with previous and confirm performance improvement while maintaining same accuracy. 2023-02-02 13:54:51 -05:00
Ryan Cramer
7997a40e21 Minor code improvements 2023-01-27 15:41:30 -05:00
JanRomero
15e8a4d0e6 Add PR #236 - Fix sanitizer()->date() outputting NULL for valid but falsey values 2023-01-27 15:37:53 -05:00
Ryan Cramer
3e81b0fc4d Hookable upgrades to InputfieldImage, including the ability to add thumbnail icon actions, the ability to add new buttons in image-edit mode, and full working examples in the phpdoc, plus add an EXIF working example for the image actions dropdown. This originated from PR #251 which added a Download button. But I decided we didn't really need a download button (since you can right click on image in image-edit mode and "Save as...") and instead took the additions from the PR and turned it into a hookable feature so you can add any needed actions relatively easily, whether download or something else.
Co-authored-by: JanRomero <JanRomero@users.noreply.github.com>
2023-01-27 10:58:20 -05:00
Ryan Cramer
474e31b2be Fix issue processwire/processwire-issues#1671 2023-01-26 10:15:34 -05:00
Ryan Cramer
47f1e8a089 Fix issue processwire/processwire-issues#1670 plus minor optimizations to template importing 2023-01-26 09:55:19 -05:00
Ryan Cramer
2ebb0055be Fix issue processwire/processwire-issues#1669 2023-01-26 09:06:33 -05:00
Ryan Cramer
3094bd952a Fix issue with protected files not being available to user with access when file was in repeater and page owning repeater had no template file. 2023-01-26 08:01:41 -05:00
Ryan Cramer
bc2749b76c Bump version to 3.0.211 2023-01-20 15:52:21 -05:00
Ryan Cramer
cc99fc3c92 Minor optimizations to PagePermissions module 2023-01-20 09:22:49 -05:00
Ryan Cramer
df81fdfd0b Minor optimizations and improvements to WireUpload class 2023-01-20 09:21:29 -05:00
Ryan Cramer
a435e9291c Fix issue where sometimes language tabs were pre-selecting the wrong language, or showing a selected tab that didn't match the input language. This might also be related to and fix processwire/processwire-issues#1411 (?) 2023-01-20 09:18:50 -05:00
Ryan Cramer
0b79e38d9d Fix issue processwire/processwire-issues#1118 fixes to multi-language textarea and file/image fields when template has 'noLang' option set and user is editing page in non-default language 2023-01-20 09:10:33 -05:00
hiboudev
e34a190eeb Add PR #223 WireMail: Use 'fromName' from config 2023-01-19 13:10:21 -05:00
FlipZoomMedia
e0af32189e Add PR #224 which adds a config option to ProcessPageEditLink to disable the link text editing feature, thereby enabling support for links containing existing markup 2023-01-19 11:59:29 -05:00
FlipZoomMedia
47d7aabe28 Add PR #225 to convert some count() calls to wireCount() calls in ProcessPageEditImageSelect 2023-01-19 11:30:56 -05:00
pine3ree
4d27f2a9ea Add PR #229 to fix processwire/processwire-issues#1586 sub-issue 1 in InputfieldFile file replacement logic 2023-01-19 11:21:14 -05:00
pine3ree
a5869294fb Add PR #231 simpler arrayToCSV builder in MarkupPagerNav 2023-01-19 11:13:08 -05:00
Ryan Cramer
5fb52e9d1c Add suggestion from PR #237 to support custom rows definition for translatable fields and have it use that when the user is editing the translation text. To use, specify "rows=3" somewhere in the translation comment, i.e. __('text'); // rows=3. Also added support for type=name in the comment, that lets you specify what Inputfield type to use. To use, replace the name part with "text", "textarea", "email", etc. Or if you prefer you can use the full Inputfield name, i.e. InputfieldText, InputfieldTextarea, etc.
Co-authored-by: pine3ree <pine3ree@gmail.com>
2023-01-19 10:47:09 -05:00
pine3ree
4c71204073 Add PR #238 allow custom precision float to be returned from Pageimage::ratio() 2023-01-19 10:19:27 -05:00
pine3ree
a5a2532a7d Add PR #239 fix typo in /wire/config.php for sessionAllow property 2023-01-19 10:12:40 -05:00
Ryan Cramer
b1d735170f Add updates to MarkupRSS similar to those suggested in PR #252 which allows for the option of item descriptions to contain HTML. Applies only if itemDescriptionLength=0 2023-01-19 09:16:18 -05:00
Ryan Cramer
6e4cfb9d03 Combined two "opened" event handlers in InputfieldImage.js into one 2023-01-19 07:45:04 -05:00
Ryan Cramer
45c85311b3 Optimization to prevent overhead when PagesRaw.find() matches no pages 2023-01-19 07:43:02 -05:00
Ryan Cramer
2c65cbaa5b Fix issue processwire/processwire-issues#1465 for "InputfieldImage proportional thumbnails not displayed properly in some situations" by adding suggested fix by @Toutouwai 2023-01-13 10:06:34 -05:00
Ryan Cramer
a0b91e4472 Upgrade htmlpurifier to 4.15.0, should also resolve processwire/processwire-issues#1664 2023-01-13 08:54:36 -05:00
Ryan Cramer
11a16d5693 Fix issue processwire/processwire-issues#1663 2023-01-13 08:37:20 -05:00
Ryan Cramer
b12c7e9031 Refactor repeater.js to use data-name instead of ID as needed for module by @BernhardBaumrock and PR #253
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2023-01-13 08:24:52 -05:00
Ryan Cramer
6ff498f503 Happy New Year 2023-01-06 13:28:52 -05:00
Ryan Cramer
cc43f8e676 Bump version to 3.0.210, plus some minor documentation updates 2023-01-06 13:22:30 -05:00
Ryan Cramer
d45a6be4df Fix issue processwire/processwire-issues#1642 2023-01-06 08:50:10 -05:00
Ryan Cramer
834f3507d5 Fix issue processwire/processwire-issues#1662 2023-01-06 07:56:27 -05:00
Ryan Cramer
e7edfad27a Update for processwire/processwire-issues#1651 2023-01-04 10:38:42 -05:00
Ryan Cramer
68feea5d4e Fix issue processwire/processwire-issues#1661 2023-01-04 09:51:55 -05:00
Ryan Cramer
5ba7706747 Bump version to 3.0.209 2022-12-30 13:50:45 -05:00
Ryan Cramer
483b63d496 Various minor updates 2022-12-30 12:24:04 -05:00
Ryan Cramer
28bd6cdeec Minor code optimizations to InputfieldImage 2022-12-30 12:00:35 -05:00
Ryan Cramer
77c7e401da Attempt fix for processwire/processwire-issues#1600 2022-12-30 11:47:45 -05:00
Ryan Cramer
f57a07e15a Attempt fix for processwire/processwire-issues#1299 using @adrianbj suggestion 2022-12-29 12:20:20 -05:00
Ryan Cramer
1b76b92f8c Update CKEditor links per processwire/processwire-issues#797 @napengam 2022-12-29 10:13:09 -05:00
Ryan Cramer
90fc86f7cb Updates for processwire/processwire-issues#1588 2022-12-29 09:55:12 -05:00
Ryan Cramer
d6c54bda6a Attempt fix for processwire/processwire-issues#1467 maxFilesize PHP 8.2 notice per @matjazpotocnik 2022-12-29 09:31:59 -05:00
Ryan Cramer
b7e5d338f7 Fix issue processwire/processwire-issues#1651 2022-12-29 08:51:13 -05:00
Ryan Cramer
7e25c73728 Fix issue processwire/processwire-issues#1658 using solution suggested by @netcarver 2022-12-29 08:24:17 -05:00
Ryan Cramer
6018c1fbc4 Fix issue processwire/processwire-issues#1653 2022-12-09 13:35:50 -05:00
Ryan Cramer
adcee84904 Fix issue processwire/processwire-issues#1652 2022-12-09 13:16:04 -05:00
Ryan Cramer
a3cc73bd87 Bump version to 3.0.208, plus minor optimizations in FieldtypePage 2022-12-02 14:55:29 -05:00
Ryan Cramer
adf43d28df Several improvements to Notices: 1) now you can include separate label and notice text by calling message/warning/error like this: $this->message([ 'Notice label' => 'Notice text' ]); 2) new support for a Notice::allowDuplicate flag which allows duplicate notices to appear when rendered. To use, specify it in the flags argument: $this->message('notice text', 'duplicate'); or $this->message('notice text', Notice::duplicate); 3) improved debugging output when passed object or array values for message text. 4) notice icon can now be specified in the notice flags, if using a flags string, i.e. $this->message('notice text', 'icon-eye-slash'); These can be combined with other flags of course, i.e. $this->message('notice text', 'markdown duplicate icon-home'); 2022-12-02 14:07:41 -05:00
Ryan Cramer
a8b3c772d9 Add a Debug::toStr() method for dumping any variable to a string (for debugging purposes) 2022-12-02 14:04:53 -05:00
Ryan Cramer
b85c1c48b0 Fix issue processwire/processwire-issues#1649 2022-12-02 10:45:13 -05:00
Ryan Cramer
bceb0160b7 Attempt fix for processwire/processwire-issues#1645 2022-12-02 08:13:06 -05:00
Ryan Cramer
56e999dddb Updates for processwire/processwire-issues#1643 2022-12-02 08:02:49 -05:00
Ryan Cramer
b18ce642ef Add hookable getPage() method to PageFrontEdit module 2022-11-30 09:42:08 -05:00
Ryan Cramer
9c3d03c4a1 Various minor updates 2022-11-25 14:27:36 -05:00
Ryan Cramer
9bb9d71729 Update $sanitizer->email() method to add IDN, UTF-8, ASCII, and DNS support options. Also updates for processwire/processwire-issues#1647 2022-11-24 10:58:15 -05:00
Ryan Cramer
3e9d8e95da Fix issue processwire/processwire-issues#1648 2022-11-23 12:07:31 -05:00
Ryan Cramer
59cf5040f1 Update PageFrontEdit module to add support for InputfieldTinyMCE. Requires v6.0.7+ of InputfieldTinyMCE. cc @BernhardBaumrock 2022-11-22 12:15:40 -05:00
Ryan Cramer
c36adc9397 Minor updates to ProcessTemplate, with the most noticable addition being that when you add one (1) new template, it now goes straight to edit the template, rather than back to the template list. 2022-11-18 15:21:30 -05:00
Ryan Cramer
b0d5f14a27 Fixes for processwire/processwire-issues#1467 2022-11-18 12:42:02 -05:00
Ryan Cramer
2aedd2b6f5 Docs typo fixes per processwire/processwire-issues#797 2022-11-18 12:17:23 -05:00
Ryan Cramer
3d1c64f7e0 Update core dev JqueryCore version from 1.11.1 to 1.12.4 per processwire/processwire-issues#1643 2022-11-18 11:39:50 -05:00
Ryan Cramer
880ead3521 Bump version to 3.0.207 2022-11-11 14:06:16 -05:00
Ryan Cramer
ca344c838d Update $templates->delete($template) method to also delete fieldgroup (when not used elsewhere) 2022-11-11 14:04:56 -05:00
Ryan Cramer
eb94a38f75 Minor code updates in PagefilesManager 2022-11-11 13:59:27 -05:00
Ryan Cramer
aa842d8741 Fix issue processwire/processwire-issues#1638 2022-11-10 11:52:59 -05:00
Ryan Cramer
5aa0126b39 Fix issue processwire/processwire-issues#1637
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2022-11-10 11:44:29 -05:00
Ryan Cramer
78c2ca736d Fix issue processwire/processwire-issues#1629 2022-11-10 11:05:05 -05:00
Ryan Cramer
9f39514376 Attempt fix for processwire/processwire-issues#1610 2022-11-10 10:40:53 -05:00
Ryan Cramer
c2eaa0a8da Fix issue processwire/processwire-issues#1632 with suggestion by @Notanotherdotcom 2022-11-04 15:42:27 -04:00
Ryan Cramer
d9bfba5c74 Fix issue processwire/processwire-issues#1630 2022-11-04 15:34:27 -04:00
Ryan Cramer
3d5561c7af Minor adjustment in LanguageTabs.js 2022-11-04 14:50:53 -04:00
Ryan Cramer
b4124435e4 Remove/comment-out some old code referring to TinyMCE 3.x in InputfieldRepeater.js 2022-11-04 14:34:01 -04:00
Ryan Cramer
715f029657 Minor code optimizations in Modules class plus fix processwire/processwire-issues#1634 as mentioned by @Toutouwai 2022-11-04 14:30:51 -04:00
BernhardBaumrock
701d24258c Updates to rock.less per PR #245 2022-10-13 10:29:41 -04:00
Ryan Cramer
050c9c19c3 Bump version to 3.0.206 2022-10-09 09:30:38 -04:00
Ryan Cramer
ec8555545e Update ProcessLogin to auto-refresh the login form every 5 minutes of non-activity. This helps to avoid cases where a login form sits for a long period and has its CSRF key expire. It can prevent this error at login: "This request was aborted because it appears to be forged." 2022-10-06 13:31:51 -04:00
Ryan Cramer
47f24e6ff0 Add allowProcessInput() hook to InputfieldWrapper class. This enables hooks to control whether a given Inputfield can be excluded from input processing at runtime 2022-10-06 13:21:09 -04:00
Ryan Cramer
d2bdf70ecd Minor JS adjustments 2022-10-06 13:20:17 -04:00
Ryan Cramer
96bb90bb2e Update inputfields.js for better error handling and improved reload support 2022-10-06 13:14:55 -04:00
Ryan Cramer
32d7a09cfd Add JS events to InputfieldRepeater: 'repeaterdelete' and 'repeaterundelete' 2022-09-30 12:04:44 -04:00
Ryan Cramer
c1e1cecf93 Minor code updates in FieldtypeOptions and supporting classes 2022-09-30 12:04:03 -04:00
Ryan Cramer
cce5073969 Fix example in InputfieldTextTags for cases where it is used without a Fieldtype 2022-09-30 12:02:53 -04:00
Ryan Cramer
5d86dc8dec Add support for a $page->getPageListLabel(); method which enables custom page classes to return custom markup for the page's label in the page-list. 2022-09-30 12:01:46 -04:00
Ryan Cramer
127ef175b7 Add support for $items[] = $item; append syntax to WireArray/PageArray 2022-09-30 12:00:02 -04:00
Ryan Cramer
a3e67b299b Add support for a data-field-name attribute on Inputfields that use names that differ from the relevant field name (likes inputfields in repeaters). This makes the source field discoverable from JS in cases where it previously wasn't. 2022-09-30 11:57:08 -04:00
Ryan Cramer
bd6b63c616 Correct phpdoc for $wire var in site-blank profile 2022-09-30 11:55:09 -04:00
Ryan Cramer
b87566d0b3 Minor code improvements and housekeeping for various core classes and modules 2022-09-23 11:19:51 -04:00
Ryan Cramer
d6d68d8cc0 Also add memory_limit check to SystemUpdaterChecks (system checks performed after superuser login) related to processwire/processwire-requests#449 2022-09-23 09:45:44 -04:00
Ryan Cramer
ab7c86da21 Add memory_limit check to PW installer per processwire/processwire-requests#449 2022-09-23 09:25:48 -04:00
Ryan Cramer
c3ea89cf03 Add feature request processwire/processwire-requests#457 - support for returning template property values (name template.name, etc) in $pages->findRaw() 2022-09-20 12:20:14 -04:00
matjazpotocnik
f510392e7e Fix issue #1623 2022-09-20 11:20:18 -04:00
Ryan Cramer
df3a603d66 Bump version to 3.0.205, plus additional minor code updates/improvements in multiple classes 2022-09-16 14:08:57 -04:00
Ryan Cramer
8748c72696 Minor code and phpdoc improvements to various core classes 2022-09-16 13:14:54 -04:00
FlipZoomMedia
5fecec74ec Add PR #244 - remember language tabs focus between requests after a double-click on a language tab 2022-09-16 11:46:32 -04:00
Ryan Cramer
96848654a4 Add PR #228 loop code optimization plus other minor code adjustments in WireFileTools
Co-authored-by: pine3ree <pine3ree@gmail.com>
2022-09-16 10:49:04 -04:00
pine3ree
330be8c05a Add PR #230 fix typo in comments of site-blank _init.php template file 2022-09-16 10:42:40 -04:00
pine3ree
a2614b1a46 Add PR #240 fix phpdoc return type in LanguagesPageFieldValue::getLanguageValue() method 2022-09-16 10:31:19 -04:00
dadish
d02efe55f2 Add PR #241 support pages.find() joinFields option for FieldtypeOptions fields 2022-09-16 09:24:34 -04:00
Ryan Cramer
71e9c50a57 Fix issue processwire/processwire-issues#1618 prevent exif_read_data call on non-jpg images in Pageimage.php 2022-09-16 09:08:43 -04:00
Ryan Cramer
2d29cf935e Fix issue processwire/processwire-issues#1619 by improving the error message when encountering an unsupported name for a module 2022-09-16 08:57:34 -04:00
Ryan Cramer
7711418a12 Update admin.php ajax response to populate new argument in ProcessController::jsonMessage() 2022-09-12 11:26:55 -04:00
Ryan Cramer
95bdbf76ba Add a csrf check to the Lister bookmarks form and make markup disallowed by default (with optional argument to enable it) in ProcessController ajax notification response generator (as used by some Lister errors).
Co-authored-by: filipaze <filipaze98@gmail.com>
Co-authored-by: rondons <guilhermetamagnini@gmail.com>
2022-09-12 11:24:05 -04:00
Ryan Cramer
f6558c25ac Minor code improvements in various classes, mostly phpdoc related 2022-09-12 11:15:53 -04:00
Ryan Cramer
6262fcdff8 Code improvements to ProcessPageEdit module and refactor of change-template form within it. 2022-09-12 09:36:01 -04:00
Ryan Cramer
4aa75a7d17 Update LanguageSupportPageNames module to support fallback to default pagination prefix 'page' when in the admin. This is to resolve an issue in Lister when the default language pagination prefix has been overridden. 2022-09-11 10:12:17 -04:00
Ryan Cramer
818d86feea Minor code updates in ProcessPageListerBookmarks 2022-09-09 14:58:50 -04:00
Ryan Cramer
a04548a814 Update InputfieldWrapper to have an error method that enables you get get Inputfields having errors rather than just getting error messages. 2022-09-09 13:51:36 -04:00
Ryan Cramer
cb026ccc4e Improvements to InputfieldForm module, including a new isSubmitted() method for a better way to check form submission, among other minor updates. 2022-09-09 13:49:25 -04:00
Ryan Cramer
94ca2b8e9a Fix issue where repeater family-friendly depth setting wasn't working when depth setting in field config was set to 1. Previously it only worked when depth setting was set to 2 or higher. 2022-09-05 09:24:07 -04:00
Ryan Cramer
6ca5eac61b Fix additional issues introduced on Friday in Page and PageValues classes 2022-09-04 10:05:23 -04:00
Ryan Cramer
68badf4658 Fix PagesLoaderCache error that appears when TravyDebugger installed 2022-09-04 09:08:40 -04:00
Ryan Cramer
ad4e359bca Major refactor of base Page class, moving a lot of code into a separate PageValues class, reducing the size of the base Page class. Also added new options for the get() method including full support of dot syntax (regardless of output formatting state) (i.e. "field_name.subfield_name.title") and support for brackets[] to force multi-value (i.e. "field_name[]") , indexes (i.e. field_name[0] to get first item), and bracketed selectors (i.e. "some_multi_value_field[title%=design]") and the ability to combine any of these. 2022-09-02 13:14:35 -04:00
Ryan Cramer
a2da7f1a22 Various minor updates 2022-09-02 13:13:08 -04:00
Ryan Cramer
96dae07160 Update to allow for Combo fields within Repeaters to support file/image fields 2022-08-28 10:43:44 -04:00
Ryan Cramer
cbb5133d46 Bump version to 3.0.204 2022-08-26 14:01:35 -04:00
Ryan Cramer
e8219ba71a Additional updates for PHP 8.1+ processwire/processwire-issues#1467 2022-08-26 12:19:06 -04:00
Ryan Cramer
866f91424f Fix issue processwire/processwire-issues#1611 where single-language site using multi-language fields in repeaters were not saving 2022-08-26 11:38:39 -04:00
Ryan Cramer
36702d7b57 Upgrades to Inputfield class: new renderFlags option letting you specify that a given Inputfield should render at the top of bottom of its siblings, regardless of its position (like a sticky attribute); new methods to support adding classes to different elements (wrap, header, content, input) in one call via a string (see addClass method phpdoc for details); new ability to configure classes for for those elements interactively in the Inputfield configuration, which can be useful in FormBuilder, LoginRegisterPro, and other instances; various minor code improvements as well. 2022-08-26 10:39:09 -04:00
Ryan Cramer
647c45d454 Adjustments in ProcessPageEditImageSelect 2022-08-19 15:00:58 -04:00
Ryan Cramer
79cfdd5f38 Minor adjustments in PagesEditor class 2022-08-19 15:00:07 -04:00
Ryan Cramer
38b2dd0732 Minor adjustments and phpdoc updates in Pagefile/Pageimage and related classes 2022-08-19 14:59:41 -04:00
Ryan Cramer
5f0da8067c Minor adjustments and phpdoc updates in Fieldtype and FieldtypeMulti base classes 2022-08-19 14:58:02 -04:00
Ryan Cramer
d0acf570a3 Add FieldtypeHasPagefiles and FieldtypeHasPageimages interfaces and update FieldtypeFile/Image to support them. These interfaces enable a Fieldtype communicate that it manages Pagefile/Pageimage objects and provides a method for retrieving them. 2022-08-19 14:56:36 -04:00
Ryan Cramer
8303efd303 Fix issue processwire/processwire-issues#1605 2022-08-14 10:09:10 -04:00
Ryan Cramer
9bb55785f8 Add owner selector support in ProcessPageSearch per request and code suggestion 2022-08-12 13:35:00 -04:00
Ryan Cramer
03de771b53 Various minor updates, mostly phpdoc related 2022-08-12 13:34:42 -04:00
Ryan Cramer
93b88c6ec3 Additional updates in InputfieldFile to support CKEditor custom fields in files/images. 2022-08-11 10:25:16 -04:00
Ryan Cramer
8daaedc809 Fix issue processwire/processwire-issues#1603 2022-08-05 12:21:26 -04:00
Ryan Cramer
79eebb5210 Additional minor updates to ProcessCommentsManager 2022-08-04 07:55:25 -04:00
Ryan Cramer
eec0975eda Add fix/update for processwire/processwire-issues#1597 using suggested fix provided by @Toutouwai 2022-07-29 12:53:48 -04:00
Ryan Cramer
7fd517dcb4 Add fix for processwire/processwire-issues#1602 using fix provided by @Toutouwai 2022-07-29 12:41:12 -04:00
Ryan Cramer
f27f11fbf6 New additions to ProcessCommentsManager including a new separate dedicated comment editor and the ability to add new comments or replies from within the module. There are still more additions to make to the dedicated comment editor including the ability to select page and parent (though these are already available in the comment list editing screen in this module). 2022-07-29 11:43:48 -04:00
Ryan Cramer
92fefa5476 Update comments.js to allow for de-selection of stars in cases where a user might accidentally click on a stars input and want to revert to no-selection. 2022-07-29 11:37:49 -04:00
Ryan Cramer
94babead9d Various minor updates 2022-07-29 11:37:32 -04:00
Ryan Cramer
67d937b081 Add $hookable option to wireMethodExists() function, enabling it to detect cases where the method may exist in a ___hookable() variation 2022-07-29 11:35:04 -04:00
Ryan Cramer
f71c417c15 Add new allowChildren() method to Comment class indicating whether or not replies are allowed to the comment. Update the editUrl() method to point to ProcessCommentsManager comment editor, when installed. 2022-07-29 11:33:52 -04:00
Ryan Cramer
fe9417dcfc Minor update to CommentArray 2022-07-16 15:03:42 -04:00
Ryan Cramer
25c110818e Bump version to 3.0.203 2022-07-15 16:08:42 -04:00
Ryan Cramer
69a63c1572 Various minor code and documentation updates 2022-07-15 15:30:08 -04:00
Ryan Cramer
c48ed61e06 Upgrade CKEditor version to 4.19.0 2022-07-15 15:27:55 -04:00
Ryan Cramer
2e6dc4426b Upgrade FieldtypeComments to support custom fields via new meta functions. Also upgrade ProcessCommentsManager and InputfieldCommentsAdmin for support. InputfieldCommentsAdmin was also upgraded with an option to link to the comments manager rather than making comments editable in the page editor (see "Input" tab for that config option). 2022-07-15 15:24:00 -04:00
Ryan Cramer
969dc8ebc4 Bump version to 3.0.202 2022-07-08 16:12:47 -04:00
Ryan Cramer
c1aa04b1fe Update for processwire/processwire-issues#1341 add inputmode=decimal attribute to FieldtypeFloat when in decimal input mode 2022-07-08 13:12:07 -04:00
Ryan Cramer
2da2c45382 Additional updates for processwire/processwire-issues#1467 2022-07-08 13:02:33 -04:00
Ryan Cramer
03acb77306 Fix issue processwire/processwire-issues#1595 2022-07-08 12:13:59 -04:00
Ryan Cramer
5d9ee59036 Attempt fix for processwire/processwire-issues#1594 2022-07-08 12:09:18 -04:00
Ryan Cramer
2e76df1a89 Fix issue processwire/processwire-issues#1593 2022-07-08 11:24:29 -04:00
Ryan Cramer
6a9dfe654d Update in WireHttp to correct issue where curl POST method sometimes did not work due to 'expect' header that CURL adds to some requests, plus an extra boundary CURL adds to content-type 2022-07-08 09:43:14 -04:00
Ryan Cramer
d4e2a39940 Update PagesPathFinder to provide 301 redirect for paths ending with "/index.php" rather than responding with a 404 code 2022-07-08 09:30:11 -04:00
Ryan Cramer
31ede89079 Minor updates in Debug class including documentation additions and removeSavedTimer methods 2022-07-08 09:28:26 -04:00
Ryan Cramer
e6a29cb051 Fix issue in WireInput where setUrlSegments() didn't reset all segments when given array of segments smaller than what was previously set. 2022-07-08 09:26:57 -04:00
Ryan Cramer
af950078ed Typo fix in module description for PagePathHistory 2022-06-24 13:32:16 -04:00
Ryan Cramer
f4b938146d Fix issue in the new ProcessPageList "hidden" pages option where it wasn't always working as intended. 2022-06-24 13:31:32 -04:00
Ryan Cramer
818b78a42c Fix issue in WireHttp where it didn't reset the HTTP code description text (like "OK" or "Page Not Found" or "Internal Server Error" between multiple requests. 2022-06-24 13:30:22 -04:00
Ryan Cramer
5d3367846e Fix issue processwire/processwire-issues#1588 2022-06-24 11:07:19 -04:00
Ryan Cramer
c697be7ddd Add partial fix for processwire/processwire-issues#1586
Co-authored-by: pine3ree <pine3ree@gmail.com>
2022-06-24 10:49:26 -04:00
Ryan Cramer
116219292c Fix issue processwire/processwire-issues#1584 2022-06-24 10:29:20 -04:00
Ryan Cramer
b46b29aa8e Fix issue processwire/processwire-issues#1582 2022-06-24 10:04:49 -04:00
Ryan Cramer
4f63edf25e Fix issue processwire/processwire-issues#1575 2022-06-24 09:31:44 -04:00
Ryan Cramer
356cde2d5c Add empty check to Page::get() method to avoid potential illegal offset-type error 2022-06-20 16:03:32 -04:00
Ryan Cramer
be134e1e65 Fix issue in InputfieldSelect.module where optionLabel() method didn't return labels for option values within optgroups 2022-06-20 15:57:40 -04:00
Ryan Cramer
773a344a2f Fix issue in ProcessPageLister where clicking column headings to sort results didn't work when in minimal (modal or frame) mode. 2022-06-03 15:00:33 -04:00
Ryan Cramer
431944c3b2 Add new configuration option to ProcessPageList where you can select pages that should not be shown in the page list (optionally conditional). This is useful for hiding pages like "404 Page Not Found", "Admin" and others that you may not need to appear in the page list. 2022-06-03 14:58:20 -04:00
Ryan Cramer
73a31ef2f9 Add processwire/processwire-requests#445 - Add usage fieldset/info on field edit page primary tab 2022-06-03 14:55:45 -04:00
Ryan Cramer
f0d06cbf8a Bump version to 3.0.201 2022-05-27 13:09:14 -04:00
Ryan Cramer
8d57d0c126 Fix typo in $page->getMultiple() method phpdoc 2022-05-27 11:20:04 -04:00
Ryan Cramer
f0bc888355 Fix issue processwire/processwire-issues#1576 2022-05-27 11:00:58 -04:00
Ryan Cramer
2cf811f76c Fix issue processwire/processwire-issues#1572 2022-05-27 10:47:26 -04:00
Ryan Cramer
6667caa1d0 Add new page editor Inputfield visibility mode 'Tab' which makes any Inputfield display as a page editor tab. Options included for 'Tab', 'Tab (AJAX)', and 'Tab (locked)'. 2022-05-27 10:40:58 -04:00
Ryan Cramer
23a4cb455d Add a new $page->getMultiple($keys); method where $keys can be array or CSV string of properties/fields to return in an array. Returns non-associative array by default, specify $page->getMultiple($keys, true); get to get can associative array indexed by given key names. 2022-05-27 10:35:12 -04:00
Ryan Cramer
3acd7709c1 Update for processwire/processwire-issues#1467 2022-05-20 10:54:23 -04:00
Ryan Cramer
c84a21a9a2 Fix issue processwire/processwire-issues#1568 2022-05-20 10:49:51 -04:00
Ryan Cramer
c686a8e5ea Fix issue processwire/processwire-issues#1569 2022-05-20 09:57:13 -04:00
Ryan Cramer
761e83a5f3 Add @netcarver PR #226 to fix unintentional assignment in conditional, plus minor phpdoc update in InputfieldWrapper
Co-authored-by: netcarver
2022-05-20 08:42:39 -04:00
Ryan Cramer
a0adc207de Fix issue processwire/processwire-issues#1567 2022-05-17 11:25:04 -04:00
Ryan Cramer
924f932145 Update InputfieldImage to auto-generate upload name when client does not provide it (like images dragged into CKE 4.18.0) 2022-05-13 14:54:08 -04:00
Ryan Cramer
3f8e1f6a7a Bump version to 3.0.200 2022-05-13 13:43:43 -04:00
Ryan Cramer
5636a81d15 Various pre-merge documentation and housekeeping updates 2022-05-13 10:34:30 -04:00
Ryan Cramer
b164bc3e23 Upgrade CKEditor version from 4.16.0 to 4.18.0 2022-05-10 15:12:45 -04:00
Ryan Cramer
5a63b7eed7 Fix issue processwire/processwire-issues#1566 2022-05-10 09:46:45 -04:00
Ryan Cramer
1523eba59c Add support for '_custom=...' selector to ProcessPagesExportImport module 2022-05-10 08:27:04 -04:00
Ryan Cramer
bf80df04e9 Various minor code updates 2022-05-10 08:24:50 -04:00
Ryan Cramer
14a9b92c70 Additional updates for processwire/processwire-issues#1467 2022-05-09 11:56:53 -04:00
Ryan Cramer
d3a5b4170a Fix typos in documentation per processwire/processwire-issues#797 2022-05-09 11:05:55 -04:00
Ryan Cramer
c8ecf3f51d Add @matjazpotocnik suggested fix for processwire/processwire-issues#916
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2022-05-09 10:18:20 -04:00
Ryan Cramer
fa3fb8ec89 Various minor code improvements to several core classes primarily aimed at improved IDE inspection and debugging 2022-05-06 14:04:14 -04:00
Ryan Cramer
e4eaf30e8a Add autocomplete=off attribute to InputfieldDatetime inputs using datepicker 2022-05-03 10:43:13 -04:00
Ryan Cramer
a32c574106 Updates to InputfieldPage behavior of selectors containing keyword 'page' like 'field=page.id', like when using dependent selects or referring to page being edited, by adding the alternative 'field=item.id' (using 'item' rather than 'page') to refer to the repeater item. In cases where the field appears outside of a repeater item then the keyword 'item' behaves the same as 'page'. 2022-05-03 10:19:19 -04:00
Ryan Cramer
634c97aa0f Update Lister and InputfieldSelector option to display Template labels (vs Template names) have additional logic as to when they display both, and be consistent with one another. They now take into account the Lister "useColumnLabels" setting as well. 2022-05-02 10:10:11 -04:00
Ryan Cramer
5651742660 Bump version to 3.0.199 2022-04-29 15:06:33 -04:00
Ryan Cramer
01223be0dc Fix issue processwire/processwire-issues#1561 - non-superuser when uploading image in repeater was producing a "no access" error 2022-04-29 11:27:32 -04:00
Ryan Cramer
e0b43606b3 Add cache buster to PWImageResizer.js URL per processwire/processwire-issues#1154 2022-04-29 08:59:21 -04:00
Ryan Cramer
15ae6b938d Refactor of $sanitizer->pagePathName() to make consistent with pageName() per processwire/processwire-issues#1160 2022-04-28 11:37:13 -04:00
Ryan Cramer
c2383feb04 Remove references to autoRotate in PWImageResizer.js per @Toutouwai processwire/processwire-issues#1154 2022-04-28 07:40:33 -04:00
Toutouwai
bc99de09f2 Update PWImageResizer.js to replace exif.js with piexif.js which corrects an issue with client-side image resize orientation 2022-04-27 10:57:00 -04:00
Ryan Cramer
f9f29d2663 Update for processwire/processwire-issues#1467 2022-04-27 10:25:14 -04:00
Ryan Cramer
311a2c9e79 Fix issue processwire/processwire-issues#1560 2022-04-27 10:23:05 -04:00
Ryan Cramer
4ced00d0f9 Attempt fix for issue processwire/processwire-issues#1550 2022-04-27 10:06:17 -04:00
Ryan Cramer
cde0f53ad6 Fix issue processwire/processwire-issues#1536 2022-04-27 08:38:46 -04:00
Ryan Cramer
6001475a3c Update PageFinder to allow partial text matching in default language page paths in multi-language environment 2022-04-25 11:01:48 -04:00
Ryan Cramer
662cf5eee5 Add option to WireHttp for setting cookies to use in an http request (currently supported only by the curl http get/post methods) 2022-04-22 14:13:15 -04:00
Ryan Cramer
17bbe4d9ff Add system update 20 which corrects an issue in the DB where some original/core system pages had an incorrect (though inconsequential) created_users_id that referred to the admin page rather than the original admin user. 2022-04-22 11:47:42 -04:00
Ryan Cramer
d24b942921 Add @adrianbj PR #214 which adds a configurable columns option for Selector fields.
Co-authored-by: adrianbj <adrian@visualscience.ca>
2022-04-22 11:28:26 -04:00
Ryan Cramer
7159279ac8 Additional updates for processwire/processwire-issues#1467 2022-04-22 10:36:03 -04:00
Ryan Cramer
6fcd7a7038 Fix issue reported by @olafgleba in processwire/processwire-issues#1497 where image variation list wouldn't delete corresponding webp extras when jpg/png variation deleted and webpAdd option used. 2022-04-22 09:54:06 -04:00
Ryan Cramer
5028dd6ad4 Update ProcessPageLister to recognize fields that are not sortable, such as those from FieldtypeRuntimeOnly 2022-04-19 11:17:33 -04:00
Ryan Cramer
78ae5e3f56 Fix issue in Lister bookmarks where columns could be lost for a non-superuser owned bookmark when modifying an existing bookmark 2022-04-19 09:56:04 -04:00
Ryan Cramer
89d46632b3 Bump version to 3.0.198 2022-04-15 14:33:46 -04:00
Ryan Cramer
cd35d103dd Various minor updates and code improvements 2022-04-15 14:32:34 -04:00
horst-n
b1457698c8 Add @horst-n ImageSizer fixes for image orientation/rotation 2022-04-15 12:42:56 -04:00
Ryan Cramer
f2b27cca75 Fix issue processwire/processwire-issues#1558 2022-04-15 11:02:40 -04:00
Ryan Cramer
2a8899dcd9 Fix issue processwire/processwire-issues#1557 2022-04-15 10:51:39 -04:00
Ryan Cramer
7d8a031cbd Fix issue processwire/processwire-issues#1556 2022-04-15 10:47:18 -04:00
Ryan Cramer
3c28ecd16c Fix issue processwire/processwire-issues#1554 2022-04-15 10:45:16 -04:00
Ryan Cramer
cf2f209f8c Add support for a nulls option to $pages->findRaw(). This makes it populate null values for fields not present, rather than omitting them completely. Requested in processwire/processwire-issues#1553 2022-04-15 10:40:08 -04:00
Ryan Cramer
0d2b570454 Updates for processwire/processwire-issues#1552 2022-04-15 08:59:34 -04:00
Ryan Cramer
047ffb1c20 Add support for runtime page cache groups. This enables pages to be cached as a group, or more importantly, uncached as a group. It was added primarily to add efficiency to $pages->findMany(), so that it can cache supporting pages (like parents of pages returned by findMany). Previously, it would have to load a fresh copy of each supporting page used by findMany(), for every returned page, since findMany() used no in-memory caching, otherwise you could run out of memory on large results. So if you iterated a $pages->findMany() result and output the URL of each page (which loads parents), then it would have to reload all those parents for each iteration. Now it can cache them for each chunk of 250 pages, offering a significant potential performance improvement in many cases. 2022-04-14 08:11:19 -04:00
Ryan Cramer
f05943baaa Add support in PagesPathFinder for default pagination prefix (pageNumUrlPrefix) even when overridden by default language setting in LanguageSupportPageNames module. Previously, it could potentially break pagination in some places (in admin) if you overrode the default language pagination prefix in that module. 2022-04-14 07:48:45 -04:00
Ryan Cramer
0fe1d7da76 Add support for dependent selects within repeater items. This works so long as the fields used by the dependent selects don't also appear again in the page editor outside of repeater fields. 2022-04-13 11:43:01 -04:00
Ryan Cramer
47f2742b72 Updates for processwire/processwire-issues#1467 2022-03-29 08:22:13 -04:00
Ryan Cramer
527f844403 Fix issue processwire/processwire-issues#1549 2022-03-28 08:46:00 -04:00
Ryan Cramer
fa3d463d3b Bump version to 3.0.197 2022-03-25 14:50:33 -04:00
Ryan Cramer
af451350a4 Add feature request processwire/processwire-requests#346 - add support for Inputfield::collapsedNoLocked and add a separate collapsedBlankLocked constant 2022-03-25 13:58:05 -04:00
Ryan Cramer
415969e8bf Add feature request processwire/processwire-requests#339 - improvements to PageListSelectMultiple based on concept from module by @Toutouwai 2022-03-25 13:34:22 -04:00
Ryan Cramer
c4f2385e72 Add processwire/processwire-requests#400 Add CSV read helper methods $files->getCSV() and $files->getAllCSV() 2022-03-25 10:49:01 -04:00
Ryan Cramer
3f1f2ee4fb Add phpdoc "see" notes in Pages.php per processwire/processwire-issues#1547 2022-03-24 11:08:33 -04:00
Ryan Cramer
da060996ec Improvements to WireTextTools::markupToText() method with new options: The 'clearTags' removes inner content of specified tags, in addition to the tags themselves, default value removes inner content of script, styel and object tags (this is to accommodate feature requested in processwire/processwire-issues#1546). The 'linksToMarkdown' option converts HTML links to Markdown style links like "[text](url)" rather than the existing "text (url)" style links that it uses by default. This version also has additional logic to prevent empty list items and links. 2022-03-24 09:44:04 -04:00
Ryan Cramer
1b5cd4f50e Fix issue where clone action icon didn't appear on a nested repeater within a FieldtypeFieldsetPage 2022-03-20 10:55:13 -04:00
Ryan Cramer
0674776c4b Fix issue processwire/processwire-issues#1513 2022-03-18 14:38:20 -04:00
Ryan Cramer
a5e397d005 Additional updates for processwire/processwire-issues#1467 2022-03-18 13:49:01 -04:00
Ryan Cramer
11a15840d3 Fix issue processwire/processwire-issues#1544 2022-03-18 10:18:39 -04:00
Ryan Cramer
f69c0ad39f Fix issue processwire/processwire-issues#1543 2022-03-18 09:26:28 -04:00
Ryan Cramer
fd538897d0 Fix issue processwire/processwire-issues#1542 2022-03-18 08:57:19 -04:00
Ryan Cramer
3280507bec Fix issue processwire/processwire-issues#1540 2022-03-18 08:47:37 -04:00
Ryan Cramer
83019b173b Fix issue processwire/processwire-issues#1539 2022-03-18 08:36:44 -04:00
Ryan Cramer
f66b2f2df8 Bump version to 3.0.196 2022-03-11 13:29:56 -05:00
Ryan Cramer
d743606b70 Various minor fixes 2022-03-11 13:27:31 -05:00
Ryan Cramer
989b94e532 Upgrades to InputfieldWrapper class including new insert() and getByAttr() methods and expanding the insertBefore() and insertAfter() methods to accept Inputfield names or arrays as suggested by PR #216
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2022-03-09 11:21:53 -05:00
Ryan Cramer
1a7ecc6adf Add PR #213 which adds support for selector string in WireArray::remove()
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2022-03-08 15:13:17 -05:00
BernhardBaumrock
39a4db1ecd Add PR #212 - add module class names on hover of module titles in ProcessModule 2022-03-08 15:08:09 -05:00
BernhardBaumrock
b3dd6fae7a Add PR #218 - add typehints to site/ready, init and finished 2022-03-08 14:25:40 -05:00
BernhardBaumrock
eb6d6971f7 Add PR #217 - hide compile message for non superusers 2022-03-08 14:21:03 -05:00
Ryan Cramer
d978eccbc9 Add PR #215 to enable additional markup customization options in AdminThemeUikit via @BernhardBaumrock
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2022-03-08 11:42:35 -05:00
Ryan Cramer
8b46cb6fd0 Fix issue in InputfieldRepeater where entity encoded quotes could get confused as hex color codes for repeater item colors feature 2022-03-06 09:10:34 -05:00
Ryan Cramer
1dc0f0e524 Minor update in $sanitizer for the testAll() method 2022-03-04 16:23:58 -05:00
Ryan Cramer
4b38a649bf Fix issue processwire/processwire-issues#1517 2022-03-04 10:05:41 -05:00
Ryan Cramer
9912951d2b Fix issue processwire/processwire-issues#1534 2022-03-04 10:00:56 -05:00
Ryan Cramer
f504e9b53d Attempt fix for issue processwire/processwire-issues#1538 2022-03-04 09:41:32 -05:00
Ryan Cramer
b7806022af Fix issue processwire/processwire-issues#1527 2022-03-04 09:10:19 -05:00
Ryan Cramer
439703abdf Attempt fix for issue processwire/processwire-issues#1536 2022-03-04 08:28:33 -05:00
Ryan Cramer
fec9432a03 Add new $sanitizer->words() method and rewrite existing $sanitizer->word() method 2022-03-03 11:17:10 -05:00
Ryan Cramer
7241de5145 Bump version to 3.0.195 2022-02-25 16:42:20 -05:00
Ryan Cramer
ffc95a04a8 Make ProcessLanguage::processCSV() method hookable per request 2022-02-25 14:17:15 -05:00
Ryan Cramer
9a8942ae9d Update site-blank profile to have a /site/classes/ placeholder directory along with HomePage.php file as example/placeholder to ensure directory exists. 2022-02-25 14:15:22 -05:00
Ryan Cramer
415ea172c8 Fix issue processwire/processwire-issues#1530 2022-02-25 12:06:17 -05:00
Ryan Cramer
3c139fec06 Fix issue processwire/processwire-issues#1531 PHP-8 deprecation warnings 2022-02-25 12:02:51 -05:00
Ryan Cramer
7796807d19 Fix issue processwire/processwire-issues#1532 2022-02-25 11:46:35 -05:00
Ryan Cramer
7d91b43bba Update WireCache to avoid loading unnecessary templates plus a minor fix 2022-02-25 11:45:35 -05:00
Ryan Cramer
c01c44186e Update Field getFieldgroups() and getTemplates() methods to pull from DB rather than API (to avoid loading all templates/fieldgroups) and move the code from Field class into Fields class. 2022-02-25 11:26:31 -05:00
Ryan Cramer
fab59a5f4b Fix issue processwire/processwire-issues#1533 2022-02-25 08:37:00 -05:00
Ryan Cramer
1eb156f1aa Fix issue processwire/processwire-issues#1535 2022-02-24 12:09:54 -05:00
Ryan Cramer
aa87cc5603 Bump version to 3.0.194 2022-02-11 15:24:14 -05:00
Ryan Cramer
c3dd894094 Minor updates in Process class 2022-02-11 14:31:09 -05:00
Ryan Cramer
aa4628b638 Update ProcessPageAdd so that it doesn't have to trigger loading of all templates/fieldgroups/fields on every instance and instead only once per session or whenever a change is made in ProcessTemplate 2022-02-11 11:57:51 -05:00
Ryan Cramer
4258870aaa Update related to processwire/processwire-issues#1526 - prevent asmSelect for marking an item "pending delete" unless the item was already selected when the page rendered 2022-02-11 09:32:07 -05:00
Ryan Cramer
e0fa2c32e3 Minor updates in WireSaveableItems and this should also fix the issue with listing all items not being alpha sorted 2022-02-10 14:03:23 -05:00
Ryan Cramer
598a3a7df5 Update WireArray::sort to sort more like PHP's sort so that null or blank string values are sorted rather than appended. Add a SORT_APPEND_NULLS flag for the previous behavior too. @Toutouwai brought this one up before but I can't seem to find where it was to reference it here. 2022-02-10 14:00:50 -05:00
Ryan Cramer
a5c70a4e7d Upgrade core to have lazy-loading option for Fields, Templates, Fieldgroups. Collaboration with @thetuningspoon for boot performance improvement on installations with large quantities of fields/templates/fieldgroups. Lazy loading option is enabled by default but can be disabled by setting $config->useLazyLoading=false; in your /site/config.php file.
Co-authored-by: thetuningspoon <mspooner@hey.com>
2022-02-04 14:51:11 -05:00
Ryan Cramer
9a1cf64e02 Add a Page::render timer that is used in debug mode and shown in the Debug > Timers accordion item 2022-02-04 14:25:43 -05:00
Ryan Cramer
4c96ff94e2 Update ProcessPageEdit so that the template selection input (settings tab) is Ajax-loaded, like the parent selection input 2022-02-04 14:25:03 -05:00
Ryan Cramer
54d820e622 Update ProcessPageLister to identify when columns are not sortable 2022-02-04 14:23:20 -05:00
Ryan Cramer
ebb4663b84 Add a Template::setRaw() method, phpdoc fix in Paths class and update the $trackChanges property in Wire base class to be protected rather than private (as an optimization) 2022-02-04 14:20:27 -05:00
Ryan Cramer
36f051e129 Add $sanitizer->entitiesA() and $sanitizer->entitiesA1() methods for entity encoding values in arrays 2022-01-28 13:15:04 -05:00
Ryan Cramer
218946a8b5 Fix issue processwire/processwire-issues#1487 2022-01-28 12:07:32 -05:00
Ryan Cramer
11b0358290 Fix issue processwire/processwire-issues#1498 2022-01-28 11:43:32 -05:00
Ryan Cramer
400399ce60 Fix issue processwire/processwire-issues#1435 2022-01-25 11:08:15 -05:00
Ryan Cramer
25da592578 Additional updates for processwire/processwire-issues#1467 2022-01-24 11:07:10 -05:00
Ryan Cramer
beaad6e8dd Fix issue processwire/processwire-issues#1509 2022-01-24 10:36:43 -05:00
Ryan Cramer
d30f584190 Fix issue processwire/processwire-issues#1511 2022-01-24 10:33:41 -05:00
Ryan Cramer
22315d3cb5 Fix issue processwire/processwire-issues#1510 2022-01-24 08:45:14 -05:00
Ryan Cramer
7f56c817e0 InputfieldCKEditor updates to fix and improve support of CKE contextual settings in Repeater/RepeaterMatrix types 2022-01-23 10:36:48 -05:00
Ryan Cramer
76e7855e83 Remove phpdoc for non-existing hook method 2022-01-21 16:46:56 -05:00
Ryan Cramer
bccd8aad5f Bump version to 3.0.193 2022-01-21 16:46:28 -05:00
Ryan Cramer
5e11b28587 Fix issue processwire/processwire-issues#1507 2022-01-21 13:23:10 -05:00
Ryan Cramer
39f9cf42f2 Add the following new hooks to $templates, $fields and $fieldgroups: renameReady($item, $oldName, $newName); renamed($item, $oldName, $newName); Added the following new hooks to $fieldgroups: fieldAdded($fieldgroup, $field); fieldRemoved($fieldgroup, $field); Make template selectable for Page fields in InputfieldSelector, plus other minor updates. 2022-01-21 12:21:05 -05:00
Ryan Cramer
a7a4055632 Update ProcessModule to have a raw/JSON module configuration data editor and a raw/JSON info viewer. These options are available in $config->advanced=true; mode in the "Module Information" table that appears when viewing/editing a module in ProcessModule. 2022-01-21 10:19:58 -05:00
Ryan Cramer
43c27b103a Fix issue processwire/processwire-issues#1506 2022-01-20 12:03:28 -05:00
Ryan Cramer
2818aecb96 Fix issue processwire/processwire-issues#1505 2022-01-17 08:39:43 -05:00
Ryan Cramer
48f3db2b0c Fix issue where findRaw could get error when returning referencs where none existed 2022-01-16 12:43:04 -05:00
Ryan Cramer
883b0ab438 Code improvements and some refactoring of ProcessTemplate module 2022-01-14 13:45:14 -05:00
Ryan Cramer
842ea3df79 Improvements to WireHttp::send() method and update to use CURL first when available (rather than fopen) 2022-01-14 13:43:56 -05:00
Ryan Cramer
3a9416b8f2 Improvements to $pages->findRaw() based on requests. Added support getting "parent.field" and "parent.parent.field", etc. Added support for "references" and "references.field", etc. which returns matches from pages referencing the found pages via page reference fields (optionally include 'references.field' in requested fields list to index references by field name). Added support for FieldtypeOptions fields so that they can now return label, value, id or any of them by adding "your_options_field.label" (for example) in your requested $fields. Added new "flat" option which makes it returned flattened arrays for each page match... when used results are indexed in the same way they are requested, for example a result like [ 'page_field' => [ 'title' => 'Some title' ]] becomes [ 'page_field.title' => 'Some title' ]. Added support for requesting field 'meta' and 'meta.name' which returns Page meta data that you would usually access from $page->meta('name'). A few of these requests came from processwire/processwire-requests#427 2022-01-14 13:34:26 -05:00
Ryan Cramer
fcdaf277ce Additional updates for processwire/processwire-issues#1502 2022-01-12 10:24:08 -05:00
Ryan Cramer
1729e71808 Additional updates for processwire/processwire-issues#1502 2022-01-11 14:57:05 -05:00
Ryan Cramer
6c29350918 Additional updates, additions and fixes to $sanitizer->float(), InputfieldFloat and FieldtypeFloat per processwire/processwire-issues#1502 2022-01-11 09:51:52 -05:00
Ryan Cramer
062f2293d0 Bump version to 3.0.192 2022-01-07 14:18:32 -05:00
Ryan Cramer
38506eb6dc Additional update for processwire/processwire-issues#1502 2022-01-07 14:01:20 -05:00
Ryan Cramer
85e0501988 Update FieldtypeModule to support better selector matching and selector info 2022-01-07 13:43:57 -05:00
Ryan Cramer
acc8c5606d Add new wireLength() function to make up for for reduced flexibility of PHP 8.1+ strlen() 2022-01-07 13:41:34 -05:00
Ryan Cramer
d2e6d5f240 Fix issue processwire/processwire-issues#1501 2022-01-07 13:22:53 -05:00
Ryan Cramer
fc0db2bb22 Fix issue processwire/processwire-issues#1495 2022-01-07 12:58:53 -05:00
Ryan Cramer
6e81c70446 Fix issue processwire/processwire-issues#1502 2022-01-07 11:27:48 -05:00
Ryan Cramer
fff53a694d Fix issue processwire/processwire-issues#1479 2022-01-07 09:49:58 -05:00
Ryan Cramer
6b66fac0cf Fix issue processwire/processwire-issues#1500 2022-01-06 11:53:18 -05:00
Ryan Cramer
5dab38539f Add modification similar to PR #196 - Allow runtime accessors as language tab labels
Co-authored-by: daun <post@philippdaun.net>
2022-01-06 11:41:50 -05:00
Ryan Cramer
6af9f5d1c9 Add PR #204 - Add links to quickly edit a file in other languages
Co-authored-by: MrSnoozles <mrsnoozles@gmail.com>
2022-01-05 13:11:25 -05:00
Ryan Cramer
d1a6e2303d Various minor Inputfield code and phpdoc improvements 2022-01-05 10:08:43 -05:00
Radon8472
49de9483ce Add PR #206 Fix: WireCache output buffer not closed 2022-01-04 11:43:19 -05:00
BernhardBaumrock
8c10a7052a Add PR #208 for support of changing LESS style via PHP 2022-01-04 11:27:06 -05:00
Ryan Cramer
7f79f6c236 Upgrade htmlpurifier to 4.14.0 2022-01-04 07:53:11 -05:00
Ryan Cramer
912c9bb30e Additional updates for processwire/processwire-issues#1467 via @matjazpotocnik 2022-01-03 15:03:33 -05:00
Ryan Cramer
5192b3a922 Fix issue processwire/processwire-issues#1481 2021-12-31 10:47:06 -05:00
Ryan Cramer
ee64e114f2 Add “#[\ReturnTypeWillChange]” comments to all InteratorAggregate, Countable and PDOStatement interface classes to stop PHP 8.1 notices per https://php.watch/versions/8.1/internal-method-return-types and processwire/processwire-issues#1467 ... someday when all PHP 5.x support can be dropped these will be converted to PHP 7.1+ return types 2021-12-31 09:19:09 -05:00
Tyde
bca50abb48 Add PR #205 which fixes processwire/processwire-issues#1488 2021-12-30 14:44:54 -05:00
Ryan Cramer
da43be7d12 Fix issue processwire/processwire-issues#1491 2021-12-30 09:58:40 -05:00
Ryan Cramer
3c983f9b51 Fix issue where adding a new page was broken by commit b47297fd4a 2021-12-28 09:03:59 -05:00
Ryan Cramer
18ae00f485 Bump version to 3.0.191 2021-12-24 11:41:08 -05:00
Ryan Cramer
16f33704fa Add getPage() method back into ProcessPageView 2021-12-24 11:39:34 -05:00
Ryan Cramer
4344df336b Fix issue processwire/processwire-issues#1490 2021-12-24 10:49:22 -05:00
Ryan Cramer
b47297fd4a Small updates/corrections to $pages->newPage(); plus add property equivalents for several $pages API methods 2021-12-24 10:48:15 -05:00
Ryan Cramer
d9d66249de Fix issue processwire/processwire-issues#1493 2021-12-24 09:12:11 -05:00
Ryan Cramer
0d865f78ef Additional installer updates and add support for a /site/install/finish.php file that one can use to automatically apply additional updates to the site once the site profile finishes installing. Example being added to ProcessExportProfile module. 2021-12-22 12:55:14 -05:00
Ryan Cramer
6dee053250 Installer updates to improve profile selection instruction and options. Added a refresh button on profile screen. Added new page at processwire.comw with description of all profiles. Other minor improvements in installer. 2021-12-21 13:02:48 -05:00
Ryan Cramer
fd204c6b01 Remove site profiles: site-classic, site-default, site-beginner, site-languages, site-regular... leaving just site-blank. The other profiles have been moved to their own repos. Also some small updates to site-blank profile just so the template files are slightly more useful if someone doesn't install another. 2021-12-17 13:33:30 -05:00
Ryan Cramer
697158d653 Fix issue processwire/processwire-issues#1485 2021-12-15 13:49:02 -05:00
Ryan Cramer
fa98695f4e Fix issue processwire/processwire-issues#1482 2021-12-10 11:38:53 -05:00
Ryan Cramer
b78741a564 Fix issue processwire/processwire-issues#1483 2021-12-10 10:54:25 -05:00
Ryan Cramer
f4592435aa Add a $pages->new() API method which is similar to $pages->add() in that it creates a new page in the DB, except that the new() method accepts a selector string (or array) rather than the specific arugments if the add() method The new() method can also figure out the appropriate template or parent on its own (if available in family settings). This commit also updates the existing $pages->newPage() method (which creates a new page in memory only) to also accept the same selector string/array as the new() method. These updates are thoroughly phpdoc'd with the methods. 2021-12-10 10:39:26 -05:00
Ryan Cramer
48c9b54c5b Bump version to 3.0.190 2021-12-03 15:15:31 -05:00
Ryan Cramer
3e8a0336e4 Fix issue processwire/processwire-issues#1447 2021-12-03 11:16:01 -05:00
Ryan Cramer
c322cb98ef Various minor updates 2021-12-03 10:56:59 -05:00
Ryan Cramer
b49a44e813 Add 'trim' option to $sanitizer->array() method which trims string values in an array of leading/trailing whitespace. Default value for this option is true. 2021-12-03 10:48:12 -05:00
Ryan Cramer
025e75116b Add $pages->raw()->col() and $pages->raw()->cols() methods for when needing to retrieve a native pages table column by id quickly. This is intended for internal core use, though maybe occasionally useful for others. 2021-12-03 10:45:20 -05:00
Ryan Cramer
d08cdc8ced Add code from processwire/processwire-issues#993 2021-12-03 10:03:18 -05:00
Ryan Cramer
b364eda4ef Add option to repeaters enabling you to specify whether repeater item controls (delete, insert, clone, etc.) should be always visible or visible only when the header is hovered. Updated the default to be visible when only hovered as this reduces clutter. This commit also fixes an issue with custom header background colors (in matrix) not supporting matrix item type names that started with a number (i.e. "1-column-text"). This commit also fixes processwire/processwire-issues#1472 where the usual left/right outlines weren't showing for opened repeater items. 2021-12-02 11:32:23 -05:00
Ryan Cramer
46215bdfc2 Add database selector PageFinder support for id.sort=3|2|1 which is the same as id=3|2|1 except that it also forces it to load the pages in the order given, unless overridden by a different sort= in the selector. This is related to the request in processwire/processwire-issues#1477 2021-11-30 13:57:05 -05:00
Ryan Cramer
bf3c442f38 Fix issue processwire/processwire-issues#1448 2021-11-30 11:25:05 -05:00
Ryan Cramer
73422a9649 Fix issue processwire/processwire-issues#1471 2021-11-30 10:10:08 -05:00
Ryan Cramer
b8fa751b6b Fix issue processwire/processwire-issues#1476 plus add support for searching subfields in ProcessPageSearch (like for PageAutocomplete, etc.) 2021-11-28 09:29:48 -05:00
Ryan Cramer
86498bdc54 Correction to previous commit 2021-11-19 14:26:00 -05:00
Ryan Cramer
8e1608ac6f Fix issue processwire/processwire-issues#1467 2021-11-19 11:43:49 -05:00
Ryan Cramer
b8172c6605 Fix issue processwire/processwire-issues#1461 using fix suggested by @Radon8472 2021-11-19 10:44:47 -05:00
Ryan Cramer
43347472f3 Update the $pages->add() method to pull a fresh copy of the $page from the database after it has been added. This helps with some API usages where returned $page may have not been fully initialized in some cases. 2021-11-19 10:24:54 -05:00
Ryan Cramer
8a22e5f095 Add support for specifying a background color for repeater items by type. This is likely only useful in RepeaterMatrix but had to be added to the core repeater to support. The way you define it is by specifying a color hex code like #999999 or #999 somewhere in the repeater item type label (I suggest at the end). The color hex code will be removed from the label automatically and used to change its background color. Note that the text color is white, so use only background colors that would work with white text. 2021-11-19 10:13:45 -05:00
Ryan Cramer
c758c070c1 Bump version to 3.0.189 2021-11-05 16:42:04 -04:00
Ryan Cramer
88ef1ac681 Minor updates in LanguagesPageFieldValue to correct warnings under some rare cases 2021-11-05 13:45:33 -04:00
Ryan Cramer
031ff59852 Add a PagesEditor::clear() method for clearing a page's data, plus add a PagesEditor::replace() method for replacing one page with another, but it is currently a work in progress (not yet in public API) 2021-11-05 13:34:17 -04:00
Ryan Cramer
bed389dba8 Various small improvements to ProcessPageEdit, plus add an ajaxSaveDone() hookable method to make it possible to control the json output returned after an ajax save operation. 2021-11-05 13:30:13 -04:00
Ryan Cramer
75fd81b37d Update InputfieldFile, InputfieldImage, InputfieldPageAutocomplete, InputfieldPageListSelect and InputfieldPageTable so that they trigger sorted events when a drag/sort occurs. 2021-11-05 13:27:49 -04:00
Ryan Cramer
bd6e9d6a73 Update jquery.asmselect.js so that it triggers a sorted event when items are drag/sorted 2021-11-05 13:25:41 -04:00
Ryan Cramer
9e118ac519 Update InputfieldRepeater.js so that it triggers change and sorted events when items are sorted 2021-11-05 13:25:02 -04:00
Ryan Cramer
e5898cc4f6 Implement replacePageField method for FieldtypeRepeater 2021-11-05 13:24:14 -04:00
Ryan Cramer
e3e91dc363 Implement the emptyPageField and replacePageField methods for FieldtypeFile 2021-11-05 13:22:55 -04:00
Ryan Cramer
495d2e1b5d Update Fieldtype base class to expend methods for emptying a page field's table vs. deleting it 2021-11-05 13:20:42 -04:00
Ryan Cramer
e56ee2e7bf Bump version to 3.0.188 2021-10-29 14:58:38 -04:00
Ryan Cramer
a19a224c20 Add support for copy and paste of repeater items between pages (or same page). To copy, click the copy/clone icon and a dialog will appear asking what action you want. Use the same dialog action to paste. This also updates the clone feature to support insert before/after. 2021-10-29 11:23:44 -04:00
Ryan Cramer
a16c43f010 Fix issue with non-default language pagination segment prefixes when in admin 2021-10-28 13:39:54 -04:00
Ryan Cramer
a82ee80c41 Various small improvements to FieldtypeRepeater. Plus add a "Storage settings" configuration that lets you configure it to use fewer pages for storage (lazyParents mode), as well as a tool to delete unnecessary pages that already exist. 2021-10-27 14:21:22 -04:00
Ryan Cramer
239875c3d6 Fix issue processwire/processwire-issues#1460 2021-10-27 14:17:51 -04:00
Ryan Cramer
bd10426593 Improvements to LanguagesPageFieldValue class 2021-10-25 09:29:04 -04:00
Ryan Cramer
0479e6d3ce Minor code improvements in FieldtypeRepeater 2021-10-25 09:28:25 -04:00
Ryan Cramer
234487be6c Bump version to 3.0.187 2021-10-22 15:24:35 -04:00
Ryan Cramer
2739d90a5d Additional updates to InputfieldRepeater 2021-10-22 15:23:48 -04:00
Ryan Cramer
bbb7ea3857 Fix issue in PagesPathFinder with required vs. disallowed trailing slash setting for root level pages 2021-10-22 15:21:50 -04:00
Ryan Cramer
b269c1cad7 Update repeaters clone feature to clone in place, next to item cloned from (rather than inserting newly cloned item at bottom) 2021-10-21 13:12:30 -04:00
Ryan Cramer
a4555e1271 Fix issue where LanguageSupportPageNames::pageNotAvailableInLanguage wasn't working properly when redirect options selected 2021-10-18 08:16:26 -04:00
Ryan Cramer
c9fef983bc Bump version to 3.0.186 2021-10-15 15:29:11 -04:00
Ryan Cramer
7e5f6c85ec Upgrade Repeaters with ability to insert before/after existing items 2021-10-15 15:22:16 -04:00
Ryan Cramer
6315a3db60 Additional updates, improvements, optimizations to PagesPathFinder 2021-10-13 13:33:57 -04:00
Ryan Cramer
abcce91e4b Updates to PagePaths and PagePathHistory modules, adding support for root segments, among other things 2021-10-13 13:32:59 -04:00
Ryan Cramer
511a068b69 Add support for the initValue property to InputfieldTextarea. Previously it was present as an option but didn't work. 2021-10-08 15:54:58 -04:00
Ryan Cramer
aa4fbd4dd9 Continued updates to PagesRequest, PagesPathFinder, LanguageSupportPageNames, ProcessPageView and related modules 2021-10-08 15:52:07 -04:00
Ryan Cramer
5ed2e3047e Attempt fix for issue processwire/processwire-issues#1446 2021-10-05 08:48:51 -04:00
Ryan Cramer
3cf1ba5cab Various updates primarily aimed at simplifying the check for presence of LanguageSupportPageNames module 2021-10-04 11:13:25 -04:00
Ryan Cramer
f61feb56fd Fix issue processwire/processwire-issues#1439 2021-10-04 10:56:12 -04:00
Ryan Cramer
68bd38d1c9 Attempt fix issue processwire/processwire-issues#1443 2021-10-04 10:29:50 -04:00
Ryan Cramer
c988925111 Fix issue processwire/processwire-issues#1442 2021-10-04 09:45:02 -04:00
Ryan Cramer
dad7003072 Fix issue processwire/processwire-issues#1444 2021-10-04 08:30:30 -04:00
Ryan Cramer
808ba2ddb3 Rewrite/refactor ProcessPageView module so that it now uses the new core PagesRequest/PagesPathFinder classes. 2021-10-01 13:43:22 -04:00
Ryan Cramer
59c8880dc1 Add new $pages->getInfoByPath() method which is a shortcut to the new $pages->pathFinder()->get($path) method. Also add a new $pages->getOneById() method which is a shortcut to the $pages->getById() method with the 'getOne' option assumed (so it returns a Page rather than a PageArray). 2021-10-01 13:41:56 -04:00
Ryan Cramer
38b06b36f7 Several upgrades to the LanguageSupportPageNames module, with more on the way. Also adds a new module config option (and hook) for letting you specify what should happen when a page is accessed in a language it is not available in (redirect or 404). Note that this update drops existing pages table indexes used by this module and re-creates them in a manner that significantly improves performance. For a large site, there may be a significant delay following upgrade as it creates the new table indexes. Remember to do a Modules > Refresh so that PW sees the version change. 2021-10-01 13:35:40 -04:00
Ryan Cramer
8994317163 Add a new $pages->loader()->findByName() method plus performance improvements to the $pages->findByPath() method 2021-10-01 13:32:47 -04:00
Ryan Cramer
742e3e683d Add a $languages->pageNames() shortcut method for accessing the LanguageSupportPageNames module directly, when installed. 2021-10-01 13:26:25 -04:00
Ryan Cramer
45bffa6f72 Add new Template::isValidUrlSegmentStr($value) method that validates if given URL segment string $value matches the rules defined for that template. 2021-10-01 13:25:11 -04:00
Ryan Cramer
41bc9700e6 Upgrade the core PagePathHistory module with a powerful new getPathInfo() method (used by PagesPathFinder class when installed) 2021-10-01 13:24:21 -04:00
Ryan Cramer
27e2c226f3 Add $user->setLanguage() method for quietly setting a user language at runtime 2021-10-01 13:23:11 -04:00
Ryan Cramer
d0f7961d89 Upgrade core PagePaths module for multi-language page name support. Previously it asked you to uninstall it if you had multi-language, but now it has full support! 2021-10-01 13:21:00 -04:00
Ryan Cramer
fc1b252d04 Add $input->setUrlSegments() convenience method to WireInput 2021-10-01 13:19:38 -04:00
Ryan Cramer
62a64de93b Add PagesRequest class to core 2021-10-01 13:18:47 -04:00
Ryan Cramer
c02a9d6f4d Add PagesPathFinder class to core 2021-10-01 13:17:44 -04:00
Ryan Cramer
8cb157abbb Bump version to 3.0.185 2021-09-17 15:50:07 -04:00
Ryan Cramer
75db68ef06 Several additions to $database API var: Add option to $database->getColumns() method to get the column type as used in a CREATE TABLE statement. Add $database->renameColumns() and $database->renameColumn() methods that enable you to rename columns without having to know the column type (something that MySQL versions prior to 8.x require). Add a $getNumberOnly argument to $database->getVersion() method to return the version number without vendor suffix. Add a $database->getServerType() method that returns the MySQL server type: MariaDB, MySQL, Percona, etc. 2021-09-17 15:49:15 -04:00
Ryan Cramer
f5c3fada32 Minor code updates in $modules plus a small documentation update for WireMail 2021-09-17 15:44:17 -04:00
Ryan Cramer
82342089bc Fix issue processwire/processwire-issues#1437 2021-09-17 09:27:29 -04:00
Ryan Cramer
ba14fbde0a Fix issue processwire/processwire-issues#1436 where $pages->findJoin() used on file/image fields was resulting in them being blank in returned pages 2021-09-17 08:14:54 -04:00
Ryan Cramer
976ca7ab25 Fix issue processwire/processwire-issues#1438 2021-09-13 14:34:33 -04:00
Ryan Cramer
5fc01ef102 Minor refactoring/updates in PageRender, plus remove the template!=admin exclusion for the field rendering 2021-09-10 12:00:08 -04:00
Ryan Cramer
429e43506c Refactoring in PageFinder to support new features such as OR values for status (i.e. "status=hidden|unpublished"), updating limit to support both start and limit in one (i.e. "limit=5|10" is shorthand for "start=5, limit=10"), updating sort to support multi-value (i.e. "sort=date|title" is shorthand for "sort=date, sort=title"), plus other related minor improvements. 2021-09-10 11:05:18 -04:00
Ryan Cramer
70ff49dfc4 Update WireDatabasePDO::pdoType() to fix issue in reader/writer detection when query had leading whitespace or newlines in unexpected locations 2021-09-10 08:57:09 -04:00
1534 changed files with 108399 additions and 50664 deletions

View File

@@ -40,7 +40,7 @@ development branch.
ProcessWire is a timeless tool for web professionals that has always been
committed to the long term. It started in 2003, gained the name ProcessWire
in 2006, and has been in active development as an open source project since 2010.
Now more than a decade later (2021), were just getting started, as ProcessWire
Now more than a decade later (2023), were just getting started, as ProcessWire
continues to grow and develop into the next 10 years and beyond.
While ProcessWire has been around for a long time, dont feel bad if you havent
@@ -129,9 +129,9 @@ replacing your `/wire/` directory with the one from the newer version.
### Pro module version upgrade notes (if applicable)
- [FormBuilder](https://processwire.com/store/form-builder/)
version 0.4.0 or newer required, 0.5.0 or newer recommended.
version 0.4.0 or newer required, 0.5.2 or newer recommended.
- [ListerPro](https://processwire.com/store/lister-pro/)
version 1.0.9 or newer required, 1.1.3 or newer recommended.
version 1.0.9 or newer required, 1.1.4 or newer recommended.
- [ProFields](https://processwire.com/store/pro-fields/)
the latest versions of all ProFields (10 modules) are recommended.
- [LoginRegisterPro](https://processwire.com/store/login-register-pro/)
@@ -181,5 +181,5 @@ resolved any issues.
------
Copyright 2021 by Ryan Cramer / Ryan Cramer Design, LLC
Copyright 2023 by Ryan Cramer / Ryan Cramer Design, LLC

View File

@@ -14,7 +14,7 @@
}
],
"require": {
"php": ">=5.3.8",
"php": ">=5.5",
"ext-gd": "*"
},
"autoload": {

View File

@@ -448,7 +448,7 @@ DirectoryIndex index.php index.html index.htm
RewriteCond %{REQUEST_FILENAME} !(favicon\.ico|robots\.txt)
# -----------------------------------------------------------------------------------------------
# 18. Optionally (O) prevent PW from attempting to serve images or anything in /site/assets/.
# 18. Optionally (O) prevent PW from serving some file types, or anything in /site/assets/.
# Both of these lines are optional, but can help to reduce server load. However, they
# are not compatible with the $config->pagefileSecure option (if enabled) and they
# may produce an Apache 404 rather than your regular 404. You may uncomment the two lines
@@ -458,7 +458,7 @@ DirectoryIndex index.php index.html index.htm
# section #2 above that makes ProcessWire the 404 handler.
# -----------------------------------------------------------------------------------------------
# RewriteCond %{REQUEST_URI} !\.(jpg|jpeg|gif|png|ico|webp|svg)$ [NC]
# RewriteCond %{REQUEST_URI} !\.(jpg|jpeg|gif|png|ico|webp|svg|js|css)$ [NC]
# RewriteCond %{REQUEST_FILENAME} !(^|/)site/assets/
# -----------------------------------------------------------------------------------------------
@@ -478,5 +478,4 @@ DirectoryIndex index.php index.html index.htm
#################################################################################################
# END PROCESSWIRE HTACCESS DIRECTIVES
#################################################################################################
#################################################################################################

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +0,0 @@
<?php
// Intentionally left blank to test that htaccess rewrite rules are working.
// Accessing this file from http should produce a '403 forbidden' error,
// since all PHP files are blocked under /assets/.

View File

@@ -1,57 +0,0 @@
<?php namespace ProcessWire;
/**
* ProcessWire Configuration File
*
* Site-specific configuration for ProcessWire
*
* Please see the file /wire/config.php which contains all configuration options you may
* specify here. Simply copy any of the configuration options from that file and paste
* them into this file in order to modify them.
*
* SECURITY NOTICE
* In non-dedicated environments, you should lock down the permissions of this file so
* that it cannot be seen by other users on the system. For more information, please
* see the config.php section at: https://processwire.com/docs/security/file-permissions/
*
* This file is licensed under the MIT license
* https://processwire.com/about/license/mit/
*
* ProcessWire 3.x, Copyright 2019 by Ryan Cramer
* https://processwire.com
*
*/
if(!defined("PROCESSWIRE")) die();
/*** SITE CONFIG *************************************************************************/
/** @var Config $config */
/**
* Prepend template file
*
* PHP file in /site/templates/ that will be loaded before each page's template file.
* Example: _init.php
*
* @var string
*
*/
$config->prependTemplateFile = '_init.php';
/**
* Allow core API variables to also be accessed as functions?
*
* Recommended. This enables API varibles like $pages to also be accessed as pages(),
* as an example. And so on for most other core variables.
*
* Benefits are better type hinting, always in scope, and potentially shorter API calls.
* See the file /wire/core/FunctionsAPI.php for details on these functions.
*
* @var bool
*
*/
$config->useFunctionsAPI = true;
/*** INSTALLER CONFIG ********************************************************************/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

View File

@@ -1 +0,0 @@
This file is here to ensure Git adds the dir to the repo. You may delete this file.

View File

@@ -1,6 +0,0 @@
<?php if(!defined("PROCESSWIRE_INSTALL")) die();
$info = array(
'title' => "Default (Beginner Edition)",
'summary' => "A minimal responsive site profile that serves as a good starting point for new sites or for learning about ProcessWire. Focuses on using the easiest to understand template concepts for new users.",
'screenshot' => "screenshot.png"
);

View File

@@ -1,538 +0,0 @@
--- WireDatabaseBackup {"time":"2014-08-27 12:18:44","user":"","dbName":"pw2_blank","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"]}
DROP TABLE IF EXISTS `caches`;
CREATE TABLE `caches` (
`name` varchar(250) NOT NULL,
`data` mediumtext NOT NULL,
`expires` datetime NOT NULL,
PRIMARY KEY (`name`),
KEY `expires` (`expires`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `field_body`;
CREATE TABLE `field_body` (
`pages_id` int(10) unsigned NOT NULL,
`data` mediumtext NOT NULL,
PRIMARY KEY (`pages_id`),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('27', '<h3>The page you were looking for is not found.</h3><p>Please use our search engine or navigation above to find the page.</p>');
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('1', '<h2>What is ProcessWire?</h2>\r\n\r\n<p>ProcessWire gives you full control over your fields, templates and markup. It provides a powerful template system that works the way you do. Not to mention, ProcessWire\'s API makes working with your content easy and enjoyable. <a href=\"http://processwire.com\">Learn more</a></p>\r\n\r\n<h3>About this site profile</h3>\r\n\r\n<p>This is a basic minimal site for you to use in developing your own site or to learn from. There are a few pages here to serve as examples, but this site profile does not make any attempt to demonstrate all that ProcessWire can do. To learn more or ask questions, visit the <a href=\"http://www.processwire.com/talk/\" target=\"_blank\">ProcessWire forums</a> or <a href=\"http://modules.processwire.com/categories/site-profile/\">browse more site profiles</a>. If you are building a new site, this minimal profile is a good place to start. You may use these existing templates and design as they are, or you may replace them entirely.</p>\r\n\r\n<h3>Browse the site</h3>');
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('1002', '<h2>Ut capio feugiat saepius torqueo olim</h2>\r\n\r\n<h3>In utinam facilisi eum vicis feugait nimis</h3>\r\n\r\n<p>Iusto incassum appellatio cui macto genitus vel. Lobortis aliquam luctus, roto enim, imputo wisi tamen. Ratis odio, genitus acsi, neo illum consequat consectetuer ut.</p>\r\n\r\n<blockquote>\r\n<p>Wisi fere virtus cogo, ex ut vel nullus similis vel iusto. Tation incassum adsum in, quibus capto premo diam suscipere facilisi. Uxor laoreet mos capio premo feugait ille et. Pecus abigo immitto epulae duis vel. Neque causa, indoles verto, decet ingenium dignissim.</p>\r\n</blockquote>\r\n\r\n<p>Patria iriure vel vel autem proprius indoles ille sit. Tation blandit refoveo, accumsan ut ulciscor lucidus inhibeo capto aptent opes, foras.</p>\r\n\r\n<h3>Dolore ea valde refero feugait utinam luctus</h3>\r\n\r\n<p><img alt=\"Copyright by Austin Cramer for DesignIntelligence. This is a placeholder while he makes new ones for us.\" class=\"align_left\" src=\"/site/assets/files/1002/psych_cartoon_4-20.400x0.jpg\" />Usitas, nostrud transverbero, in, amet, nostrud ad. Ex feugiat opto diam os aliquam regula lobortis dolore ut ut quadrum. Esse eu quis nunc jugis iriure volutpat wisi, fere blandit inhibeo melior, hendrerit, saluto velit. Eu bene ideo dignissim delenit accumsan nunc. Usitas ille autem camur consequat typicus feugait elit ex accumsan nutus accumsan nimis pagus, occuro. Immitto populus, qui feugiat opto pneum letalis paratus. Mara conventio torqueo nibh caecus abigo sit eum brevitas. Populus, duis ex quae exerci hendrerit, si antehabeo nobis, consequat ea praemitto zelus.</p>\r\n\r\n<p>Immitto os ratis euismod conventio erat jus caecus sudo. code test Appellatio consequat, et ibidem ludus nulla dolor augue abdo tego euismod plaga lenis. Sit at nimis venio venio tego os et pecus enim pneum magna nobis ad pneum. Saepius turpis probo refero molior nonummy aliquam neque appellatio jus luctus acsi. Ulciscor refero pagus imputo eu refoveo valetudo duis dolore usitas. Consequat suscipere quod torqueo ratis ullamcorper, dolore lenis, letalis quia quadrum plaga minim.</p>');
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('1001', '<h2>Si lobortis singularis genitus ibidem saluto.</h2><p>Dolore ad nunc, mos accumsan paratus duis suscipit luptatum facilisis macto uxor iaceo quadrum. Demoveo, appellatio elit neque ad commodo ea. Wisi, iaceo, tincidunt at commoveo rusticus et, ludus. Feugait at blandit bene blandit suscipere abdo duis ideo bis commoveo pagus ex, velit. Consequat commodo roto accumsan, duis transverbero.</p>');
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('1004', '<h2>Pertineo vel dignissim, natu letalis fere odio</h2><p>Magna in gemino, gilvus iusto capto jugis abdo mos aptent acsi qui. Utrum inhibeo humo humo duis quae. Lucidus paulatim facilisi scisco quibus hendrerit conventio adsum.</p><h3>Si lobortis singularis genitus ibidem saluto</h3><ul><li>Feugiat eligo foras ex elit sed indoles hos elit ex antehabeo defui et nostrud.</li><li>Letatio valetudo multo consequat inhibeo ille dignissim pagus et in quadrum eum eu.</li><li>Aliquam si consequat, ut nulla amet et turpis exerci, adsum luctus ne decet, delenit.</li><li>Commoveo nunc diam valetudo cui, aptent commoveo at obruo uxor nulla aliquip augue.</li></ul><p>Iriure, ex velit, praesent vulpes delenit capio vero gilvus inhibeo letatio aliquip metuo qui eros. Transverbero demoveo euismod letatio torqueo melior. Ut odio in suscipit paulatim amet huic letalis suscipere eros causa, letalis magna.</p><ol><li>Feugiat eligo foras ex elit sed indoles hos elit ex antehabeo defui et nostrud.</li><li>Letatio valetudo multo consequat inhibeo ille dignissim pagus et in quadrum eum eu.</li><li>Aliquam si consequat, ut nulla amet et turpis exerci, adsum luctus ne decet, delenit.</li><li>Commoveo nunc diam valetudo cui, aptent commoveo at obruo uxor nulla aliquip augue.</li></ol>');
DROP TABLE IF EXISTS `field_email`;
CREATE TABLE `field_email` (
`pages_id` int(10) unsigned NOT NULL,
`data` varchar(250) NOT NULL DEFAULT '',
PRIMARY KEY (`pages_id`),
KEY `data_exact` (`data`),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `field_headline`;
CREATE TABLE `field_headline` (
`pages_id` int(10) unsigned NOT NULL,
`data` text NOT NULL,
PRIMARY KEY (`pages_id`),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_headline` (`pages_id`, `data`) VALUES('1', 'Minimal Site Profile');
INSERT INTO `field_headline` (`pages_id`, `data`) VALUES('1001', 'About Us');
INSERT INTO `field_headline` (`pages_id`, `data`) VALUES('27', '404 Page Not Found');
DROP TABLE IF EXISTS `field_images`;
CREATE TABLE `field_images` (
`pages_id` int(10) unsigned NOT NULL,
`data` varchar(250) NOT NULL,
`sort` int(10) unsigned NOT NULL,
`description` text NOT NULL,
`modified` datetime DEFAULT NULL,
`created` datetime DEFAULT NULL,
PRIMARY KEY (`pages_id`,`sort`),
KEY `data` (`data`),
KEY `modified` (`modified`),
KEY `created` (`created`),
FULLTEXT KEY `description` (`description`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1002', 'psych_cartoon_4-20.jpg', '0', 'Copyright by Austin Cramer for DesignIntelligence. This is a placeholder while he makes new ones for us.', NOW(), NOW());
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1', 'rough_cartoon_puppet.jpg', '1', 'Copyright by Austin Cramer for DesignIntelligence. This is a placeholder while he makes new ones for us.', NOW(), NOW());
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1', 'airport_cartoon_3.jpg', '0', 'Copyright by Austin Cramer for DesignIntelligence. This is a placeholder while he makes new ones for us.', NOW(), NOW());
DROP TABLE IF EXISTS `field_pass`;
CREATE TABLE `field_pass` (
`pages_id` int(10) unsigned NOT NULL,
`data` char(40) NOT NULL,
`salt` char(32) NOT NULL,
PRIMARY KEY (`pages_id`),
KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=ascii;
DROP TABLE IF EXISTS `field_permissions`;
CREATE TABLE `field_permissions` (
`pages_id` int(10) unsigned NOT NULL,
`data` int(11) NOT NULL,
`sort` int(10) unsigned NOT NULL,
PRIMARY KEY (`pages_id`,`sort`),
KEY `data` (`data`,`pages_id`,`sort`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `field_process`;
CREATE TABLE `field_process` (
`pages_id` int(11) NOT NULL DEFAULT '0',
`data` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`pages_id`),
KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('6', '17');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('3', '12');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('8', '12');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('9', '14');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('10', '7');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('11', '47');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('16', '48');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('300', '104');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('21', '50');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('29', '66');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('23', '10');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('304', '138');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('31', '136');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('22', '76');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('30', '68');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('303', '129');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('2', '87');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('302', '121');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('301', '109');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('28', '76');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('1007', '150');
DROP TABLE IF EXISTS `field_roles`;
CREATE TABLE `field_roles` (
`pages_id` int(10) unsigned NOT NULL,
`data` int(11) NOT NULL,
`sort` int(10) unsigned NOT NULL,
PRIMARY KEY (`pages_id`,`sort`),
KEY `data` (`data`,`pages_id`,`sort`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `field_sidebar`;
CREATE TABLE `field_sidebar` (
`pages_id` int(10) unsigned NOT NULL,
`data` mediumtext NOT NULL,
PRIMARY KEY (`pages_id`),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_sidebar` (`pages_id`, `data`) VALUES('1', '<h3>About ProcessWire</h3>\r\n\r\n<p>ProcessWire is an open source CMS and web application framework aimed at the needs of designers, developers and their clients.</p>\r\n\r\n<ul>\r\n <li><a href=\"http://processwire.com/talk/\">Support</a>&nbsp;</li>\r\n <li><a href=\"http://processwire.com/docs/\">Documentation</a></li>\r\n <li><a href=\"http://processwire.com/docs/tutorials/\">Tutorials</a></li>\r\n <li><a href=\"http://cheatsheet.processwire.com\">API Cheatsheet</a></li>\r\n <li><a href=\"http://modules.processwire.com\">Modules/Plugins</a></li>\r\n</ul>');
INSERT INTO `field_sidebar` (`pages_id`, `data`) VALUES('1002', '<h3>Sudo nullus</h3>\r\n\r\n<p>Et torqueo vulpes vereor luctus augue quod consectetuer antehabeo causa patria tation ex plaga ut. Abluo delenit wisi iriure eros feugiat probo nisl aliquip nisl, patria. Antehabeo esse camur nisl modo utinam. Sudo nullus ventosus ibidem facilisis saepius eum sino pneum, vicis odio voco opto.</p>');
DROP TABLE IF EXISTS `field_summary`;
CREATE TABLE `field_summary` (
`pages_id` int(10) unsigned NOT NULL,
`data` mediumtext NOT NULL,
PRIMARY KEY (`pages_id`),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1002', 'Dolore ea valde refero feugait utinam luctus. Probo velit commoveo et, delenit praesent, suscipit zelus, hendrerit zelus illum facilisi, regula. ');
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1001', 'This is a placeholder page with two child pages to serve as an example. ');
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1005', 'View this template\'s source for a demonstration of how to create a basic site map. ');
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1004', 'Mos erat reprobo in praesent, mara premo, obruo iustum pecus velit lobortis te sagaciter populus.');
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1', 'ProcessWire is an open source CMS and web application framework aimed at the needs of designers, developers and their clients. ');
DROP TABLE IF EXISTS `field_title`;
CREATE TABLE `field_title` (
`pages_id` int(10) unsigned NOT NULL,
`data` text NOT NULL,
PRIMARY KEY (`pages_id`),
KEY `data_exact` (`data`(255)),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('11', 'Templates');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('16', 'Fields');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('22', 'Setup');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('3', 'Pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('6', 'Add Page');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('8', 'Tree');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('9', 'Save Sort');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('10', 'Edit Page');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('21', 'Modules');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('29', 'Users');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('30', 'Roles');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('2', 'Admin');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('7', 'Trash');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('27', '404 Page');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('302', 'Insert Link');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('23', 'Login');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('304', 'Profile');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('301', 'Empty Trash');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('300', 'Search');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('303', 'Insert Image');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('28', 'Access');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('31', 'Permissions');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('32', 'Edit pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('34', 'Delete pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('35', 'Move pages (change parent)');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('36', 'View pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('50', 'Sort child pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('51', 'Change templates on pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('52', 'Administer users');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('53', 'User can update profile/password');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('54', 'Lock or unlock a page');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1', 'Home');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1001', 'About');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1002', 'Child page example 1');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1000', 'Search');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1004', 'Child page example 2');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1005', 'Site Map');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1006', 'Use Page Lister');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1007', 'Find');
DROP TABLE IF EXISTS `fieldgroups`;
CREATE TABLE `fieldgroups` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(250) CHARACTER SET ascii NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=97 DEFAULT CHARSET=utf8;
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('2', 'admin');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('3', 'user');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('4', 'role');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('5', 'permission');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('1', 'home');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('88', 'sitemap');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('83', 'basic-page');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('80', 'search');
DROP TABLE IF EXISTS `fieldgroups_fields`;
CREATE TABLE `fieldgroups_fields` (
`fieldgroups_id` int(10) unsigned NOT NULL DEFAULT '0',
`fields_id` int(10) unsigned NOT NULL DEFAULT '0',
`sort` int(11) unsigned NOT NULL DEFAULT '0',
`data` text,
PRIMARY KEY (`fieldgroups_id`,`fields_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('2', '2', '1', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('2', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('3', '3', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('3', '4', '2', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('4', '5', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('5', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('3', '92', '1', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '44', '5', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '76', '3', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('80', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '44', '5', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '76', '3', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '78', '1', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('88', '79', '1', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '79', '2', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '82', '4', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('88', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '82', '4', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '78', '1', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '79', '2', NULL);
DROP TABLE IF EXISTS `fields`;
CREATE TABLE `fields` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`type` varchar(128) CHARACTER SET ascii NOT NULL,
`name` varchar(250) CHARACTER SET ascii NOT NULL,
`flags` int(11) NOT NULL DEFAULT '0',
`label` varchar(250) NOT NULL DEFAULT '',
`data` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `type` (`type`)
) ENGINE=MyISAM AUTO_INCREMENT=97 DEFAULT CHARSET=utf8;
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('1', 'FieldtypePageTitle', 'title', '13', 'Title', '{\"required\":1,\"textformatters\":[\"TextformatterEntities\"],\"size\":0,\"maxlength\":255}');
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}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('3', 'FieldtypePassword', 'pass', '24', 'Set Password', '{\"collapsed\":1,\"size\":50,\"maxlength\":128}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('5', 'FieldtypePage', 'permissions', '24', 'Permissions', '{\"derefAsPage\":0,\"parent_id\":31,\"labelFieldName\":\"title\",\"inputfield\":\"InputfieldCheckboxes\"}');
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.\"}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('92', 'FieldtypeEmail', 'email', '9', 'E-Mail Address', '{\"size\":70,\"maxlength\":255}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('82', 'FieldtypeTextarea', 'sidebar', '0', 'Sidebar', '{\"inputfieldClass\":\"InputfieldCKEditor\",\"rows\":5,\"contentType\":1,\"toolbar\":\"Format, Bold, Italic, -, RemoveFormat\\r\\nNumberedList, BulletedList, -, Blockquote\\r\\nPWLink, Unlink, Anchor\\r\\nPWImage, Table, HorizontalRule, SpecialChar\\r\\nPasteText, PasteFromWord\\r\\nScayt, -, Sourcedialog\",\"inlineMode\":0,\"useACF\":1,\"usePurifier\":1,\"formatTags\":\"p;h2;h3;h4;h5;h6;pre;address\",\"extraPlugins\":[\"pwimage\",\"pwlink\",\"sourcedialog\"],\"removePlugins\":\"image,magicline\",\"toggles\":[2,4,8],\"collapsed\":2}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('44', 'FieldtypeImage', 'images', '0', 'Images', '{\"extensions\":\"gif jpg jpeg png\",\"adminThumbs\":1,\"inputfieldClass\":\"InputfieldImage\",\"maxFiles\":0,\"descriptionRows\":1,\"fileSchema\":2,\"textformatters\":[\"TextformatterEntities\"],\"outputFormat\":1,\"defaultValuePage\":0,\"defaultGrid\":0,\"icon\":\"camera\"}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('79', 'FieldtypeTextarea', 'summary', '1', 'Summary', '{\"textformatters\":[\"TextformatterEntities\"],\"inputfieldClass\":\"InputfieldTextarea\",\"collapsed\":2,\"rows\":3,\"contentType\":0}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('76', 'FieldtypeTextarea', 'body', '0', 'Body', '{\"inputfieldClass\":\"InputfieldCKEditor\",\"rows\":10,\"contentType\":1,\"toolbar\":\"Format, Bold, Italic, -, RemoveFormat\\r\\nNumberedList, BulletedList, -, Blockquote\\r\\nPWLink, Unlink, Anchor\\r\\nPWImage, Table, HorizontalRule, SpecialChar\\r\\nPasteText, PasteFromWord\\r\\nScayt, -, Sourcedialog\",\"inlineMode\":0,\"useACF\":1,\"usePurifier\":1,\"formatTags\":\"p;h2;h3;h4;h5;h6;pre;address\",\"extraPlugins\":[\"pwimage\",\"pwlink\",\"sourcedialog\"],\"removePlugins\":\"image,magicline\",\"toggles\":[2,4,8]}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('78', 'FieldtypeText', 'headline', '0', 'Headline', '{\"description\":\"Use this instead of the Title if a longer headline is needed than what you want to appear in navigation.\",\"textformatters\":[\"TextformatterEntities\"],\"collapsed\":2,\"size\":0,\"maxlength\":1024}');
DROP TABLE IF EXISTS `modules`;
CREATE TABLE `modules` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`class` varchar(128) CHARACTER SET ascii NOT NULL,
`flags` int(11) NOT NULL DEFAULT '0',
`data` text NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `class` (`class`)
) ENGINE=MyISAM AUTO_INCREMENT=158 DEFAULT CHARSET=utf8;
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('1', 'FieldtypeTextarea', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('2', 'FieldtypeNumber', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('3', 'FieldtypeText', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('4', 'FieldtypePage', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('30', 'InputfieldForm', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('6', 'FieldtypeFile', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('7', 'ProcessPageEdit', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('10', 'ProcessLogin', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('12', 'ProcessPageList', '0', '{\"pageLabelField\":\"title\",\"paginationLimit\":25,\"limit\":50}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('121', 'ProcessPageEditLink', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('14', 'ProcessPageSort', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('15', 'InputfieldPageListSelect', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('117', 'JqueryUI', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('17', 'ProcessPageAdd', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('125', 'SessionLoginThrottle', '3', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('122', 'InputfieldPassword', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('25', 'InputfieldAsmSelect', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('116', 'JqueryCore', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('27', 'FieldtypeModule', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('28', 'FieldtypeDatetime', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('29', 'FieldtypeEmail', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('108', 'InputfieldURL', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('32', 'InputfieldSubmit', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('33', 'InputfieldWrapper', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('34', 'InputfieldText', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('35', 'InputfieldTextarea', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('36', 'InputfieldSelect', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('37', 'InputfieldCheckbox', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('38', 'InputfieldCheckboxes', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('39', 'InputfieldRadios', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('40', 'InputfieldHidden', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('41', 'InputfieldName', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('43', 'InputfieldSelectMultiple', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('45', 'JqueryWireTabs', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('46', 'ProcessPage', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('47', 'ProcessTemplate', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('48', 'ProcessField', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('50', 'ProcessModule', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('114', 'PagePermissions', '3', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('97', 'FieldtypeCheckbox', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('115', 'PageRender', '3', '{\"clearCache\":1}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('55', 'InputfieldFile', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('56', 'InputfieldImage', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('57', 'FieldtypeImage', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('60', 'InputfieldPage', '0', '{\"inputfieldClasses\":[\"InputfieldSelect\",\"InputfieldSelectMultiple\",\"InputfieldCheckboxes\",\"InputfieldRadios\",\"InputfieldAsmSelect\",\"InputfieldPageListSelect\",\"InputfieldPageListSelectMultiple\"]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('61', 'TextformatterEntities', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('66', 'ProcessUser', '0', '{\"showFields\":[\"name\",\"email\",\"roles\"]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('67', 'MarkupAdminDataTable', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('68', 'ProcessRole', '0', '{\"showFields\":[\"name\"]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('76', 'ProcessList', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('78', 'InputfieldFieldset', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('79', 'InputfieldMarkup', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('80', 'InputfieldEmail', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('89', 'FieldtypeFloat', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('83', 'ProcessPageView', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('84', 'FieldtypeInteger', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('85', 'InputfieldInteger', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('86', 'InputfieldPageName', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('87', 'ProcessHome', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('90', 'InputfieldFloat', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('94', 'InputfieldDatetime', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('98', 'MarkupPagerNav', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('129', 'ProcessPageEditImageSelect', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('103', 'JqueryTableSorter', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('104', 'ProcessPageSearch', '1', '{\"searchFields\":\"title\",\"displayField\":\"title path\"}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('105', 'FieldtypeFieldsetOpen', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('106', 'FieldtypeFieldsetClose', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('107', 'FieldtypeFieldsetTabOpen', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('109', 'ProcessPageTrash', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('111', 'FieldtypePageTitle', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('112', 'InputfieldPageTitle', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('113', 'MarkupPageArray', '3', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('131', 'InputfieldButton', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('133', 'FieldtypePassword', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('134', 'ProcessPageType', '1', '{\"showFields\":[]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('135', 'FieldtypeURL', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('136', 'ProcessPermission', '1', '{\"showFields\":[\"name\",\"title\"]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('137', 'InputfieldPageListSelectMultiple', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('138', 'ProcessProfile', '1', '{\"profileFields\":[\"pass\",\"email\"]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('139', 'SystemUpdater', '1', '{\"systemVersion\":7}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('148', 'AdminThemeDefault', '2', '{\"colors\":\"classic\"}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('149', 'InputfieldSelector', '2', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('150', 'ProcessPageLister', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('151', 'JqueryMagnific', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('152', 'PagePathHistory', '3', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('155', 'InputfieldCKEditor', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('156', 'MarkupHTMLPurifier', '0', '', NOW());
DROP TABLE IF EXISTS `page_path_history`;
CREATE TABLE `page_path_history` (
`path` varchar(250) NOT NULL,
`pages_id` int(10) unsigned NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`path`),
KEY `pages_id` (`pages_id`),
KEY `created` (`created`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `pages`;
CREATE TABLE `pages` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(11) unsigned NOT NULL DEFAULT '0',
`templates_id` int(11) unsigned NOT NULL DEFAULT '0',
`name` varchar(128) CHARACTER SET ascii NOT NULL,
`status` int(10) unsigned NOT NULL DEFAULT '1',
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modified_users_id` int(10) unsigned NOT NULL DEFAULT '2',
`created` timestamp NOT NULL DEFAULT '2015-12-18 06:09:00',
`created_users_id` int(10) unsigned NOT NULL DEFAULT '2',
`sort` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `name_parent_id` (`name`,`parent_id`),
KEY `parent_id` (`parent_id`),
KEY `templates_id` (`templates_id`),
KEY `modified` (`modified`),
KEY `created` (`created`),
KEY `status` (`status`)
) ENGINE=MyISAM AUTO_INCREMENT=1009 DEFAULT CHARSET=utf8;
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1', '0', '1', 'home', '9', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('2', '1', '2', 'processwire', '1035', NOW(), '40', NOW(), '2', '5');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('3', '2', '2', 'page', '21', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('6', '3', '2', 'add', '1045', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('7', '1', '2', 'trash', '1039', NOW(), '41', NOW(), '2', '6');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('8', '3', '2', 'list', '21', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('9', '3', '2', 'sort', '1047', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('10', '3', '2', 'edit', '1045', NOW(), '41', NOW(), '2', '3');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('11', '22', '2', 'template', '21', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('16', '22', '2', 'field', '21', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('21', '2', '2', 'module', '21', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('22', '2', '2', 'setup', '21', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('23', '2', '2', 'login', '1035', NOW(), '41', NOW(), '2', '4');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('27', '1', '29', 'http404', '1035', NOW(), '41', NOW(), '3', '4');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('28', '2', '2', 'access', '13', NOW(), '41', NOW(), '2', '3');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('29', '28', '2', 'users', '29', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('30', '28', '2', 'roles', '29', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('31', '28', '2', 'permissions', '29', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('32', '31', '5', 'page-edit', '25', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('34', '31', '5', 'page-delete', '25', NOW(), '41', NOW(), '2', '3');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('35', '31', '5', 'page-move', '25', NOW(), '41', NOW(), '2', '4');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('36', '31', '5', 'page-view', '25', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('37', '30', '4', 'guest', '25', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('38', '30', '4', 'superuser', '25', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('41', '29', '3', 'admin', '1', NOW(), '40', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('40', '29', '3', 'guest', '25', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('50', '31', '5', 'page-sort', '25', NOW(), '41', NOW(), '41', '5');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('51', '31', '5', 'page-template', '25', NOW(), '41', NOW(), '41', '6');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('52', '31', '5', 'user-admin', '25', NOW(), '41', NOW(), '41', '10');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('53', '31', '5', 'profile-edit', '1', NOW(), '41', NOW(), '41', '13');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('54', '31', '5', 'page-lock', '1', NOW(), '41', NOW(), '41', '8');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('300', '3', '2', 'search', '1045', NOW(), '41', NOW(), '2', '5');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('301', '3', '2', 'trash', '1047', NOW(), '41', NOW(), '2', '5');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('302', '3', '2', 'link', '1041', NOW(), '41', NOW(), '2', '6');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('303', '3', '2', 'image', '1041', NOW(), '41', NOW(), '2', '7');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('304', '2', '2', 'profile', '1025', NOW(), '41', NOW(), '41', '5');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1000', '1', '26', 'search', '1025', NOW(), '41', NOW(), '2', '3');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1001', '1', '29', 'about', '1', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1002', '1001', '29', 'what', '1', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1004', '1001', '29', 'background', '1', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1005', '1', '34', 'site-map', '1', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1006', '31', '5', 'page-lister', '1', NOW(), '40', NOW(), '40', '9');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1007', '3', '2', 'lister', '1', NOW(), '40', NOW(), '40', '8');
DROP TABLE IF EXISTS `pages_access`;
CREATE TABLE `pages_access` (
`pages_id` int(11) NOT NULL,
`templates_id` int(11) NOT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`pages_id`),
KEY `templates_id` (`templates_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('37', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('38', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('32', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('34', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('35', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('36', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('50', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('51', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('52', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('53', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('54', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1006', '2', NOW());
DROP TABLE IF EXISTS `pages_parents`;
CREATE TABLE `pages_parents` (
`pages_id` int(10) unsigned NOT NULL,
`parents_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`pages_id`,`parents_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('2', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('3', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('3', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('7', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('22', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('22', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('28', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('28', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('29', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('29', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('29', '28');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('30', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('30', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('30', '28');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('31', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('31', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('31', '28');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1001', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1002', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1002', '1001');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1004', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1004', '1001');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1005', '1');
DROP TABLE IF EXISTS `pages_sortfields`;
CREATE TABLE `pages_sortfields` (
`pages_id` int(10) unsigned NOT NULL DEFAULT '0',
`sortfield` varchar(20) NOT NULL DEFAULT '',
PRIMARY KEY (`pages_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `session_login_throttle`;
CREATE TABLE `session_login_throttle` (
`name` varchar(128) NOT NULL,
`attempts` int(10) unsigned NOT NULL DEFAULT '0',
`last_attempt` int(10) unsigned NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `templates`;
CREATE TABLE `templates` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(250) CHARACTER SET ascii NOT NULL,
`fieldgroups_id` int(10) unsigned NOT NULL DEFAULT '0',
`flags` int(11) NOT NULL DEFAULT '0',
`cache_time` mediumint(9) NOT NULL DEFAULT '0',
`data` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `fieldgroups_id` (`fieldgroups_id`)
) ENGINE=MyISAM AUTO_INCREMENT=43 DEFAULT CHARSET=utf8;
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,\"modified\":1406317841}');
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}');
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}');
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}');
INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('1', 'home', '1', '0', '0', '{\"useRoles\":1,\"noParents\":1,\"slashUrls\":1,\"modified\":1409155727,\"roles\":[37]}');
INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('29', 'basic-page', '83', '0', '0', '{\"slashUrls\":1,\"modified\":1409155715}');
INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('26', 'search', '80', '0', '0', '{\"noChildren\":1,\"noParents\":1,\"allowPageNum\":1,\"slashUrls\":1,\"modified\":1409155785}');
INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('34', 'sitemap', '88', '0', '0', '{\"noChildren\":1,\"noParents\":1,\"redirectLogin\":23,\"slashUrls\":1,\"modified\":1409155794}');
UPDATE pages SET created_users_id=41, modified_users_id=41, created=NOW(), modified=NOW();
--- /WireDatabaseBackup {"numTables":20,"numCreateTables":27,"numInserts":305,"numSeconds":0}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

View File

@@ -1,89 +0,0 @@
ABOUT /SITE/MODULES/
====================
This directory /site/modules/ is where you may install additional plugin modules.
These modules are specific to your site only. There is also a corresponding
/wire/modules/ directory, which contains ProcessWire's core modules (and best to
leave those alone).
If safe for your hosting environment, you may wish to make this directory
writable to PHP so that the installation of your modules can be managed from
ProcessWire's admin. However, this is not necessarily safe in all shared hosting
environments and is completely optional.
Where to get modules?
---------------------
Visit the modules directory at: http://modules.processwire.com
Installing modules from the ProcessWire admin
---------------------------------------------
If your /site/modules/ directory is writable, you can install modules from
ProcessWire's admin directly from the Modules Directory, from a ZIP file or from
a URL to a ZIP file. In your ProcessWire admin, see Modules > New for
installation options.
Installing modules from the file system
---------------------------------------
Each module (and any related files) should live in a directory of its own. The
directory should generally carry the same name as the module. For instance, if
you are installing a module named ProcessDatabaseBackups.module, then it should
live in the directory /site/modules/ProcessDatabaseBackups/.
Once you have placed a new module in this directory, you need to let ProcessWire
know about it. Login to the admin and click "Modules". Then click the "Check for
new modules" button. It will find your new module(s). Click the "Install" button
next to any new modules that you want to install.
Removing modules
----------------
The first step in removing a module is to uninstall it from ProcessWire (if it
isn't already). You do this by going to the "Modules" page, and "Site" tab in
your ProcessWire admin. Click the "Uninstall" button next to the module you
want to remove.
After the module is uninstalled, you may remove the module files. If your
modules file system is writable to ProcessWire, it will give you a "Delete"
button next to the module in your "Modules" admin page. You may click that to
remove the module files.
If your file system is not writable, you may remove the module files manually
from the file system (via SFTP or whatever tool you are using to manage your
files on the server).
Interested in learning how to make your own modules?
----------------------------------------------------
We've created two "Hello World" modules as examples for those interested in
learning module development:
- Helloworld.module demonstrates the basics of modules and hooks.
http://modules.processwire.com/modules/helloworld/
- ProcessHello.module demonstrates the basics of how to create a Process
module. Process modules are those that create applications in the admin.
http://modules.processwire.com/modules/process-hello/
There is a module development forum located at:
https://processwire.com/talk/forum/19-moduleplugin-development/
For a tutorial on how to create modules, see:
http://wiki.processwire.com/index.php/Module_Creation
Additional resources
--------------------
To find and download new modules, see the modules directory at:
http://modules.processwire.com/
For more information about modules, see the documentation at:
http://processwire.com/api/modules/
For discussion and support of modules, see:
http://processwire.com/talk/forum/4-modulesplugins/

View File

@@ -1,221 +0,0 @@
Welcome to the Default/Basic Site Profile (Beginner Edition)
============================================================
This is a plain text document. If you are currently online with
internet access, you will find it much nicer to read an HTML
formatted version of this document located at:
http://processwire.com/docs/tutorials/default-site-profile/
Are you already somewhat familiar with ProcessWire and/or PHP? You
might also want to look into the Intermediate Edition of this profile.
Need multi-language support? The multi-language version of this
default site profile is a good place to start.
Both the intermediate and multi-language versions of this site
profile are available as installation options when installing
ProcessWire.
Introduction
============
Just getting started with ProcessWire and aren't totally clear on what
template files are? The good news is that template files aren't anything
other than regular HTML or PHP files, and you can use them however you
want!
If you know enough to create an HTML or PHP document, then you already
know how to use ProcessWire template files. The only difference is that
ProcessWire provides your template files with certain variables that
you may choose to use, or not use. Most notable is the $page variable,
which contains all the fields of text or other information contained
by the page being viewed.
For instance, $page->title contains the text contained in the Title
field of the current page, and $page->body contains the text for the
Body field of the current page. You can choose to output those wherever
you want. A really simple template file might look like a regular HTML
document except for where you want to output the dynamic portions (like
title and body). Here's an example:
<html>
<head>
<title><?= $page->title ?></title>
</head>
<body>
<h1><?= $page->title ?></h1>
<?= $page->body ?>
</body>
</html>
That's all that a template file is. Now when we're building something
for real, we like to save ourselves as much work as possible and avoid
writing the same HTML markup in multiple places. In order to do that
we'll usually isolate the repetitive markup into separate files or
functions so that we don't have to write it more than once. That's
not required of course, but it's a good strategy to save you time and
make it easier to maintain your site further down the road.
Template file strategies
========================
The two most popular strategies for template files are:
1. Direct Output is the simplest strategy and the one used by the
beginner edition of this site profile. While it doesn't scale as
well as other strategies, it is a very good point to start from.
If you've ever worked with WordPress templates, chances are you
already know how Direct Output works. Read more about the Direct
Output strategy:
http://processwire.com/to/direct-output/
2. Delayed Output is the strategy used by the intermediate edition
of this site profile. It is also quite simple but involves
populating content to placeholder variables rather than outputting
directly. As a result it may take a few more seconds to understand
than direct output, but the result is more scalable and
maintainable. Read more about Delayed Output here:
http://processwire.com/to/delayed-output/
How this Default Site Profile works (Beginner Edition)
======================================================
This Default Site Profile (beginner edition) uses the Direct Output
strategy. When a page is viewed on your site, here's what happens:
1. The initialization file is loaded (_init.php).
Here we use it just to define a shared function for navigation.
2. The template file is loaded (i.e. basic-page.php or another).
It outputs the content for the page.
Below are more details on exactly what takes place and in these two
steps outlined above:
1. The initialization file is loaded (_init.php)
---------------------------------------------
This step is completely optional with direct output, but we find
it handy to use this file to define our shared functions (if any).
In the case of this profile, we define a single renderNavTree()
function. It is useful to have this as a re-usable function since
we use it to generate markup for more than one place (specifically,
for sidebar navigation and for the sitemap). However, if you have
any confusion about this, ignore it for now and focus on #2 below
as an initialization file is completely optional.
2. The template file is loaded (i.e. basic-page.php or another)
------------------------------------------------------
Next, ProcessWire loads the template file used by the page being
viewed. For example, most pages here use basic-page.php.
The first thing that our template file does is include the HTML
header markup, which we've put in a file called _head.php:
include("./_head.php");
The above is simply a PHP function that says "include this file".
The leading "./" just means "from the current directory". We also
have an underscore "_" prepended to our filename here as a way
to identify this as an include file rather than a regular template
file. While completely optional, the underscore does also make
ProcessWire ignore it when looking for new template files, so you
may find it handy to use this convention in your own include files.
An alternate would be to use .inc as an extension rather than .php.
Have a look in the _head.php file now so you can see what's there.
It is basically half of an HTML file. Now have a look in _foot.php,
that's the other half. Notice that all the template files that
include _head.php at the beginning also include _foot.php at the
ending. This is to ensure there is a complete HTML document being
output.
To conclude, our template files (using direct output) are focused
on outputting what goes in-between the _head.php and _foot.php.
In our case, this is always a <div id='content'>...</div> and
optionally a <div id='sidebar'>...</div>. But for your own
template files you might choose to output something completely
different.
Files that make up this profile
===============================
Here is a summary of what is in each of the files in this directory.
We also recommend reviewing them in this order:
- _head.php
HTML header (top half of HTML document)
- _foot.php
HTML footer (bottom half of HTML document)
- basic-page.php
Template file outputting #content and #sidebar columns. This
template file is used by most pages in this small site.
- home.php
Template file used by homepage. Note that since the homepage uses
nearly the same layout as the other pages in the site, this
template file simply includes basic-page.php. No need two have
more than one template file with the same contents.
- sitemap.php
Outputs a sitemap of the entire site.
- search.php
Outputs results of site search queries.
- _init.php
Initialization file that we use to define a shared function for
generating navigation markup.
More template file resources
============================
- How do template files work?
https://processwire.com/api/templates/
Official documentation on template files.
- API variables
https://processwire.com/api/variables/
We mentioned $page above, but here are all the other API variables
your template file can make use of.
- API cheatsheet
http://cheatsheet.processwire.com/
Once you've got the basics down, this cheatsheet is invaluable in
describing all the properties and functions available to your
template files.
Tutorials that help with template files
=======================================
- Hello Worlds Tutoral, by Ryan Cramer
http://processwire.com/docs/tutorials/hello-worlds/
The Hello Worlds tutorial gently introduces ProcessWire and template
files, starting from a blank slate.
- "But what if I don't know how to code?", by Joss Sanglier
http://processwire.com/docs/tutorials/but-what-if-i-dont-know-how-to-code/
This particular series of tutorials will not only introduce you to
ProcessWire, but step by step, will give you those small bits of coding
knowledge that will get you going and open up this amazing world of a
Content Management Framework.
- Installing a CSS Framework, by Joss Sanglier
http://processwire.com/docs/tutorials/installing-a-css-framework/
A quick demonstration about how easy it is to use one of the many CSS
frameworks available to designers.
- How to structure your template files, by Ryan Cramer
http://processwire.com/docs/tutorials/how-to-structure-your-template-files/
This tutorial contrasts and compares the direct output and delayed
output strategies and more. It is a very good introduction to using
ProcessWire template files.

View File

@@ -1,22 +0,0 @@
</main>
<!-- footer -->
<footer id='footer' role="contentinfo">
<p>
Powered by <a href='http://processwire.com'>ProcessWire CMS</a> &nbsp; / &nbsp;
<?php
if($user->isLoggedin()) {
// if user is logged in, show a logout link
echo "<a href='{$config->urls->admin}login/logout/'>Logout ($user->name)</a>";
} else {
// if user not logged in, show a login link
echo "<a href='{$config->urls->admin}'>Admin Login</a>";
}
?>
</p>
</footer>
</body>
</html>

View File

@@ -1,99 +0,0 @@
<?php
/**
* Shared functions used by the beginner profile
*
* This file is included by the _init.php file, and is here just as an example.
* You could place these functions in the _init.php file if you prefer, but keeping
* them in this separate file is a better practice.
*
*/
/**
* Given a group of pages, render a simple <ul> navigation
*
* This is here to demonstrate an example of a simple shared function.
* Usage is completely optional.
*
* @param PageArray $items
*
*/
function renderNav(PageArray $items) {
if(!$items->count()) return;
echo "<ul class='nav' role='navigation'>";
// cycle through all the items
foreach($items as $item) {
// render markup for each navigation item as an <li>
if($item->id == wire('page')->id) {
// if current item is the same as the page being viewed, add a "current" class to it
echo "<li class='current' aria-current='true'>";
} else {
// otherwise just a regular list item
echo "<li>";
}
// markup for the link
echo "<a href='$item->url'>$item->title</a> ";
// if the item has summary text, include that too
if($item->summary) echo "<div class='summary'>$item->summary</div>";
// close the list item
echo "</li>";
}
echo "</ul>";
}
/**
* Given a group of pages render a tree of navigation
*
* @param Page|PageArray $items Page to start the navigation tree from or pages to render
* @param int $maxDepth How many levels of navigation below current should it go?
*
*/
function renderNavTree($items, $maxDepth = 3) {
// if we've been given just one item, convert it to an array of items
if($items instanceof Page) $items = array($items);
// if there aren't any items to output, exit now
if(!count($items)) return;
// $out is where we store the markup we are creating in this function
// start our <ul> markup
echo "<ul class='nav nav-tree' role='navigation'>";
// cycle through all the items
foreach($items as $item) {
// markup for the list item...
// if current item is the same as the page being viewed, add a "current" class and
// visually hidden text for screen readers to it
if($item->id == wire('page')->id) {
echo "<li class='current' aria-current='true'><span class='visually-hidden'>Current page: </span>";
} else {
echo "<li>";
}
// markup for the link
echo "<a href='$item->url'>$item->title</a>";
// if the item has children and we're allowed to output tree navigation (maxDepth)
// then call this same function again for the item's children
if($item->hasChildren() && $maxDepth) {
renderNavTree($item->children, $maxDepth-1);
}
// close the list item
echo "</li>";
}
// end our <ul> markup
echo "</ul>";
}

View File

@@ -1,61 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title><?php echo $page->title; ?></title>
<meta name="description" content="<?php echo $page->summary; ?>" />
<link href='//fonts.googleapis.com/css?family=Lusitana:400,700|Quattrocento:400,700' rel='stylesheet' type='text/css' />
<link rel="stylesheet" type="text/css" href="<?php echo $config->urls->templates?>styles/main.css" />
</head>
<body class='has-sidebar'>
<!-- top navigation -->
<ul class='topnav' role='navigation'><?php
// top navigation consists of homepage and its visible children
$homepage = $pages->get('/');
$children = $homepage->children();
// make 'home' the first item in the navigation
$children->prepend($homepage);
// render an <li> for each top navigation item
foreach($children as $child) {
if($child->id == $page->rootParent->id) {
// this $child page is currently being viewed (or one of it's children/descendents)
// so we highlight it as the current page in the navigation
echo "<li class='current' aria-current='true'><span class='visually-hidden'>Current page: </span><a href='$child->url'>$child->title</a></li>";
} else {
echo "<li><a href='$child->url'>$child->title</a></li>";
}
}
// output an "Edit" link if this page happens to be editable by the current user
if($page->editable()) {
echo "<li class='edit'><a href='$page->editUrl'>Edit</a></li>";
}
?></ul>
<!-- search form -->
<form class='search' action='<?php echo $pages->get('template=search')->url; ?>' method='get'>
<label for='search' class='visually-hidden'>Search:</label>
<input type='text' name='q' id='search' placeholder='Search' value='' />
<button type='submit' name='submit' class='visually-hidden'>Search</button>
</form>
<!-- breadcrumbs -->
<div class='breadcrumbs' role='navigation' aria-label='You are here:'><?php
// breadcrumbs are the current page's parents
foreach($page->parents() as $item) {
echo "<span><a href='$item->url'>$item->title</a></span> ";
}
// optionally output the current page as the last item
echo "<span>$page->title</span> ";
?></div>
<main id='main'>

View File

@@ -1,15 +0,0 @@
<?php
/**
* Initialization file for template files
*
* This file is automatically included as a result of $config->prependTemplateFile
* option specified in your /site/config.php.
*
* You can initialize anything you want to here. In the case of this beginner profile,
* we are using it just to include another file with shared functions.
*
*/
include_once("./_func.php"); // include our shared functions

View File

@@ -1,16 +0,0 @@
<?php namespace ProcessWire;
/**
* Admin template just loads the admin application controller,
* and admin is just an application built on top of ProcessWire.
*
* This demonstrates how you can use ProcessWire as a front-end
* to another application.
*
* Feel free to hook admin-specific functionality from this file,
* but remember to leave the require() statement below at the end.
*
*/
/** @var Config $config */
require($config->paths->core . "admin.php");

View File

@@ -1,45 +0,0 @@
<?php
include('./_head.php'); // include header markup ?>
<div id='content'><?php
// output 'headline' if available, otherwise 'title'
echo "<h1>" . $page->get('headline|title') . "</h1>";
// output bodycopy
echo $page->body;
// render navigation to child pages
renderNav($page->children);
// TIP: Notice that this <div id='content'> section is
// identical between home.php and basic-page.php. You may
// want to move this to a separate file, like _content.php
// and then include('./_content.php'); here instead, on both
// the home.php and basic-page.php template files. Then when
// you make yet more templates that need the same thing, you
// can simply include() it from them.
?></div><!-- end content -->
<aside id='sidebar'><?php
// rootParent is the parent page closest to the homepage
// you can think of this as the "section" that the user is in
// so we'll assign it to a $section variable for clarity
$section = $page->rootParent;
// if there's more than 1 page in this section...
if($section->hasChildren > 1) {
// output sidebar navigation
// see _init.php for the renderNavTree function
renderNavTree($section);
}
// output sidebar text if the page has it
echo $page->sidebar;
?></aside><!-- end sidebar -->
<?php include('./_foot.php'); // include footer markup ?>

View File

@@ -1,11 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>500 Internal Server Error</title>
</head>
<body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or misconfiguration and was unable to complete your request.</p>
<p>{message}</p>
</body>
</html>

View File

@@ -1,21 +0,0 @@
When a fatal error occurs, ProcessWire displays the message:
"Unable to complete this request due to an error."
The message is intentionally vague for security purposes.
Details will be logged to /site/assets/logs/errors.txt.
When present in this directory, the file 500.html will be
displayed instead of the generic error message above. Feel
free to modify this file to show whatever you would like.
Please note the following:
* 500.html is plain HTML and has no PHP or API access.
* You may enter the tag {message} and ProcessWire will
replace this with additional details when applicable.
When not applicable, it will make it blank.
* If you are logged in as an admin, ProcessWire will
give you a detailed error message rather than 500.html.

View File

@@ -1,39 +0,0 @@
<?php
include('./_head.php'); // include header markup ?>
<div id='content'><?php
// output 'headline' if available, otherwise 'title'
echo "<h1>" . $page->get('headline|title') . "</h1>";
// output bodycopy
echo $page->body;
// render navigation to child pages
renderNav($page->children);
?></div><!-- end content -->
<div id='sidebar'><?php
if(count($page->images)) {
// if the page has images on it, grab one of them randomly...
$image = $page->images->getRandom();
// resize it to 400 pixels wide
$image = $image->width(400);
// output the image at the top of the sidebar...
echo "<img src='$image->url' alt='$image->description' />";
}
// output sidebar text if the page has it
echo $page->sidebar;
?></div><!-- end sidebar -->
<?php include('./_foot.php'); // include footer markup ?>

View File

@@ -1,3 +0,0 @@
// Well hello there. Looks like we don't have any Javascript.
// Maybe you could help a friend out and put some in here?
// Or at least, when ready, this might be a good place for it.

View File

@@ -1,69 +0,0 @@
<?php
include("./_head.php"); ?>
<div id='content'>
<?php
// search.php template file
// See README.txt for more information.
// look for a GET variable named 'q' and sanitize it
$q = $sanitizer->text($input->get->q);
// did $q have anything in it?
if($q) {
// Sanitize for placement within a selector string. This is important for any
// values that you plan to bundle in a selector string like we are doing here.
$q = $sanitizer->selectorValue($q);
// Search the title and body fields for our query text.
// Limit the results to 50 pages.
$selector = "title|body~=$q, limit=50";
// If user has access to admin pages, lets exclude them from the search results.
// Note that 2 is the ID of the admin page, so this excludes all results that have
// that page as one of the parents/ancestors. This isn't necessary if the user
// doesn't have access to view admin pages. So it's not technically necessary to
// have this here, but we thought it might be a good way to introduce has_parent.
if($user->isLoggedin()) $selector .= ", has_parent!=2";
// Find pages that match the selector
$matches = $pages->find($selector);
// did we find any matches? ...
if($matches->count) {
// we found matches
echo "<h2>Found $matches->count page(s) matching your query:</h2>";
// output navigation for them (see TIP below)
echo "<ul class='nav'>";
foreach($matches as $match) {
echo "<li><a href='$match->url'>$match->title</a>";
echo "<div class='summary'>$match->summary</div></li>";
}
echo "</ul>";
// TIP: you could replace everything from the <ul class='nav'> above
// all the way to here, with just this: renderNav($matches);
} else {
// we didn't find any
echo "<h2>Sorry, no results were found.</h2>";
}
} else {
// no search terms provided
echo "<h2>Please enter a search term in the search box (upper right corner)</h2>";
}
?>
</div><!-- end content -->
<?php include("./_foot.php"); ?>

View File

@@ -1,17 +0,0 @@
<?php
include("./_head.php"); ?>
<div id='content'>
<?php
$maxDepth = 4;
renderNavTree($pages->get('/'), $maxDepth);
// see the _init.php for the renderNavTree function
?>
</div>
<?php include("./_foot.php"); ?>

View File

@@ -1,331 +0,0 @@
/**
* main.css
*
* 1. General HTML tags
* 2. Masthead area
* 3. Main content and sidebar
* 4. Footer
* 5. Media queries for responsive layout
* 6. Accessibility helpers
*
*/
/*********************************************************************
* 1. General HTML tags
*
*/
* {
box-sizing: border-box;
}
body {
padding: 5%;
max-width: 1600px;
margin: 0 auto;
}
body, td, input[type=text], textarea {
font-family: 'Quattrocento', serif;
font-size: 105%;
line-height: 1.8em;
color: #444;
}
img {
max-width: 100%;
}
h2 {
font-weight: normal;
}
h3 {
border-top: 1px solid #eee;
padding-top: 1em;
color: #777;
}
a {
color: #333;
text-decoration: none;
border-bottom: 1px solid #ccc;
}
a:hover,
.nav a:hover {
color: #000;
border-color: #aaa;
}
blockquote {
margin-left: 0;
padding-left: 1.5em;
padding-right: 2em;
border-left: 4px solid #ddd;
font-style: italic;
color: #777;
}
pre, code {
background: #eee;
border: 1px solid #ddd;
}
pre {
font-size: 14px;
line-height: 1.4em;
padding: 1em;
border-left: 4px solid #ddd;
}
/*********************************************************************
* 2. Masthead area
*
*/
.topnav, .topnav li {
list-style: none;
padding: 0;
margin: 0;
}
.topnav li {
float: left;
margin-right: 1em;
margin-bottom: 1em;
}
.topnav a {
padding: 0.25em 0.5em;
text-decoration: none;
display: block;
background: #eee;
color: #333;
border: 1px solid #eee;
}
.topnav a:hover {
background: #ddd;
border-color: #ddd;
}
.topnav li.current a {
background: #ccc;
border-color: #ccc;
}
.topnav li.edit a {
background: none;
}
form.search {
float: right;
margin: 0;
width: 30%;
}
form.search input {
margin: 0;
padding: 0.25em 0.5em;
border: 1px solid #ccc;
width: 100%;
}
.breadcrumbs {
clear: both;
padding-top: 1em;
}
.breadcrumbs span:after {
content: ">";
color: #999;
padding-left: 0.5em;
padding-right: 0.25em;
}
/*********************************************************************
* 3. Main content and sidebar
*
*/
#main {
border-top: 1px solid #eee;
padding-top: 1em;
margin-top: 1em;
clear: both;
}
#content {
width: 65%;
float: left;
padding-bottom: 2em;
}
#sidebar {
width: 35%;
padding-left: 5%;
float: left;
padding-bottom: 2em;
}
.nav {
margin-left: 0;
padding-left: 0;
list-style: none;
}
.nav .nav {
padding-left: 1.5em;
list-style: disc;
}
.nav li {
margin: 1em 0;
}
.nav-tree li {
margin-top: 0;
margin-bottom: 0;
}
.nav a {
font-weight: bold;
}
.nav-tree li a {
color: #777;
}
.nav .current > a {
color: #333;
}
.align_left {
/* for images placed in rich text editor */
float: left;
margin: 0 1em 0.5em 0;
position: relative;
top: 0.5em;
max-width: 50%;
}
.align_right {
/* for images placed in rich text editor */
float: right;
margin: 0 0 0.5em 1em;
max-width: 50%;
}
.align_center {
/* for images placed in rich text editor */
display: block;
margin: 1em auto;
position: relative;
top: 0.5em;
}
figure {
display: table;
width: 1px;
margin: 1em 0;
}
figure img {
display: table-row;
margin-bottom: 0.5em;
}
figure figcaption {
display: table-row;
font-size: smaller;
color: #777;
line-height: 1.4em;
}
/*********************************************************************
* 4. Footer
*
*/
#footer {
clear: both;
border-top: 1px solid #eee;
font-size: 80%;
}
/*********************************************************************
* 5. Media queries for responsive layout
*
*/
@media only screen and (max-width: 767px) {
/* mobile layout */
body, td, textarea {
font-size: 100%;
}
#content,
#sidebar {
float: none;
width: 100%;
padding: 0;
}
form.search {
float: none;
width: 100%;
}
#content {
width: 100%;
}
#sidebar {
border-top: 1px solid #eee;
padding-top: 1em;
}
.align_left, .align_right, .align_center {
display: block;
float: none;
margin: 1em auto;
max-width: 100%;
}
}
@media only screen and (min-width: 1200px) {
/* extra-wide desktop layout */
body, td, textarea {
font-size: 115%;
}
}
/*********************************************************************
* 6. Accessibility helpers
*
*/
/* Hide visually, but remain approachable for screenreader */
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
white-space: nowrap;
overflow: hidden;
clip: rect(1px, 1px, 1px, 1px);
border: 0;
}
/* Show bypass link on hover */
.element-focusable:focus {
clip: auto;
overflow: visible;
height: auto;
}
/* Sample styling for bypass link */
.bypass-to-main:focus {
top: 0;
left: 0;
width: 100%;
height: 40px;
line-height: 40px;
text-align: center;
background: #333;
color: #fff;
}

View File

@@ -0,0 +1,20 @@
<?php namespace ProcessWire;
/**
* Example custom page class for pages using template “home”
*
* Feel free to delete this file if you do not want it. This is here as a
* placeholder to ensure the /site/classes/ directory exists.
*
* When this file/class is present, page using template “home” will use this
* class “HomePage” rather than class “Page”. You can do the same for any
* other templates. For example, template “basic-page” would have a class
* named “BasicPagePage” and template “admin” would have “AdminPage”, etc.
*
* Custom page classes must extend class “Page”, or one derived from it.
*
* @property string $title
*
*/
class HomePage extends Page {
}

View File

@@ -17,31 +17,33 @@
* This file is licensed under the MIT license
* https://processwire.com/about/license/mit/
*
* ProcessWire 3.x, Copyright 2019 by Ryan Cramer
* ProcessWire 3.x, Copyright 2023 by Ryan Cramer
* https://processwire.com
*
*/
if(!defined("PROCESSWIRE")) die();
/*** SITE CONFIG *************************************************************************/
/** @var Config $config */
/**
* Allow core API variables to also be accessed as functions?
*
* Recommended. This enables API varibles like $pages to also be accessed as pages(),
* as an example. And so on for most other core variables.
*
* Benefits are better type hinting, always in scope, and potentially shorter API calls.
* See the file /wire/core/FunctionsAPI.php for details on these functions.
*
* @var bool
*
*/
/*** SITE CONFIG *************************************************************************/
// Let core API vars also be functions? So you can use $page or page(), for example.
$config->useFunctionsAPI = true;
// Use custom Page classes in /site/classes/ ? (i.e. template "home" => HomePage.php)
$config->usePageClasses = true;
/*** INSTALLER CONFIG ********************************************************************/
// Use Markup Regions? (https://processwire.com/docs/front-end/output/markup-regions/)
$config->useMarkupRegions = true;
// Prepend this file in /site/templates/ to any rendered template files
$config->prependTemplateFile = '_init.php';
// Append this file in /site/templates/ to any rendered template files
$config->appendTemplateFile = '_main.php';
// Allow template files to be compiled for backwards compatibility?
$config->templateCompile = false;
/*** INSTALLER CONFIG ********************************************************************/

View File

@@ -2,6 +2,8 @@
if(!defined("PROCESSWIRE")) die();
/** @var ProcessWire $wire */
/**
* ProcessWire Request Finished
* ============================

View File

@@ -2,6 +2,8 @@
if(!defined("PROCESSWIRE")) die();
/** @var ProcessWire $wire */
/**
* ProcessWire Bootstrap Initialization
* ====================================
@@ -9,9 +11,9 @@ if(!defined("PROCESSWIRE")) die();
* This occurs after all autoload modules have been initialized, but before the current page
* has been determined. This is a good place to attach hooks. You may place whatever you'd
* like in this file. For example:
*
*
* $wire->addHookAfter('Page::render', function($event) {
* $event->return = str_replace("</body>", "<p>Hello World</p></body>", $event->return);
* });
*
*
*/

View File

@@ -1,6 +1,7 @@
<?php if(!defined("PROCESSWIRE_INSTALL")) die();
<?php namespace ProcessWire;
if(!defined("PROCESSWIRE_INSTALL")) die();
$info = array(
'title' => "Blank",
'summary' => "This profile includes only the bare minimum pages, fields and templates, giving you essentially a blank slate. ",
'screenshot' => ""
);
);

View File

@@ -185,7 +185,6 @@ CREATE TABLE `modules` (
) ENGINE=MyISAM AUTO_INCREMENT=159 DEFAULT CHARSET=utf8;
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('1', 'FieldtypeTextarea', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('2', 'FieldtypeNumber', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('3', 'FieldtypeText', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('4', 'FieldtypePage', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('30', 'InputfieldForm', '0', '', NOW());
@@ -207,7 +206,6 @@ INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('28', '
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('29', 'FieldtypeEmail', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('108', 'InputfieldURL', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('32', 'InputfieldSubmit', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('33', 'InputfieldWrapper', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('34', 'InputfieldText', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('35', 'InputfieldTextarea', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('36', 'InputfieldSelect', '0', '', NOW());
@@ -218,7 +216,6 @@ INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('40', '
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('41', 'InputfieldName', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('43', 'InputfieldSelectMultiple', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('45', 'JqueryWireTabs', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('46', 'ProcessPage', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('47', 'ProcessTemplate', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('48', 'ProcessField', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('50', 'ProcessModule', '0', '', NOW());
@@ -267,7 +264,7 @@ INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('148',
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('149', 'InputfieldSelector', '2', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('150', 'ProcessPageLister', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('151', 'JqueryMagnific', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('155', 'InputfieldCKEditor', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('155', 'InputfieldTinyMCE', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('156', 'MarkupHTMLPurifier', '0', '', NOW());
DROP TABLE IF EXISTS `pages`;

View File

@@ -1,90 +1,4 @@
ABOUT /SITE/MODULES/
====================
This directory /site/modules/ is where you may install additional plugin modules.
These modules are specific to your site only. There is also a corresponding
/wire/modules/ directory, which contains ProcessWire's core modules (and best to
leave those alone).
If safe for your hosting environment, you may wish to make this directory
writable to PHP so that the installation of your modules can be managed from
ProcessWire's admin. However, this is not necessarily safe in all shared hosting
environments and is completely optional.
Where to get modules?
---------------------
Visit the modules directory at: http://modules.processwire.com
Installing modules from the ProcessWire admin
---------------------------------------------
If your /site/modules/ directory is writable, you can install modules from
ProcessWire's admin directly from the Modules Directory, from a ZIP file or from
a URL to a ZIP file. In your ProcessWire admin, see Modules > New for
installation options.
Installing modules from the file system
---------------------------------------
Each module (and any related files) should live in a directory of its own. The
directory should generally carry the same name as the module. For instance, if
you are installing a module named ProcessDatabaseBackups.module, then it should
live in the directory /site/modules/ProcessDatabaseBackups/.
Once you have placed a new module in this directory, you need to let ProcessWire
know about it. Login to the admin and click "Modules". Then click the "Check for
new modules" button. It will find your new module(s). Click the "Install" button
next to any new modules that you want to install.
Removing modules
----------------
The first step in removing a module is to uninstall it from ProcessWire (if it
isn't already). You do this by going to the "Modules" page, and "Site" tab in
your ProcessWire admin. Click the "Uninstall" button next to the module you
want to remove.
After the module is uninstalled, you may remove the module files. If your
modules file system is writable to ProcessWire, it will give you a "Delete"
button next to the module in your "Modules" admin page. You may click that to
remove the module files.
If your file system is not writable, you may remove the module files manually
from the file system (via SFTP or whatever tool you are using to manage your
files on the server).
Interested in learning how to make your own modules?
----------------------------------------------------
We've created two "Hello World" modules as examples for those interested in
learning module development:
- Helloworld.module demonstrates the basics of modules and hooks.
http://modules.processwire.com/modules/helloworld/
- ProcessHello.module demonstrates the basics of how to create a Process
module. Process modules are those that create applications in the admin.
http://modules.processwire.com/modules/process-hello/
There is a module development forum located at:
https://processwire.com/talk/forum/19-moduleplugin-development/
For a tutorial on how to create modules, see:
http://wiki.processwire.com/index.php/Module_Creation
Additional resources
--------------------
To find and download new modules, see the modules directory at:
http://modules.processwire.com/
For more information about modules, see the documentation at:
http://processwire.com/api/modules/
For discussion and support of modules, see:
http://processwire.com/talk/forum/4-modulesplugins/
This directory is for site-specific plugin modules.
Please see the URL below for more information:
https://processwire.com/docs/modules/about-site-modules/

View File

@@ -2,12 +2,14 @@
if(!defined("PROCESSWIRE")) die();
/** @var ProcessWire $wire */
/**
* ProcessWire Bootstrap API Ready
* ProcessWire Bootstrap API Ready
* ===============================
* This ready.php file is called during ProcessWire bootstrap initialization process.
* This occurs after the current page has been determined and the API is fully ready
* to use, but before the current page has started rendering. This file receives a
* This occurs after the current page has been determined and the API is fully ready
* to use, but before the current page has started rendering. This file receives a
* copy of all ProcessWire API variables.
*
*/
*/

View File

@@ -1 +0,0 @@
This file is here to ensure Git adds the dir to the repo. You may delete this file.

View File

@@ -0,0 +1,6 @@
<?php namespace ProcessWire;
// Optional initialization file, called before rendering any template file.
// This is defined by $config->prependTemplateFile in /site/config.php.
// Use this to define shared variables, functions, classes, includes, etc.

View File

@@ -0,0 +1,55 @@
<?php namespace ProcessWire;
// Optional main output file, called after rendering pages template file.
// This is defined by $config->appendTemplateFile in /site/config.php, and
// is typically used to define and output markup common among most pages.
//
// When the Markup Regions feature is used, template files can prepend, append,
// replace or delete any element defined here that has an "id" attribute.
// https://processwire.com/docs/front-end/output/markup-regions/
/** @var Page $page */
/** @var Pages $pages */
/** @var Config $config */
$home = $pages->get('/'); /** @var HomePage $home */
?><!DOCTYPE html>
<html lang="en">
<head id="html-head">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title><?php echo $page->title; ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo $config->urls->templates; ?>styles/main.css" />
<script src="<?php echo $config->urls->templates; ?>scripts/main.js"></script>
</head>
<body id="html-body">
<p id="topnav">
<?php echo $home->and($home->children)->implode(" / ", "<a href='{url}'>{title}</a>"); ?>
</p>
<hr />
<h1 id="headline">
<?php if($page->parents->count()): // breadcrumbs ?>
<?php echo $page->parents->implode(" &gt; ", "<a href='{url}'>{title}</a>"); ?> &gt;
<?php endif; ?>
<?php echo $page->title; // headline ?>
</h1>
<div id="content">
Default content
</div>
<?php if($page->hasChildren): ?>
<ul>
<?php echo $page->children->each("<li><a href='{url}'>{title}</a></li>"); // subnav ?>
</ul>
<?php endif; ?>
<?php if($page->editable()): ?>
<p><a href='<?php echo $page->editUrl(); ?>'>Edit this page</a></p>
<?php endif; ?>
</body>
</html>

View File

@@ -10,6 +10,8 @@
* Feel free to hook admin-specific functionality from this file,
* but remember to leave the require() statement below at the end.
*
* Note: this template file does not use the _init.php or _main.php
*
*/
/** @var Config $config */

View File

@@ -1,13 +1,11 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title><?php echo $page->title; ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo $config->urls->templates?>styles/main.css" />
</head>
<body>
<h1><?php echo $page->title; ?></h1>
<?php if($page->editable()) echo "<p><a href='$page->editURL'>Edit</a></p>"; ?>
</body>
</html>
<?php namespace ProcessWire;
// Template file for pages using the “basic-page” template
?>
<div id="content">
Basic page content
</div>

View File

@@ -1,3 +1,10 @@
<?php
<?php namespace ProcessWire;
include("./basic-page.php");
// Template file for “home” template used by the homepage
?>
<div id="content">
Homepage content
</div>

View File

@@ -1 +1 @@
// Blank
// Example JS file

View File

@@ -1 +1 @@
/* blank */
/* Example CSS file */

View File

@@ -1,4 +0,0 @@
<?php
// Intentionally left blank to test that htaccess rewrite rules are working.
// Accessing this file from http should produce a '403 forbidden' error,
// since all PHP files are blocked under /assets/.

View File

@@ -1,46 +0,0 @@
<?php namespace ProcessWire;
/**
* ProcessWire Configuration File
*
* Site-specific configuration for ProcessWire
*
* Please see the file /wire/config.php which contains all configuration options you may
* specify here. Simply copy any of the configuration options from that file and paste
* them into this file in order to modify them.
*
* SECURITY NOTICE
* In non-dedicated environments, you should lock down the permissions of this file so
* that it cannot be seen by other users on the system. For more information, please
* see the config.php section at: https://processwire.com/docs/security/file-permissions/
*
* This file is licensed under the MIT license
* https://processwire.com/about/license/mit/
*
* ProcessWire 3.x, Copyright 2019 by Ryan Cramer
* https://processwire.com
*
*/
if(!defined("PROCESSWIRE")) die();
/*** SITE CONFIG *************************************************************************/
/** @var Config $config */
/**
* Allow core API variables to also be accessed as functions?
*
* Recommended. This enables API varibles like $pages to also be accessed as pages(),
* as an example. And so on for most other core variables.
*
* Benefits are better type hinting, always in scope, and potentially shorter API calls.
* See the file /wire/core/FunctionsAPI.php for details on these functions.
*
* @var bool
*
*/
$config->useFunctionsAPI = true;
/*** INSTALLER CONFIG ********************************************************************/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 840 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 418 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 583 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

View File

@@ -1 +0,0 @@
This file is here to ensure Git adds the dir to the repo. You may delete this file.

View File

@@ -1,6 +0,0 @@
<?php if(!defined("PROCESSWIRE_INSTALL")) die();
$info = array(
'title' => "Classic",
'summary' => "This was the default site profile from ProcessWire versions 2.0 through 2.4. While now a little older in appearance, it is a great starting point for learning about ProcessWire.",
'screenshot' => "screenshot.jpg"
);

View File

@@ -1,538 +0,0 @@
--- WireDatabaseBackup {"time":"2014-08-27 14:02:01","user":"","dbName":"pw2_tmp","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"]}
DROP TABLE IF EXISTS `caches`;
CREATE TABLE `caches` (
`name` varchar(128) NOT NULL,
`data` mediumtext NOT NULL,
`expires` datetime NOT NULL,
PRIMARY KEY (`name`),
KEY `expires` (`expires`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `field_body`;
CREATE TABLE `field_body` (
`pages_id` int(10) unsigned NOT NULL,
`data` mediumtext NOT NULL,
PRIMARY KEY (`pages_id`),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('27', '<h3>The page you were looking for is not found.</h3>\r\n<p>Please use our search engine or navigation above to find the page.</p>');
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('1', '<h2>What is ProcessWire?</h2>\n\n<p>ProcessWire gives you full control over your fields, templates and markup. It provides a powerful template system that works the way you do. Not to mention, ProcessWire\'s API makes working with your content easy and enjoyable. <a href=\"http://processwire.com\">Learn more</a></p>\n\n<h2>Basic Site Profile</h2>\n\n<p>This is a basic starter site for you to use in developing your own site. There are a few pages here to serve as examples, but this site profile does not make any attempt to demonstrate all that ProcessWire can do. To learn more or ask questions, visit the <a href=\"http://www.processwire.com/talk/\" target=\"_blank\">ProcessWire forums</a>. If you are building a new site, this basic profile is a good place to start. You may use these existing templates and design as they are, or you may replace them entirely. <a href=\"./templates/\">Read more</a></p>\n\n<h2>Browse the Site</h2>');
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('1002', '<h2>Ut capio feugiat saepius torqueo olim</h2><h3>In utinam facilisi eum vicis feugait nimis</h3><p>Iusto incassum appellatio cui macto genitus vel. Lobortis aliquam luctus, roto enim, imputo wisi tamen. Ratis odio, genitus acsi, neo illum consequat consectetuer ut. </p><p>Wisi fere virtus cogo, ex ut vel nullus similis vel iusto. Tation incassum adsum in, quibus capto premo diam suscipere facilisi. Uxor laoreet mos capio premo feugait ille et. Pecus abigo immitto epulae duis vel. Neque causa, indoles verto, decet ingenium dignissim. </p><p>Patria iriure vel vel autem proprius indoles ille sit. Tation blandit refoveo, accumsan ut ulciscor lucidus inhibeo capto aptent opes, foras. </p><h3>Dolore ea valde refero feugait utinam luctus</h3><p>Usitas, nostrud transverbero, in, amet, nostrud ad. Ex feugiat opto diam os aliquam regula lobortis dolore ut ut quadrum. Esse eu quis nunc jugis iriure volutpat wisi, fere blandit inhibeo melior, hendrerit, saluto velit. Eu bene ideo dignissim delenit accumsan nunc. Usitas ille autem camur consequat typicus feugait elit ex accumsan nutus accumsan nimis pagus, occuro. Immitto populus, qui feugiat opto pneum letalis paratus. Mara conventio torqueo nibh caecus abigo sit eum brevitas. Populus, duis ex quae exerci hendrerit, si antehabeo nobis, consequat ea praemitto zelus. </p><p>Immitto os ratis euismod conventio erat jus caecus sudo. Appellatio consequat, et ibidem ludus nulla dolor augue abdo tego euismod plaga lenis. Sit at nimis venio venio tego os et pecus enim pneum magna nobis ad pneum. Saepius turpis probo refero molior nonummy aliquam neque appellatio jus luctus acsi. Ulciscor refero pagus imputo eu refoveo valetudo duis dolore usitas. Consequat suscipere quod torqueo ratis ullamcorper, dolore lenis, letalis quia quadrum plaga minim. </p>');
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('1003', '<h2>The site template files are located in /site/templates/</h2>\n\n<p>Each of the template files in this site profile includes the header template (head.inc), outputs the bodycopy, and then includes the footer template (foot.inc). This is to avoid duplication of the markup that is the same across all pages in the site. This strategy is called <em>direct output with includes</em> and is just one strategy you can use for templates.</p>\n\n<p>You could of course make each template completely self contained with its own markup (called direct output), but if you have more than one template with some of the same markup, then it wouldn\'t be very efficient to do that. As a result, it\'s better to move the reused parts (aka partials) into include files.</p>\n\n<p>Another strategy would be to use a have a <em>main</em> template that contains all your markup and has placeholders (variables) for the dynamic parts. Then your other templates would populate the placeholders before including the main template. This strategy is called <em>delayed output.</em></p>\n\n<p><a href=\"https://processwire.com/docs/tutorials/how-to-structure-your-template-files/\">Read more about these template strategies</a></p>');
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('1001', '<h2>Si lobortis singularis genitus ibidem saluto.</h2>\n\n<p>Dolore ad nunc, mos accumsan paratus duis suscipit luptatum facilisis macto uxor iaceo quadrum. Demoveo, appellatio elit neque ad commodo ea. Wisi, iaceo, tincidunt at commoveo rusticus et, ludus. Feugait at blandit bene blandit suscipere abdo duis ideo bis commoveo pagus ex, velit. Consequat commodo roto accumsan, duis transverbero.</p>');
INSERT INTO `field_body` (`pages_id`, `data`) VALUES('1004', '<h2>Pertineo vel dignissim, natu letalis fere odio</h2><h3>Si lobortis singularis genitus ibidem saluto</h3><p>Magna in gemino, gilvus iusto capto jugis abdo mos aptent acsi qui. Utrum inhibeo humo humo duis quae. Lucidus paulatim facilisi scisco quibus hendrerit conventio adsum. Feugiat eligo foras ex elit sed indoles hos elit ex antehabeo defui et nostrud. Letatio valetudo multo consequat inhibeo ille dignissim pagus et in quadrum eum eu. Aliquam si consequat, ut nulla amet et turpis exerci, adsum luctus ne decet, delenit. Commoveo nunc diam valetudo cui, aptent commoveo at obruo uxor nulla aliquip augue. </p><p>Iriure, ex velit, praesent vulpes delenit capio vero gilvus inhibeo letatio aliquip metuo qui eros. Transverbero demoveo euismod letatio torqueo melior. Ut odio in suscipit paulatim amet huic letalis suscipere eros causa, letalis magna. </p>');
DROP TABLE IF EXISTS `field_email`;
CREATE TABLE `field_email` (
`pages_id` int(10) unsigned NOT NULL,
`data` varchar(250) NOT NULL DEFAULT '',
PRIMARY KEY (`pages_id`),
KEY `data_exact` (`data`),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `field_headline`;
CREATE TABLE `field_headline` (
`pages_id` int(10) unsigned NOT NULL,
`data` text NOT NULL,
PRIMARY KEY (`pages_id`),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_headline` (`pages_id`, `data`) VALUES('1', 'Basic Example Site');
INSERT INTO `field_headline` (`pages_id`, `data`) VALUES('1001', 'About Us');
INSERT INTO `field_headline` (`pages_id`, `data`) VALUES('1003', 'Developing Site Templates');
DROP TABLE IF EXISTS `field_images`;
CREATE TABLE `field_images` (
`pages_id` int(10) unsigned NOT NULL,
`data` varchar(250) NOT NULL,
`sort` int(10) unsigned NOT NULL,
`description` text NOT NULL,
`modified` datetime DEFAULT NULL,
`created` datetime DEFAULT NULL,
PRIMARY KEY (`pages_id`,`sort`),
KEY `data` (`data`),
KEY `modified` (`modified`),
KEY `created` (`created`),
FULLTEXT KEY `description` (`description`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1', 'westin_interior2.jpg', '7', 'Westin Peachtree Atlanta hotel lobby area.', NOW(), NOW());
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1', 'marquis_interior7b.jpg', '5', 'Elevator at the Atlanta Marriott Marquis hotel.', NOW(), NOW());
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1', 'marquis_interior13b_med.jpg', '6', 'Atrium at the Atlanta Marriott Marquis hotel.', NOW(), NOW());
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1', 'marquis_interior3.jpg', '4', 'Elevator core at the Atlanta Marriott Marquis hotel.', NOW(), NOW());
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1', 'hyatt_interior11.jpg', '3', 'Looking up from the lobby area at the Atlanta Hyatt hotel.', NOW(), NOW());
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1', 'hyatt2.jpg', '2', 'Detail from Atlanta Hyatt Hotel.', NOW(), NOW());
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1', 'hyatt_interior9.jpg', '1', 'Detail from Atlanta Hyatt Hotel.', NOW(), NOW());
INSERT INTO `field_images` (`pages_id`, `data`, `sort`, `description`, `modified`, `created`) VALUES('1', 'westin_interior1.jpg', '0', 'Westin Peachtree Atlanta hotel lobby area.', NOW(), NOW());
DROP TABLE IF EXISTS `field_pass`;
CREATE TABLE `field_pass` (
`pages_id` int(10) unsigned NOT NULL,
`data` char(40) NOT NULL,
`salt` char(32) NOT NULL,
PRIMARY KEY (`pages_id`),
KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=ascii;
DROP TABLE IF EXISTS `field_permissions`;
CREATE TABLE `field_permissions` (
`pages_id` int(10) unsigned NOT NULL,
`data` int(11) NOT NULL,
`sort` int(10) unsigned NOT NULL,
PRIMARY KEY (`pages_id`,`sort`),
KEY `data` (`data`,`pages_id`,`sort`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `field_process`;
CREATE TABLE `field_process` (
`pages_id` int(11) NOT NULL DEFAULT '0',
`data` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`pages_id`),
KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('6', '17');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('3', '12');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('8', '12');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('9', '14');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('10', '7');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('11', '47');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('16', '48');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('300', '104');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('21', '50');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('29', '66');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('23', '10');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('304', '138');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('31', '136');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('22', '76');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('30', '68');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('303', '129');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('2', '87');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('302', '121');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('301', '109');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('28', '76');
INSERT INTO `field_process` (`pages_id`, `data`) VALUES('1007', '150');
DROP TABLE IF EXISTS `field_roles`;
CREATE TABLE `field_roles` (
`pages_id` int(10) unsigned NOT NULL,
`data` int(11) NOT NULL,
`sort` int(10) unsigned NOT NULL,
PRIMARY KEY (`pages_id`,`sort`),
KEY `data` (`data`,`pages_id`,`sort`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `field_sidebar`;
CREATE TABLE `field_sidebar` (
`pages_id` int(10) unsigned NOT NULL,
`data` mediumtext NOT NULL,
PRIMARY KEY (`pages_id`),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_sidebar` (`pages_id`, `data`) VALUES('1', '<h3>About ProcessWire</h3>\n\n<p>ProcessWire is an open source CMS and web application framework aimed at the needs of designers, developers and their clients.</p>\n\n<p><a href=\"https://processwire.com/about/sites/\">Showcase</a><br /><a href=\"https://processwire.com/docs/\">Documentation</a><br /><a href=\"https://processwire.com/docs/tutorials/\">Tutorials</a><br /><a href=\"https://processwire.com/talk/\">Support</a><br /><a href=\"http://cheatsheet.processwire.com\">API Cheatsheet</a><br /><a href=\"http://modules.processwire.com\">Modules</a></p>\n\n<p> </p>\n\n<p> </p>');
INSERT INTO `field_sidebar` (`pages_id`, `data`) VALUES('1002', '<h3>Sudo nullus</h3><p>Et torqueo vulpes vereor luctus augue quod consectetuer antehabeo causa patria tation ex plaga ut. Abluo delenit wisi iriure eros feugiat probo nisl aliquip nisl, patria. Antehabeo esse camur nisl modo utinam. Sudo nullus ventosus ibidem facilisis saepius eum sino pneum, vicis odio voco opto.</p>');
DROP TABLE IF EXISTS `field_summary`;
CREATE TABLE `field_summary` (
`pages_id` int(10) unsigned NOT NULL,
`data` mediumtext NOT NULL,
PRIMARY KEY (`pages_id`),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1002', 'Dolore ea valde refero feugait utinam luctus. Probo velit commoveo et, delenit praesent, suscipit zelus, hendrerit zelus illum facilisi, regula. ');
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1001', 'This is a placeholder page with two child pages to serve as an example. ');
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1005', 'View this template\'s source for a demonstration of how to create a basic site map. ');
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1003', 'More about the templates included in this basic site profile. ');
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1004', 'Mos erat reprobo in praesent, mara premo, obruo iustum pecus velit lobortis te sagaciter populus.');
INSERT INTO `field_summary` (`pages_id`, `data`) VALUES('1', 'ProcessWire is an open source CMS and web application framework aimed at the needs of designers, developers and their clients. ');
DROP TABLE IF EXISTS `field_title`;
CREATE TABLE `field_title` (
`pages_id` int(10) unsigned NOT NULL,
`data` text NOT NULL,
PRIMARY KEY (`pages_id`),
KEY `data_exact` (`data`(255)),
FULLTEXT KEY `data` (`data`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('11', 'Templates');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('16', 'Fields');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('22', 'Setup');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('3', 'Pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('6', 'Add Page');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('8', 'Tree');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('9', 'Save Sort');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('10', 'Edit Page');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('21', 'Modules');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('29', 'Users');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('30', 'Roles');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('2', 'Admin');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('7', 'Trash');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('27', '404 Page Not Found');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('302', 'Insert Link');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('23', 'Login');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('304', 'Profile');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('301', 'Empty Trash');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('300', 'Search');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('303', 'Insert Image');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('28', 'Access');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('31', 'Permissions');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('32', 'Edit pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('34', 'Delete pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('35', 'Move pages (change parent)');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('36', 'View pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('50', 'Sort child pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('51', 'Change templates on pages');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('52', 'Administer users');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('53', 'User can update profile/password');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('54', 'Lock or unlock a page');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1', 'Home');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1001', 'About');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1002', 'Child page example 1');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1000', 'Search');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1003', 'Templates');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1004', 'Child page example 2');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1005', 'Site Map');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1006', 'Use Page Lister');
INSERT INTO `field_title` (`pages_id`, `data`) VALUES('1007', 'Find');
DROP TABLE IF EXISTS `fieldgroups`;
CREATE TABLE `fieldgroups` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(250) CHARACTER SET ascii NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=97 DEFAULT CHARSET=utf8;
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('2', 'admin');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('3', 'user');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('4', 'role');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('5', 'permission');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('1', 'home');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('88', 'sitemap');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('83', 'basic-page');
INSERT INTO `fieldgroups` (`id`, `name`) VALUES('80', 'search');
DROP TABLE IF EXISTS `fieldgroups_fields`;
CREATE TABLE `fieldgroups_fields` (
`fieldgroups_id` int(10) unsigned NOT NULL DEFAULT '0',
`fields_id` int(10) unsigned NOT NULL DEFAULT '0',
`sort` int(11) unsigned NOT NULL DEFAULT '0',
`data` text,
PRIMARY KEY (`fieldgroups_id`,`fields_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('2', '2', '1', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('2', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('3', '3', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('3', '4', '2', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('4', '5', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('5', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('3', '92', '1', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '44', '5', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '76', '3', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('80', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '78', '1', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '44', '5', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '82', '4', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('88', '79', '1', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '79', '2', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('1', '82', '4', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('88', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '76', '3', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '79', '2', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '1', '0', NULL);
INSERT INTO `fieldgroups_fields` (`fieldgroups_id`, `fields_id`, `sort`, `data`) VALUES('83', '78', '1', NULL);
DROP TABLE IF EXISTS `fields`;
CREATE TABLE `fields` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`type` varchar(128) CHARACTER SET ascii NOT NULL,
`name` varchar(250) CHARACTER SET ascii NOT NULL,
`flags` int(11) NOT NULL DEFAULT '0',
`label` varchar(250) NOT NULL DEFAULT '',
`data` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `type` (`type`)
) ENGINE=MyISAM AUTO_INCREMENT=98 DEFAULT CHARSET=utf8;
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('1', 'FieldtypePageTitle', 'title', '13', 'Title', '{\"required\":1,\"textformatters\":[\"TextformatterEntities\"],\"size\":0,\"maxlength\":255}');
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}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('3', 'FieldtypePassword', 'pass', '24', 'Set Password', '{\"collapsed\":1,\"size\":50,\"maxlength\":128}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('5', 'FieldtypePage', 'permissions', '24', 'Permissions', '{\"derefAsPage\":0,\"parent_id\":31,\"labelFieldName\":\"title\",\"inputfield\":\"InputfieldCheckboxes\"}');
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.\"}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('92', 'FieldtypeEmail', 'email', '9', 'E-Mail Address', '{\"size\":70,\"maxlength\":255}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('82', 'FieldtypeTextarea', 'sidebar', '0', 'Sidebar', '{\"inputfieldClass\":\"InputfieldCKEditor\",\"rows\":5,\"contentType\":1,\"toolbar\":\"Format, Styles, -, Bold, Italic, -, RemoveFormat\\r\\nNumberedList, BulletedList, -, Blockquote\\r\\nPWLink, Unlink, Anchor\\r\\nPWImage, Table, HorizontalRule, SpecialChar\\r\\nPasteText, PasteFromWord\\r\\nScayt, -, Sourcedialog\",\"inlineMode\":0,\"useACF\":1,\"usePurifier\":1,\"toggles\":[2,4,8],\"formatTags\":\"p;h2;h3;h4;h5;h6;pre;address\",\"extraPlugins\":[\"pwimage\",\"pwlink\",\"sourcedialog\"],\"removePlugins\":\"image,magicline\",\"collapsed\":2}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('44', 'FieldtypeImage', 'images', '0', 'Images', '{\"extensions\":\"gif jpg jpeg png\",\"adminThumbs\":1,\"inputfieldClass\":\"InputfieldImage\",\"maxFiles\":0,\"descriptionRows\":1,\"fileSchema\":2,\"textformatters\":[\"TextformatterEntities\"],\"outputFormat\":1,\"defaultValuePage\":0,\"defaultGrid\":0,\"icon\":\"camera\"}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('79', 'FieldtypeTextarea', 'summary', '1', 'Summary', '{\"textformatters\":[\"TextformatterEntities\"],\"inputfieldClass\":\"InputfieldTextarea\",\"collapsed\":2,\"rows\":3,\"contentType\":0}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('76', 'FieldtypeTextarea', 'body', '0', 'Body', '{\"inputfieldClass\":\"InputfieldCKEditor\",\"rows\":10,\"contentType\":1,\"toolbar\":\"Format, Styles, -, Bold, Italic, -, RemoveFormat\\r\\nNumberedList, BulletedList, -, Blockquote\\r\\nPWLink, Unlink, Anchor\\r\\nPWImage, Table, HorizontalRule, SpecialChar\\r\\nPasteText, PasteFromWord\\r\\nScayt, -, Sourcedialog\",\"inlineMode\":0,\"useACF\":1,\"usePurifier\":1,\"formatTags\":\"p;h2;h3;h4;h5;h6;pre;address\",\"extraPlugins\":[\"pwimage\",\"pwlink\",\"sourcedialog\"],\"removePlugins\":\"image,magicline\",\"toggles\":[2,4,8]}');
INSERT INTO `fields` (`id`, `type`, `name`, `flags`, `label`, `data`) VALUES('78', 'FieldtypeText', 'headline', '0', 'Headline', '{\"description\":\"Use this instead of the Title if a longer headline is needed than what you want to appear in navigation.\",\"textformatters\":[\"TextformatterEntities\"],\"collapsed\":2,\"size\":0,\"maxlength\":1024}');
DROP TABLE IF EXISTS `modules`;
CREATE TABLE `modules` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`class` varchar(128) CHARACTER SET ascii NOT NULL,
`flags` int(11) NOT NULL DEFAULT '0',
`data` text NOT NULL,
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `class` (`class`)
) ENGINE=MyISAM AUTO_INCREMENT=155 DEFAULT CHARSET=utf8;
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('1', 'FieldtypeTextarea', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('2', 'FieldtypeNumber', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('3', 'FieldtypeText', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('4', 'FieldtypePage', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('30', 'InputfieldForm', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('6', 'FieldtypeFile', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('7', 'ProcessPageEdit', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('10', 'ProcessLogin', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('12', 'ProcessPageList', '0', '{\"pageLabelField\":\"title\",\"paginationLimit\":25,\"limit\":50}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('121', 'ProcessPageEditLink', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('14', 'ProcessPageSort', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('15', 'InputfieldPageListSelect', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('117', 'JqueryUI', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('17', 'ProcessPageAdd', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('125', 'SessionLoginThrottle', '3', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('122', 'InputfieldPassword', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('25', 'InputfieldAsmSelect', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('116', 'JqueryCore', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('27', 'FieldtypeModule', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('28', 'FieldtypeDatetime', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('29', 'FieldtypeEmail', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('108', 'InputfieldURL', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('32', 'InputfieldSubmit', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('33', 'InputfieldWrapper', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('34', 'InputfieldText', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('35', 'InputfieldTextarea', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('36', 'InputfieldSelect', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('37', 'InputfieldCheckbox', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('38', 'InputfieldCheckboxes', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('39', 'InputfieldRadios', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('40', 'InputfieldHidden', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('41', 'InputfieldName', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('43', 'InputfieldSelectMultiple', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('45', 'JqueryWireTabs', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('46', 'ProcessPage', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('47', 'ProcessTemplate', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('48', 'ProcessField', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('50', 'ProcessModule', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('114', 'PagePermissions', '3', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('97', 'FieldtypeCheckbox', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('115', 'PageRender', '3', '{\"clearCache\":1}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('55', 'InputfieldFile', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('56', 'InputfieldImage', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('57', 'FieldtypeImage', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('60', 'InputfieldPage', '0', '{\"inputfieldClasses\":[\"InputfieldSelect\",\"InputfieldSelectMultiple\",\"InputfieldCheckboxes\",\"InputfieldRadios\",\"InputfieldAsmSelect\",\"InputfieldPageListSelect\",\"InputfieldPageListSelectMultiple\"]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('61', 'TextformatterEntities', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('66', 'ProcessUser', '0', '{\"showFields\":[\"name\",\"email\",\"roles\"]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('67', 'MarkupAdminDataTable', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('68', 'ProcessRole', '0', '{\"showFields\":[\"name\"]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('76', 'ProcessList', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('78', 'InputfieldFieldset', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('79', 'InputfieldMarkup', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('80', 'InputfieldEmail', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('89', 'FieldtypeFloat', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('83', 'ProcessPageView', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('84', 'FieldtypeInteger', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('85', 'InputfieldInteger', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('86', 'InputfieldPageName', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('87', 'ProcessHome', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('90', 'InputfieldFloat', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('92', 'InputfieldTinyMCE', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('94', 'InputfieldDatetime', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('98', 'MarkupPagerNav', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('129', 'ProcessPageEditImageSelect', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('103', 'JqueryTableSorter', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('104', 'ProcessPageSearch', '1', '{\"searchFields\":\"title\",\"displayField\":\"title path\"}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('105', 'FieldtypeFieldsetOpen', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('106', 'FieldtypeFieldsetClose', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('107', 'FieldtypeFieldsetTabOpen', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('109', 'ProcessPageTrash', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('111', 'FieldtypePageTitle', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('112', 'InputfieldPageTitle', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('113', 'MarkupPageArray', '3', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('131', 'InputfieldButton', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('133', 'FieldtypePassword', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('134', 'ProcessPageType', '1', '{\"showFields\":[]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('135', 'FieldtypeURL', '1', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('136', 'ProcessPermission', '1', '{\"showFields\":[\"name\",\"title\"]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('137', 'InputfieldPageListSelectMultiple', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('138', 'ProcessProfile', '1', '{\"profileFields\":[\"pass\",\"email\"]}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('139', 'SystemUpdater', '1', '{\"systemVersion\":7}', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('148', 'AdminThemeDefault', '2', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('149', 'InputfieldSelector', '2', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('150', 'ProcessPageLister', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('151', 'InputfieldCKEditor', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('152', 'MarkupHTMLPurifier', '0', '', NOW());
INSERT INTO `modules` (`id`, `class`, `flags`, `data`, `created`) VALUES('153', 'JqueryMagnific', '1', '', NOW());
DROP TABLE IF EXISTS `pages`;
CREATE TABLE `pages` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(11) unsigned NOT NULL DEFAULT '0',
`templates_id` int(11) unsigned NOT NULL DEFAULT '0',
`name` varchar(128) CHARACTER SET ascii NOT NULL,
`status` int(10) unsigned NOT NULL DEFAULT '1',
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modified_users_id` int(10) unsigned NOT NULL DEFAULT '2',
`created` timestamp NOT NULL DEFAULT '2015-12-18 06:09:00',
`created_users_id` int(10) unsigned NOT NULL DEFAULT '2',
`sort` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `name_parent_id` (`name`,`parent_id`),
KEY `parent_id` (`parent_id`),
KEY `templates_id` (`templates_id`),
KEY `modified` (`modified`),
KEY `created` (`created`),
KEY `status` (`status`)
) ENGINE=MyISAM AUTO_INCREMENT=1009 DEFAULT CHARSET=utf8;
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1', '0', '1', 'home', '9', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('2', '1', '2', 'processwire', '1035', NOW(), '40', NOW(), '2', '5');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('3', '2', '2', 'page', '21', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('6', '3', '2', 'add', '1045', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('7', '1', '2', 'trash', '1039', NOW(), '41', NOW(), '2', '6');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('8', '3', '2', 'list', '21', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('9', '3', '2', 'sort', '1047', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('10', '3', '2', 'edit', '1045', NOW(), '41', NOW(), '2', '3');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('11', '22', '2', 'template', '21', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('16', '22', '2', 'field', '21', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('21', '2', '2', 'module', '21', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('22', '2', '2', 'setup', '21', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('23', '2', '2', 'login', '1035', NOW(), '41', NOW(), '2', '4');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('27', '1', '29', 'http404', '1035', NOW(), '41', NOW(), '3', '4');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('28', '2', '2', 'access', '13', NOW(), '41', NOW(), '2', '3');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('29', '28', '2', 'users', '29', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('30', '28', '2', 'roles', '29', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('31', '28', '2', 'permissions', '29', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('32', '31', '5', 'page-edit', '25', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('34', '31', '5', 'page-delete', '25', NOW(), '41', NOW(), '2', '3');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('35', '31', '5', 'page-move', '25', NOW(), '41', NOW(), '2', '4');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('36', '31', '5', 'page-view', '25', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('37', '30', '4', 'guest', '25', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('38', '30', '4', 'superuser', '25', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('41', '29', '3', 'admin', '1', NOW(), '40', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('40', '29', '3', 'guest', '25', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('50', '31', '5', 'page-sort', '25', NOW(), '41', NOW(), '41', '5');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('51', '31', '5', 'page-template', '25', NOW(), '41', NOW(), '41', '6');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('52', '31', '5', 'user-admin', '25', NOW(), '41', NOW(), '41', '10');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('53', '31', '5', 'profile-edit', '1', NOW(), '41', NOW(), '41', '13');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('54', '31', '5', 'page-lock', '1', NOW(), '41', NOW(), '41', '8');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('300', '3', '2', 'search', '1045', NOW(), '41', NOW(), '2', '5');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('301', '3', '2', 'trash', '1047', NOW(), '41', NOW(), '2', '5');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('302', '3', '2', 'link', '1041', NOW(), '41', NOW(), '2', '6');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('303', '3', '2', 'image', '1041', NOW(), '41', NOW(), '2', '7');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('304', '2', '2', 'profile', '1025', NOW(), '41', NOW(), '41', '5');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1000', '1', '26', 'search', '1025', NOW(), '41', NOW(), '2', '3');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1001', '1', '29', 'about', '1', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1002', '1001', '29', 'what', '1', NOW(), '41', NOW(), '2', '0');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1003', '1', '29', 'templates', '1', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1004', '1001', '29', 'background', '1', NOW(), '41', NOW(), '2', '1');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1005', '1', '34', 'site-map', '1', NOW(), '41', NOW(), '2', '2');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1006', '31', '5', 'page-lister', '1', NOW(), '40', NOW(), '40', '9');
INSERT INTO `pages` (`id`, `parent_id`, `templates_id`, `name`, `status`, `modified`, `modified_users_id`, `created`, `created_users_id`, `sort`) VALUES('1007', '3', '2', 'lister', '1', NOW(), '40', NOW(), '40', '8');
DROP TABLE IF EXISTS `pages_access`;
CREATE TABLE `pages_access` (
`pages_id` int(11) NOT NULL,
`templates_id` int(11) NOT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`pages_id`),
KEY `templates_id` (`templates_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('37', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('38', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('32', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('34', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('35', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('36', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('50', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('51', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('52', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('53', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('54', '2', NOW());
INSERT INTO `pages_access` (`pages_id`, `templates_id`, `ts`) VALUES('1006', '2', NOW());
DROP TABLE IF EXISTS `pages_parents`;
CREATE TABLE `pages_parents` (
`pages_id` int(10) unsigned NOT NULL,
`parents_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`pages_id`,`parents_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('2', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('3', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('3', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('7', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('22', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('22', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('28', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('28', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('29', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('29', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('29', '28');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('30', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('30', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('30', '28');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('31', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('31', '2');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('31', '28');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1001', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1002', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1002', '1001');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1003', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1004', '1');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1004', '1001');
INSERT INTO `pages_parents` (`pages_id`, `parents_id`) VALUES('1005', '1');
DROP TABLE IF EXISTS `pages_sortfields`;
CREATE TABLE `pages_sortfields` (
`pages_id` int(10) unsigned NOT NULL DEFAULT '0',
`sortfield` varchar(20) NOT NULL DEFAULT '',
PRIMARY KEY (`pages_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `session_login_throttle`;
CREATE TABLE `session_login_throttle` (
`name` varchar(128) NOT NULL,
`attempts` int(10) unsigned NOT NULL DEFAULT '0',
`last_attempt` int(10) unsigned NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `templates`;
CREATE TABLE `templates` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(250) CHARACTER SET ascii NOT NULL,
`fieldgroups_id` int(10) unsigned NOT NULL DEFAULT '0',
`flags` int(11) NOT NULL DEFAULT '0',
`cache_time` mediumint(9) NOT NULL DEFAULT '0',
`data` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `fieldgroups_id` (`fieldgroups_id`)
) ENGINE=MyISAM AUTO_INCREMENT=43 DEFAULT CHARSET=utf8;
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,\"modified\":1377936792}');
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}');
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}');
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}');
INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('1', 'home', '1', '0', '0', '{\"useRoles\":1,\"noParents\":1,\"slashUrls\":1,\"modified\":1377936792,\"roles\":[37]}');
INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('29', 'basic-page', '83', '0', '0', '{\"slashUrls\":1,\"modified\":1377936792}');
INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('26', 'search', '80', '0', '0', '{\"noChildren\":1,\"noParents\":1,\"allowPageNum\":1,\"slashUrls\":1,\"modified\":1377936792}');
INSERT INTO `templates` (`id`, `name`, `fieldgroups_id`, `flags`, `cache_time`, `data`) VALUES('34', 'sitemap', '88', '0', '0', '{\"noChildren\":1,\"noParents\":1,\"redirectLogin\":23,\"slashUrls\":1,\"modified\":1377936792}');
UPDATE pages SET created_users_id=41, modified_users_id=41, created=NOW(), modified=NOW();
--- /WireDatabaseBackup {"numTables":16,"numCreateTables":22,"numInserts":302,"numSeconds":0}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

View File

@@ -1,90 +0,0 @@
ABOUT /SITE/MODULES/
====================
This directory /site/modules/ is where you may install additional plugin modules.
These modules are specific to your site only. There is also a corresponding
/wire/modules/ directory, which contains ProcessWire's core modules (and best to
leave those alone).
If safe for your hosting environment, you may wish to make this directory
writable to PHP so that the installation of your modules can be managed from
ProcessWire's admin. However, this is not necessarily safe in all shared hosting
environments and is completely optional.
Where to get modules?
---------------------
Visit the modules directory at: http://modules.processwire.com
Installing modules from the ProcessWire admin
---------------------------------------------
If your /site/modules/ directory is writable, you can install modules from
ProcessWire's admin directly from the Modules Directory, from a ZIP file or from
a URL to a ZIP file. In your ProcessWire admin, see Modules > New for
installation options.
Installing modules from the file system
---------------------------------------
Each module (and any related files) should live in a directory of its own. The
directory should generally carry the same name as the module. For instance, if
you are installing a module named ProcessDatabaseBackups.module, then it should
live in the directory /site/modules/ProcessDatabaseBackups/.
Once you have placed a new module in this directory, you need to let ProcessWire
know about it. Login to the admin and click "Modules". Then click the "Check for
new modules" button. It will find your new module(s). Click the "Install" button
next to any new modules that you want to install.
Removing modules
----------------
The first step in removing a module is to uninstall it from ProcessWire (if it
isn't already). You do this by going to the "Modules" page, and "Site" tab in
your ProcessWire admin. Click the "Uninstall" button next to the module you
want to remove.
After the module is uninstalled, you may remove the module files. If your
modules file system is writable to ProcessWire, it will give you a "Delete"
button next to the module in your "Modules" admin page. You may click that to
remove the module files.
If your file system is not writable, you may remove the module files manually
from the file system (via SFTP or whatever tool you are using to manage your
files on the server).
Interested in learning how to make your own modules?
----------------------------------------------------
We've created two "Hello World" modules as examples for those interested in
learning module development:
- Helloworld.module demonstrates the basics of modules and hooks.
http://modules.processwire.com/modules/helloworld/
- ProcessHello.module demonstrates the basics of how to create a Process
module. Process modules are those that create applications in the admin.
http://modules.processwire.com/modules/process-hello/
There is a module development forum located at:
https://processwire.com/talk/forum/19-moduleplugin-development/
For a tutorial on how to create modules, see:
http://wiki.processwire.com/index.php/Module_Creation
Additional resources
--------------------
To find and download new modules, see the modules directory at:
http://modules.processwire.com/
For more information about modules, see the documentation at:
http://processwire.com/api/modules/
For discussion and support of modules, see:
http://processwire.com/talk/forum/4-modulesplugins/

View File

@@ -1,98 +0,0 @@
PROCESSWIRE TEMPLATE FILES
==========================
The files in this directory correspond with the templates list in ProcessWire admin. Template files are just
PHP files that output markup. They may also be just basic HTML files (with a .PHP extension). Most pages in
the site are assigned to one of the template files in this directory.
These template files typically comprise the majority of what makes your site unique from any other
ProcessWire installation. In keeping with this approach, you'll also see '/scripts/' and '/styles/'
directories within this templates directory. They contain the site's javascript and CSS files. Though
that is stylistic only, you can certainly place them somewhere else or rename them as desired.
Templates have full unrestricted access to the ProcessWire API and typically use it for finding pages and
referencing their properties for output. If desired, templates may go further than this and call upon other
web applications or anything else that you might do with PHP.
Every template is supplied with a $page object that refers to the current page being viewed. This $page
object is locally scoped to the template file. The only thing you need to do to access it is directly
refer to it in your PHP code. For instance, if you wanted to output the page's $title field from your
template, you would do the following:
<?php echo $page->title; ?>
...or short syntax (if supported by your web host):
<?=$page->title?>
And likewise for any other fields assigned to the template. Though some fields require more, like
files, images, page references and the like.
For more details about the $page API variable, please see:
http://processwire.com/api/variables/page/
LOADING OTHER PAGES FROM YOUR TEMPLATE
======================================
Templates are also supplied with a $pages API variable that provides for loading and finding other pages.
The most common methods used in that object are get() and find(), both of which take a selector string to
locate and return pages. The only difference between them is that get() always returns 1 page, and find()
returns a PageArray. Below are examples:
// find all pages using the skyscraper template
$skyscrapers = $pages->find("template=skyscraper");
// find all skyscrapers with a height greater than 500 ft, and less than or equal to 1000 ft.
$skyscrapers = $pages->find("template=skyscraper, height>500, height<=1000");
// find all skyscrapers in Chicago with 60+ floors, sorted by floors ascending
$skyscrapers = $pages->get("/cities/chicago/")->children("floors>=60, sort=floors");
// find all skyscrapers built before 1950 with 10+ floors, sorted by year, then floors
$skyscrapers = $pages->find("template=skyscraper, year<1950, floors>=10, sort=-year, sort=-floors");
// find all skyscrapers by architects David Childs or Renzo Piano, and sort by height descending
$david = $pages->get("/architects/david-childs/");
$renzo = $pages->get("/architects/renzo-piano/");
$skyscrapers = $pages->find("architect=$david|$renzo, sort=-height");
// find all skyscrapers that mention the words "limestone" and "granite" somewhere in their body copy.
$skyscrapers = $pages->get("/cities/")->find("template=skyscraper, body~=limestone granite");
// find all skyscrapers that mention the phrase "empire state building" in their body copy.
$skyscrapers = $pages->find("template=skyscraper, body*=empire state building");
For more about the $pages API variable, please see:
http://processwire.com/api/variables/pages/
INCLUDING A TEMPLATE FROM ANOTHER TEMPLATE
==========================================
When you include a template from another template, use the following syntax:
include("./my-template.php");
Note the leading "./" above. Do NOT use this syntax:
include("my-template.php");
The difference between the second [incorrect] example and the first [correct] example is that the first
example starts with: "./". This tells PHP to look in the current directory. Whereas if you omit that part,
PHP will search your include path, which could result in an error, or even worse, include the wrong file.
So just remember to always precede your included files with "./".
MORE INFORMATION
================
The information in this file is very brief. Please see the official documentation at:
http://processwire.com/api/
The ProcessWire API cheatsheet is especially handy:
http://processwire.com/api/cheatsheet/
Please join the ProcessWire forum and we're always glad to assist with any questions you have:
http://processwire.com/talk/

View File

@@ -1,16 +0,0 @@
<?php namespace ProcessWire;
/**
* Admin template just loads the admin application controller,
* and admin is just an application built on top of ProcessWire.
*
* This demonstrates how you can use ProcessWire as a front-end
* to another application.
*
* Feel free to hook admin-specific functionality from this file,
* but remember to leave the require() statement below at the end.
*
*/
/** @var Config $config */
require($config->paths->core . "admin.php");

View File

@@ -1,13 +0,0 @@
<?php
/**
* Page template
*
*/
include("./head.inc");
echo $page->body;
include("./foot.inc");

View File

@@ -1,11 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>500 Internal Server Error</title>
</head>
<body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or misconfiguration and was unable to complete your request.</p>
<p>{message}</p>
</body>
</html>

View File

@@ -1,21 +0,0 @@
When a fatal error occurs, ProcessWire displays the message:
"Unable to complete this request due to an error."
The message is intentionally vague for security purposes.
Details will be logged to /site/assets/logs/errors.txt.
When present in this directory, the file 500.html will be
displayed instead of the generic error message above. Feel
free to modify this file to show whatever you would like.
Please note the following:
* 500.html is plain HTML and has no PHP or API access.
* You may enter the tag {message} and ProcessWire will
replace this with additional details when applicable.
When not applicable, it will make it blank.
* If you are logged in as an admin, ProcessWire will
give you a detailed error message rather than 500.html.

View File

@@ -1,43 +0,0 @@
<?php
// Output navigation for any children below the bodycopy.
// This navigation cycles through the page's children and prints
// a link and summary:
if($page->numChildren) {
echo "<ul class='nav' role='navigation'>";
foreach($page->children as $child) {
echo "<li><p><a href='{$child->url}'>{$child->title}</a><br />";
echo "<span class='summary'>{$child->summary}</span></p></li>";
}
echo "</ul>";
}
?>
</div><!--/bodycopy-->
</div><!--/container-->
</div><!--/content-->
<div id="footer" class="footer" role="contentinfo">
<div class="container">
<p>Powered by <a href='http://processwire.com'>ProcessWire Open Source CMS/CMF</a></p>
</div>
</div>
<?php
// If the page is editable, then output a link that takes us straight to the page edit screen:
if($page->editable()) {
echo "<a class='nav' id='editpage' href='{$config->urls->admin}page/edit/?id={$page->id}'>Edit</a>";
}
?>
</body>
</html>

View File

@@ -1,170 +0,0 @@
<?php
/**
* Demo site header include file (HTML5)
*
* Note that this file has nothing to do with ProcessWire. We just split our common
* header and footer markup into separate files (head.inc and foot.inc) like this,
* since it was common to all of our templates.
*
*/
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title><?php echo $page->get("headline|title"); ?></title>
<meta name="description" content="<?php echo $page->summary; ?>" />
<meta name="generator" content="ProcessWire <?php echo $config->version; ?>" />
<link rel="stylesheet" type="text/css" href="<?php echo $config->urls->templates?>styles/main.css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="<?php echo $config->urls->templates?>styles/ie.css" />
<![endif]-->
<!-- This website is powered by ProcessWire CMF/CMS - https://processwire.com -->
</head>
<body>
<a href="#bodycopy" class="visually-hidden element-focusable bypass-to-main">Skip to content</a>
<p id='bgtitle'><?php
// print the section title as big faded text that appears near the top left of the page
echo $page->rootParent->title;
?></p>
<div id="masthead" class="masthead">
<div class="container">
<a href='<?php echo $config->urls->root; ?>'><p id='logo'>ProcessWire</p></a>
<ul id='topnav' role='navigation'><?php
// Create the top navigation list by listing the children of the homepage.
// If the section we are in is the current (identified by $page->rootParent)
// then note it with <a class='on'> so we can style it differently in our CSS
// and add a text that is visually hidden, but available for screen readers.
// In this case we also want the homepage to be part of our top navigation,
// so we prepend it to the pages we cycle through:
$homepage = $pages->get("/");
$children = $homepage->children;
$children->prepend($homepage);
foreach($children as $child) {
if ($child === $page->rootParent) {
$class = " class='on'";
$indicator = "<span class='visually-hidden'>Current page: </span>";
$ariaState = " aria-current='true' ";
}
$class = $child === $page->rootParent ? " class='on'" : '';
echo "<li><a$class$ariaState href='{$child->url}'>$indicator{$child->title}</a></li>";
}
?></ul>
<ul id='breadcrumb' role='navigation' aria-label='You are here:'><?php
// Create breadcrumb navigation by cycling through the current $page's
// parents in order, linking to each:
foreach($page->parents as $parent) {
echo "<li><a href='{$parent->url}'>{$parent->title}</a> <span class='visually-hidden'>&gt;</span> </li>";
}
?></ul>
<h1 id='title'><?php
// The statement below asks for the page's headline or title.
// Separating multiple fields with a pipe "|" returns the first
// one that has a value. So in this case, we print the headline
// field if it's there, otherwise we print the title.
echo $page->get("headline|title");
?></h1>
<form id='search_form' action='<?php echo $config->urls->root?>search/' method='get'>
<label for='search_query' class='visually-hidden'>Search:</label>
<input type='text' name='q' id='search_query' value='<?php echo htmlentities($input->whitelist('q'), ENT_QUOTES, 'UTF-8'); ?>' />
<button type='submit' id='search_submit'>Search</button>
</form>
<?php
// Grab a random image from the homepage and display it.
// Note that $homepage was loaded above where we generated the top navigation.
if(count($homepage->images)) {
$image = $homepage->images->getRandom();
$thumb = $image->size(232, 176);
echo "<a href='{$image->url}'><img id='photo' src='{$thumb->url}' alt='{$thumb->description}' width='{$thumb->width}' height='{$thumb->height}' /></a>";
}
?>
</div>
</div>
<div id="content" class="content">
<div class="container">
<div id="sidebar" role='complementary'>
<?php
// Output subnavigation
//
// Below we check to see that we're not on the homepage, and that
// there are at least one or more pages in this section.
//
// Note $page->rootParent is always the top level section the page is in,
// or to word differently: the first parent page that isn't the homepage.
if($page->path != '/' && $page->rootParent->numChildren > 0) {
// We have determined that we're not on the homepage
// and that this section has child pages, so make navigation:
echo "<ul id='subnav' class='nav' role='navigation'>";
foreach($page->rootParent->children as $child) {
$class = $page === $child ? " class='on'" : '';
$ariaState = $page === $child ? " aria-current='true' " : '';
echo "<li><a$class$ariaState href='{$child->url}'>{$child->title}</a></li>";
}
echo "</ul>";
}
?>
<div class='sidebar_item'>
<?php
// if the current page has a populated 'sidebar' field, then print it,
// otherwise print the sidebar from the homepage
if($page->sidebar) echo $page->sidebar;
else echo $homepage->sidebar;
?>
</div>
</div><!--/sidebar-->
<div id="bodycopy" role="main">

View File

@@ -1,13 +0,0 @@
<?php
/**
* Home template
*
*/
include("./head.inc");
echo $page->body;
include("./foot.inc");

View File

@@ -1,49 +0,0 @@
<?php
/**
* Search template
*
*/
$out = '';
if($q = $sanitizer->selectorValue($input->get->q)) {
// Send our sanitized query 'q' variable to the whitelist where it will be
// picked up and echoed in the search box by the head.inc file.
$input->whitelist('q', $q);
// Search the title, body and sidebar fields for our query text.
// Limit the results to 50 pages.
// Exclude results that use the 'admin' template.
$matches = $pages->find("title|body|sidebar~=$q, limit=50");
$count = count($matches);
if($count) {
$out .= "<h2>Found $count pages matching your query:</h2>" .
"<ul class='nav'>";
foreach($matches as $m) {
$out .= "<li><p><a href='{$m->url}'>{$m->title}</a><br />{$m->summary}</p></li>";
}
$out .= "</ul>";
} else {
$out .= "<h2>Sorry, no results were found.</h2>";
}
} else {
$out .= "<h2>Please enter a search term in the search box (upper right corner)</h2>";
}
// Note that we stored our output in $out before printing it because we wanted to execute
// the search before including the header template. This is because the header template
// displays the current search query in the search box (via the $input->whitelist) and
// we wanted to make sure we had that setup before including the header template.
include("./head.inc");
echo $out;
include("./foot.inc");

View File

@@ -1,28 +0,0 @@
<?php
/**
* Site map template
*
*/
include("./head.inc");
function sitemapListPage($page) {
echo "<li><a href='{$page->url}'>{$page->title}</a> ";
if($page->numChildren) {
echo "<ul>";
foreach($page->children as $child) sitemapListPage($child);
echo "</ul>";
}
echo "</li>";
}
echo "<ul class='sitemap'>";
sitemapListPage($pages->get("/"));
echo "</ul>";
include("./foot.inc");

View File

@@ -1,5 +0,0 @@
#bgtitle {
/* This doesn't render well in IE (any version), so we just exclude it. */
display: none;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 B

View File

@@ -1,546 +0,0 @@
@import url(reset.css);
/**
* ProcesssWire.com site template stylesheet. Prepared for use in the basic site profile.
*
* Please feel free to use and/or modify under the same license as ProcessWire.
*
* Copyright 2010 by Ryan Cramer Design, LLC
*
*/
body {
background: #e4ebee url(images/bg.gif) repeat-x;
}
body, input, textarea, table {
font-family: Georgia, "Times New Roman", Times, serif;
font-size: 14px;
color: #2f4248;
}
#masthead,
#content,
#footer {
padding-right: 20px;
padding-left: 20px;
}
.container {
position: relative;
width: 85%;
min-width: 920px;
max-width: 1200px;
margin: 0 auto;
}
#masthead {
background: none;
height: 210px;
}
#logo {
position: absolute;
left: 0;
top: 44px;
background: url(images/logo.gif);
width: 179px;
height: 25px;
text-indent: -9999px;
}
#title {
font-size: 37px;
color: #003051;
position: absolute;
top: 155px;
left: 0;
}
#bgtitle {
position: absolute;
top: 62px;
left: 0;
font-size: 162px;
color: rgba(255, 255, 255, 0.2);
}
#topnav {
position: absolute;
right: 250px;
top: 3px;
}
#topnav li {
display: inline;
}
#topnav a,
#sidebar ul.nav a,
#breadcrumb a,
a.nav {
font-family: "Helvetica Neue", Arial, sans-serif;
font-size: 11px;
font-weight: bold;
text-transform: uppercase;
color: #a7e5f9;
}
#topnav a {
display: block;
float: left;
margin: 0 0 0 1px;
padding: 48px 10px 20px 10px;
}
#topnav a:hover,
#topnav a.on {
color: #fff;
background: url(images/topnav_a_bg.gif) top left repeat-x;
}
#breadcrumb {
position: absolute;
left: 0;
top: 97px;
}
#breadcrumb li {
color: #5197ae;
font-size: 11px;
display: inline;
padding: 0 2px 0 0;
}
#breadcrumb a {
color: #005f7d;
padding: 0 2px 0 0;
}
#breadcrumb a:hover {
text-decoration: underline;
}
#search_form { }
#search_query {
position: absolute;
top: 7px;
right: 0;
width: 222px;
padding: 2px 5px;
height: 17px;
border: none;
}
#search_submit {
position: absolute;
top: 7px;
right: 0;
border: none;
background: url(images/btn-search.png) top left no-repeat;
width: 27px;
height: 21px;
text-indent: -9999px;
}
#search_submit:hover {
background-position: center left;
cursor: pointer;
}
#search_submit:focus {
background-position: bottom left;
}
#masthead #photo {
position: absolute;
top: 34px;
right: 0;
}
#content {
background: #f8f8f8;
font-size: 14px;
line-height: 1.7em;
color: #333;
padding-top: 0;
padding-bottom: 4em;
min-height: 400px;
}
#content p,
#content ul,
#content ol,
#content table {
margin: 1em 0 1.5em 0;
}
#content a {
color: #f00076;
}
#content a:hover {
background-color: #f00076;
color: #fff;
text-decoration: none;
}
#content em {
font-style: italic;
}
#content strong {
font-family: "Helvetica Neue", Arial, sans-serif;
font-weight: bold;
color: #555;
}
#content h2,
#content h3,
#content h4 {
margin-top: 1.5em;
line-height: 1.3em;
}
#content h2 {
color: #006fbb;
font-size: 23px;
margin-bottom: 0.5em;
}
#content h3 {
color: #690033;
font-size: 18px;
border-bottom: 1px dotted #ccc;
margin-bottom: -0.5em;
padding-bottom: 0.25em;
}
#content h2 + h3 {
margin-top: 0;
}
#content h3 + ul,
#content h3 + ol {
margin-top: 1.5em;
}
#content h4 {
font-size: 1em;
font-weight: bold;
text-transform: uppercase;
}
#content ol li {
margin: 0 0 0 3em;
}
#content ul li {
margin: 0 0 0 3em;
display: list-item;
list-style: disc;
}
#content ol li {
margin: 0 0 0 3em;
display: list-item;
list-style: decimal;
}
#content ul.nav { }
#content ul.nav li {
display: block;
list-style: none;
margin: 0;
border-bottom: 1px dotted #ccc;
}
#content ul.nav li a {
font-family: "Helvetica Neue", Arial, sans-serif;
font-weight: bold;
margin: 0;
}
#content ul.nav li p {
margin: 1em 0;
}
#content .disclaimer {
font-size: 11px;
line-height: 17px;
color: #777;
}
#sidebar {
position: relative;
float: right;
width: 232px;
min-height: 200px;
padding-bottom: 2em;
}
#sidebar h3 {
border: none;
color: #006fbb;
font-size: 16px;
}
#sidebar h3 + ul.nav {
margin-top: 1em;
}
#sidebar #photo {
display: block;
}
#sidebar ul.nav {
margin: 0 0 1em 0;
}
#sidebar ul.nav li {
margin: 0;
border: none;
}
#sidebar ul.nav a {
display: block;
padding: 8px 10px 8px 15px;
color: #005f7d;
background: #d5e5eb;
border-top: 1px solid #fff;
}
#sidebar ul.nav a:hover,
#sidebar ul.nav a.on {
background: #db1174;
color: #fff;
text-decoration: none;
}
#sidebar .sidebar_item {
padding: 0 5px 0 14px;
margin: 0 0 2em 0;
border-left: 1px dotted #ccc;
}
#bodycopy {
padding-right: 265px;
padding-top: 1px;
margin-top: 0;
}
#bodycopy strong {
color: #444;
}
#content #bodycopy > h2:first-child {
margin-top: 1em;
}
#bodycopy .video {
margin: 1em 0;
background: #000;
padding: 10px;
padding-bottom: 3px;
width: 640px;
}
#footer {
clear: both;
border: none;
font-size: 11px;
padding: 2em 0;
}
#footer p,
#footer a {
color: #85aaba;
}
#footer p {
text-align: center;
}
#footer a:hover {
text-decoration: underline;
color: #db1174;
}
/**
* The edit link that appears when you are logged in.
* It is recommended that you implement an edit button
* in your templates to make it easy to switch to and
* from the admin control panel when editing pages.
*
*/
#editpage {
position: absolute;
top: 0;
left: 0;
padding: 5px 6px;
background: #db1174;
color: #fff;
display: block;
font-weight: bold;
}
#editpage:hover {
background: #ffffcc;
color: #000;
}
/**
* Alignment styles that are used by the InputfieldTinyMCE for
* positioning images in bodycopy. If you are using this field type,
* you may want to include these or similar styles in your site.
*
*/
.align_left {
float: left;
margin: 0 1em 0.25em 0;
}
.align_right {
float: right;
margin: 0 0 0.25em 1em;
}
.align_center {
display: block;
margin-left: auto;
margin-right: auto;
}
/**
* Optional CSS classes specific to the FieldtypeComments module
* when used in this site design template.
*
*/
#content .CommentList {
margin: 1em 0 0 0;
}
#content .CommentListItem {
list-style: none;
margin: 0;
border-left: 5px solid #ddd;
border-top: 1px dotted #ccc;
padding: 1em 0 1px 1em;
background: #fff;
}
#content .CommentListItem p {
margin-top: 0;
}
#content .CommentHeader,
#CommentForm label {
margin: 0;
font-weight: bold;
font-size: 11px;
text-transform: uppercase;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #3786bc;
}
#content .CommentText {
color: #666;
}
#CommentForm { }
#CommentForm h3 {
margin: 0;
border: none;
}
#CommentForm label {
display: block;
color: #f00076;
color: #999;
}
#CommentForm p {
margin: 0.5em 0;
}
.CommentForm_cite,
.CommentForm_email {
float: left;
}
.CommentForm_cite input,
.CommentForm_email input {
width: 200px;
margin-right: 1em;
}
.CommentForm_text {
clear: left;
}
.CommentForm_text textarea {
padding: 2px;
width: 75%;
height: 100px;
}
#CommentForm .error {
background: #a30000;
color: #fff;
padding: 0.25em 0.5em;
}
#CommentForm .success {
font-weight: bold;
}
/**
* WireFatalError is a class that ProcessWire will use to output
* fatal errors in the design, but only if debug mode is on, or if
* you are logged in as a superuser.
*
*/
.WireFatalError {
background: #a30000;
color: #fff;
padding: 1em;
position: relative;
z-index: 9999;
}
/*********************************************************************
* 6. Accessibility helpers
*
*/
/* Hide visually, but remain approachable for screenreader */
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
white-space: nowrap;
overflow: hidden;
clip: rect(1px, 1px, 1px, 1px);
border: 0;
}
/* Show bypass link on hover */
.element-focusable:focus {
clip: auto;
overflow: visible;
height: auto;
}
/* Sample styling for bypass link */
.bypass-to-main:focus {
top: 0;
left: 0;
z-index: 10;
width: 100%;
height: 40px;
line-height: 40px;
text-align: center;
background: #333;
color: #fff;
}

View File

@@ -1,50 +0,0 @@
/**
* Reset stylesheet to normalize styles across browsers
*
*/
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,label,input,textarea,p,blockquote,th,td {
margin:0;
padding:0;
}
table {
border-collapse:collapse;
border-spacing:0;
}
fieldset,img {
border:0;
}
address,caption,cite,code,dfn,em,strong,th,var {
font-style:normal;
font-weight:normal;
}
ol,ul,li {
list-style:none;
margin: 0;
padding: 0;
}
caption,th {
text-align:left;
}
h1,h2,h3,h4,h5,h6 {
font-size:100%;
font-weight:normal;
}
q:before,q:after {
content:'';
}
abbr,acronym {
border:0;
}
a {
text-decoration: none;
}

View File

@@ -1,4 +0,0 @@
<?php
// Intentionally left blank to test that htaccess rewrite rules are working.
// Accessing this file from http should produce a '403 forbidden' error,
// since all PHP files are blocked under /assets/.

Some files were not shown because too many files have changed in this diff Show More