Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Inxentas last won the day on April 3 2018

Inxentas had the most liked content!

Community Reputation

18 Good

About Inxentas

  • Rank
    Jr. Member

Recent Profile Visitors

1,340 profile views
  1. I have a big collection of Pages with a template called page-product. These products have a few fields describing their properties. Now my client wants to split this template into various types of products, each with their own set of properties. The most obvious solution would be to make a few new specific templates, like page-product-foo or page-product-bar. Doing this would also mean rewriting a lot of existing selector logic. So what I could also do, is allow the client to append a child to the Product that has these properties. For me that would be a good solution, but for my client this might be confusing. So I'm looking for a user-friendly way to do the same. Ideally, these Properties should be filled in when editing a Page without having to mess with it's Children. One option is to make a Page with children for each type of product and make it a dropdown. And subsequently have each "property" field be visible only when a specific product-type is chosen. However, I'm not sure if this is the best way to go about it - since at the frontend I'd have to take these fields into account, and I'm not sure whether I'll be able to deduct in code which field should be shown (I guess this could be pulled from $fields->MyFieldName). Does anyone have a better idea on how to implement such a feature?
  2. Thanks guys, but I'm indeed aware how Google works 😃 and had hoped to find a less hacky way of doing things then straight up SQL. The weird this is that when I try to collect the language setting from a user via a selector and $pages, I don't get the actual field value - I get the value in the $user object instead. Something that works around this would also work well for me.
  3. I'm updating a website that is about a year old. The site has two languages: Dutch (default) and English. Now the clients wants English to become the default language. The site has a ton of translations already, so changing the default language in the backend is not really an option. So I'm looking for a way to simulate that behaviour, but in my experience doing it with redirects will lead to messy and unwanted behaviour. Can anyone tell me what the proper way of doing this is?
  4. Hi there! I am making a webapp where the admin can create Surveys, Questions and Answers. These are all Pages with a normal Parent / Child relationship. I want to prevent the admin from making changes to a Survey or it's children as soon as the submissions roll in. For that purpose I am using this code inside a hook, which basicly checks what template the soon-to-be-saved page is. I then find the proper Survey and check whether we have submissions for that Survey in an external table: public function testSave($event) { $page = $event->arguments('page'); $survey = null; switch($page->template->name){ case 'survey': $survey = $page; break; case 'question': $survey = $page->parent; break; case 'answer-choice': case 'answer-open': case 'answer-rating-1-10': case 'answer-rating-1-100': case 'answer-rating-likert': $survey = $page->parent->parent; break; } if ($survey) { $res = $this->db->query("SELECT * FROM submissions WHERE surveyId = " . $survey->id); if($res->num_rows > 0){ $this->error("There are already " . $res->num_rows . " submissions for " . $survey->title); } } } Works like a charm, with one exception. I do wish to prevent the page from being saved, but throwing an error doesn't prevent this. It doesn't seem to matter how I implement this in my module's init() method. These two lines of code have the exact same effect: the red warning appears, but values are still saved. $this->pages->addHookBefore('Pages::save', $this, 'testSave'); $this->pages->addHookBefore('Pages::saveReady', $this, 'testSave'); Is there a way to tell ProcessWire to NOT save the page when a certain condition is met? Thanks for your future replies!
  5. If the server would have a classic timeout on a foreach() it wouldn't serve the page at all... but it does. I'll check the logs as soon as I have access again. Hosting company changed it's control panel... I'll check that module! It goes a bit against the intent of the application to be dependent on superuser actions, but at the very least I learn a few more tricks. I also uploaded a bulk of images on the local server. This one behaves more natural. The first request I do times out due to trying to compress 303 images in a single request. When I do a second request, many images are already compressed so eventually it doesn't time out anymore. This is acceptable. It seems there's some artificial limit on the live server or something.
  6. I have an image gallery based on an Image field with about 300 images in it. That caused a little issues with uploading, since it's on a shared host I had to do that piecemeal in order to not overload the server. I kept refreshing the frontend of that page to make sure the server doesn't run out of memory compressing the images, as such an amount obviously requires thumbnails. After 160 images the frontend no longer updates. I can add images to the backend, but they are not shown on the frontend. The images field is not limited in any way. Is there a cap to the amount of images uploaded to a single field? Or any other aspect that might explain such behaviour? The images show up fine in the backend, but when I foreach() through that field I only get 160 results. Any idea what might be going on?
  7. Hello there! I have a question about translations in external files. I remember a topic I started about a year ago about the subject, but I can't find it at the moment. In that topic I had some issues getting translations to work in PHP includes in templates. The solution was the way these files were included. Now I have a similar problem, but it's a bit different. So far I've been able to let external files communicate with the ProcessWire API by including the index file. Imagine that you'd make a folder named ajax in the site folder. Any AJAX script stored there can access the $pages variable. If you set the user language ($user->language) you can even get the translated fields without issues. However, I don't seem to be able to work with translated files. Whenever I include the index file... include_once('./../../index.php'); I can access fields without problems, they even translate properly... $example = $pages->get('/example-page-url/')->example_field; But when trying to access a file based translations, I get some weird inconsistent behavior. Whenever a string is surrounded by the translation method, it is found in the backend, but not translated, even when the users language has been set to the required language: _('This string is recognized, but not translated.') Secondly, when I happen to include another file in that file, translatable phrases are no longer recognized unless I put an extra underscore in the method name: __('I have no idea why, but only like this does the backend recognize me.') Phrases found in this way are also not translated, in fact they cause an error due to the method "__" not existing. Note, those are two underscores. I am at a loss why this behaviour takes place. Does anyone know what I could be doing wrong? To summarize: translations in external AJAX scripts that include the index file, are recognized by the backend but not actually translated. whenever these files include other files, translation behavior get weird. The method requires an extra underscore for the phrase to be found, but logically this causes an error.
  8. Amazing how simple ProcessWire stuff can be to implement! Having no fall back is fine, but thanks for that heads up.
  9. Wow, thanks for your speedy reply @BitPoet! This worked like a charm. I didn't realize the input class was only required for templates. Will this play nice with multi language websites, by the way? I might was well implement multi language support right away.
  10. Hi there! I'm writing a module for a website, and it needs to store a bit of text. This works fine: $inputfields = parent::getInputfields(); $message = $this->modules->get('InputfieldTextarea'); $message->attr('name', 'message'); $message->label = 'Message'; $message->required = true; $message->set("inputfieldClass", "InputfieldCKEditor"); $inputfields->add($message); ...except the part about the inputfieldClass. Is it possible to make these fields have a "CKEditor" instead? My client would need to add a little markup.
  11. I'm sorry but I updated my entire website, so this link is no longer active.
  12. mel47'suggestion should work. Remember to put setlocale() in your config. A fresh PW installation should remind you of this. http://php.net/manual/en/function.setlocale.php You might be interested in making the <HTML> tags on your website obey the locale as well. https://www.w3.org/International/questions/qa-html-language-declarations
  13. Why not... make a Template for months with a title (Januari-December) and index (1-12) field. Then make 12 pages with this template representing each month. make a Field (month) of the Page type. Configure it to accept only 1 choice of the template we made for the month. Voila, a translatable month picker! make a Field (year) which can be an Integer with a minimum and maximum value of your choice. This way you are 100% sure that the input of your client is clean without having to mess with a regex. The downside is that it requires two fields instead of one, and some data management. I find that permissable as you explicitly don't want to store a full datetime. You could configure the template that contains these Fields to display them next to another at 50% width to show the user their intent to be used together. Consider making these fields required.
  14. I did a develop and made dis, a procedural galaxy that, well... gets procedurally generated. You can use your mouse to zoom in/out and look around. You can click on stars to get their specific information. It's inspired by the galaxy maps found in games like Elite Dangerous and Eve Online. http://fransvanberendonk.com/procedural-galaxy/ Basicly I've made Templates and Fields for Spectral Classes and Subclasses, and looked up online what a realistic distribution scheme would be for these. This data is grouped under a page that renders then as JSON for the Javascript application to work with. I wrote that app in AngularJS, so I could add more controllers to it later. It also uses BabylonJS to calculate the number and position of stars and display them on screen, and assigns each a Spectral Class and Subclass after some shuffling of the dataset. Using a secondary controller only used in a ProcessModule for the CMS, I can broadcast events that redo the procedure using different variables (see screenshot below). No particular purpose, just thought I'd share a cool side project that rolled out of my exploration of these JS frameworks in conjunction with PW.
  15. Congrats on account of your first page going live! I like your responsive layout.
  • Create New...