1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-23 06:44:38 +02:00

861 Commits

Author SHA1 Message Date
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
Ryan Cramer
d78276e2c2 Fix small typo in phpdoc fix per @matjazpotocnik 2021-08-27 13:48:48 -04:00
Ryan Cramer
0632599385 Bump version to 3.0.184 2021-08-27 07:00:31 -04:00
Ryan Cramer
fb32ed605b README updates and related 2021-08-27 07:00:11 -04:00
Ryan Cramer
25e89c35c9 Add in-progress items that need more work or testing as to-do’s for next dev branch 2021-08-26 08:11:03 -04:00
Ryan Cramer
e6e08ad3fb Fix issue processwire/processwire-issues#1335 - inserting <figure><img> nodes in Safari deleting content after the <figure> 2021-08-25 13:46:41 -04:00
Ryan Cramer
212406b173 Fix issue processwire/processwire-issues#1431 2021-08-25 07:37:19 -04:00
Ryan Cramer
9ba7844a5d Fix "OR-condition not allowed" error introduced from a change related to processwire/processwire-issues#1428 2021-08-22 08:25:45 -04:00
Ryan Cramer
1043e73ab8 Add support for an Inputfield "changed" JS event in inputfields.js 2021-08-20 13:47:46 -04:00
Ryan Cramer
a00e89d0ed Minor improvements in SessionHandlerDB and ProcessSessionDB 2021-08-20 13:45:17 -04:00
Ryan Cramer
616c388f29 Various minor updates 2021-08-20 13:41:25 -04:00
Ryan Cramer
46a8ace31d Add exception to warn of unsupported OR condition in PageFinder per processwire/processwire-issues#1428 2021-08-20 13:19:25 -04:00
Ryan Cramer
c2db767863 Fix issue processwire/processwire-issues#1423 wording adjustment in FieldtypePage.module 2021-08-20 11:14:10 -04:00
Ryan Cramer
6c8d35f18d Fix issue processwire/processwire-issues#1426 2021-08-20 10:52:26 -04:00
Ryan Cramer
4123181bd5 Upgrades to MarkupRSS module, add support for xmlns:content for option to include full HTML of content, plus fix processwire/processwire-issues#1427 2021-08-20 10:41:42 -04:00
Ryan Cramer
6871035292 Upgrade InputfieldRadios and InputfieldCheckboxes to support a 'optionWidth' configuration property per processwire/processwire-issues#1327 2021-08-19 12:49:12 -04:00
Ryan Cramer
6fdf82ba16 Fix JS notice appearing from a recent update to ProcessPageEdit.js 2021-08-19 10:40:16 -04:00
Ryan Cramer
bcb699a50e Fix issue processwire/processwire-issues#892 2021-08-19 10:31:29 -04:00
Ryan Cramer
d691f8e5ea Fix issue processwire/processwire-issues#956 - Add/fix support for CKEditor context-specific settings when in Repeater item 2021-08-19 09:26:35 -04:00
Ryan Cramer
2862114021 Fix issue processwire/processwire-issues#1116 - MarkupQA handling of abstracted URLs that also contain URL segments appended to them. 2021-08-18 11:14:31 -04:00
Ryan Cramer
51117dbea8 Update $pages->getByPath() to support new options such as allowing URL segments to appear in given path, disabling partial path matching, and supporting paths that might have a root subdirectory url in it. Related to processwire/processwire-issues#1116 2021-08-18 11:11:48 -04:00
Ryan Cramer
5ac7c127eb Fix issue processwire/processwire-issues#1349 2021-08-17 10:55:53 -04:00
Ryan Cramer
695a39b281 Fix issue processwire/processwire-issues#1135 2021-08-16 11:10:34 -04:00
Ryan Cramer
77fbeccb59 Update ProcessForgotPassword for IPv6 address suppport 2021-08-13 15:05:49 -04:00
Ryan Cramer
035e947a5a Fix issue processwire/processwire-issues#1134 2021-08-13 14:26:31 -04:00
Ryan Cramer
b606349c08 Fix issue processwire/processwire-issues#1303 PageFrontEdit limit to single-line input on 1-line text fields 2021-08-13 13:58:54 -04:00
Ryan Cramer
f1150127ea Fix issue with PageEdit <h1> title not supporting update-as-you-type feature when editing in non-default language 2021-08-13 10:27:04 -04:00
Ryan Cramer
4b7400f20c Fix issue processwire/processwire-issues#1094 2021-08-13 10:13:57 -04:00
Ryan Cramer
5282e5d737 Fix issue processwire/processwire-issues#1220 2021-08-12 13:10:55 -04:00
Ryan Cramer
48a37bcc5c Fix issue processwire/processwire-issues#957 add IPv6 address support for $session->getIP() method 2021-08-12 12:02:07 -04:00
Ryan Cramer
572dc0b7ea Fix issue processwire/processwire-issues#1419 2021-08-12 10:17:04 -04:00
Ryan Cramer
674b44b288 Fix issue processwire/processwire-issues#1421 - InputfieldTextTags not working in repeater items 2021-08-12 09:31:28 -04:00
Ryan Cramer
c4ced72158 Minor updates in ProcessPageEdit "who can view" section 2021-08-11 10:21:44 -04:00
Ryan Cramer
31524d7a5a Bump version to 3.0.183 2021-08-06 14:26:43 -04:00
Ryan Cramer
f0a02bd70a Minor code improvements in ProcessPageAdd module (mostly just code/API usage consistency adjustments) 2021-08-06 14:21:58 -04:00
Ryan Cramer
f39d836bf1 Minor unrelated updates 2021-08-06 14:21:27 -04:00
Ryan Cramer
9e23967b12 Make the page editor headline title update dynamically with the title input (in AdminThemeUikit and AdminThemeReno) 2021-08-06 11:19:57 -04:00
Ryan Cramer
6c7e52edd6 Fix issue with 1-pixel alignment of buttons with dropdowns when in Safari browser 2021-08-06 10:25:34 -04:00
Ryan Cramer
67df29ba87 Attempt fix for processwire/processwire-issues#1308 2021-08-06 09:49:01 -04:00
Ryan Cramer
29c58f836b Minor updates/improvements to PagesEditor class, plus add 'user' option for $pages->touch() method 2021-08-05 08:44:23 -04:00
Ryan Cramer
c27880c71d Fix issue processwire/processwire-issues#1172 2021-08-04 14:19:05 -04:00
Ryan Cramer
08c5c40705 Fix issue processwire/processwire-issues#1276 additional clarification/docs in .htaccess for www domain redirect in cases where SERVER_ADDR checks don't work. 2021-08-04 13:57:36 -04:00
Ryan Cramer
9d5f8cc359 Fix issue processwire/processwire-issues#1282 2021-08-04 13:40:42 -04:00
Ryan Cramer
a6cd45ccff Fix issue processwire/processwire-issues#1313 WireArray::prepend(WireArray $items) adding in unexpected order 2021-08-04 12:44:40 -04:00
Ryan Cramer
e4eed8358d Minor housecleaning in User.php plus resolve issue processwire/processwire-issues#1293 User::isLoggedin() improvement/phpdoc 2021-08-04 11:21:30 -04:00
Ryan Cramer
cee6a51579 Fix issue processwire/processwire-issues#114 2021-08-03 10:56:43 -04:00
Ryan Cramer
a0fd1ce43e Fix issue processwire/processwire-issues#890 2021-08-02 14:12:06 -04:00
Ryan Cramer
a4324c674c Add feature required in processwire/processwire-issues#791 - option for CKEditor fixed height inline mode 2021-08-02 12:46:22 -04:00
Ryan Cramer
2db58b8dbe Additional updates related to processwire/processwire-issues#1098 2021-08-01 11:55:57 -04:00
Ryan Cramer
0f2ff21c47 Additional update for processwire/processwire-issues#1098 2021-08-01 11:25:19 -04:00
Ryan Cramer
1a37c920ea Fix issue in InputfieldSelector.module where created_users_id and modified_users_id default value was 0 rather than blank when number of users in system exceeded a predefined quantity ($maxUsers) 2021-08-01 09:09:31 -04:00
Ryan Cramer
adaf22352c Fix issue processwire/processwire-issues#1098 - Correct issue where CKEditor was not keeping formatting when linking bold, italic, or other formatted text 2021-07-30 15:43:45 -04:00
Ryan Cramer
e1d190eea7 Fix issue processwire/processwire-issues#862 2021-07-30 14:32:39 -04:00
Ryan Cramer
4d86d4e3f2 Fix issue processwire/processwire-issues#920 2021-07-30 14:15:58 -04:00
Ryan Cramer
992839e13d Fix issue processwire/processwire-issues#1186 2021-07-30 12:01:58 -04:00
Ryan Cramer
6fa2940f1b Fix issue processwire/processwire-issues#1069 plus other minor code updates to FieldtypeModule 2021-07-30 11:37:41 -04:00
Ryan Cramer
4603e67902 Fix issue processwire/processwire-issues#1412 using @Toutouwai suggested fix 2021-07-30 11:06:28 -04:00
Ryan Cramer
74bfe620a4 Attempt fix for processwire/processwire-issues#1358 2021-07-30 09:10:37 -04:00
Ryan Cramer
aed7dfc8f1 Attempt fix for issue processwire/processwire-issues#1418 2021-07-29 08:14:08 -04:00
Ryan Cramer
003c7f91b0 Add a WireHttp::setUserAgent() method to accompany existing getUserAgent() method 2021-07-28 10:42:23 -04:00
Ryan Cramer
9e318c9688 Add $database->getTime() method for getting current ISO-8601 or unix timestamp from database 2021-07-28 10:37:52 -04:00
Ryan Cramer
d815333eaf Update ProcessPageList.js so that pagination links work correctly with newer jQuery versions 2021-07-28 10:36:20 -04:00
Ryan Cramer
1890b68505 Minor improvements and refactoring in PageArray and WireArray, plus this should also fix processwire/processwire-issues#1416 2021-07-28 09:55:24 -04:00
Ryan Cramer
0839ab77fe Bump version to 3.0.182 2021-07-23 15:40:29 -04:00
Ryan Cramer
2ab7180d65 Attempt fix for processwire/processwire-issues#1351 2021-07-23 14:42:15 -04:00
Ryan Cramer
9b473adf41 Add support for PageTable non-editable value rendering per processwire/processwire-issues#1274 2021-07-23 14:04:49 -04:00
Ryan Cramer
24fc229be5 Fix issue processwire/processwire-issues#1363 2021-07-23 12:20:48 -04:00
Ryan Cramer
7048296a08 Add support for feature requested in processwire/processwire-issues#1408 - make ProcessPageType labels indicate page status (hidden, unpublished) in admin drop down menus 2021-07-23 12:15:17 -04:00
Ryan Cramer
af0789ce4f Add clarification to ProcessPageView::pageNotFound hook per processwire/processwire-issues#1410 2021-07-23 11:06:14 -04:00
Ryan Cramer
fbdf4257ce Update the ProcessModule "found new module..." notification to use the Notice::noGroup option, making it harder to miss 2021-07-23 09:57:31 -04:00
Ryan Cramer
e9754b1177 Improvements to FieldtypeOptions plus some refactoring in SelectableOptionsManager. This also removes the existing combined fulltext index 'value_title' and replaces it with separate fulltext indexes for value and title, since the previous one did not appear to ever be used. These table schema changes are applied at Modules > Refresh. 2021-07-23 09:55:19 -04:00
Ryan Cramer
6368910434 Modifications to $database->getPrimaryKey() method (I thought these were in the previous commit that added this method but looks like they weren't) 2021-07-23 09:52:46 -04:00
Ryan Cramer
119ee9ab8c Add support to accept array value for Fieldtype::getMatchQuery(), plus documentation improvements to that method 2021-07-23 09:51:42 -04:00
Ryan Cramer
916ac6f5c5 Add option to force use of LIKE in DatabaseQuerySelectFulltext class, for when operating on columns that lack fulltext indexes 2021-07-23 09:50:35 -04:00
Ryan Cramer
be825ce98b Add new $database methods getIndexes(), indexExists() and getPrimaryKey(), plus updates/improvements to existing getColumns() and columnExists() methods 2021-07-23 09:49:16 -04:00
Ryan Cramer
785d66a4b5 Fix issue processwire/processwire-issues#1255 where rename didn't work for 1-image allowed image field, plus a related issue where rename of image could leave some variations unrenamed. 2021-07-16 14:34:53 -04:00
Ryan Cramer
ec761e75bd Fix issue processwire/processwire-issues#1342 using fix proposed by @openidauthority processwire/processwire-requests#393#issuecomment-867593330 2021-07-16 13:39:05 -04:00
Ryan Cramer
8961001001 Fix issue processwire/processwire-issues#1387 2021-07-16 11:11:27 -04:00
Ryan Cramer
c82a9810c2 Add $sanitizer->selectorValueAdvanced() method for sanitizing selector values using the advanced text search operator #=, per processwire/processwire-issues#1395 2021-07-16 10:17:22 -04:00
Ryan Cramer
e610d863e7 Update for multi-instance to cover the case where someone might do something like new User() (or Permission, Role, Language) and have its template instance be from the wrong ProcessWire instance. This ensures that gets corrected as soon as the new object is wired to the instance. But we also have to account for the case where they never end up wiring the object for whatever reason, which is why there is some redundant code between construct() and wired() 2021-07-09 15:09:51 -04:00
Ryan Cramer
ca0b7ef5f3 Fix issue processwire/processwire-issues#1406 2021-07-09 14:23:03 -04:00
Ryan Cramer
5b3300c530 Upgrade TextformatterMarkdownExtra to use new versions of Parsedown and Parsedown Extra, update module config for new options and add a test option. This update also fixes processwire/processwire-issues#1401 2021-07-09 12:03:05 -04:00
Ryan Cramer
8c6c85c87d Fix issue processwire/processwire-issues#1402 2021-07-09 11:11:59 -04:00
Ryan Cramer
2adebb6d78 Update inputfields.js to support selection of Inputfield elements behaving as a tab 2021-07-09 11:01:26 -04:00
Ryan Cramer
405b80e54b Add Field::getContexts() method. Update ProcessField and ProcessTemplate to improve their main listing screen, particularly the 'flags' column which now shows more details and also now uses contextual links to relevant flags. 2021-07-09 10:59:46 -04:00
Ryan Cramer
5f6adc9221 Fix issue processwire/processwire-issues#1404 2021-07-09 07:42:28 -04:00
Ryan Cramer
498010ad8f Add a new FieldtypeHasFiles interface and update FieldtypeFile and FieldtypeImage to implement it. This interface is intended to be implemented by any Fieldtype that works with files to provide a common interface among them. 2021-07-08 11:36:19 -04:00
Ryan Cramer
88ae66e186 Update CommentForm "normal" render to use custom defined classes that were previously only used by "threaded" render 2021-07-08 11:34:55 -04:00
Ryan Cramer
a87e774aaf Add check for potential race condition in Pageimage.php when multiple requests trying to generate same image variation 2021-07-08 11:33:39 -04:00
Ryan Cramer
64758ebdcc Add clarity to ProcessTemplate fields section to make it clear that you have to save newly added fields before they become editable in context. Also add note about how to drag to adjust column width of individual fields. 2021-07-08 11:29:36 -04:00
Ryan Cramer
f851c63842 Bump version to 3.0.181 2021-07-02 15:45:50 -04:00
Ryan Cramer
ccc3d1f5bb Add @LostKobrakai PR #52 - Implement a way for modules to supply translations, plus some related updates
Co-authored-by: LostKobrakai <benni@kobrakai.de>
2021-07-02 12:38:22 -04:00
Ryan Cramer
15d2982dcd Update ProcessLanguageTranslator module to support download or view of CSV translations files 2021-07-02 12:34:24 -04:00
Ryan Cramer
fb7406c3e6 Fix issue with LanguageTabs module where it wasn't working when in non-default language with the recent Uikit version update. 2021-07-02 12:33:32 -04:00
Ryan Cramer
4167f17235 Various minor optimizations to Page class and its helper classes 2021-07-02 12:32:04 -04:00
Ryan Cramer
4aebc4a203 Add __debugInfo() method to Inputfield class 2021-07-02 12:30:18 -04:00
Ryan Cramer
48a80058e4 Add $sanitizer->textdomain() method 2021-07-02 12:29:51 -04:00
Ryan Cramer
ecd491c5d8 Update ProcessPageEdit to enable removal of system status when superuser in advanced mode (though I don't recommend using it unless you are trying to fix something that's broken), plus make a couple more status options available to superuser in advanced mode. Also some other unrelated and minor optimizations in this module. 2021-06-30 09:38:10 -04:00
Ryan Cramer
9ea37575ad Update SystemNotifications module to provide instructions on uninstall requirements, as some have reported the module won't uninstall unless notifications are first disabled. 2021-06-25 13:47:34 -04:00
Ryan Cramer
ac626a5794 Add additional clarification to a couple of Page class exception error messages 2021-06-25 13:46:00 -04:00
Ryan Cramer
5e663ccf13 Make $modules->isUninstallable() method hookable and update the $modules->isInstallable() method to detect when module doesn't implement required 'Module' interface. 2021-06-25 13:45:09 -04:00
Ryan Cramer
bb6e7f79b8 Bump version to 3.0.180 2021-06-18 13:07:22 -04:00
Ryan Cramer
99e89fe0fb Update InputfieldWrapper class so that you can now get new Inputfield object instances from it directly and in a manner that IDEs know what Inputfield module you are working with, so that phpdoc'ing it isn't necessary. This works from accesses to InputfieldWrapper, InputfieldForm, InputfieldFieldset. i.e. $f = $inputfields->InputfieldText; is equivalent to $modules->get('InputfieldText'); but more understandable to the IDE (like PhpStorm). 2021-06-18 11:50:09 -04:00
Ryan Cramer
7465f5339d Add new 'hidden' option to $files->copy() method (WireFileTools) 2021-06-18 11:29:56 -04:00
Ryan Cramer
d38931cb26 Add new $database->getColumns('table'); method in WireDatabasePDO 2021-06-18 11:28:30 -04:00
Ryan Cramer
ca69df49de Fix issue processwire/processwire-issues#1386 2021-06-18 11:21:09 -04:00
Ryan Cramer
c33897b908 Add support for more fieldtypes within file/image custom fields, plus improved support for them in repeaters, and an update for PR #160 2021-06-18 10:43:43 -04:00
Ryan Cramer
04115a878f Update for PR #99 2021-06-18 08:18:37 -04:00
Ryan Cramer
6d35e603f0 Fix issue processwire/processwire-issues#1394 via @Toutouwai 2021-06-17 15:59:37 -04:00
Ryan Cramer
91d96a0317 Fix issue processwire/processwire-issues#1398 2021-06-17 15:32:48 -04:00
Ryan Cramer
b087149c40 Optimization to use direct $fuel access in ProcessWire class (only), plus add new 'exited' status so that requests that perform a manual 'exit();' call can still be identified and routed through the shutdown maintenance process. 2021-06-11 14:03:01 -04:00
Ryan Cramer
c81aa1a82a Various minor adjustments 2021-06-11 14:00:55 -04:00
Ryan Cramer
3229d2371e Upgrades and improvements to $files->find() method and add $files->exists() 2021-06-11 13:56:39 -04:00
Ryan Cramer
04e2de28f0 Updates to InputfieldSubmit dropdown option to support a required state where there is no default action by just clicking the button, so you have to click a dropdown action 2021-06-04 14:35:57 -04:00
Ryan Cramer
8e9d2f80e8 Fix issue processwire/processwire-issues#1388 2021-06-01 11:35:04 -04:00
Ryan Cramer
91cb5c0e21 Fix issue processwire/processwire-issues#1389 2021-06-01 11:31:44 -04:00
pine3ree
bb5d846b04 Add PR #191 - Use step attribute = precision in float inputfield if html5 number 2021-06-01 10:33:02 -04:00
Ryan Cramer
73b82462fc Add PR #190 - FieldtypeMulti: orderby sort only if schema supports it
Co-authored-by: pine3ree <pine3ree@gmail.com>
2021-06-01 09:41:05 -04:00
Ryan Cramer
3fe499899b Add PR #124 - Add hookable method to PageImage variation creation
Co-authored-by: karltdev <karl@assembly.com.hk>
2021-06-01 09:33:02 -04:00
karltdev
2895b9c7b8 Add PR #99 - Add support for repeater field for InputfieldPage dependent selects 2021-06-01 09:08:35 -04:00
MrSnoozles
e0d319d427 Add PR #186 - ProcessPageEdit clone multi-language object values before setting to page 2021-06-01 08:41:08 -04:00
Ryan Cramer
5c864b32c4 Add 2nd part of PR #194 (forgot this one earlier) 2021-05-31 09:29:58 -04:00
Ryan Cramer
3f5b4c4a74 Add README for AdminThemeUikit that covers customization and upgrade procedures. Remove unnecessary uikit/src/scss/ and uikit/src/js/ files. 2021-05-31 09:24:09 -04:00
Ryan Cramer
f43ee04573 Add PR #194 to change one .less import to an addFile() in AdminThemeUikit
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2021-05-31 07:56:34 -04:00
Ryan Cramer
48d8569a1e Bump version to 3.0.179 2021-05-28 15:30:45 -04:00
Ryan Cramer
401fcb0781 PR #189 – Additional updates to allow use of rock style without an admin.less file, plus add support for a core CSS version to detect when to force recompile of the /site/assets/admin.css file due to Uikit version upgrade or required core LESS/CSS changes.
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2021-05-28 13:18:35 -04:00
Ryan Cramer
8d84f41620 PR #189 - Additional updates for CSS image file references that don't survive compilation 2021-05-27 15:24:53 -04:00
Ryan Cramer
09877656ef PR #189 - Fix issue with AdminThemeUikit and a few minor broken image references
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2021-05-27 14:37:06 -04:00
Ryan Cramer
65a4e187eb PR #189 - Test upgrade Uikit 3.6.21 => 3.6.22
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2021-05-27 13:48:45 -04:00
Ryan Cramer
e156e1e4a6 Some phpdoc consistency updates in /wire/core/Config.php 2021-05-27 13:23:56 -04:00
Ryan Cramer
a3d92035f1 PR #189 - Add $config->AdminThemeUikit settings array
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2021-05-27 13:22:43 -04:00
Ryan Cramer
3522b89414 PR #189 - Update AdminThemeUikit to support custom LESS files. Authored by @BernhardBaumrock with some additions by @ryancramerdesign
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2021-05-27 13:17:56 -04:00
BernhardBaumrock
58ac07e9a9 PR #189 - Add uikit-pw/ dir to AdminThemeUikit with all PW styles, plus add reno and new rock style .less files. This separates PW Uikit files (in uikit-pw) from native Uikit files (in uikit/). 2021-05-27 13:11:11 -04:00
BernhardBaumrock
a03c1dae81 PR #189 - Upgrade Uikit version to 3.6.22 for AdminThemeUikit updates 2021-05-27 13:05:20 -04:00
Ryan Cramer
c93423365f Maybe an unlikely combination but, this fixes issue when Page field has PageArray selected as value with PageListSelect (single) selected as input. PageArray value would continue to grow as new pages selected rather than be replaced by 1 page. 2021-05-23 09:53:42 -04:00
Ryan Cramer
1131b80163 Update InputfieldSelector to filter selectable templates by initValue selector 2021-05-22 09:07:50 -04:00
Ryan Cramer
71a2e38f9e A couple of minor optimizations for queries in debug logs 2021-05-21 14:34:34 -04:00
pine3ree
d4db88ec7b Add PR #188 - add FieldtypeDecimal as allowed change type for integer and float 2021-05-20 08:24:28 -04:00
Ryan Cramer
e6a79dbbdf Make Fields::getTags() and Templates::getTags() hookable per @outflux3 processwire/processwire-issues#1369 2021-05-19 09:32:14 -04:00
Ryan Cramer
dd4926a9a1 Add support for InputfieldCKEditor extra plugin directories, feature requested in PR #165 but with different implementation from the PR so that it doesn't require hooks and autoload modules.
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2021-05-19 09:05:09 -04:00
Ryan Cramer
ff0a66821d Optimizations to WireArray::get(), plus add support for get('a|b|c') where it returns value for first matching key, consistently with WireData. This also provides a solution for PR #109 @bernhardbaumrock 2021-05-19 08:57:13 -04:00
Ryan Cramer
335ad1cefe Add ConfigModule interface as alternative to ConfigurableModule interface for modules that want to maintain non-interactive configuration data 2021-05-18 12:49:36 -04:00
Ryan Cramer
e028d9f7b6 Bump version to 3.0.178 2021-05-14 15:27:45 -04:00
gerritvanaaken
7ac6b6e9e3 Add PR #160 - enable file metadata in repeater context 2021-05-14 09:23:08 -04:00
mirzadabeer
4d5950f5fe Add PR #100 - Replace unnecessary in_array() call in /wire/core/admin.php 2021-05-13 10:48:26 -04:00
Ryan Cramer
6004066bd5 Add PR #74 which adds a JS event for language tab clicks
Co-authored-by: rdunk <rupert@rupertdunk.com>
2021-05-13 10:35:59 -04:00
Ryan Cramer
5a5d4e5830 Add support for scheme and host to be manually specified in $page->url() and $page->httpUrl() methods in $options array argument. This is related to the request in PR #116 2021-05-13 09:56:48 -04:00
rolandtoth
108ee2384a Add PR #38 which adds an edit-link-text feature to ProcessPageEditLink, via @rolandtoth 2021-05-12 15:47:39 -04:00
Ryan Cramer
79b952753c Add PR #106 - Add “since” versions for $files API var find() and includeOnce() methods
Co-authored-by: happy-kaseem <kaseem@meisterkonze.ch>
Co-authored-by: matjazpotocnik <matjaz.potocnik@um.si>
2021-05-12 14:58:11 -04:00
Ryan Cramer
89d52edaa6 Add PR #71 via @rolandtoth - Improvements to InputfieldIcon
Co-authored-by: rolandtoth <tproli@gmail.com>
2021-05-12 13:59:58 -04:00
lostkobrakai
2c8cce1d47 Add PR #77 - Make FieldtypeOptions detect single value usage in markupValue() method 2021-05-12 10:35:44 -04:00
Ryan Cramer
24578306b7 Add feature requested in PR #136 - Allow modification of CacheFile string before output
Co-authored-by: ethanbeyer <ethan.beyer@gmail.com>
2021-05-12 09:43:57 -04:00
Ryan Cramer
143ae7535b Add support for multi-dimensional arrays in $input with a $config->wireInputArrayDepth setting. This was requested in prior feature requests and in PR #161 but ended up writing it in a different way than the PR to allow for control over the allowed max dimension and consistency with multidimensional arrays in $_GET or $_POST. To enable multi-dimensional array support add $config->wireInputArrayDepth = 2; to /site/config.php and use a value of 2 (or higher) to indicate the number of dimensions you want to support.
Co-authored-by: porl <porl42@gmail.com>
2021-05-12 09:05:28 -04:00
jmartsch
e7b71d796f Add PR #185 - add margin between InputfieldImage description and custom fields 2021-05-12 06:46:01 -04:00
BernhardBaumrock
2911a16604 Add PR #169 which adds alternate behavior option for Inputfield labels as open/close toggles (currently AdminThemeUikit setting) 2021-05-11 09:58:25 -04:00
Ryan Cramer
32150bd4b7 Add PR #77 from @BernhardBaumrock which makes AdminThemeUikit::getUikitCSS() method hookable and adds an option for using uk-svg attribute on custom logo.
Co-authored-by: BernhardBaumrock <office@baumrock.com>
2021-05-11 08:29:15 -04:00
pine3ree
d29ed3eb96 Add PR #187 - add cookie SameSite support and settings (session and other cookies) 2021-05-10 14:46:37 -04:00
Ryan Cramer
ddce5e5cda Fix issue processwire/processwire-issues#1379 2021-05-10 08:45:04 -04:00
Ryan Cramer
422aeff7ac Fix issue processwire/processwire-issues#1380 2021-05-10 08:41:21 -04:00
Ryan Cramer
26f31ce81b Fix issue processwire/processwire-issues#1381 2021-05-10 08:37:07 -04:00
jmartsch
a7c85f11d9 Add PR #125 - make AdminThemeFramework::getPrimaryNavArray hookable 2021-05-07 15:23:57 -04:00
Ryan Cramer
437df97435 Add PR #151 - Show Textdomain in Language Translator
Co-authored-by: tiefenb <markus.tiefenbacher@gmail.com>
2021-05-07 15:06:51 -04:00
Ryan Cramer
1a71b77010 Add PR #163 small fixes in PWPNG class
Co-authored-by: horst-n <info@nogajski.de>
2021-05-07 14:57:29 -04:00
yuters
b7d8ae37e3 Add PR #183 - Make ProcessLanguageTranslator.module translatable 2021-05-07 14:44:02 -04:00
Ryan Cramer
3bcb8416ca Add @trk PR #184 which makes it use the inputWrapTag option in the renderFormNormal() method
Co-authored-by: trk <iskender@altivebir.com>
2021-05-07 14:38:31 -04:00
jmartsch
451455e035 Add PR #133 - use better non-technical message for SelectableOptionConfig 2021-05-07 14:30:02 -04:00
teppokoivula
1bd35d212a Add PR #146 - Make it possible to activate inline CKEditor instances via keyboard 2021-05-07 14:20:54 -04:00
derixithy
d8a5352ab9 Add PR #176 to fix typo in wire/config.php 2021-05-07 14:08:53 -04:00
tiefenb
9ed333c187 Add PR #177 for page.meta documentation update 2021-05-07 14:00:53 -04:00
teppokoivula
6ec82a965d Add @teppokoivula PR #20 which adds a delete-all feature to PagePathHistory module 2021-05-07 13:42:21 -04:00
Notanotherdotcom
c8efbdfe4b Add PR #113 for page ID supported as page name format 2021-05-07 13:16:27 -04:00
Ryan Cramer
2190a6ef37 Add PR #134 which expands CURL options that can be specified in WireHttp $options array. Some of the PR was already added for the sendCURL in a prior commit, so this commit adds the remaining part in downloadCURL(). Slightly modified to read $options['curl']['setopt'] rather than $options['curl'], for compatibilty with what's already in sendCURL().
Co-authored-by: chriswthomson <chris.thomson@nbcommunication.com>
2021-05-07 12:57:28 -04:00
Ryan Cramer
f290da2a7f Add a couple of WireTextTools methods for later use 2021-05-07 10:33:07 -04:00
Ryan Cramer
6d285b0784 Fix issue processwire/processwire-issues#1288 2021-05-07 08:33:25 -04:00
Ryan Cramer
3485aa8763 Update to add support for user-view-[role] permissions for cases where people may be implementing a user.php (or related) template file @adrianbj 2021-05-06 10:07:47 -04:00
Ryan Cramer
4ce75aed1a Minor updates to PagePermissions.module 2021-05-05 14:07:38 -04:00
Ryan Cramer
644f0fb3fd Improvements to FieldtypeMulti::savePageFieldRows method 2021-05-05 13:57:11 -04:00
Ryan Cramer
8d9a66fc38 Minor optimizations to Wire class 2021-05-05 13:55:59 -04:00
Ryan Cramer
1906d94a9c Improvements and clarifications with the WireTempDir class 2021-05-05 13:55:02 -04:00
Ryan Cramer
6cf998c3a0 Improvements to WireFileTools, lots with error message handling and logging, addition of a renameCopy() method, and other minor improvements. 2021-05-05 13:53:07 -04:00
Ryan Cramer
02528f15db Improvements to the 'use' options on JqueryUI.module 2021-05-05 13:50:35 -04:00
Ryan Cramer
af8402eaf2 Update $sanitizer->url() to support URLs without authority slashes like skype:username?chat per processwire/processwire-issues#1368 2021-05-03 10:30:01 -04:00
Ryan Cramer
47871422b5 Bump version to 3.0.177 2021-04-30 14:57:20 -04:00
Ryan Cramer
d9d6440d43 Typo fix 2021-04-30 14:56:52 -04:00
Ryan Cramer
6d8316d647 Fix issue processwire/processwire-issues#1371 2021-04-29 09:44:57 -04:00
Ryan Cramer
81213fbb9d Add feature request processwire/processwire-requests#386 2021-04-29 09:42:06 -04:00
Ryan Cramer
e416ee505b Update InputfieldTextTags with support for single-select mode, option to specify max allowed items, and support for a placeholder attribute 2021-04-29 09:13:16 -04:00
Ryan Cramer
6724c9fb32 Additional improvements to InputfieldTextTags, including support for ajax-loaded pages 2021-04-28 14:01:24 -04:00
Ryan Cramer
a565e9539a Add Inputfields.startSpinner() and Inputfields.stopSpinner() methods to inputfields.js Inputfields class 2021-04-28 14:00:01 -04:00
Ryan Cramer
783bdf87d6 Improvements to InputfieldPage 2021-04-28 13:59:43 -04:00
Ryan Cramer
25a3477b67 Add a field rename option to $pages->findRaw() 2021-04-28 13:58:37 -04:00
Ryan Cramer
c6f735b306 Add interface for Inputfields that accept page selector 2021-04-28 13:50:58 -04:00
Ryan Cramer
94d8cae85a Additional updates to InputfieldTextTags 2021-04-26 15:31:11 -04:00
Ryan Cramer
253e6ba661 Additional updates to ProcessTemplate and InputfieldTextTags 2021-04-23 15:07:31 -04:00
Ryan Cramer
e3425873fb Fix minor php type comparison issue in InputfieldTextTags.module config 2021-04-22 14:29:37 -04:00
Ryan Cramer
290e28a249 Update FieldtypeOptions to support InputfieldTextTags as an input module 2021-04-22 12:55:24 -04:00
Ryan Cramer
83c58ca4a5 Update ProcessTemplate to use InputfieldTextTags for its tags (rather than plain text input) and add a Tag Manager similar to the one in ProcessField 2021-04-22 12:53:28 -04:00
Ryan Cramer
da4c1187b3 Update ProcessField to use InputfieldTextTags for its tags input (rather than plain text input) 2021-04-22 12:52:02 -04:00
Ryan Cramer
1b1dcc85db Add tag helper methods to Template class (to work with existing 'tags' property similar to the one in Field class) 2021-04-22 12:49:43 -04:00
Ryan Cramer
e67c1c075c Add InputfieldTextTags module to core 2021-04-22 10:47:02 -04:00
Ryan Cramer
08a922673b Minor improvements and optimizations to InputfieldPage module 2021-04-22 10:43:47 -04:00
Ryan Cramer
903ed3e675 Update FieldtypeText to support custom selection of Inputfield (so long as it implements InputfieldHasTextValue), plus some other minor updates. 2021-04-22 10:42:13 -04:00
Ryan Cramer
54c49f37f8 Add new interfaces for Inputfield modules 2021-04-22 10:33:33 -04:00
Ryan Cramer
e15efa9273 Fix issue processwire/processwire-issues#966 2021-04-19 12:37:55 -04:00
Ryan Cramer
8644ab7b57 Fix issue processwire/processwire-issues#1365 2021-04-19 10:51:47 -04:00
Ryan Cramer
9f1f440b82 Fix issue processwire/processwire-issues#1357 2021-04-19 10:32:23 -04:00
Ryan Cramer
ace2dafb29 Fix issue processwire/processwire-issues#1361 2021-04-19 10:18:59 -04:00
Ryan Cramer
dbfd01a472 Fix issue processwire/processwire-issues#1366 2021-04-19 10:01:40 -04:00
Ryan Cramer
4c50447e61 Add support in AdminThemeFramework for interactively (in module config) converting users to use the admin theme 2021-04-19 09:49:08 -04:00
Ryan Cramer
00bcf2c3f7 Add $users->setAdminThemeByRole() method 2021-04-19 09:48:36 -04:00
Ryan Cramer
7f91cad42f Add support for multiple randomly selected DB readers (config.php file updates) 2021-04-19 09:48:04 -04:00
Ryan Cramer
fb0e7f2ecf Add support for multiple randomly-selected DB readers 2021-04-19 09:47:14 -04:00
Ryan Cramer
22e5e3989e Update ProcessPageEditImageSelect thumbnail list to use field labels to identify when there are multiple images fields on the page from which you can select images to insert 2021-04-16 13:54:14 -04:00
Ryan Cramer
6a04f1f08f Add new 'deletedPage()' hook method in ProcessPageEdit (recently requested by someone) 2021-04-16 10:43:40 -04:00
Ryan Cramer
ce7df80eac Minor code adjustments in ProcessModuleInstall 2021-04-16 10:41:25 -04:00
Ryan Cramer
6c9f3ab547 Fix documentation formatting issue in WireTextTools 2021-04-16 10:39:46 -04:00
Ryan Cramer
f99d20dfa5 Update optional .htaccess for skipping over image files to match request url rather than filename per issue that @Toutouwai mentioned 2021-04-16 10:38:36 -04:00
Ryan Cramer
eb3dd355b0 Minor adjustments 2021-04-09 16:23:31 -04:00
Ryan Cramer
7918780af1 Fix trailing slash redirect issue with path hooks @bernhardbaumrock 2021-04-09 16:22:06 -04:00
Ryan Cramer
c3f07f9460 Bump version to 3.0.175 2021-04-02 16:19:24 -04:00
Ryan Cramer
6fa201c522 Refactor of WireDatabasePDO to add support for separate read-only database connection 2021-04-02 16:18:44 -04:00
Ryan Cramer
d5a85e07ce Fix issue processwire/processwire-issues#1113 2021-03-31 10:51:29 -04:00
Ryan Cramer
4283cafb07 Improvements to the $config->requestUrl(), $config->requestPath() and $config->requestMethod() functions 2021-03-31 10:18:37 -04:00
Ryan Cramer
a16cb528dc Update TemplateFile class with a clearAll() static method and update ProcessPageView to use it when a 404 is thrown. This ensures that a 404 thrown after some output has already been sent can't get interpreted as a non-404 by the client 2021-03-31 10:13:18 -04:00
Ryan Cramer
a3616cebfb Updates to improve WireShutdown class error emails. This should also fix processwire/processwire-issues#1317 2021-03-31 10:12:06 -04:00
Ryan Cramer
31ecc54abf Improvements to FieldtypeComments notifications to improve hookability and allow greater runtime/hook customization for how notification emails are sent. 2021-03-30 08:12:08 -04:00
Ryan Cramer
7f450dedc7 Add $session->hasLoginCookie() method 2021-03-30 08:08:07 -04:00
Ryan Cramer
16fd4d4ab7 Updates to PageProperties class. This was meant to be included in the previous commit resolving processwire/processwire-issues#1359 2021-03-30 08:05:14 -04:00
Ryan Cramer
e68f4c2de6 Fix issue processwire/processwire-issues#1359 plus some additional Page class optimization 2021-03-29 10:14:12 -04:00
Ryan Cramer
f98d25b83c Move DB "MySQL server has gone away" retry logic from WireDatabasePDO into DatabaseQuery, per processwire/processwire-issues#1302 2021-03-29 08:38:56 -04:00
Ryan Cramer
84d7ea797e Add some runtime request matching methods (requestUrl, requestPath, requestMethod) to Config that can be used in /site/config.php, prior to $input being available. 2021-03-26 09:00:04 -04:00
Ryan Cramer
c84bf5bd46 Fix issue processwire/processwire-issues#1325 2021-03-23 07:19:53 -04:00
Ryan Cramer
a475430031 Fix issue processwire/processwire-issues#1292 2021-03-19 15:14:25 -04:00
Ryan Cramer
0dc408a8dd Fix issue processwire/processwire-issues#1311 2021-03-19 14:31:07 -04:00
Ryan Cramer
cd533062d7 Fix issue processwire/processwire-issues#1319 2021-03-19 14:10:45 -04:00
Ryan Cramer
a9b8d37c58 Update FieldtypePage.getMatchQuery to inherit "include=" and "check_access=0" settings from PageFinder that called upon it. Update PageFinder to support this kind of communication with Fieldtypes. 2021-03-19 14:05:42 -04:00
Ryan Cramer
d0b404b752 Fix issue processwire/processwire-issues#1326 2021-03-19 11:40:07 -04:00
Ryan Cramer
3146b5c6c8 Fix issue processwire/processwire-issues#1332 2021-03-19 10:55:39 -04:00
Ryan Cramer
60cc947770 Fix issue processwire/processwire-issues#1334 2021-03-19 10:47:16 -04:00
Ryan Cramer
de63b1d079 Upgrade CKEditor version to 4.16.0 2021-03-19 10:33:01 -04:00
Ryan Cramer
964c95474f Fix issue processwire/processwire-issues#1342 2021-03-19 09:42:13 -04:00
Ryan Cramer
be10a6ce7e Fix issue processwire/processwire-issues#1352 2021-03-19 09:28:34 -04:00
Ryan Cramer
2bb6179475 Fix issue processwire/processwire-issues#1350 2021-03-19 09:22:46 -04:00
Ryan Cramer
c77f2f0d63 Bump version to 3.0.174 2021-03-12 15:28:25 -05:00
Ryan Cramer
6fd72fc804 Optimizations to path hooks pre-filtering in WireHooks class. 2021-03-12 09:28:28 -05:00
Ryan Cramer
a24d09b8d0 Updated $pages->findRaw() to have new 'objects' and 'entities' options. The objects option makes it return StdClass objects to represent pages and other data rather than associative arrays (requested by @adrianbj). The entities option makes it entity-encode string values in case you are using findRaw() values for HTML output purposes. 2021-03-11 13:10:45 -05:00
Ryan Cramer
7cb11850e8 Add new Selectors::selectorHasField() selector helper optimization method 2021-03-11 11:48:43 -05:00
Ryan Cramer
6b153794c8 Upgrade path hooks with 1) pagination support; and 2) the ability to handle requests triggered by 404s thrown from template files. To support pagination, just append "{pageNum}" to your URL to match and it will take care of setting the $input->pageNum() and calling your hook. Example: $wire->addHook('/foo/bar/{pageNum}', function($event) { ... }); To handle requests triggered by 404s a template file, you don't need to do anything extra, as it will take care of calling your path hook(s) automatically should the requested page URL match the one added by your hook. 2021-03-11 11:43:27 -05:00
Ryan Cramer
6146ba4eb1 Remove ProcessPageEdit CSS rules that no longer appear to be applicable 2021-03-09 11:39:08 -05:00
Ryan Cramer
30dac48646 Add support for getting 'url' and/or 'path' via $pages->findRaw(). Requires that the core PagePaths module is installed. 2021-03-08 12:43:41 -05:00
Ryan Cramer
c0ffd35b7d Update the new path hooks to support $wire->addHook('/foo/{bar}/baz', ...) where {bar} would match any segment and populate it to a $bar variable on the HookEvent. Plus add enforced trailing slash vs. non-trailing slash with redirect, depending on whether your match pattern uses a trailing slash. 2021-03-08 10:10:26 -05:00
Ryan Cramer
cb9030a6ff Add support for matching empty/not-empty to DatabaseQuerySelectFulltext match features 2021-03-07 11:10:48 -05:00
Ryan Cramer
5a0a5f24cf Bump version to 3.0.173 2021-03-05 15:59:30 -05:00
Ryan Cramer
184b3b6255 Add path hook support to ProcessPageView module plus some general refactoring and optimization of the class 2021-03-05 15:13:15 -05:00
Ryan Cramer
652a8a58e3 Update WireHooks ($hooks API var) to support path hooks 2021-03-05 15:12:23 -05:00
Ryan Cramer
94e71209b3 Update HookEvent class to support named arguments directly from $event object 2021-03-05 15:12:06 -05:00
Ryan Cramer
8718940b5d Add support for starting/stopping debug mode DB query logging, enabling you to focus in on logging queries in between specific calls 2021-02-26 14:01:17 -05:00
Ryan Cramer
8020803b7d Fix issue where language on/off checkbox in ProcessPageAdd wasn't always mirring parent page language on/off status for initial/recommended setting 2021-02-26 14:00:08 -05:00
Ryan Cramer
49b9932ab6 Add support for filtered or paginated load of page reference fields per processwire/processwire-requests#13 ... note that paginated/filered save is not yet supported 2021-02-26 11:47:00 -05:00
Ryan Cramer
755c9c5ad8 Add processwire/processwire-requests#241 to make user info and roles available to PW's admin JS config (ProcessWire.config), plus some related improvements 2021-02-26 10:46:33 -05:00
Ryan Cramer
ba2edc94cc Update $config API to have $config->jsConfig() method for JS-exclusive config settings. Different from $config->js() in that the data is completely independent of PHP config. 2021-02-26 10:31:31 -05:00
Ryan Cramer
1244b4bd48 Update wireMail fallback from email settings with 2nd check in case 3rd party module made default blank, plus update auto-detect from email logic in ProcessForgotPassword so it can't override configured wireMail settings with config.adminEmail 2021-02-19 14:56:06 -05:00
Ryan Cramer
bfdb2a09d2 Add comprehensive documentation for $config->advanced setting per processwire/processwire-requests#148 2021-02-19 14:18:02 -05:00
Ryan Cramer
c4d301a405 Add support for "preload" modules that load before all other modules, including core modules. This is primarily intended for @adrianbj Tracy Debugger per processwire/processwire-requests#165 2021-02-19 11:24:35 -05:00
Ryan Cramer
4d04aac2a6 Remove ConfigurableModule interface from LazyCron 2021-02-19 07:52:22 -05:00
Ryan Cramer
199859b6ff Add support for specifying "field=foo|bar|baz" in selector to $pages->findRaw(), like you can with $pages->find(). This is an alternative to using the separate field argument. Also begin support for adding parent properties, but there is more work to be done there before they are supported. 2021-02-12 15:29:29 -05:00
Ryan Cramer
ae46639e35 Add feature request processwire/processwire-requests#203 support for password unmask in InputfieldPassword 2021-02-12 15:09:08 -05:00
Ryan Cramer
990041adb9 Add feature request processwire/processwire-requests#226 for additional HTML purifier configuration options 2021-02-12 11:24:11 -05:00
Ryan Cramer
c414a54531 Fix issue processwire/processwire-issues#1323 plus some other minor improvements to LazyCron 2021-02-12 10:36:22 -05:00
Ryan Cramer
861d7163f6 Add WireShutdown::fatalError() hookable method to enable hooking fatal errors 2021-02-12 10:10:58 -05:00
Ryan Cramer
4406086241 Fix issue with $page->setForced() not populating $settings array when it should (interfered with new findJoin functions) 2021-02-07 08:15:18 -05:00
Ryan Cramer
5a2c4c2014 Bump version to 3.0.172 2021-02-05 16:21:13 -05:00
Ryan Cramer
7fe8e5f1fb Add new $pages->findJoin() method and $pages->find("selector, field=title|summary"); option that lets you specify which fields to autojoin in a page finding operation. Also added is an experimental PagesLoader::findMin() method that finds and loads pages in one query rather than splitting them out into separate find() and getById() calls. For now, we just use this method to handle the findJoin() and joinFields options, but may expand its use later. This commit also contains numerous performance optimizations to the Page class, and several updates to the PageFinder class to support the new autojoin options. 2021-02-05 11:28:48 -05:00
Ryan Cramer
a697795c08 Minor documentation updates in Language and Languages classes 2021-02-05 10:37:32 -05:00
Ryan Cramer
4ea5d7a631 A couple of new convenience methods added to InputfieldWrapper 2021-02-05 10:36:03 -05:00
Ryan Cramer
80593fb643 Add new API methods: $pages->findRaw(), $pages->getRaw(), and $pages->getFresh() 2021-01-29 15:05:40 -05:00
Ryan Cramer
3de5d4d2a6 Add a getFresh() method to PagesLoader and improve cache detection for the get() method 2021-01-29 15:04:44 -05:00
Ryan Cramer
45e130202b Some updates in Modules class to improve refresh reporting 2021-01-29 15:04:03 -05:00
Ryan Cramer
dfba347f1f Update include file used by site/templates/admin.php in core site profiles 2021-01-27 14:55:02 -05:00
Ryan Cramer
2557929f08 Minor hooks optimization in Wire class 2021-01-27 14:54:08 -05:00
Ryan Cramer
201dc4155e Add InputfieldSelect.valueAddOption to facilitate dynamic option values 2021-01-27 14:52:55 -05:00
Ryan Cramer
4633798d02 Add renderOrProcessReady hook to InputfieldForm 2021-01-27 14:51:07 -05:00
Ryan Cramer
b8d3a4c207 Bump version to 3.0.171 2021-01-22 15:14:21 -05:00
Ryan Cramer
3603cdb744 Add a FieldtypeDecimal to the core per request. This is a newly written module that's different from the 3rd party FieldtypeDecimal, so consider it beta. If using the 3rd party FieldtypeDecimal, this one uses the same configuration setting names, so they are intended to be compatible. You may have to delete /site/modules/FieldtypeDecimal or rename it to /site/modules/.FieldtypeDecimal, and then Modules > Refresh, before PW will use the core one. 2021-01-22 14:19:04 -05:00
Ryan Cramer
0c0fb16e4d Fix issue processwire/processwire-issues#1299 2021-01-22 14:18:17 -05:00
Ryan Cramer
76128e4855 Update InputfieldFloat with option to better support string value decimal numbers 2021-01-22 14:15:53 -05:00
Ryan Cramer
9271e8d846 Add a getString option to the $sanitizer->float() method 2021-01-22 14:14:46 -05:00
Ryan Cramer
0bddf640db Add a new Fieldtype::savedField interface method so that Fieldtypes can monitor when a field of their type has been saved, without having to attach a hook 2021-01-22 14:12:58 -05:00
Ryan Cramer
e28d2e67e7 Add support for family-friendly depth settings in InputfieldRepeater. Can be enabled in repeater field settings (for matrix or regular repeater). This makes depth act as parent/child relationships in page editor so that dragging/sorting a parent also drags children. It also prevents more than 1 depth level increase between parent and child (i.e. converts a parent-to-grandchild relationship to parent-to-child relationship). 2021-01-19 11:39:06 -05:00
Ryan Cramer
ecb7694312 Fix issue processwire/processwire-issues#1275 2021-01-12 07:28:54 -05:00
Ryan Cramer
50dff006b5 Make ProcessLogger::formatLogText hookable (requested by @netcarver) 2021-01-12 07:03:25 -05:00
Ryan Cramer
a7d0ec1c91 Fix issue processwire/processwire-issues#919 (WireCache/JSON) 2021-01-12 07:02:42 -05:00
Ryan Cramer
3370e10802 Updates to make AdminThemeUikit easier to extend with an AdminThemeUikit descending module 2021-01-06 10:55:30 -05:00
Ryan Cramer
ea00f4b940 Bump version to 3.0.170 2021-01-01 16:29:25 -05:00
Ryan Cramer
d5d4e8049b Lots of improvements to configuration of File and Image fields (as used in ProcessField). 2021-01-01 13:59:06 -05:00
Ryan Cramer
43cfdd9dfe Add new $templates->add() and $templates->rename() API methods 2020-12-31 15:54:30 -05:00
Ryan Cramer
880ed9511d Add a Template::editUrl() method 2020-12-31 15:54:06 -05:00
Ryan Cramer
1d990a604e Make $modules->getModule($moduleName) be non-case-sensitive for $moduleName. Plus minor updates to Fieldtypes API var and ProcessTemplate module. 2020-12-31 09:05:59 -05:00
Ryan Cramer
341278fdb0 Additional updates to ProcessModule 2020-12-31 08:51:19 -05:00
Ryan Cramer
209632457a Upgrade InputfieldPageTitle with ability to support custom title-to-name conversions 2020-12-30 13:20:33 -05:00
Ryan Cramer
6c068e6d55 Improvements to inputfields.js front-end management of Inputfields, including a few new API methods and it now opens/collapses Inputfields in the same row together as a group. 2020-12-30 13:18:48 -05:00
Ryan Cramer
014c19c499 Several interface and functionality upgrades to the ProcessTemplate module 2020-12-30 13:18:02 -05:00
Ryan Cramer
ada8d30ed6 Several interface and functionality upgrades to the ProcessField module 2020-12-30 12:59:53 -05:00
Ryan Cramer
d04bdb04bc Various code improvements to ProcessModule, plus add ability to remove modules with missing files. This prevents orphan module entries in DB when files for a module are removed before the module is uninstalled 2020-12-30 12:55:32 -05:00
Ryan Cramer
d98b405574 Add System Update #19, which removes a few redundant legacy entries from modules table 2020-12-30 12:54:47 -05:00
Ryan Cramer
2f50095d1e Upgrade WireFileTools ($files API var) getNamespace() method to support detection of namespaces in files that use declare() statements or comments before namespace declaration 2020-12-30 12:53:37 -05:00
Ryan Cramer
ebdf0b9388 Update Modules ($modules API var) to support locating new module location when it moves in file system, optimize some of the runtime module loading, add a few new helper methods, optimize namespace detection, and add the ability to identify modules that are in the database but have no file on the file system. 2020-12-30 12:41:14 -05:00
Ryan Cramer
aa4e1d2465 Various minor/small updates 2020-12-29 08:00:33 -05:00
Ryan Cramer
ebf60018e6 Change default for the grid setting in AdminThemeUikit (percents vs classes), seems enough time has passed that this is a good/safe new default. 2020-12-29 07:56:35 -05:00
Ryan Cramer
d3b1ab2983 Add LanguagesPageFieldValue::setToInputfield to accompany existing setFromInputfield method 2020-12-11 12:05:09 -05:00
Ryan Cramer
7e1363b1f1 Update in FieldtypeComments to trigger the appropriate Pages class hooks when comments are added/deleted 2020-12-11 12:04:36 -05:00
Ryan Cramer
a8ec223b22 Minor typo fixes and adjustments in various files 2020-12-11 12:03:43 -05:00
Ryan Cramer
891c4684e2 Update DatabaseQuerySelectFulltext to use globally unique bind keys to allow for resulting queries to be merged with AND conditions and without potentially overwriting each other 2020-12-06 08:31:23 -05:00
Ryan Cramer
7549ba7370 Update $modules->findByPrefix() to sort the returned results by module name 2020-12-04 15:42:59 -05:00
Ryan Cramer
80208b55e2 Some improvements to Inputfields JS library with regard to handling checkbox/radio dependencies 2020-12-04 15:41:44 -05:00
Ryan Cramer
73fcaff769 Fix issue processwire/processwire-issues#1286 2020-12-04 11:28:45 -05:00
Ryan Cramer
2e591cf5e2 Bump version to 3.0.169 2020-11-27 15:43:39 -05:00
Ryan Cramer
9d01111f82 Add Lister bookmarks support to ProcessUser 2020-11-27 13:26:56 -05:00
Ryan Cramer
1f40c96dbf Various comments field updates: Add support for searching flags property in FieldtypeComments::find() method. Add new field configuration option to include comment text in notification emails (useNotifyText). Fix issue where comment notification emails linked to just Page URL rather than page Page URL with comment ID #fragment. Add FieldtypeComments::getNotifyEmails() new API method for getting notification emails. Add Comment::getFormattedCommentText() method to expand options and clarify how comment text is returned. Improve HTML version of notification emails sent by CommentNotifications::sendNotificationEmail(). Add ‘notifyDefault’ option to CommentForm class so you can specify a different default notification option other than ‘off’. 2020-11-27 09:50:07 -05:00
Ryan Cramer
13cb795c3d Update the Inputfield debug mode toggle-icon hover state to also work with InputfieldFieldset types 2020-11-27 08:33:01 -05:00
Ryan Cramer
8248e75157 Update ProcessCommentsManager to support changes to the user’s selected notification settings 2020-11-25 14:55:08 -05:00
Ryan Cramer
4eee06f76f Some minor CSS/JS updates to ProcessField 2020-11-25 14:17:43 -05:00
Ryan Cramer
2362005e78 Update $sanitizer->removeMB4() method to use a default replacement character (can be set in $options). Plus implement a shorter replacement function (version 2). Also some updates to the $sanitizer->validateFile() method. 2020-11-25 14:12:33 -05:00
Ryan Cramer
ee980f153c Expand options available to $modules->getModule() so that you can retrieve a non-initialized module that still has configuration data. Also add support for user-specified configuration data in the getModule() call. 2020-11-25 14:07:24 -05:00
Ryan Cramer
4c57f528f6 Update InputfieldWrapper so that all direct references to $this->children (InputfieldsArray) are routed through the children() method, enabling descending modules to have more control over what are considered children. 2020-11-25 14:05:42 -05:00
Ryan Cramer
580da37a2f Fix issue processwire/processwire-issues#1278 2020-11-13 11:45:44 -05:00
Ryan Cramer
1af600fdd1 Fix issue processwire/processwire-issues#1256 2020-11-13 10:52:04 -05:00
Ryan Cramer
97c37da187 Fix issue processwire/processwire-issues#1265 2020-11-13 10:48:30 -05:00
Ryan Cramer
9d0cf061ed Fix issue processwire/processwire-issues#1270 2020-11-13 10:18:18 -05:00
Ryan Cramer
65bcf7fe40 Fix issue processwire/processwire-issues#1273 2020-11-13 09:32:36 -05:00
Ryan Cramer
9b79a4bed4 Improvements to code and documentation in InputfieldAsmSelect.module 2020-11-13 08:38:14 -05:00
Ryan Cramer
e7663c7bda Some minor bug fixes in the FieldtypeComments classes and javascript. 2020-11-13 08:24:42 -05:00
Ryan Cramer
c5fb4ee47b Update the $input->url() method to support a pageNum option to modify the page/pagination number used in the returned URL. 2020-11-13 08:23:14 -05:00
Ryan Cramer
5868866fc0 Improved phpdoc in Process class and WireFileTools::send() method 2020-11-13 08:19:28 -05:00
Ryan Cramer
7628d81393 Add a Page::setUnformatted(field, value); method that temporarily turns off output formatting (if it was on), sets known unformatted value, then turns output formatting back on (but only if it was previously on). 2020-11-13 07:54:46 -05:00
Ryan Cramer
84cca8fe82 Update DatabaseQuerySelectFulltext class to support multiple (array-based) field names when used outside PageFinder context. This enables use of field1|field2|field3*=value selectors in some places that didn't previously support it, like $page->page_ref_field_name('selector'); 2020-11-13 07:00:17 -05:00
Ryan Cramer
e6dde560d4 Bump version to 3.0.168 2020-10-23 14:08:35 -04:00
Ryan Cramer
993b6672be Fix issue processwire/processwire-issues#1237 2020-10-23 11:45:40 -04:00
Ryan Cramer
adba0da89e Fix issue processwire/processwire-issues#1263 2020-10-23 11:27:42 -04:00
Ryan Cramer
10f465e3eb Fix issue processwire/processwire-issues#1258 2020-10-23 11:12:15 -04:00
Ryan Cramer
09bd61f91d Fix issue processwire/processwire-issues#1260 2020-10-19 09:45:33 -04:00
Ryan Cramer
a5cea5660d Fix issue processwire/processwire-issues#1261 2020-10-19 09:24:57 -04:00
Ryan Cramer
3782b6c7ae Fix issue where '~=' word matches with words containing underscore '_' weren't working due to change made in 3.0.167 2020-10-18 09:29:02 -04:00
Ryan Cramer
4b84c82529 Improvements to the text searching operators (for $pages->find, etc.) to support better matching of words with apostrophes and similar, plus improve the way that word boundaries are detected when secondary rlike queries are added to fulltext index queries. 2020-10-09 13:32:27 -04:00
Ryan Cramer
f855ebf170 Add 'keepApostrophe' option to $sanitizer->wordsArray() 2020-10-09 13:30:27 -04:00
Ryan Cramer
60853ceda7 Minor improvement to inputfields.js 2020-10-09 13:29:40 -04:00
Ryan Cramer
8dbfd4cca2 Update ProcessLogin to have better support for remembering requested URL prior to and after login. It now supports query strings beyond just "?id=123". 2020-10-02 12:17:26 -04:00
Ryan Cramer
33cbec49c1 Minor phpdoc adjustment to Fieldtype and FieldtypeMulti classes 2020-10-02 11:58:00 -04:00
Ryan Cramer
96b263fd2e Add 'allowSpace' option to $sanitizer->selectorValue() 2020-10-02 11:57:27 -04:00
Ryan Cramer
337488f117 Refactoring and improvements to ProcessPageView module 2020-10-02 11:56:54 -04:00
Ryan Cramer
45ad9473d2 Fix issue processwire/processwire-issues#1254 2020-10-01 07:58:48 -04:00
Ryan Cramer
0953fdb347 Update $sanitizer->trim() method to support a 3rd argument ($method) where you can specify what direction it should trim from: 'trim' (both), 'ltrim' (left), or 'rtrim' (right). Default is 'trim'. 2020-10-01 07:55:09 -04:00
Ryan Cramer
140ce5fa83 Fix issue processwire/processwire-issues#1253 2020-09-30 14:01:49 -04:00
Ryan Cramer
b77840c14f Bump version to 3.0.167 2020-09-25 15:43:35 -04:00
Ryan Cramer
1f6aa1cf73 Fix issue processwire/processwire-issues#1252 2020-09-25 13:45:08 -04:00
Ryan Cramer
ee8f8e4471 Update WireInput with a a queryStringClean() method that provides a useful alternative to the existing queryString() method 2020-09-25 13:27:02 -04:00
Ryan Cramer
7c2fe8b8db Update $sanitizer array methods to support a 'keySanitizer' option that enables one to also sanitize associative arrays when needed 2020-09-25 13:24:47 -04:00
Ryan Cramer
b8ff50f52d Improvements and optimizations to several text searching operators in DatabaseQuerySelectFulltext. It now includes improved results for searches that include stopwords and short words (words too short for fulltext index). 2020-09-24 13:45:58 -04:00
Ryan Cramer
f2a313723a Update files and images fields with the ability to require FileValidatorModule validation or manually whitelisted extensions, with the first being the svg file extension. 2020-09-24 13:43:26 -04:00
Ryan Cramer
15dc362ba5 Add a $files->fileGetContents() method to accompany existing filePutContents() method 2020-09-24 13:40:30 -04:00
Ryan Cramer
5ea913f79d Refactor and improvements to $sanitizer->validateFile() method. Also added new options for 'getArray' and 'dryrun'. 2020-09-24 13:39:04 -04:00
Ryan Cramer
17d7828ac3 Fix issue processwire/processwire-issues#1247 2020-09-22 10:59:06 -04:00
Ryan Cramer
03ea0ea60d Update FieldtypeOptions to implement the Fieldtype::getMatchQuerySort() method. This should also add support for at least some of what was requested in processwire/processwire-issues#1231 2020-09-18 14:33:05 -04:00
Ryan Cramer
8a4b58652b Update ProcessPageEdit and ProcessPageList to implement the getAfterLoginUrl() method 2020-09-18 14:32:15 -04:00
Ryan Cramer
20f8a1ea14 Update ProcessField and ProcessModule to implement the getAfterLoginUrl() method 2020-09-18 14:31:44 -04:00
Ryan Cramer
d5146337de Update Config class to auto-generate a tableSalt when one is not available from the static configuration 2020-09-18 14:30:03 -04:00
Ryan Cramer
8eee7a509f Update Process module interface for a new getAfterLoginUrl() method that Process modules can optionally implement to sanitize a requested URL to the module when the user is not logged in. This lets things like query strings and URL segments be retained after a user logs-in. 2020-09-18 14:28:28 -04:00
Ryan Cramer
a751edf51b Update PageFinder and Fieldtype interface so that Fieldtype modules can optionally take over sorting of their own fields/subfields in PageFinder searches. 2020-09-18 14:27:02 -04:00
Ryan Cramer
ee4c46a442 Fix issue processwire/processwire-issues#1239 2020-09-15 07:31:30 -04:00
Ryan Cramer
febbb97aba Add @MoritzLost PR #179 which has various improvements for the WireHttp::sendCURL() method 2020-09-14 10:58:26 -04:00
Ryan Cramer
956ad5e201 Add support for custom LanguagePage classes per feature request in processwire/processwire-issues#1246 2020-09-14 09:48:21 -04:00
Ryan Cramer
6cc5da1e45 Fix issue processwire/processwire-issues#1243 plus some other optimizations in PageFinder 2020-09-14 09:03:45 -04:00
Ryan Cramer
9057ed25e4 Bump version to 3.0.166 2020-09-11 16:18:09 -04:00
Ryan Cramer
7a2ff6c15d Update SessionHandlerDB module to have configurable session lock seconds, and to also send an http code 429 "too many requests" error with retry seconds when DB session lock can't be achieved. 2020-09-11 14:26:28 -04:00
Ryan Cramer
2ed6494494 Update Session API var to add a $session->sessionHandler() method that returns an instance to the current WireSessionHandler instance, or null if using PHP file-based sessions. 2020-09-11 14:23:16 -04:00
Ryan Cramer
2e81d39275 Fix issue processwire/processwire-issues#1240 2020-09-11 14:22:06 -04:00
Ryan Cramer
f26ee062b7 Update $database API var to have new methods: getVersion() and getRegexEngine() 2020-09-11 14:21:11 -04:00
Ryan Cramer
e407fb9f04 Fix issue processwire/processwire-issues#1241 2020-09-11 10:46:21 -04:00
Ryan Cramer
aaa7ff2994 Improvements to Session class ($session API var) redirect method and addition of $session->location('url'); method which is the same as redirect but with 302 (temporary) redirect implied rather than 301 (permanent). 2020-09-11 08:34:28 -04:00
Ryan Cramer
f8d9309c27 Some refactoring and improvements to WireShutdown class 2020-09-11 08:33:09 -04:00
Ryan Cramer
7d71eac1bc Various minor updates 2020-09-10 09:34:37 -04:00
Ryan Cramer
df16ad5ae4 Update asmSelect so that it supports <select multiple> rather than just <select multiple=multiple> 2020-09-10 09:24:02 -04:00
Ryan Cramer
90ac2c90e9 Fix issue with $sanitizer->truncate() method truncating more than it should sometimes due to entity encoding of punctuation 2020-09-10 09:23:07 -04:00
Ryan Cramer
5fce455fbd Update WireHttp to support server protocol and add new sendStatusHeader() method 2020-09-10 09:20:45 -04:00
Ryan Cramer
868224bcfe Add $config->serverProtocol runtime property 2020-09-10 09:17:55 -04:00
Ryan Cramer
9dc13f977e Add support for $template->pagefileSecure option configured per-template. This also expands upon what $config->pagefileSecure could do before, now supporting the ability to secure Pagefiles even for public pages when appropriate. 2020-08-28 14:56:19 -04:00
Ryan Cramer
853a5cc490 Add new Page::hasFile() method 2020-08-27 15:37:37 -04:00
Ryan Cramer
8dbff5c7bc Fixes for issue processwire/processwire-issues#572 2020-08-27 15:36:13 -04:00
Ryan Cramer
8ac31f7ea0 Update Fieldtypes class ($fieldtypes API var) to have better class phpdoc, helpful in phpstorm 2020-08-27 15:32:19 -04:00
Ryan Cramer
575fc9acf8 Add a FieldtypeFile::getPagefile() method 2020-08-27 15:31:38 -04:00
Ryan Cramer
f1b146bb61 Add PagefilesManager::hasFile() method 2020-08-27 15:30:45 -04:00
Ryan Cramer
d8945198f4 Bump version to 3.0.165 2020-08-21 14:38:42 -04:00
Ryan Cramer
1444c8d168 Minor updates and optimizations to PageFinder 2020-08-21 13:38:10 -04:00
Ryan Cramer
03503075c1 Minor code updates to FieldtypeEmail and InputfieldEmail 2020-08-20 10:24:18 -04:00
Ryan Cramer
f95705dde4 Minor code updates to Checkbox Fieldtype and Inputfield 2020-08-20 10:23:12 -04:00
Ryan Cramer
0dda488739 Fix issue processwire/processwire-issues#1225 plus some other small upgrades to the FieldsTableTools notices 2020-08-20 10:02:16 -04:00
Ryan Cramer
9e9cc31051 Add Notice::allowMarkdown flag to Notice class, similar to Notice::allowMarkup, but enables support of basic/inline markdown and bracket tags 2020-08-20 09:58:49 -04:00
Ryan Cramer
0409aa5dae Update Sanitizer to isolate entitiesMarkdown() bracket tags logic to isolated method, plus add [br] tag to supported defaults 2020-08-20 09:57:07 -04:00
Ryan Cramer
2b69123f59 Refactoring, minor improvements and phpdoc additions to FieldtypeInteger, FieldtypeFloat, InputfieldInteger, InputfieldFloat. No new features added, just code improvements. 2020-08-20 07:38:39 -04:00
Ryan Cramer
0b9f07f3c4 Fix issue processwire/processwire-issues#1189 2020-08-18 11:23:47 -04:00
Ryan Cramer
6f4a76d74e Minor updates, plus update the inputfields.js triggered events (openReady, opened, closeReady, closed) to include the Inputfield element in the event arguments for simpler access to it vs the event.target. 2020-08-14 15:18:05 -04:00
Ryan Cramer
af632b0a4d Add $sanitizer->arrayVal() and $sanitizer->intArrayVal() for more strict/direct array sanitization defaults than the existing array() and intArray() sanitizers. 2020-08-11 07:17:53 -04:00
Ryan Cramer
b1785277a2 Fix issue processwire/processwire-issues#1133 2020-08-11 07:07:31 -04:00
Ryan Cramer
7dfd5af072 Fix issue with InputfieldSelector not working property with ="" and !="" mock operators 2020-08-09 10:53:03 -04:00
Ryan Cramer
8b1335accc Fix issue processwire/processwire-issues#1226 2020-08-07 09:32:57 -04:00
Ryan Cramer
a3f64cb4c7 Refactor of WireInput::sanitizeValue(), should also fix processwire/processwire-issues#1224 2020-08-07 09:14:38 -04:00
Ryan Cramer
5aa6b3939f Update $sanitizer->testAll() method with the ability to test all sanitizer method return values and report on any that are misbehaving 2020-08-04 16:21:06 -04:00
Ryan Cramer
b429de71e3 Bump version to 3.0.164 2020-07-31 13:51:05 -04:00
Ryan Cramer
abc9cd8adc Fix issue processwire/processwire-issues#941 2020-07-31 09:32:04 -04:00
Ryan Cramer
4cc8e56e9d Add system update 18 for processwire/processwire-issues#1171 2020-07-31 08:06:14 -04:00
Ryan Cramer
45bf8e2bca Fix issue processwire/processwire-issues#1221 2020-07-31 08:00:31 -04:00
Ryan Cramer
b855b1f6f5 Fix issue processwire/processwire-issues#1136 plus some other minor unrelated adjustments 2020-07-30 15:45:44 -04:00
Ryan Cramer
7503ecd781 Fix issue processwire/processwire-issues#973 2020-07-30 12:04:37 -04:00
Ryan Cramer
6d8d504d44 Fix issue processwire/processwire-issues#887 2020-07-29 14:57:44 -04:00
Ryan Cramer
c339bd5fd2 Fix issue processwire/processwire-issues#1115 2020-07-28 16:18:13 -04:00
Ryan Cramer
95203ac8f2 Fix issue processwire/processwire-issues#1128 2020-07-28 15:29:56 -04:00
Ryan Cramer
a852f74641 Fix issue processwire/processwire-issues#1219 2020-07-28 14:57:37 -04:00
Ryan Cramer
ff1d63c0d4 Fix issue processwire/processwire-issues#1175 2020-07-27 16:38:53 -04:00
Ryan Cramer
7391f48c28 Attempt fix for issue processwire/processwire-issues#1179 2020-07-27 15:01:13 -04:00
Ryan Cramer
662734e405 Fix issue processwire/processwire-issues#1217 2020-07-27 14:29:43 -04:00
Ryan Cramer
475ae801d1 Fix issue processwire/processwire-issues#1082 as well as improve error handling when one places a fieldset closer before its opener 2020-07-27 13:07:40 -04:00
Ryan Cramer
b466e4fb99 Fix the jammed table salt shaker 2020-07-25 09:33:08 -04:00
Ryan Cramer
65d9e280ca Bump version to 3.0.163 2020-07-24 15:15:14 -04:00
Ryan Cramer
dd15aa9adb Update ProcessModule so that module installation options are now configurable from new $config->moduleInstall array. Plus update in-module instructions to describe how to install a module manually. 2020-07-24 14:57:30 -04:00
Ryan Cramer
380583a92c Various minor updates 2020-07-24 14:44:39 -04:00
Ryan Cramer
ecb58f988a Fix issue processwire/processwire-issues#1206 2020-07-24 14:35:34 -04:00
Ryan Cramer
88437e42cc Fix issue processwire/processwire-issues#1216 2020-07-24 14:21:58 -04:00
Ryan Cramer
4b1eefa9d0 Update JqueryWireTabs module to use jquery.cookie.js rather than settings it's own, hopefully to fix issue processwire/processwire-issues#1188 2020-07-24 14:15:59 -04:00
Ryan Cramer
4c8b474c29 Update jquery.cookie.js to support SameSite attribute along with 'Lax' as default value to suppress warnings from Firefox. Plus update it to ask ProcessWire for default of 'secure' value on cookies. 2020-07-24 14:11:20 -04:00
Ryan Cramer
efe60a17ba Add note in .htaccess for processwire/processwire-issues#1193 2020-07-24 12:32:25 -04:00
Ryan Cramer
b40a9e0de6 Fix issue processwire/processwire-issues#1197 2020-07-24 11:26:19 -04:00
Ryan Cramer
81686d9864 Some minor refactoring in ProcessPageList. Should also fix issue processwire/processwire-issues#1200 2020-07-24 11:14:32 -04:00
Ryan Cramer
ada963a2f1 Fix issue processwire/processwire-issues#1203 2020-07-24 08:51:13 -04:00
Ryan Cramer
8c5ed3e0b1 Add find() and findOne() methods to WireInputData class, enabling $input->post->find(), $input->get->find(), etc., supporting both wildcards and regex patterns 2020-07-23 16:54:07 -04:00
Ryan Cramer
c6c639c0db Move Tfa config inputfields in ProcessLogin to separate methods so that the inputfields can also potentially be used by other modules. 2020-07-23 16:11:24 -04:00
Ryan Cramer
77d6c0061e Various minor updates 2020-07-23 16:09:54 -04:00
Ryan Cramer
9f368febfc Add support for feature requested in processwire/processwire-issues#1208 2020-07-23 15:58:55 -04:00
Ryan Cramer
fe32580027 Fix issue processwire/processwire-issues#1212 2020-07-23 15:32:26 -04:00
Ryan Cramer
bea09627b2 Fix issue processwire/processwire-issues#1214 2020-07-23 12:56:21 -04:00
Ryan Cramer
d6b9ee8db8 Fix issue processwire/processwire-issues#1215 2020-07-23 12:51:53 -04:00
Ryan Cramer
7e3f10b2ff Attempt to fix issue processwire/processwire-issues#1118 2020-07-23 11:03:41 -04:00
Ryan Cramer
6a1b6a21ae Add new hooks: Pages::trashReady(), Pages::deleteBranchReady(), Pages::deletedBranch(). The deleteBranch hooks cover the case of recursive deletions where an entire branch of pages is deleted. For those cases, these hooks can be more useful than the regular deleteReady() and deleted() hooks because those two are called for every single page, rather than just for the initiating page. 2020-07-17 14:43:33 -04:00
Ryan Cramer
63a59e2317 Bump version to 3.0.162 2020-07-10 14:32:40 -04:00
Ryan Cramer
74ac0ceb7a Addtion of some Page-specific convenience methods added to PageArray class 2020-07-10 12:56:08 -04:00
Ryan Cramer
01a607f7dc Updates in ProcessPageSearch and InputfieldPageAutocompete for support of new find operators, though additional code may still be necessary but this is a start 2020-07-10 12:52:12 -04:00
Ryan Cramer
6f1fddfedf Fix issue where a user with remembered-TFA was still getting a notice that they had to enable TFA 2020-07-10 12:49:22 -04:00
Ryan Cramer
cd44d8b7f2 Minor update in InputfieldImage JS to make jQuery migrator happy 2020-07-10 12:47:41 -04:00
Ryan Cramer
0cc2bf4b79 DB query updates in WireSaveableItems class 2020-07-10 12:46:55 -04:00
Ryan Cramer
6f4c21d5b9 Update WireDatabasePDOStatement class so that you can optionally use it even when not in debug mode 2020-07-10 12:45:54 -04:00
Ryan Cramer
8e0f2ed721 Add User::hasTfa() method to quickly identify if user has two-factor authentication enabled. Also added supporting code in Tfa class. 2020-07-10 12:44:16 -04:00
Ryan Cramer
e806cdb044 Add several new Selector compare types useful for runtime identification 2020-07-10 12:42:57 -04:00
Ryan Cramer
f0f37853ca Minor optimization for Page::isLoaded($fieldName) method 2020-07-10 12:41:26 -04:00
Ryan Cramer
f52a0685c2 Update Inputfield phpdoc to include the theme* properties recognized by AdminThemeUikit 2020-07-10 12:40:46 -04:00
Ryan Cramer
a474ffa8f9 Add new convenience method Field::getContext(); 2020-07-10 12:39:57 -04:00
Ryan Cramer
4f98dc974a Minor AdminThemeUikit updates plus move access certain shared admin theme labels into AdminTheme::getLabels() method 2020-07-10 12:34:15 -04:00
Ryan Cramer
9c2c5e986e Various minor theme updates 2020-07-10 12:32:08 -04:00
Ryan Cramer
f7879126da Attempt fix for issue mentioned by @Rayden in processwire/processwire-issues#1207 2020-07-09 11:06:19 -04:00
Ryan Cramer
f095f4aa77 Fix issue processwire/processwire-issues#1209 2020-07-09 10:46:55 -04:00
Ryan Cramer
5b285ebc8c Various fixes and improvements related to Selectors and the find operators 2020-07-06 14:39:49 -04:00
Ryan Cramer
6acb8028e3 Update JqueryCore so that setting $config->debug = 'dev'; makes it use a newer jQuery version and with jquery-migrate enabled. 2020-07-03 16:11:57 -04:00
Ryan Cramer
9389d4abdc Update lots of core .js files to update and replace deprecated jQuery calls 2020-07-03 16:02:07 -04:00
Ryan Cramer
598c702e1e Update InputfieldSelector to support new text search operators 2020-07-03 15:52:32 -04:00
Ryan Cramer
70f1a7cc8b Add new SelectorContainsAnyWordsExpand operator (~|+=) and update the getDescription() methods for most Selector classes to bring greater consistency and less translation. 2020-07-03 15:48:30 -04:00
Ryan Cramer
803e5c26d3 Add $sanitizer->word() method and upgrade $sanitizer->entitiesMarkdown() method to support escaped characters, making it possible to avoid collisions with basic markdown 2020-07-03 15:46:34 -04:00
Ryan Cramer
09c67d5478 Various minor updates 2020-07-03 15:45:34 -04:00
Ryan Cramer
e4d534747a Continued improvements to DatabaseQuerySelectFulltext class, especially to improve quality of results on query expansion operators 2020-07-03 15:42:25 -04:00
Ryan Cramer
10541997d4 Update WireTextTools with 2 new methods: getWordAlternates() and findReplaceEscapeChars() 2020-07-03 15:40:36 -04:00
Ryan Cramer
d53e2ef323 Bump version to 3.0.161 2020-06-26 15:49:42 -04:00
Ryan Cramer
4276a5d917 Update PageFinder to support altOperators in selectors. This enables you to use more than one operator in a selector. For example, if you wanted to first try to find pages matching a phrase (*=), and if it doesn't find any, fallback to find pages matching words (~=), you can just append the two opers together. i.e. "field*=~=value". This works for any operator combinations and you can stack as many as you need. 2020-06-26 09:43:43 -04:00
Ryan Cramer
ade079dea7 Continued refactoring and improvements to DatabaseQuerySelectFulltext class 2020-06-26 09:43:18 -04:00
Ryan Cramer
d69724123d Update to $sanitizer->wordsArray() method, plus minor updates to $sanitizer->selectorValue() method 2020-06-26 09:41:57 -04:00
Ryan Cramer
ac18dad59c Update Selectors class to support altOperators (alternate fallback operators for when first does not match) 2020-06-26 09:41:17 -04:00
Ryan Cramer
26710f262e Minor updates to Tfa class 2020-06-26 09:39:41 -04:00
Ryan Cramer
735c118910 Update ProcessProfile so that Tfa class can add hooks when needed 2020-06-26 09:38:49 -04:00
Ryan Cramer
f4642e5fd3 Improvements to SelectorContainsAdvanced class, add support for altOperators property to Selector class, add new copyTo() method to Selector class. 2020-06-26 09:37:54 -04:00
Ryan Cramer
133ea5b222 Update for processwire/processwire-issues#1198 2020-06-25 07:14:49 -04:00
Ryan Cramer
a2884184e1 Attempt fix for issue processwire/processwire-issues#1198 2020-06-25 07:09:51 -04:00
Ryan Cramer
0d1031582a Bump version to 3.0.160 2020-06-19 16:56:28 -04:00
Ryan Cramer
7efb9e8a4b Minor updates Selector, Selectors, Sanitizer 2020-06-19 12:59:39 -04:00
Ryan Cramer
c9c06f833a Add several new text-matching Selector classes and also some refactoring in main Selectors class 2020-06-19 12:48:18 -04:00
Ryan Cramer
1f293cc4f4 Add new $sanitizer->flatArray() and $sanitizer->wordsArray() methods, plus some improvements to existing array() method 2020-06-19 12:42:14 -04:00
Ryan Cramer
d79d9286b1 Various minor updates. Plus add a $database->isStopword() method and improve error logging in WireDatabasePDOStatement 2020-06-19 12:35:21 -04:00
Ryan Cramer
32e031ab7d Fix issue processwire/processwire-issues#1196 2020-06-17 09:08:42 -04:00
Ryan Cramer
857d5556ae Fix issue processwire/processwire-issues#1199 2020-06-17 08:39:13 -04:00
Ryan Cramer
8d7f2d133c Minor adjustment in Tfa class 2020-06-12 15:15:05 -04:00
Ryan Cramer
602ac0e1a5 Minor improvements to WireDatabasePDO. Make requests for ft_min_word_len use InnoDB equivalent when InnoDB engine is active. 2020-06-12 12:50:32 -04:00
Ryan Cramer
8239e0b11e Some refactoring in InputfieldCheckbox.module 2020-06-12 12:49:38 -04:00
Ryan Cramer
d9ed3058db Update ProcessLogin to support configuration of TFA auto-enable (forced two-factor auth). Also requires that TfaEmail module is installed. Can be configured in ProcessLogin module settings. 2020-06-12 12:48:27 -04:00
Ryan Cramer
b0736cf6cb Additional upgrades to Tfa class. Add support for auto-enable (supported by TfaEmail), which enables you as the admin to force users to use 2FA by having it automatically enabled for their account when they attempt login. Add support for Tfa modules to specify translatable name, title and summary (rather than relying upon module info settings). Make all text labels configuration settings. Add additional error checking. Use Inputfields JS API to automatically highlight 2FA config settings when user is going through the setup process. Expand Tfa class to allow for Tfa modules to optionally specify configuration settings for after Tfa is enabled. Add detection for if user’s pass changes between time Tfa code sent and time Tfa code entered. Make minor improvements to user Tfa selection and setup. 2020-06-12 12:41:39 -04:00
Ryan Cramer
c41987d1db Bump version to 3.0.159 2020-06-05 14:52:23 -04:00
Ryan Cramer
d99abac75c Upgrade the two-factor authentication system (Tfa) so that it now supports the ability to fingerprint and remember a user’s browser and other aspects, so that the user doesn't have to re-enter their TFA code on every login (optional). 2020-06-05 13:44:05 -04:00
Ryan Cramer
4c83f401ba Documentation improvements and minor optimizations to base Wire class 2020-06-05 08:28:45 -04:00
Ryan Cramer
855cfd7370 Various minor adjustments, typo and text fixes 2020-06-05 08:15:14 -04:00
Ryan Cramer
fd2fdd91f0 Update the $config->sessionFingerprint option to also support fingerprinting of browser http "accept" header, plus update documentation for this to use bitmask examples rather than predefined numbers. 2020-06-05 08:08:50 -04:00
Ryan Cramer
2de85fab4b Refactoring and documentation improvements to the WireInputDataCookie class which manages the $input->cookie API var. Contained in these updates is also a fix for processwire/processwire-issues#1053 2020-06-05 08:06:27 -04:00
Ryan Cramer
cd4bd7073c Fix formatting on ProcessLogin::getLoginLinks 2020-05-31 17:45:11 -04:00
Ryan Cramer
9b43b4fb96 Fix in DatabaseQuery::getDebugQuery() 2020-05-29 15:41:52 -04:00
Ryan Cramer
f307d375f1 Bump version to 3.0.158 2020-05-29 15:32:26 -04:00
Ryan Cramer
8fcde02f6c Fix issue processwire/processwire-issues#911 2020-05-29 14:53:38 -04:00
Ryan Cramer
9add4e5f82 Add support for $page->parents(true); which returns parents in reverse order (closest to furthest) rather than breadcrumb order. 2020-05-29 14:14:30 -04:00
Ryan Cramer
1af391f4db Refactor of Fieldtype::___savePageField() method that now exclusively uses bind values on inserts, consistent with last week's updates to its parent Fieldtype class savePageField method. 2020-05-29 14:12:07 -04:00
Ryan Cramer
1664bce8c7 Improvements to the Fieldtype::trimDatabaseSchema() method 2020-05-29 14:10:27 -04:00
Ryan Cramer
d2e381f987 Update numerous core classes to support the new wired() method, plus correct any found instances of the ProcessWire instance not being passed along to a Wire derived instance. 2020-05-29 14:09:17 -04:00
Ryan Cramer
365af73635 Add support for custom PDO statement class WireDatabasePDOStatement. This is used rather than PDOStatement when in debug mode, so that it can translate bind values to actual values in queries that are used in the debug mode query log. 2020-05-29 13:54:45 -04:00
Ryan Cramer
b4751481b8 Update DatabaseQuery class to support a getDebugQuery() method that returns the query (string) with all bind variables populated into the SQL 2020-05-29 13:48:26 -04:00
Ryan Cramer
44405eed8a Several improvements the Debug::timer, including several new methods to give more control over timing. 2020-05-29 13:44:58 -04:00
Ryan Cramer
c770f573be Update base Wire class to support a new wired() method that is called when the ProcessWire instance is assigned to the object. This usually happens immediately after __construct(), but depends on how the object was instantiated. This solves the problem of needing to access API variables in a constructor and potentially having the wrong API variable instance in a multi-instance environment. 2020-05-29 13:41:46 -04:00
Ryan Cramer
810cae271f Fix issue processwire/processwire-issues#1142 2020-05-24 07:32:58 -04:00
Ryan Cramer
0b0d372274 Fix issue with name matching regex not getting bundled in bind value processwire/processwire-issues#1173 2020-05-22 14:54:36 -04:00
Ryan Cramer
c0a867f9df Fix exception that was getting thrown during OR-group fulltext matching 2020-05-22 14:49:13 -04:00
Ryan Cramer
4d4dde64eb Bump version to 3.0.157 2020-05-22 14:14:54 -04:00
Ryan Cramer
5094a8ce8e Upgrade default htaccess.txt file with a new section for various firewall blocking rules as examples and link to 7G Firewall, plus some minor improvements to a few existing rules. 2020-05-22 13:43:28 -04:00
Ryan Cramer
7223ff2356 Update FieldtypeComments, FieldtypeOptions and FieldtypePage to take advantage of new PageFinder and Database class improvements 2020-05-22 13:35:58 -04:00
Ryan Cramer
9d7d8f66af Add new $sanitizer methods: line(), line(), trunc(), and improvements to intArray() 2020-05-22 13:32:58 -04:00
Ryan Cramer
db542b9ba2 Improvements to MarkupRSS core module, mostly with code tweaks and new phpdoc 2020-05-22 13:31:07 -04:00
Ryan Cramer
05899763e2 Update Pages and PagesLoader classes to take advantage of new Database class features 2020-05-22 13:30:06 -04:00
Ryan Cramer
bca53c5cf7 Some refactoring in PageFinder to utilize features with the new Database classes 2020-05-22 13:28:00 -04:00
Ryan Cramer
06acbe57a3 Major refactor/rewrite of ProcessWire's Database classes (DatabaseQuery, DatabaseQuerySelect, DatabaseQuerySelectFulltext) 2020-05-22 13:25:28 -04:00
Ryan Cramer
99f778f109 Update Fieldtype and FieldtypeMulti to use bind params in a couple spots where they weren't and could support it 2020-05-22 13:23:07 -04:00
Ryan Cramer
88e04129c7 Bump version to 3.0.156 2020-05-15 14:47:19 -04:00
Ryan Cramer
f11abdc99d Fix issue processwire/processwire-issues#1147 2020-05-15 12:24:47 -04:00
Ryan Cramer
0543548fdd Rewrite the $sanitizer->selectorValue() method to be more thorough and support more options. The previous selectorValue() method can also still be used by specifying [ 'version' => 1 ] in the $options array argument. This update also fixes processwire/processwire-issues#1152 2020-05-15 11:06:36 -04:00
Ryan Cramer
1da1068d60 Fix issue processwire/processwire-issues#1166 plus some unrelated minor tweaks 2020-05-15 07:06:10 -04:00
Ryan Cramer
3ba72d4508 Fix issue processwire/processwire-issues#1157 2020-05-14 16:08:21 -04:00
Ryan Cramer
4620c2ebff Fix issue processwire/processwire-issues#1164 2020-05-14 15:27:40 -04:00
Ryan Cramer
ebe352d5cc Attempt fix for processwire/processwire-issues#1165 2020-05-14 15:11:11 -04:00
Ryan Cramer
c191a84f7a Fix issue processwire/processwire-issues#1169 2020-05-14 14:25:19 -04:00
Ryan Cramer
6f6a301295 Update FieldtypeDatetime to support empty/not-empty operators in InputfieldSelector 2020-05-14 12:12:13 -04:00
Ryan Cramer
4633146e20 Minor updates to Modules class 2020-05-14 12:09:46 -04:00
Ryan Cramer
3aacccedb1 Update $pages API to add getID() and getByIDs() methods, and add $pages->parents() method for direct access to methods in new PagesParents class 2020-05-14 12:09:06 -04:00
Ryan Cramer
5b31d9939b Update PagesLoader with minor improvements for getById() method and add new getNativeColumnValue() method 2020-05-14 12:06:42 -04:00
Ryan Cramer
fd2a06d4b2 Continued updates to new PagesParents class and update PagesEditor to use it 2020-05-14 12:05:30 -04:00
Ryan Cramer
851969c9e0 Add new PagesParents helper class for $pages API, accessible at $pages->parents()->methods. This class takes over management of the pages_parents table and related functionality. 2020-05-13 15:40:01 -04:00
Ryan Cramer
c790d31b8f Add Selectors::getReservedChars() method to keep track of reserved characters and their usages in selectors 2020-05-01 16:40:41 -04:00
Ryan Cramer
99f5d59ce4 Some updates to base DatabaseQuery class to improve bound value support among other things 2020-05-01 16:39:34 -04:00
Ryan Cramer
b5c4980b3b Various minor adjustments 2020-05-01 16:34:03 -04:00
Ryan Cramer
d07ba2661d Update WireHttp to allow for custom "setopt" options when using CURL 2020-05-01 15:44:29 -04:00
Ryan Cramer
3ab31805c6 Fix issue processwire/processwire-issues#1148 2020-04-29 17:49:25 -04:00
Ryan Cramer
6ae08c901b Fix issue processwire/processwire-issues#1162 and maybe (?) processwire/processwire-issues#1086 2020-04-27 15:59:00 -04:00
Ryan Cramer
ca8e779402 Fix issue processwire/processwire-issues#1159 2020-04-27 15:35:57 -04:00
Ryan Cramer
1cd1976a38 Fix issue processwire/processwire-issues#1155 2020-04-27 15:17:52 -04:00
Ryan Cramer
a157e690fa Bump version to 3.0.155 2020-04-24 15:36:40 -04:00
Ryan Cramer
f4883a46eb phpdoc updates in FieldtypeSelector.module 2020-04-24 13:09:59 -04:00
Ryan Cramer
57f228b600 Add new $input->canonicalUrl() method and add lots more options for $input->urlSegment() method. Also add urlSegment1(), urlSegment2(), etc. methods for same arguments/support as urlSegment() method but focused on specific segment number. 2020-04-24 13:05:37 -04:00
Ryan Cramer
e6551c9b4f Minor improvements to $page->url() method options for URL segments and pagination numbers. 2020-04-24 13:00:08 -04:00
Ryan Cramer
e36667624f Fix typo in phpdoc of Template.php 2020-04-24 12:37:10 -04:00
Ryan Cramer
670916e730 Bump version to 3.0.154 2020-04-17 15:29:10 -04:00
Ryan Cramer
dde4c92b78 Update core Debug class to use PHP 7.3 hrtime() function for timers (rather than microtime), when available. Also add support for configuring timer precision via Debug::timerSetting('precision', $n) where $n is number of decimals. Default is 4. 2020-04-17 08:21:23 -04:00
Ryan Cramer
89dbf0f96c Several updates to core/LanguageFunctions.php with biggest being the option to programmatically replace translation text (whether multi-language support is installed or not), useful for very easily updating core/module output to say exactly what you want, and without needing to install multi-language modules. Also moved the __() configuration options to dedicated methods which makes it more clear to use, as well as much better for documentation purposes: wireLangEntityEncode(), wireLangTranslations(), wireLangReplacements(). 2020-04-17 08:06:02 -04:00
Ryan Cramer
f9337d77a5 Minor adjustments in Pageimage and Pagefile classes 2020-04-15 16:40:12 -04:00
Ryan Cramer
b44669397a Fix issue processwire/processwire-issues#1119 2020-04-15 16:37:09 -04:00
Ryan Cramer
6bd7901011 Fix issue processwire/processwire-issues#1122 2020-04-15 16:33:57 -04:00
Ryan Cramer
ed0f573432 Fix issue processwire/processwire-issues#1144 2020-04-15 16:28:48 -04:00
Ryan Cramer
29fbf0b2f7 Fix issue processwire/processwire-issues#1073 2020-04-15 16:19:23 -04:00
Ryan Cramer
20cdbea7a8 Fix issue processwire/processwire-issues#1143 2020-04-15 15:58:29 -04:00
Ryan Cramer
fcb3f6abdc Fix issue processwire/processwire-issues#1117 2020-04-15 15:44:49 -04:00
Ryan Cramer
64bb5b09ce Fix issue processwire/processwire-issues#1139 2020-04-15 15:37:37 -04:00
Ryan Cramer
b79c5c0e45 Adjustment to prevent irrelevant error messages from appearing when creating new images field 2020-04-15 07:06:37 -04:00
Ryan Cramer
b957a81846 Update CKEditor version to 4.14.0 2020-04-15 06:44:03 -04:00
Ryan Cramer
ff6ec3b1b5 Update InputfieldWrapper so that it supports the "name=field_name" => [ settings ] calls for setMarkup(), like in LoginRegisterPro 2020-04-13 16:18:19 -04:00
Ryan Cramer
00de278dc7 Update FieldtypeImage and Pageimage to support new searchable width, height and ratio properties in the DB schema. These will become more useful over time as files are uploaded/saved and new info populates. 2020-04-10 12:48:28 -04:00
Ryan Cramer
359baa14dc Update FieldtypeFile along with Pagefile and Pagefiles classes to support additional DB schema for filesize, created_users_id and modified_users_id. Also adds new related API methods. 2020-04-10 12:45:00 -04:00
Ryan Cramer
9cd3fa677b Add a Selectors::getOperators() method that provides a lot of options for retrieving info about available operators 2020-04-10 12:42:16 -04:00
Ryan Cramer
9040bdc8d4 Update base Selector class so that descending classes can self identify the type of comparison they are performing 2020-04-10 12:41:05 -04:00
Ryan Cramer
48bb7c1734 Add a new $database->columnExists() method, plus a couple other unrelated minor adjustments 2020-04-10 12:40:15 -04:00
Ryan Cramer
ac7c9da4d1 Update FieldtypeMulti to isolate some existing functionality into dedicated methods for better reusability 2020-04-10 12:38:21 -04:00
Ryan Cramer
9a1f842437 Additional upgrades to FieldtypeComments and its related classes 2020-04-03 09:18:39 -04:00
Ryan Cramer
d3bbf6577e Fix issue where WireShutdown in fatal error state didn't use http 500 header when debug mode was on 2020-04-03 09:13:14 -04:00
Ryan Cramer
1c68448267 Refactoring of and improvements to the core TemplateFile class 2020-04-03 08:34:30 -04:00
Ryan Cramer
03effce1bd Update Page class so that createdUser/modifiedUser properties can be accessed internally (i.e. $this->modifiedUser) from classes that extend Page class. Also minor adjustment to PagePathHistory DB schema (not necessary to change existing installs) 2020-03-27 16:12:17 -04:00
Ryan Cramer
3c767e3fda Remove these newly added methods for now to focus and evaluate a little later (WireFileTools) 2020-03-27 16:08:24 -04:00
Ryan Cramer
671041a37f Refactoring of ProcessLogin to allow for more customization of text labels and markup, plus add requested option to allow users to login by either email or name. 2020-03-27 15:37:52 -04:00
Ryan Cramer
891afa38d4 Update FieldtypeComments::find() method to support inclusion of page.parent_id or page.templates_id in comment search 2020-03-27 15:24:04 -04:00
Ryan Cramer
be81265ee7 Add feature request for $files->pathToUrl() and $files->urlToPath() methods 2020-03-25 09:29:49 -04:00
Ryan Cramer
78b7d198a7 Update HookEvent::removeHook($key) so that it also accepts itself (HookEvent instance) as the $key 2020-03-25 09:28:45 -04:00
Ryan Cramer
f54342a20c Fix issue in Paths.php where getting URL for 'http[ModuleName]' incorrectly returned error 2020-03-25 09:27:37 -04:00
Ryan Cramer
278d323acd Bump version to 3.0.153 2020-03-20 15:36:10 -04:00
Ryan Cramer
833736a1fc Refactoring and optimizations to PagesLoader class, plus addition of a new $pages->has('selector') API method that enables you to quickly check if a page exists matching a selector. This is an alternative to using the $pages->count() method which is what you would have previously used for this. But the $pages->has() method can do it more quickly than $pages->count(), if all you need to know is if a page exists. As a bonus, it returns the first found page ID, so this method essentially does the same thing as a $pages->getID() method (if such a method existed). 2020-03-20 15:29:51 -04:00
Ryan Cramer
1020fb84e7 Update PageFinder to support option for returning all columns in pages table for matching pages 2020-03-20 14:15:29 -04:00
Ryan Cramer
542e138e42 Refactoring of core Template class to improve, optimize and simplify it, plus add new dedicated methods for childTemplates(), parentTemplates(), and allowNewPages(). 2020-03-20 14:13:33 -04:00
Ryan Cramer
00b89f71b3 Prevent an exception from getting thrown in one part of Pageimage where it's preferable for the error not to be fatal 2020-03-13 13:05:34 -04:00
Ryan Cramer
ffc7e6fb86 Upgrade $pages->uncache() method so that it can also accept page IDs in addition to Page objects 2020-03-13 12:43:44 -04:00
Ryan Cramer
550fc26300 Major refactoring of ProcessWire's FieldtypeComments classes and addition of new CommentListCustom and CommentFormCustom classes for more markup control over comment lists and forms. Plus several new API methods and other upgrades for comments. 2020-03-13 12:41:36 -04:00
Ryan Cramer
63a588bf00 Fix caching issue when multiple date fields in InputfieldDatetime 2020-03-07 08:53:37 -05:00
Ryan Cramer
d793249f86 Bump version to 3.0.152 2020-03-06 16:49:48 -05:00
Ryan Cramer
273183ddfb Add support for custom Page classes 2020-03-06 14:13:22 -05:00
Ryan Cramer
15793931f4 Major improvements to InputfieldDateTime including a significant refactoring, adding support for HTML5 date/time input types, and a new date selection input using separate selects for month, day and year 2020-03-06 14:04:17 -05:00
Ryan Cramer
de5b7d9207 Update PageFinder and add dedicated abilty to include template IDs alongside page IDs as a finder option 2020-03-06 13:48:38 -05:00
Ryan Cramer
6ae314cb14 Documentation improvements to InputfieldToggle module 2020-03-06 13:47:35 -05:00
Ryan Cramer
19d8d944bf Refactoring of WireClassLoader class ($classLoader API var) plus improvements and ability to support autoloading via class Prefix or Suffix 2020-03-06 13:46:22 -05:00
Ryan Cramer
765f42a4dc Various minor adjustments, code plus improvements to ProcessSessionDB module 2020-03-06 13:45:36 -05:00
Ryan Cramer
f584ec5317 Move the requiredAttr Inputfield config option from InputfieldText into Inputfield so that it can be used on other Inputfield types 2020-02-28 16:38:55 -05:00
Ryan Cramer
60d62ea3a1 Bump version to 3.0.151 2020-02-21 15:35:37 -05:00
Ryan Cramer
3670031682 Fix issue processwire/processwire-issues#1091 2020-02-21 12:10:24 -05:00
Ryan Cramer
32f068c5ea Minor improvements to WireShutdown fatal error reporting, plus prevent some fatal errors from rendering twice and start converting some Exception only handlers to also accept Throwable (for PHP 7.x \Error or \Exception). 2020-02-21 11:28:45 -05:00
Ryan Cramer
695dd79db6 Add support for $config->imageSizes setting which lets you name and predefine image sizes/options that you can later refer to by name on any $image->size() call (via the width argument). 2020-02-21 11:23:02 -05:00
Ryan Cramer
ed05a4a356 Correct missing namespace from index.php (only matters if trying to multi-instance boot off of multiple PW index.php files) 2020-02-21 11:15:01 -05:00
Ryan Cramer
34cc4e9b0f Add support for retaining abandoned translations in __('text') calls. This enables you to change the value in __('text') _x('text', 'context'), $this->_('text'), etc. calls without abandoning the existing translation. To use, specify bracket PHP array syntax with 2 or more phrases you'll accept translations for, rather than automatically abandoning them. This is useful in cases where you need to change the text, but do not want to automatically lose any existing translations. For example, the call: __(['new text', 'old text']); will use a translation for 'old text' if 'new text' has not yet been translated. In the admin translation tools, it identifies these as "fallback" translations. See phpdoc notes in __() function for more details. 2020-02-14 15:36:40 -05:00
Ryan Cramer
af6a68e06d Update ProcessLogin to support login by email address for the admin. To use, you must enable the "unique" flag on your "email" field (Setup > Fields > email > Advanced), and then you can enable login-by-email in the ProcessLogin module settings. 2020-02-14 15:15:28 -05:00
Ryan Cramer
eedad3a742 Remove some redundant code from ProcessField and fix an issue with a duplicate id attribute in markup. 2020-02-14 14:50:43 -05:00
Ryan Cramer
d154a8de28 Minor fixes in WireArray, PaginatedArray and CommentStars classes 2020-02-14 14:49:59 -05:00
Ryan Cramer
93f422a2cf Update inputfields.js so that you can specify #find-fieldName as a URL fragment on pages containing an InputfieldForm and it will locate and highlight the field identified by fieldName. Also update $page->editUrl() function to accept a field name to find in the page editor, which uses the inputfields.js #find-fieldName added in this commit, i.e. $page->editUrl('body'); 2020-02-14 14:45:50 -05:00
Ryan Cramer
0e045ad45d Add new $field->editUrl() method 2020-02-14 14:43:55 -05:00
Ryan Cramer
032df04fe1 Bump version to 3.0.150 2020-02-07 13:42:02 -05:00
Ryan Cramer
df33867a44 Fix issue processwire/processwire-issues#1083 2020-02-07 13:12:38 -05:00
Ryan Cramer
d528f2f133 Update FieldtypeEmail and InputfieldEmail to support MySQL UNIQUE index option (available as a toggle on Advanced tab when editing field in admin) 2020-01-31 11:28:53 -05:00
Ryan Cramer
687ea08633 Add new FieldsTableTools class as a helper for managing field tables and their indexes. Intended for non-public API (internal core) use, but methods can be accessed $fields->tableTools() 2020-01-31 11:25:08 -05:00
Ryan Cramer
e983442197 Update ProcessPageLister for improved column labels when subfields are in use 2020-01-31 11:23:22 -05:00
Ryan Cramer
3d2648ef01 Update ProcessPageEdit so that it detects when the same error message might get shown twice and prevents it from happening 2020-01-31 11:21:08 -05:00
Ryan Cramer
92ef3bbbc3 Update RepeaterPage class for secondary detection of 'forField' when page exists in unexpected location 2020-01-31 11:19:55 -05:00
Ryan Cramer
1c3ba1024f Update WireException class to support setting message and code 2020-01-31 11:15:47 -05:00
Ryan Cramer
57a3a99ebd phpdoc-specific adjustments to FieldtypeCache.module 2020-01-29 06:01:46 -05:00
Ryan Cramer
b7dfe9da1e Add Fieldtype::isDeleteValue() method to isolate that particular logic outside of savePageField() method so it can more easily be overridden 2020-01-29 06:00:00 -05:00
Ryan Cramer
2adf4b0707 Updates to $config->fileContentTypes 2020-01-29 05:58:59 -05:00
Ryan Cramer
20be0c7fd5 Improvements to PageComparison is() and if() methods, minor optimization in WireData, and minor phpdoc fix in WireCache 2020-01-24 10:47:07 -05:00
Ryan Cramer
c5417d98ad Fix issue processwire/processwire-issues#1071 plus some other improvements to FieldtypeModule 2020-01-24 10:03:16 -05:00
Ryan Cramer
045f69d96d Add wireClassNamespace() function to accopmany existing wireClassName() function and others. Also improve wireEmpty() function to recognize objects that can be cast to empty strings. 2020-01-24 10:01:32 -05:00
Ryan Cramer
57540cfab2 Fix issue processwire/processwire-issues#1064 2020-01-20 08:37:12 -05:00
Ryan Cramer
6bc706742e Fix issue processwire/processwire-issues#1065 2020-01-20 07:19:10 -05:00
Ryan Cramer
85c9e4f329 Fix issue processwire/processwire-issues#1067 2020-01-20 07:01:01 -05:00
Ryan Cramer
406bd7a2ea Fix issue processwire/processwire-issues#1066 2020-01-18 06:36:35 -05:00
Ryan Cramer
e2ace10dbc Bump version to 3.0.149 dev 2020-01-17 15:37:48 -05:00
Ryan Cramer
d68b8267b1 Various improvements to ProcessWire's $notices API var (Notices and Notice classes) 2020-01-17 11:35:01 -05:00
Ryan Cramer
51c1096c7b Several upgrades to ProcessCommentsManager. Lots of improvements here, but biggest functional additions are the ability to change the Page that any comment lives on, as well as the ability to change what comment another is replying to. 2020-01-17 11:30:12 -05:00
Ryan Cramer
bd7dd56f06 Various upgrades to the API of comments fields 2020-01-17 11:29:31 -05:00
Ryan Cramer
6b04c4e15a Update AdminThemeUikit search box to add a suggestion about typing "help" if you focus the input for a brief period without typing anything 2020-01-17 11:27:28 -05:00
Ryan Cramer
f5f83e8148 Fix issue processwire/processwire-issues#1062 2020-01-13 14:49:28 -05:00
Ryan Cramer
a4f036cb45 Fix issue processwire/processwire-issues#1060 2020-01-13 14:41:15 -05:00
Ryan Cramer
11ed423bca Fix issue processwire/processwire-issues#1061 2020-01-13 14:24:44 -05:00
Ryan Cramer
abc32780e3 Update ProcessForgotPassword to have a dedicated hookable renderForm() method for simpler hook modifications 2020-01-13 08:50:45 -05:00
Ryan Cramer
b8dcdb7758 Fix issue in User::editUrl() where it wasn't passing $options array to parent call 2020-01-13 08:49:30 -05:00
Ryan Cramer
0a1ec95a33 Update wireEmpty() function so that it also returns false when giving a NullPage or NullField object. Add WireNull interface for future Null objects. 2020-01-13 08:48:06 -05:00
Ryan Cramer
321ea0eed3 Update InputfieldPassword to support configurable placeholder attributes for old/new/confirm inputs via oldPassLabel, newPassLabel, confirmLabel properties that can be set from hooks. 2020-01-05 07:31:11 -05:00
1697 changed files with 117716 additions and 50641 deletions

140
README.md
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 (2020), we're just getting started, as ProcessWire
Now more than a decade later (2021), 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
@@ -53,7 +53,7 @@ instead focused on being best-in-class.
Web developers find ProcessWire when the time is right, after theyve tried
some other platforms. And once they start using ProcessWire, they tend to
stayProcessWire is addictive, easy to maintain for the long term, and doesnt
stay. ProcessWire is addictive, easy to maintain for the long term, and doesnt
have the security and upgrade woes of other platforms. But dont take our word
for it; unless your livelihood depends on some other platform, find out for
yourself.
@@ -63,7 +63,9 @@ yourself.
ProcessWire is more than just software, it is also a friendly community
of web professionals dedicated to building great sites and applications, and
helping others do so too. Please visit and join our
helping others do so too.
Please visit and join our
[friendly community](https://processwire.com/talk/)
in the ProcessWire forums, subscribe to our
[weekly newsletter](https://processwire.com/community/newsletter/subscribe/)
@@ -73,6 +75,12 @@ to see what others are building with ProcessWire, and read our
[blog](https://processwire.com/blog/)
to stay up-to-date with the latest ProcessWire versions.
Weekly ProcessWire news is posted by Teppo Koivula on his site
[ProcessWire Weekly](https://weekly.pw).
Weekly core updates and related topics are posted by Ryan Cramer in the
ProcessWire support forum
[News and Announcements](https://processwire.com/talk/forum/7-news-amp-announcements/)
board.
### Learn more
@@ -82,7 +90,7 @@ to stay up-to-date with the latest ProcessWire versions.
* [Documentation](https://processwire.com/docs/)
* [API reference](https://processwire.com/api/ref/)
* [Downloads](https://processwire.com/download/)
* [Modules/plugins](https://modules.processwire.com)
* [Modules/plugins](https://processwire.com/modules/)
* [Showcase](https://processwire.com/sites/)
-----------------------------------------------------------------
@@ -98,107 +106,53 @@ details and instructions. If you run into any trouble, please see our
## Upgrading ProcessWire
Before proceeding with any version upgrade, please see the
Upgrading is easy and usually just a matter of replacing your `/wire/` directory
with the one from the new version. But to be safe, before proceeding with any version upgrade, please see the
[Upgrading ProcessWire](https://processwire.com/docs/start/install/upgrade/)
guide and keep it open during your upgrade in case you need to refer back to it.
### Upgrading from ProcessWire 3.x (earlier version)
guide and perhaps keep it open during your upgrade in case you need to refer back to it.
When upgrading from one 3.x version to another, please use the
[General Upgrade Process](https://processwire.com/docs/start/install/upgrade/#general-upgrade-process).
This consists primarily of making sure you've got everything backed up and then
just replacing your `/wire/` directory with the one from the newest version.
[general upgrade process](https://processwire.com/docs/start/install/upgrade/#general-upgrade-process).
This consists primarily of making sure you've got everything backed up and then just
replacing your `/wire/` directory with the one from the newer version.
In addition, if you are currently running any 3.x version prior to 3.0.135,
you will also want to upgrade your root `.htaccess` file to the newest version:
- If you are upgrading from a 3.x version prior to 3.0.135 then please also follow
[these instructions](https://processwire.com/docs/start/install/upgrade/from-3.x/).
#### Upgrading your .htaccess file
- If you are upgrading from any 2.x version then please see
[upgrading from ProcessWire 2.x](https://processwire.com/docs/start/install/upgrade/from-2.x/).
* If you haven't made any custom modifications to your .htaccess file then you
can simply replace the old one with the new one. The new one is in a file
named `htaccess.txt` so you'll rename it to `.htaccess` after removing
your old one (all in the same directory as this README file).
* If your .htaccess file does have custom modifications, you know what they
are, and are comfortable applying them to the new one — go ahead and
follow the step above and then make those same modifications to the new
.htaccess file.
* If you aren't sure what custom modifications your .htaccess file might
have, or how to apply them to the new one, please see this post which will
quickly guide you through it:
[How to upgrade an existing .htaccess file](https://processwire.com/blog/posts/pw-3.0.135/#how-to-update-an-existing-htaccess-file)
*If you are curious what's new in this latest .htaccess file version,
please see [this post](https://processwire.com/blog/posts/pw-3.0.135/)
for all the details.*
- If you run into any trouble upgrading, please see our
[troubleshooting upgrades guide](https://processwire.com/docs/start/install/troubleshooting/#troubleshooting-upgrades).
### Pro module version upgrade notes (if applicable)
### Upgrading from ProcessWire 2.x
If upgrading from ProcessWire 2.5 or older, we recommend that you upgrade
to ProcessWire [2.7](https://github.com/ryancramerdesign/processwire) first.
This version includes details in the README file on how to upgrade from that
older version of ProcessWire. To upgrade from ProcessWire 2.6 (or newer)
to ProcessWire 3.x, please follow the instructions below.
1. Login to the admin of your site.
2. Edit your `/site/config.php` file and set `$config->debug = true;` to ensure
you can see error messages. This is optional but recommended.
3. Replace your `/wire/` directory and `/index.php` file with the new ones from here.
4. Click a navigation link in your admin, such as "Pages". You may notice a delay.
This is ProcessWire compiling 3rd party modules into a format that is
compatible with version 3.x. Keep an eye out for any error messages.
If you see any issues, it's possible you may need to upgrade one or more
3rd party modules. If you see messages about it applying updates, keep hitting
reload in your browser until you no longer see any update messages.
5. Once you've resolved error messages in your admin, you'll want to test out
the front end of your site. Again, expect a delay while ProcessWire compiles
any files to make them compatible with 3.x. Depending on your template file
strategy, updates may or may not be necessary. If you run into any pages
that aren't working, see the section further down on troubleshooting.
Thoroughly test every aspect if your site to ensure that everything is
working as you expect.
6. When you've confirmed a successful upgrade, remember to restore the
`$config->debug` setting back to `false` in your /site/config.php file.
**Troubleshooting a 3.x upgrade**
If you run into any trouble upgrading, please see our
[troubleshooting upgrades guide](https://processwire.com/docs/start/install/troubleshooting/#troubleshooting-upgrades).
### Pro module upgrade notes
- If using [FormBuilder](https://processwire.com/store/form-builder/),
we recommend using only v0.3.0 or newer, but v0.4.0 or newer if possible.
- If using [ProCache](https://processwire.com/store/pro-cache/),
we recommend using only v3.1.4 or newer.
- If using [ListerPro](https://processwire.com/store/lister-pro/),
we recommend using only v1.0.9 or newer.
- If using [ProFields](https://processwire.com/store/pro-fields/),
we recommend grabbing the latest versions in the ProFields support board.
- If using ProCache and you upgraded your .htaccess file, you should
go to your ProCache settings after the upgrade to have it update
your .htaccess file again. If no upgrades to your .htaccess file
are necessary, then the ProCache settings page won't mention it.
- [FormBuilder](https://processwire.com/store/form-builder/)
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.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/)
all versions supported but version 5 or newer recommended.
- [ProCache](https://processwire.com/store/pro-cache/)
version 3.1.4 or newer required, 4.0.0 or newer recommended.
After upgrading, go to your ProCache settings in the admin (Setup > ProCache)
and see if it suggests any modifications to your .htaccess file.
- For all other Pro modules not mentioned above (ProMailer, ProDrafts,
ProDevTools, Likes) there are no specific version requirements but we
recommend using the latest available versions when possible.
## Debug Mode
Debug mode causes all errors to be reported to the screen, which can be
Debug mode causes all errors to be reported to the screen. This can be
helpful during development or troubleshooting. When in the admin, it also
enables reporting of extra information in the footer. Debug mode is not
intended for live or production sites, as the information reported could
be a problem for security. So be sure not to leave debug mode on for
any live/production sites. However, we think you'll find it very handy
during development or when resolving issues.
enables a “Debug” link (see footer) for reporting of extra information in a
panel. Debug mode is not intended for live or production sites, as the
information reported is for the developer only. Do not leave debug mode
on for any live/production sites, as it could be a security concern. However,
we think you'll find it very handy during development or when resolving issues.
1. Edit this file: `/site/config.php`
2. Find this line: `$config->debug = false;`
@@ -227,5 +181,5 @@ resolved any issues.
------
Copyright 2020 by Ryan Cramer / Ryan Cramer Design, LLC
Copyright 2022 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

@@ -188,14 +188,18 @@ DirectoryIndex index.php index.html index.htm
# -----------------------------------------------------------------------------------------------
# 9. Optionally Force HTTPS (O)
# -----------------------------------------------------------------------------------------------
# Note that on some web hosts you may need to replace %{HTTPS} with %{ENV:HTTPS} in order
# for it to work (in sections 9A and 9D below). If on a load balancer or proxy setup, you will
# likely need to use 9B rather than 9A, and 9E rather than 9D.
# -----------------------------------------------------------------------------------------------
# 9A. To redirect HTTP requests to HTTPS, uncomment the lines below:
# 9A. To redirect HTTP requests to HTTPS, uncomment the lines below (also see note above):
# -----------------------------------------------------------------------------------------------
# RewriteCond %{HTTPS} !=on
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 9B. If using load balancer/AWS, use the following rather than 9A above: (L)
# 9B. If using load balancer/AWS or behind proxy, use the following rather than 9A above: (L)
# -----------------------------------------------------------------------------------------------
# RewriteCond %{HTTP:X-Forwarded-Proto} =http
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
@@ -209,7 +213,7 @@ DirectoryIndex index.php index.html index.htm
# RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
# 9D. Store current scheme in a 'proto' environment variable for later use in this file
# 9D. Store current scheme in a 'proto' environment variable for later use
# -----------------------------------------------------------------------------------------------
RewriteCond %{HTTPS} =on
RewriteRule ^ - [env=proto:https]
@@ -217,7 +221,7 @@ DirectoryIndex index.php index.html index.htm
RewriteRule ^ - [env=proto:http]
# 9E. If using Load balancer/AWS- Use lines below rather than 9D: (L)
# 9E. If using load balancer/AWS or behind proxy, use lines below rather than 9D: (L)
# -----------------------------------------------------------------------------------------------
# RewriteCond %{HTTP:X-Forwarded-Proto} =https
# RewriteRule ^ - [env=proto:https]
@@ -241,7 +245,58 @@ DirectoryIndex index.php index.html index.htm
</IfModule>
# Sections 10 and 11 intentionally omitted
# Section 10 intentionally omitted for future use
# -----------------------------------------------------------------------------------------------
# 11. Nuisance blocking/firewall
# -----------------------------------------------------------------------------------------------
# None of these are enabled by default, but are here for convenience when the need arises.
# Review and uncomment as needed. For more complete firewall (and more overhead), the 7G firewall
# (or latest version) is worth considering, see: https://perishablepress.com/7g-firewall/
# -----------------------------------------------------------------------------------------------
# 11A. Block via IP addresses
# -----------------------------------------------------------------------------------------------
# Note that IP addresses here are examples only and should be replaced with actual IPs.
# Block single IP address
# Deny from 111.222.333.444
# Block multiple IP addresses
# Deny from 111.222.333.444 44.33.22.11
# Block IP address ranges (999.88.*, 99.88.77.*, 1.2.3.*)
# Deny from 999.888 99.88.77 1.2.3
# 11B. Block via request URI (matches strings anywhere in request URL)
# -----------------------------------------------------------------------------------------------
# RewriteCond %{REQUEST_URI} (bad-word|wp-admin|wp-content) [NC]
# RewriteRule .* - [F,L]
# 11B. Block via user agent strings (matches strings anywhere in user-agent)
# -----------------------------------------------------------------------------------------------
# RewriteCond %{HTTP_USER_AGENT} (bad-bot|mean-bot) [NC]
# RewriteRule .* - [F,L]
# 11C. Block via remote hosts
# -----------------------------------------------------------------------------------------------
# RewriteCond %{REMOTE_HOST} (bad-host|annoying-host) [NC]
# RewriteRule .* - [F,L]
# 11D. Block via HTTP referrer (matches anywhere in referrer URL)
# -----------------------------------------------------------------------------------------------
# RewriteCond %{HTTP_REFERER} (bad-referrer|gross-referrer) [NC]
# RewriteRule .* - [F,L]
# 11E. Block unneeded request methods (only if you do not need them)
# -----------------------------------------------------------------------------------------------
# RewriteCond %{REQUEST_METHOD} ^(connect|debug|delete|move|put|trace|track) [NC]
# RewriteRule .* - [F,L]
# 11F. Limit file upload size from Apache (i.e. 10240000=10 MB, adjust as needed)
# -----------------------------------------------------------------------------------------------
# LimitRequestBody 10240000
# -----------------------------------------------------------------------------------------------
@@ -256,18 +311,23 @@ DirectoryIndex index.php index.html index.htm
# 13. Optional domain redirects (O)
#
# Redirect domain.com to www.domain.com redirect (or www to domain.com redirect).
# If using then uncomment either 13A or 13B, do NOT uncomment both of them or nothing will work.
# To use, uncomment either 13A, 13B or 13C. Do not use more than one of them. 13A and 13B
# redirect non-www hosts to www.domain.com, 13C redirects www.domain.com host to domain.com.
# -----------------------------------------------------------------------------------------------
# 13A. Redirect domain.com and *.domain.com to www.domain.com (do not combine with 13B):
# 13A. Redirect domain.com and *.domain.com to www.domain.com (see also 13B as alternate):
# -----------------------------------------------------------------------------------------------
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteCond %{SERVER_ADDR} !=127.0.0.1
# RewriteCond %{SERVER_ADDR} !=::1
# RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 13B. Redirect www.domain.com to domain.com (do not combine with 13A):
# 13B. Alternate www redirect if 13A does not work for your server:
# -----------------------------------------------------------------------------------------------
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^ %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 13C. Redirect www.domain.com to domain.com (do not combine with 13A or 13B):
# -----------------------------------------------------------------------------------------------
# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
# RewriteRule ^ %{ENV:PROTO}://%1%{REQUEST_URI} [R=301,L]
@@ -309,19 +369,22 @@ DirectoryIndex index.php index.html index.htm
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/assets.*/-.+/.* [NC,OR]
# Block access to /wire/config.php, /site/config.php, /site/config-dev.php, /wire/index.config.php, etc.
RewriteCond %{REQUEST_URI} (^|/)(wire|site|site-[^/]+)/(config|index\.config|config-dev)\.php$ [NC,OR]
RewriteCond %{REQUEST_URI} (^|/)(wire|site|site-[^/]+)/(config|index\.config|config-dev)\.php($|/) [NC,OR]
# Block access to any PHP-based files in /site/templates-admin/ or /wire/templates-admin/
RewriteCond %{REQUEST_URI} (^|/)(wire|site|site-[^/]+)/templates-admin($|/|/.*\.(php|html?|tpl|inc))$ [NC,OR]
RewriteCond %{REQUEST_URI} (^|/)(wire|site|site-[^/]+)/templates-admin($|/|/.*\.(php|html?|tpl|inc))($|/) [NC,OR]
# Block access to any PHP or markup files in /site/templates/ or /site-*/templates/
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/templates($|/|/.*\.(php|html?|tpl|inc))$ [NC,OR]
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/templates($|/|/.*\.(php|html?|tpl|inc))($|/) [NC,OR]
# Block access to any files in /site/classes/ or /site-*/classes/
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/classes($|/.*) [NC,OR]
# Block access to any PHP files within /site/assets/ and further
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/assets($|/|/.*\.php)$ [NC,OR]
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/assets($|/|/.*\.ph(p|ps|tml|p[0-9]))($|/) [NC,OR]
# Block access to any PHP, module, inc or info files in core or core modules directories
RewriteCond %{REQUEST_URI} (^|/)wire/(core|modules)/.*\.(php|inc|tpl|module|info\.json)$ [NC,OR]
RewriteCond %{REQUEST_URI} (^|/)wire/(core|modules)/.*\.(php|inc|tpl|module|info\.json)($|/) [NC,OR]
# Block access to any PHP, tpl or info.json files in /site/modules/ or /site-*/modules/
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/modules/.*\.(php|inc|tpl|module|info\.json)$ [NC,OR]
@@ -395,7 +458,7 @@ DirectoryIndex index.php index.html index.htm
# section #2 above that makes ProcessWire the 404 handler.
# -----------------------------------------------------------------------------------------------
# RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|ico|webp|svg)$ [NC]
# RewriteCond %{REQUEST_URI} !\.(jpg|jpeg|gif|png|ico|webp|svg)$ [NC]
# RewriteCond %{REQUEST_FILENAME} !(^|/)site/assets/
# -----------------------------------------------------------------------------------------------

View File

@@ -10,7 +10,7 @@
* do so after you have installed the site, as the installer is not informed
* of any changes made in this file.
*
* ProcessWire 3.x, Copyright 2016 by Ryan Cramer
* ProcessWire 3.x, Copyright 2020 by Ryan Cramer
* https://processwire.com
*
* @version 3.0
@@ -29,7 +29,7 @@ $rootPath = __DIR__;
if(DIRECTORY_SEPARATOR != '/') $rootPath = str_replace(DIRECTORY_SEPARATOR, '/', $rootPath);
$composerAutoloader = $rootPath . '/vendor/autoload.php'; // composer autoloader
if(file_exists($composerAutoloader)) require_once($composerAutoloader);
if(!class_exists("ProcessWire", false)) require_once("$rootPath/wire/core/ProcessWire.php");
if(!class_exists("ProcessWire\\ProcessWire", false)) require_once("$rootPath/wire/core/ProcessWire.php");
$config = ProcessWire::buildConfig($rootPath);
if(!$config->dbName) {
@@ -50,7 +50,7 @@ $wire = null;
try {
// Bootstrap ProcessWire's core and make the API available with $wire
$wire = new ProcessWire($config);
$process = $wire->modules->get('ProcessPageView');
$process = $wire->modules->get('ProcessPageView'); /** @var ProcessPageView $process */
$wire->wire('process', $process);
echo $process->execute($config->internal);
$config->internal ? $process->finished() : extract($wire->wire('all')->getArray());

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,15 +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.
*
*/
require($config->paths->adminTemplates . 'controller.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,34 @@
* 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 2022 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;
// 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 Wire $wire */
/**
* ProcessWire Request Finished
* ============================

View File

@@ -2,6 +2,8 @@
if(!defined("PROCESSWIRE")) die();
/** @var Wire $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

@@ -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 Wire $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->appendTemplateFile 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('/'); // homepage
?><!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,9 @@
* 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
*
*/
require($config->paths->adminTemplates . 'controller.php');
/** @var Config $config */
require($config->paths->core . "admin.php");

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,15 +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.
*
*/
require($config->paths->adminTemplates . 'controller.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