Leaderboard
Popular Content
Showing content with the highest reputation on 03/14/2017 in all areas
-
@gmclelland - latest version includes node_modules and sass-cache as default directories to exclude. On an unrelated note, I have also added a new "Selector Queries" section to the PW Debug panel. This shows you all the selector calls made during the current page load. This post also includes a Console Panel snippet idea. If you need to look up a page, template or field ID, this snippet will return the name, title, label, edit and view links, etc. Just enter the ID and the type and run. I have saved it as "Info from ID", but you can choose whatever name you want. Code included in a spoiler below.4 points
-
Seems to be caused by the divider, hiding them fixes the problem.3 points
-
The issue has been identified, although the cause is not known so if anyone can identify where/why this happens, please reply so it's documented for others in the future. The issue was the production server was HTTPS, and I was trying to login via HTTP. My assumption is, somewhere there was a redirect happening with the SSL that removed the messages. We just had to login w/ HTTPS.3 points
-
Welcome @carloswinkel ProcessWire frontend "templates" are called "site profiles" and while there are plenty free ones to choose from, I can't think of anything which might provide what you need out of the box. There is only one commercial site profile, but that one might be a bit off topic: http://seavuel.com/ however, even this site profile is not "updatable" anyway, so you are free to change anything in the ProcessWire world as long as you do not change the core (files in /wire) There exists a PayPal module: http://modules.processwire.com/modules/payment-paypal/ PW 3 compatibility is not stated, but it does not mean it can't work, it just means the developer had not had the time to sort it out. Should you have issues with it, you can ask the developer Apeisa, who is still heavily involved in ProcessWire development so I guess this module should be supported in the future as well. Regarding tutorials, I recommend this one: http://blog.mauriziobonani.com/processwire-basic-website-workflow-part-1/ http://blog.mauriziobonani.com/processwire-basic-website-workflow-part-2/ http://blog.mauriziobonani.com/processwire-basic-website-workflow-part-3/ http://blog.mauriziobonani.com/processwire-basic-website-workflow-part-4/ and this one: https://medium.com/@clsource/understanding-processwire-templates-fields-and-pages-201aecd0a1a4#.upwyztack Hope this helps. Also, as @rick said: "...you can always ask for specific advice..." Anything is possible with ProcessWire, but you will need to code. However, it is relatively easy to put together complex solutions with PW.3 points
-
I don't think you need to rename anything, although I haven't used phpDocumentor myself. I use apigen (as seen here). You can tell it in a configuration file what file extensions to parse. I see phpDocumentor has a similar feature as explained in its documentation here (see extensions). Meaning, something like below should work. <parser> <target>output</target> <encoding>utf8</encoding> <markers> <item>TODO</item> <item>FIXME</item> </markers> <extensions> <extension>php</extension> <extension>module</extension> </extensions> </parser>2 points
-
2 points
-
Hey there @arjen totally forgot about this question, I did end up finding that thing and am now happily using it to keep an eye on changes. Super helpful module!2 points
-
If you're asking for ready to use plugins I doubt ProcessWire is the correct system for you. There are various modules for processwire, but they tend to keep a small footprint and most don't even create any predefined markup. While it's still a nice system you'd need to be able to implement (at least most of) your business logic on your own. In regards to webapps we're probably closer to some php framework than we are to wordpress, where you just have to install some stuff. So it really depends on your skillset and/or willingness to learn some things on the way.2 points
-
Hi @MuchDev, there is a module by @renobird which stores changes based on individual pages.2 points
-
You probably did that because PW blocks direct access to PHP files inside the /site/ directory. If you are considering making a change to your site I think it would be better put the contents of file.php into a PW template file and access it as a page at mydomain.com/file/ or whatever. Also no need to bootstrap PW if you do it that way.2 points
-
Hello Carlos! Welcome aboard! Your application can certainly be developed with ProcessWire. Not knowing your experience developing applications, I can only point you to the tutorial section, and to the ProcessWire blog, as places to begin. If you already have something designed, you can always ask for specific advice. Everyone here will be glad to help. Again, welcome.2 points
-
2 points
-
You could take a look at http://php.net/manual/en/class.numberformatter.php2 points
-
If the details are not covered by an NDA, maybe you could share them publicly in this very topic2 points
-
Hi, I have created a site profile that shows how to integrate ProcessWire 3.0 with Vue 2.0. See repository here. How this site profile works This ProcessWire site profile is loosely based on the REST API tutorial by @gebeer. Here are the most important steps to reproduce it: Admin settings Create an api template with default settings and just the title field assigned to it. Refer to @gebeer tutorial for further details Create a pages and nav templates with just the title field, for both template tick “Allow URL Segments” in the “URLs” tab (see attachment) Create a home template, this is going to be the single php file that will load your Vue SPA. Assign this template to the root of your website Any other template you create should have the “Alternate Template Filename” field in the “Files” tab set as home (see attachment), in this way if a user enter the website from any url that is not the root, ProcessWire will always redirect to the home template, Vue router will handle the url and call the right data through the REST API Under the root, create an api page and assign the api template to it (you can set “hidden” to this page so doesn't show up in the menu) Under the api page, create the pages nav and pages (see attachment), and assign the templates nav and pages to them. Now you have the www.sitename.com/api/pages and www.sitename.com/api/nav urls that you can use to fetch the JSON data PHP template setup In the templates folder, create home.php file and leave it empty, the HTML will be generated by webpack Now create pages.php and nav.php files. On these files is where we return the JSON data, based on the right url segment. Again, refer to @gebeer tutorial for further details on this matter. Note that I wrote a PageFields class that I use on these templates to fetch ProcessWire fields. The fields that are supported are text, textarea, repeater, img. Other fields may work but I haven't tested them. See the REST API setup for further details about how to use the PageFields class REST API setup You can decide what fields are included and what fields are excluded by passing a configuration array to the PageFields class. You can find here a list of the available configuration settings. See examples below. Show only selected core fields: $pageFields = new PageFields($p, [ 'fld_core_included' => ['url', 'httpUrl', 'template'] ]); Show no global fields, and only selected custom fields: $pageFields = new PageFields($p, [ 'fld_core_included' => [], 'fld_include_all' => false, 'fld_included' => ['title', 'gallery'], ]); On a gallery image field, hide breakpoint listing and show only httpUrl field: $pageFields = new PageFields($p, [ 'img_fld_overrides' => [ 'gallery' => [ 'fields' => ['httpUrl'], 'bp_list' => false ] ], ]); Webpack setup The most important file of all Webpack setup is config/index.js. On line 33 you need to provide your domain name so that Webpack can proxy the ProcessWire REST API to the Webpack dev server. Without this you wouldn't be able to take advandage of the Webpack hot module replacement feature which allows you to reload a vue module without refreshing the page, it also allows you to keep the state of the app. Notes My REST API may have bugs, this is just an example of an integration with ProcessWire, I suggest you either build your own REST API or use the awesome GraphQL module by @Nurguly Ashyrov. Todo Replace REST API with the GraphQL module. This requires vue-apollo, the Apollo/GraphQL integration with Vue, and vue-supply for integration with Vuex.1 point
-
GithubConnect ProcessWire module to connect a Github OAuth application. Register a new OAuth application Fill in module settings Click the Authorize! link to generate code and access token There are some predefined endpoints to fetch informations about an user or a repository, get a list of repositories belonging to an organization, fetch content of readme or certain file.. I used it to choose a repository from a list and import the content (e.g. readme, description) to the corresponding fields. Visit the Github Repository to get a full overview.1 point
-
To go a bit deeper in what Robin explained. When you are on the last page of a level, you want the first page of the next sibling of it's parent. For this to work, you have to be actually positioned on the child page, and not the parent — you can do that by redirecting to the first child when positioned on one of the parent pages. As for the next and prev links something like this should work to get the correct pages; $prev = $page->prev->id ? $page->prev : $page->parent->prev->child; $next = $page->next->id ? $page->next : $page->parent->next->child("sort=-sort");1 point
-
I assume you are talking about the PW modules directory? I have just deleted the "martijn" account which had no modules.1 point
-
Here is a pull request for the problem mentioned above https://github.com/felixwahner/TextformatterOEmbed/pull/71 point
-
Internet connection problems yesterday night... and again now. From time to time it happens, more and more... even with the "stability" option. Some reasons surely being that households now have several hardwares connected to (the) Internet (YouTube, etc.), Internet TV, illegal music and files downloads... (I'll remove the 2 lines above later.) http://php.net/manual/en/class.numberformatter.php ""12 345,67" in France and "12.345,67" in Germany." Reading this I thought, "But in France, we use both...". I'll read the page more carefully. In usage, sometimes I usually (a bit of contradiction) write 1000 for example (but I wouldn't put (or less often) 1.000 or 1 000 - or perhaps with a smaller space). But for 1000,64 I would rather write 1.000,64 (or 1 000,64 with a smaller space). For 1000000, for sure I would write it 1.000.000 or 1 000 000 (with a smaller space if possible). For 1000000,64, same... I guess it depends also (on) if you write it with a pen, a keyboard... and on other conditions/reasons (readability, etc.). Perhaps, I often can't stick to one way of doing things, or I am too "international" for some things... At the same time, I always wrote cursive letters with a pen (nice if not too quick), then one day for a job, in order to be more readable to another person I started writing sometimes the other way. From then on, it happens (quite often) that I (still) mix both... But in French I can also write it in Roman characters (small, big, or tiny)... I have to find (out) how to create a smaller space (again ?) with a keyboard. Perhaps if I select the numbers, there is a Ctrl + Alt + something for that. A bit like telephone numbers (sometimes with or without spaces, or with dots). I'm going to eat a bit... Where is the preferred place(s) to put your piece of code @kixe please?1 point
-
All $config->ajax does is checking for the request header "X-Requested-With", which is not even a real standard. It is included in jquery's ajax tools by default, but most modern ajax libraries don't do that anymore. There's nothing more to it.1 point
-
Jump jumping in to support this idea. I can't like it twice1 point
-
1 point
-
Done! I'm glad I could be useful on spotting this.1 point
-
Hi @adrian, I was just wondering what location gets scanned for ToDo Items in Tracy? I'm assuming it is your site's templates directory? I wonder if you should add node_modules, bower_components, .sass-cache by default? Seems like if it had to scan all those files it would slow things down a lot? Maybe you can provide an option to turn that feature off completely?1 point
-
Re #3: I'm not really up to speed on renderReady(), but because you are hooking an existing inputfield I think you may need to use the new renderReadyHook() hookable method, as hooking render() doesn't work so well for ajax fields when adding JS dependencies. This GitHub issue has a bit of background.1 point
-
Just because it's Monday: <?php /** * ProcessWire module. * * Allow depending modules to be updated from non-standard repositories. * * In absence of this module, your module will continue to work but updates * will point at the regular repository. If you want to avoid that, add * a "requires" entry in your module * * To trigger the custom update routines, add an array "extendedUpdate" to * your getModuleInfo array. It can either contain a "url" entry with the * URL to the JSON data that describes the available update, or a "customMethod" * entry with the name of a public method in your module that returns that * URL. * * If you go the "url" way, the value there is run through wirePopulateStringTags. * You can add placeholders for all of the modules moduleInfo values, the module's * configuration values, the "moduleServiceKey" (PW base version, i.e. pw300, pw280 etc.) * and the module's name as, yeah, you guessed it, "name". * * If you use customMethod, it gets passed an associative array with all these values. * * A simple example for a module using custom updates: * * class TestModule extends WireData implements Module { * public static function getModuleInfo() { * return array( * "title" => _("Test Module"), * "summary" => _("Test for a module with a custom update location"), * "version" => "0.0.1", * "requires" => array("ModuleUpdateCustomUrl"), * "extendedUpdate" => array( * "url" => "https://bitpoet.ddns.net/update/{name}.json?apiVersion={moduleServiceKey}", * // Alternative way to generate the URL through a method in your module: * //"customMethod" => "generateUrl" * ) * ); * } * * public function generateUrl($data) { * return "https://bitpoet.ddns.net/update/" . $data['name'] . ".json?apiVersion=" . $data['moduleServiceKey']; * } * * } * * * A somewhat minimal JSON example response for the test module above: * { * "status":"success", * "class_name":"TestModule", * "module_version":"0.0.2", * "authors":[ * { * "title":"BitPoet" * }, * { * "title":"Anonymous" * } * ], * "pw_versions":[ * { * "name":"2.7" * }, * { * "name":"2.8" * }, * { * "name":"3.0" * } * ], * "download_url":"https://bitpoet.ddns.net/update/TestModule_0.0.2.zip", * "release_state":{ * "title":"Beta" * }, * "summary":"Test for a module with a custom update location", * "module_home":"https://bitpoet.ddns.org/modules/TestModule" * } * * For a complete example, see the live data from the official repo, e.g. * http://modules.processwire.com/export-json/Helloworld/?apikey=pw300 * * The response must either return a property "success" with a true value * or populate an "error" property with a description of what went wrong. * */ class ModuleUpdateCustomUrl extends WireData implements Module { public static function getModuleInfo() { return array( "title" => _("Module Update from Custom Url"), "summary" => _("Extension module that allows modules to be updated from non-standard repos."), "version" => "0.0.4", "autoload" => true, ); } public function init() { $this->addHookBefore("ProcessModule::execute", $this, "hookProcessModuleExecute_customUpdate"); } public function hookProcessModuleExecute_customUpdate(HookEvent $event) { if($this->input->get->update) { $name = $this->sanitizer->name($this->input->get->update); $info = $this->modules->getModuleInfo($name); if(! $info["extendedUpdate"]) return; if(! isset($info["extendedUpdate"]["url"]) && !isset($info["extendedUpdate"]["customMethod"])) { $this->error($this->_('Neither URL nor custom method set in extendedUpdate configuration in module info')); return; } $event->return = $this->downloadDialog($name, $info); $event->replace = true; } } public function downloadDialog($name, $info) { $redirectURL = "./edit?name=$name"; $className = $name; $cfgdata = $this->modules->getModuleConfigData($name); $params = array_merge($info, $cfgdata); $params["moduleServiceKey"] = $this->wire('sanitizer')->name($this->wire('config')->moduleServiceKey); $params["name"] = $name; if(isset($info["extendedUpdate"]["customMethod"])) { $method = $info["extendedUpdate"]["customMethod"]; $module = $this->modules->get($name); $url = $module->$method($params); } else { $url = trim(wirePopulateStringTags($info["extendedUpdate"]["url"], $params)); } $http = $this->wire(new WireHttp()); $data = $http->get($url); if(empty($data)) { $this->error($this->_('Error retrieving data from web service URL') . ' - ' . $http->getError()); return $this->session->redirect($redirectURL); } $data = json_decode($data, true); if(empty($data)) { $this->error($this->_('Error decoding JSON from web service')); return $this->session->redirect($redirectURL); } if($data['status'] !== 'success') { $this->error($this->_('Error reported by web service:') . ' ' . $this->wire('sanitizer')->entities($data['error'])); return $this->session->redirect($redirectURL); } $form = $this->buildDownloadConfirmForm($data); return $form->render(); } public function buildDownloadConfirmForm($data) { $warnings = array(); $authors = ''; foreach($data['authors'] as $author) $authors .= $author['title'] . ", "; $authors = rtrim($authors, ", "); $compat = ''; $isCompat = false; $myVersion = substr($this->wire('config')->version, 0, 3); foreach($data['pw_versions'] as $v) { $compat .= $v['name'] . ", "; if(version_compare($v['name'], $myVersion) >= 0) $isCompat = true; } $compat = trim($compat, ", "); if(!$isCompat) $warnings[] = $this->_('This module does not indicate compatibility with this version of ProcessWire. It may still work, but you may want to check with the module author.'); $form = $this->wire('modules')->get('InputfieldForm'); $form->attr('action', './download/'); $form->attr('method', 'post'); $form->attr('id', 'ModuleInfo'); $markup = $this->wire('modules')->get('InputfieldMarkup'); $form->add($markup); $installed = $this->modules->isInstalled($data['class_name']) ? $this->modules->getModuleInfoVerbose($data['class_name']) : null; $moduleVersionNote = ''; if($installed) { $installedVersion = $this->formatVersion($installed['version']); if($installedVersion == $data['module_version']) { $note = $this->_('Current installed version is already up-to-date'); $installedVersion .= ' - ' . $note; $this->message($note); $this->session->redirect("./edit?name=$data[class_name]"); } else { if(version_compare($installedVersion, $data['module_version']) < 0) { $this->message($this->_('An update to this module is available!')); } else { $moduleVersionNote = " <span class='ui-state-error-text'>(" . $this->_('older than the one you already have installed!') . ")</span>"; } } } else { $installedVersion = $this->_x('Not yet', 'install-table'); } $table = $this->wire('modules')->get('MarkupAdminDataTable'); $table->setEncodeEntities(false); $table->row(array($this->_x('Class', 'install-table'), $this->wire('sanitizer')->entities($data['class_name']))); $table->row(array($this->_x('Version', 'install-table'), $this->wire('sanitizer')->entities($data['module_version']) . $moduleVersionNote)); $table->row(array($this->_x('Installed?', 'install-table'), $installedVersion)); $table->row(array($this->_x('Authors', 'install-table'), $this->wire('sanitizer')->entities($authors))); $table->row(array($this->_x('Summary', 'install-table'), $this->wire('sanitizer')->entities($data['summary']))); $table->row(array($this->_x('Release State', 'install-table'), $this->wire('sanitizer')->entities($data['release_state']['title']))); $table->row(array($this->_x('Compatibility', 'install-table'), $this->wire('sanitizer')->entities($compat))); // $this->message("<pre>" . print_r($data, true) . "</pre>", Notice::allowMarkup); $installable = true; if(!empty($data['requires_versions'])) { $requiresVersions = array(); foreach($data['requires_versions'] as $name => $requires) { list($op, $ver) = $requires; $label = $ver ? $this->sanitizer->entities("$name $op $ver") : $this->sanitizer->entities($name); if($this->modules->isInstalled("$name$op$ver") || in_array($name, $data['installs'])) { // installed $requiresVersions[] = "$label <i class='fa fa-fw fa-thumbs-up'></i>"; } else if($this->modules->isInstalled($name)) { // installed, but version isn't adequate $installable = false; $info = $this->modules->getModuleInfo($name); $requiresVersions[] = $this->sanitizer->entities($name) . " " . $this->modules->formatVersion($info['version']) . " " . "<span class='ui-state-error-text'>" . $this->sanitizer->entities("$op $ver") . " " . "<i class='fa fa-fw fa-thumbs-down'></i></span>"; } else { // not installed at all $requiresVersions[] = "<span class='ui-state-error-text'>$label <i class='fa fa-fw fa-thumbs-down'></i></span>"; $installable = false; } } $table->row(array($this->_("Requires"), implode('<br />', $requiresVersions))); if(!$installable) $this->error("Module is not installable because not all required dependencies are currently met."); } if(!empty($data['installs'])) { $installs = $this->sanitizer->entities(implode("\n", $data['installs'])); $table->row(array($this->_("Installs"), nl2br($installs))); } $links = array(); $moduleName = $this->wire('sanitizer')->entities1($data['name']); if($data['module_home']) { $moduleURL = $this->wire('sanitizer')->entities($data['forum_url']); $links[] = "<a target='_blank' href='$moduleURL'>" . $this->_('More Information') . "</a>"; } if($data['project_url']) { $projectURL = $this->wire('sanitizer')->entities($data['project_url']); $links[] = "<a target='_blank' href='$projectURL'>" . $this->_('Project Page') . "</a>"; } if($data['forum_url']) { $forumURL = $this->wire('sanitizer')->entities($data['forum_url']); $links[] = "<a target='_blank' href='$forumURL'>" . $this->_('Support Page') . "</a>"; } if(count($links)) $table->row(array($this->_x('Links', 'install-table'), implode(' / ', $links))); if($data['download_url']) { $downloadURL = $this->wire('sanitizer')->entities($data['download_url']); $table->row(array($this->_x('ZIP file', 'install-table'), $downloadURL)); $warnings[] = $this->_('Ensure that you trust the source of the ZIP file above before continuing!'); } else { $warnings[] = $this->_('This module has no download URL specified and must be installed manually.'); } foreach($warnings as $warning) { $table->row(array($this->_x('Please Note', 'install-table'), "<strong class='ui-state-error-text'> $warning</strong>")); } $markup->value = $table->render(); if($installable && $data['download_url']) { $btn = $this->wire('modules')->get('InputfieldSubmit'); $btn->attr('id+name', 'godownload'); $btn->value = $this->_("Download and install"); $btn->icon = 'cloud-download'; $btn->value .= " ($data[module_version])"; $form->add($btn); $this->session->ProcessModuleDownloadURL = $data['download_url']; $this->session->ProcessModuleClassName = $data['class_name']; } else { $this->session->remove('ProcessModuleDownloadURL'); $this->session->remove('ProcessModuleClassName'); } $btn = $this->wire('modules')->get('InputfieldButton'); $btn->attr('name', 'cancel'); $btn->href ="./edit?name=$data[class_name]"; $btn->value = $this->_("Cancel"); $btn->icon = 'times-circle'; $btn->class .= ' ui-priority-secondary'; $form->add($btn); $form->description = $this->wire('sanitizer')->entities($data['title']); return $form; } /** * Format a module version number from 999 to 9.9.9 * * @param string $version * @return string * */ protected function formatVersion($version) { return $this->wire('modules')->formatVersion($version); } } Created with massive theft of code from ProcessModule.module I'm going to toy around with this in our local environment and see if I can stitch together a nice workflow with the local git repo and a post-receive hook (once I find the time).1 point
-
#3 try "reloaded" event on the input field. You might check code in aos, eg for inputfieldurlchecker.1 point
-
Check out Browser History API (History.pushState()) that helps you change the url using JS and PJAX libraries that do the heavy lifting for you. Here's one (I haven't used) https://github.com/defunkt/jquery-pjax for History API https://developer.mozilla.org/en/docs/Web/API/History1 point
-
There is a topic and a fieldtype to solve problems like this. https://processwire.com/talk/topic/7542-development-fieldtypefloat-fieldtypedecimal/ http://modules.processwire.com/modules/fieldtype-decimal/ or $code = $pages->get(1)->localName($user->language); switch ($code) { case 'en': setlocale(LC_ALL, 'en_GB.UTF-8'); break; default: setlocale(LC_ALL, 'fr_FR.UTF-8'); }1 point
-
There are several problems in your code: wire('input')->post always returns true, so you can't use this check. wire('input')->post->submit only returns true, if your POST data contains an element having "submit" as name, I can't see this in your form. So you could add a hidden element like this: <input type="hidden" value="1" name="submit"> Also your hidden element containing the page title as value is missing a name attribute Hope it helps! Cheers1 point
-
I just finished a medium sized website/SPA using processwire and vue with vue router and vuex. Has lots of nice features like server side rendering, happy to share details with people if they'd be interested. Shoot me a PM.1 point
-
Hi, I just wanted to point out that we recently ran into the same issue when using Cloudflare's CDN. Weird is the fact that we were able to reproduce the logout issue with a specific user when editing a specific page. Every time the user clicked "Save" for this specific page, she was kicked out. I assume that at this point the IP address changed - from Cloudflare to the actual user's IP address or the other way around. The error is the same as in the quoted post above: User 'somebody' - Error: Session fingerprint changed (IP address or useragent) (IP: 162.158.XX.XX) The IP address is - just as above - in the Cloudflare range: https://www.cloudflare.com/ips/ We are currently working around this issue by using a different Domain name to access the ProcessWire backend. This domain is not routed through Cloudflare and the approach works fine for us so far. I can provide further information if required.1 point
-
Thanks @Robin S - I am bad at remembering that New version should fix everything and should also take care of that extra "\/" that you saw at the start. Can you please confirm that your CaptainHook panel output now looks like this - note the "Site Modules" (along with "Wire Core" and "Wire Modules" section headers) and the way the files now start with just their main folder, eg: AdminCustomFiles/AdminCustomFiles.module compared with the old: /site/modules/AdminCustomFiles/AdminCustomFiles.module I think this new way makes it much easier to scroll down to find what you are looking for. Regarding FormBuilder - yes, I use the forms API. I'll see what I can do about figuring out what the issue might be with the template detection shortly. I have a hunch that it's related to the way I am getting the template of the page - because I am in ini() and not ready() when I need to do this, it's a bit of a hack1 point
-
1 point
-
@szabesz - firstly, sorry for renaming that setting on you I just posted a response in that Wishlist thread - I agree that we need this badly - I have added some suggestions for how, and also to include a "Breaking changes" flag in the ProcessWire Upgrades module, which I also think is important.1 point
-
I wish there was a supported way to display a simple CHANGELOG that comes with a module. Other CMSes utilize this dead simple but very useful feature. I wonder why we have to live without it. Once I pointed this out, but only four of us seem to care including @adrian, of course Why are people are so uninterested in this? Strange. Last time I spent at least 5 minutes to find the "Admin Style" option of Tracy because it was renamed to "Server Type Indicator". A simple message like "Admin Style was renamed to Server Type Indicator" would have saved me the hassle. There are so many settings of Tracy that I often get lost, especially when things are renamed or moved around.1 point
-
@Jozsef - that error should be fixed in the latest version - please let me know if you have any more problems with it. @Ivan Gretsky - latest version adds that new setting - let me know if it works as expected. I also added to/revised the explanatory text for the various access settings in the hopes of makes it easier to understand. Cheers, Adrian1 point
-
Tracy went to language school! Now she shows page titles and names in the current language, along with the title and name of that language in the Summary section. And she has a completely new Language Info section showing a summary of the title, name and active status of each language. Hopefully this should help to debug why something is not showing on the front-end. The ⓘ icon highlights titles/names that are missing in the current language. It shows the default title/name instead, along with this icon. Let me know if you notice any problems!1 point
-
No worries. Had just come to that conclusion just before your response. Actually, I am the idiot! I notice that 'acceptFileTypes' is not documented! Users shouldn't have to read the module code to know how to use it ! When I get the time.....(ahem..). Yes, so what was happening is that good ol' WireUpload was rejecting those file extensions at this point. Glad you got it sorted and now thanks for the reminder that I'll need to update the docs .1 point
-
There are 6 10 38 episodes now, so I'll just link to the channel: https://www.youtube.com/channel/UCAC6bGszwXecqp1Nq2qn1Sg1 point
-
So, this is kind of a heads-up: I've just pushed version 1.3.2 of ProcessChangelog to GitHub, and this version includes a bunch of UI changes. Hopefully they make as much sense to you folks as they do for me. To be honest the old look of the module was a bit too ProcessWire 2.0'ish, and I've also been meaning to add clickable action/template links etc. for a while now.1 point
-
ProcessBatcher is not compatible with 3.0 devns at the moment, as far as I know. But why not try some custom code? It's just four lines actually. <?php $pagesToDelete = $pages->find('id>1000,template=mytemplate'); foreach ($pagesToDelete as $p) { $pages->delete($p, true); }1 point
-
Hi ottogal, Sorry for my late response. I currently don't have time to update Batcher, at least not for the next month. The module needs a rewrite because a lot changed since this was released, for example: Native support of ProcessWire's modal Make use of InputfieldSelector to build the selector strings ... I hope to update the module at the end of may, but since I don't know the release date of Pw 3 I can't promise... unless someone else takes over. Cheers1 point
-
Also, curious if any other pages on your site load, or do you just get the homepage? If you can only get the homepage (which is what I suspect) this points to .htaccess being disabled or mod_rewrite not being installed. The first thing to do is to load the /.htaccess file and edit it, inserting some garbage at the top like "aljkealkjfaljkfa". Save and try to view your homepage. If you still get your homepage (as opposed to a 500 error message) then your server is not reading the .htaccess file. Your sysadmin may need to add "AllowOverride All" to your domain's configuration in httpd.conf.1 point