Leaderboard
Popular Content
Showing content with the highest reputation on 10/26/2017 in all areas
-
@ryanC I understand that you want to learn PHP from ground up but building upon a CMF like ProcessWire has the benefit of a few things: you do not have to reinvent the wheel, you can find plenty of examples in this forum to solve all basic needs and more, when you ask for help others can help you out more easily because you speak the same lingo, so to speak For example: https://processwire.com/talk/topic/407-processing-contact-forms/?do=findComment&comment=36384 Your basic form processes the received data without sanitizing it which is not good. As @adrian pointed out above, you validate the email but discard the validated value afterwards. All in all, a lot should be ironed out before your form can work and be secure but since you are on ProcessWire I recommend seriously considering switching to a code snippet like the one I linked to. You can start by reading up on API variables over here (as an introduction): https://processwire.com/api/variables/ This page is not complete since more has been added but you can find the rest here: https://processwire.com/api/ref/ The PW form example should make more sense after looking up the relevant API variables. If you happen not to understand all the bits you can – of course – use a search engine to find things like: https://stackoverflow.com/questions/3700042/in-php-what-does-represent or ask a question in the relevant forum discussion. You made sure you can send emails with ProcessWire, and now it's time to make sure you also use ProcessWire to build that form. I'm sure you will not regret it4 points
-
Hi @abdus, Do you know if it's possible to use this technique to add config fields such as minWidth and maxWidth to the template context for InputfieldImage? My first attempt isn't working: // Add more image config fields to template context $this->addHookMethod('InputfieldImage::getConfigAllowContext', function (HookEvent $e) { $allowables = ['minWidth', 'minHeight', 'maxWidth', 'maxHeight']; $e->return = array_merge($e->return, $allowables); }); I have a feeling that the reason this doesn't work is because those config fields are inside a fieldset. Adding the whole fieldset would be fine, but the problem is that the fieldset doesn't have a name to add to getConfigAllowContext(). Any ideas? ----- EDIT: have sussed it out. I used another hook to give names to those fieldsets. // Give names to image config fieldsets $wire->addHookAfter('InputfieldImage::getConfigInputfields', function(HookEvent $event) { /* @var InputfieldWrapper $wrapper */ $wrapper = $event->return; $f = $wrapper->getChildByName('maxWidth'); $fieldset = $f->parent; $fieldset->name = 'maxDimensions'; $f = $wrapper->getChildByName('minWidth'); $fieldset = $f->parent; $fieldset->name = 'minDimensions'; }); // Add more image config fields to template context $this->addHookMethod('InputfieldImage::getConfigAllowContext', function (HookEvent $e) { $allowables = ['maxDimensions', 'minDimensions']; $e->return = array_merge($e->return, $allowables); });4 points
-
There is a little error in your hook code: //... $field = $event->object; $href = $this->config->urls->admin.'page/add/?parent_id='.$page; $field = $this->modules->get('InputfieldButton'); //... In this hook, the event object is ProcessPageEdit, not a field. And you also overwrite $field two lines below. Rather than removing the existing button and adding a new one, you can change the text of the existing button. Here is another way it could be done: $wire->addHookAfter('ProcessPageEdit::buildFormChildren', function(HookEvent $event) { $form = $event->return; // The InputfieldWrapper on the "children" tab $ppe = $event->object; // ProcessPageEdit $page = $ppe->getPage(); // ProcessPageEdit contains a method to get the page being edited if(in_array($page->template->name, ['event_events', 'event_dates', 'event_businessvacations', 'event_specialbusinesshours'])) { $button = $form->getChildByName('AddPageBtn'); // Get the button if($button) $button->value = 'Add new event'; // Change the text } });4 points
-
I forgot to add this one. Verride Santa Catarina is among the most upscale hotels in Lisbon, set in a historic townhouse in the heart of the city. http://verridesc.pt/ It's a modular design that allows pages to be built using a set of blocks the admin can customise.3 points
-
Here's a wee one, single pager, for a Foccacias place here in Porto that I can say is very good: http://rt.com.pt/3 points
-
I'm sure other people have better solutions, but I usually handle this with redirects. I usually create two templates: redirect-internal redirect-external So in your example, I would create a page for about/newsroom/ that uses an redirect-internal template and redirects to news/newsroom/. Here is what my fields look like for redirect external: Here is what my fields look like for redirect-internal: redirect-external.php <?php namespace ProcessWire; $session->redirect( $page->redirectTo ); redirect-internal.php <?php namespace ProcessWire; $session->redirect( $page->redirectToPage->url );3 points
-
Hello and welcome to the forums. You arrived at the right place we are a friendly community happy to help newcomers. About your question: Yes, but as the agency said. It should be configured to do so. Wordpress does not have this functionality either. every wordpress theme comes with their own settings and options. So the agency programmed your site but it didn't program Processwire to include such settings. Maybe wasn't in the original specs. As you mention that you know html and css it seems that you have all the required knowledge to integrate this feature in your site. Just go to the templates folder and take a look for the files. You will encounter many files with html in them. One of them will have the <head></head> tags and you could change the fonts easily3 points
-
3 points
-
It's just a question of proper naming. See this working example: <?php // MyModule.module class MyModule extends WireData implements Module, ConfigurableModule { public static function getModuleInfo() { return array( "title" => "MyModule", "description" => "Adds a button to the module config that executes the foo() method", "version" => "0.0.1", "autoload" => true ); } public function init(){ $this->addHookBefore("ProcessModule::executeEdit", $this, "foo"); } public function foo(HookEvent $event){ if($this->input->post->foobutton) { $this->session->message("foo() executed!"); $this->session->redirect($this->page->httpUrl . "edit?" . $this->input->queryString); } } } <?php // MyModuleConfig.php class MyModuleConfig extends ModuleConfig { public function __construct() { $this->add( [ [ 'name' => 'foobutton', 'type' => 'InputfieldSubmit', 'value' => 'Fire Foo Method', ] ] ); } }3 points
-
https://github.com/ryancramerdesign/skyscrapers2 This repo is from Ryan and it consists of the template files used in the Skyscrapers v2 demo site. There is no data with it and it is not an installable site profile. https://github.com/dadish/pw-skyscrapers-profile This repo is from @Nurguly Ashyrov and is a complete installable site profile, including the skyscrapers data and required modules. It was made by combining the data from the old v1 Skyscrapers profile with the v2 templates. The creation of the profile is mentioned in this video: https://github.com/ryancramerdesign/SkyscrapersProfile2 points
-
Turn them into links. Make sure to have no spaces in the phone number (inside href) <a href="tel:05345345345">Call Us!</a> To remove the spaces from a given phone number you can use: $spaced = ' 345 345 234 '; $clean = preg_replace('!\s+!', '', $spaced); $telUrl = "tel:$clean";2 points
-
you need to use pw's built in translation tools on the server side and send the array to your client (js): // some php file loaded in the backend $config->js('colheadersformyhandsonfield', [ 'col1' => __('First column'), 'col2' => __('Second column'), ]; then you can assign them in the js: $(document).on('afterInit.rht', '.handsontable', function(e, hot) { var colheaders = ProcessWire.config.colheadersformyhandsonfield; hot.updateSettings({ colHeaders: colheaders, minCols: colheaders.length, maxCols: colheaders.length, }); });2 points
-
With this little tutorial I want to show you how you can change the text of the add new button inside the children tab. This is the default button text which will be rendered on every template where children are allowed: And this is how it look likes after the manipulation: So it is a little bit customized. Maybe you can make it also with JS but I show you a way to change it via a hook inside the ready.php. Copy and adapt the following code into your ready.php. $pages->addHook('ProcessPageEdit::buildForm', function($event) { $page = $this->pages->get($this->input->get->id); $template = $this->pages->get($this->input->get->id)->template; //run the code only on the following templates -> adapt it to your needs if(($template == "event_events") || ($template == "event_dates") || ($template == "event_businessvacations") || ($template == "event_specialbusinesshours")) { $form = $event->return; $field = $event->object; $href = $this->config->urls->admin.'page/add/?parent_id='.$page; $field = $this->modules->get('InputfieldButton'); $field->attr('id+name', 'add_event'); $field->attr('class', $field->class); $field->attr('value', 'Add new event'); $field->attr('href',$href); $field->attr('icon','plus-circle'); $form->insertAfter($field, $form->get("AddPageBtn")); $form->remove($form->get("AddPageBtn")); } }); You can use the code as it is, but you have to adapt the if conditions to run it only on the templates you want. In my case I run it on 4 different templates. You can also change the icon if you want. Hope this will be helpful for some of you!2 points
-
2 points
-
Just wondering, since this is a dev site, is it a new site? If yes, was there a reason to install ProcessWire 2.3 or that's how the site was handed over to you? Edit: Welcome to the forums and ProcessWire.. .2 points
-
Hi @mike62, thats much at once, updating from 2.3 to the latest version. Depending on the used third party modules in that site, you may be able to update to version 2.7.3, what was the last version before changing to 3.0.x, what included a change to use PHP namespace. So, why exactly do you want to upgrade? Do you need some special module that isn't available for pw 2.3.x? With that $image thing, please check if you are using a single image field or if it is a multiimage field. If it is a multi image field (that is by default), you need to to select one image out of the collection, maybe ->first(). Also you should check if there is at least one image stored within the field: $image = $page->home_header_image->first(); if('' != $image->url) echo "<img src='{$image->url}' alt='{$image->description}' />";2 points
-
I submitted a request to include it in the core: https://github.com/processwire/processwire-requests/issues/1262 points
-
Some introduction... This module is experimental and there are probably bugs - so treat it as alpha and don't use it on production websites. I started on this module because there have been quite a few requests for "fake" or "invisible" parent functionality and I was curious about what is possible given that the idea sort of goes against the PW page structure philosophy. I'm not sure that I will use this module myself, just because I don't really see a long list of pages under Home (or anywhere else) as untidy or cluttered. I would tend to use Lister Pro when I want to see some set of pages as a self-contained group. But maybe others will find it useful. At the moment this module does not manipulate the breadcrumb menu in admin. So when you are editing or adding a virtual child the real location of the page is revealed in the breadcrumb menu. That's because I don't see the point in trying to comprehensively fool users about the real location of pages - I think it's better that they have some understanding of where the pages really are. But I'm open to feedback on this and it is possible to alter the breadcrumbs if there's a consensus that it would be better that way. Virtual Parents Allows pages in Page List to be grouped under a virtual parent. This module manipulates the page list and the flyout tree menu to make it appear that one or more pages are children of another page when in fact they are siblings of that page. Why would you do that instead of actually putting the child pages inside the parent? Mainly if you want to avoid adding the parent name as part of the URL. For example, suppose you have some pages that you want to be accessed at URLs directly off the site root: yourdomain.com/some-page/. But in the page list you want them to be appear under a parent for the sake of visual grouping or to declutter the page list under Home. Example of how the page structure actually is Example of how the page structure appears with Virtual Parents activated How it works This module identifies the virtual parents and virtual children by way of template. You define a single template as the virtual parent template and one or more templates as the virtual child templates. Anytime pages using the child template(s) are siblings of a page using the parent template, those child pages will appear as children of the virtual parent in the page list and tree menu. You will want to create dedicated templates for identifying virtual parents and virtual children and reserve them just for use with this module. Features Adjusts both page list and tree flyout menu to show the virtual parent/child structure, including the count of child pages. Works everywhere page list is used: Page List Select / Page List Select Multiple (and therefore CKEditor link dialog). Intercepts the "Add page" process in admin, so that when an attempt is made to add a child to a virtual parent, the child is added where it belongs (the next level up) and the template selection is limited to virtual child templates. Intercepts moving and sorting pages in the page list, to ensure only virtual children may be moved/sorted under the virtual parent. Superusers have a toggle switch at the bottom of the page list to easily disable/enable Virtual Parents in order to get a view of what the real page structure is. Usage Install the Virtual Parents module. In the module config, enter pairs of parent/child template names in the form virtual_parent_template=virtual_child_template. If needed you can specify multiple pipe-separated child templates: virtual_parent_template=child_template_1|child_template_2. One pair of template names per line. There is a checkbox in the module config to toggle Virtual Pages on and off, but it's more convenient to use this from the page list. Notes It's important to keep in mind the real location of the virtual child pages. This module is only concerned with adjusting the appearance of page list and tree menu for the sake of visual grouping and tidiness. In all other respects the virtual children are not children of the virtual parent at all. It's recommended to select an icon for the virtual parent template (Advanced tab) so virtual parents are marked out in the page list as being different from normal parent pages. Do not place real children under a virtual parent. There is some protection against this when moving pages in the page list, but when it comes to changing a page's parent via the Settings tab the only protection is common sense. https://github.com/Toutouwai/VirtualParents1 point
-
To the best of my knowledge, there is no module that will make phone numbers on your site clickable. We have a Phone Fieldtype, but I don't think that's what you want.1 point
-
https://processwire.com/talk/topic/6196-easy-search-on-pw-forums-with-google/?tab=comments#comment-60632 https://processwire.com/talk/topic/6196-easy-search-on-pw-forums-with-google/?do=findComment&comment=1533431 point
-
Sorting the results of a selector Limiting the number of results returned by a selector1 point
-
I could reproduce the problem with a clean install. It seems that all event listeners on the page list select items get attached twice. I didn't have time to check with different browsers though. I might be able to do some more digging tomorrow when I'm back at work.1 point
-
Quick answer will be in a template file. I am assuming your next question will be, what is a template file? If I am not wrong, I would encourage you to first read up on ProcessWire, at least get to know the basics. As for a windows server, I have zero experience but IIRC, some people have had success running ProcessWire on such. Welcome to the forums.1 point
-
Now that you mention it... There's a video block that's missing now, still being produced. That will probably reveal a bit more.1 point
-
Thanks sbazesz, that link looks extremely helpful, exactly the type of thing I'm looking for. I will see about integrating it, if I have more specific questions about that I will probably have some follow-up questions. I'm starting to get a better feel for Processwire in general, when I first started my test site I wanted to give up, now I have multiple templates, have hanna running, a search form, all that good stuff. So I'm sure I will get this down too.1 point
-
Don't know the fix, but here is the issue for this https://github.com/processwire/processwire-issues/issues/3311 point
-
That's probably a question for @ryan - I doubt he ever expected someone to install Uikit and remove the default theme. It sounds like he is planning on making Uikit the default sometime soon, but not sure his plans for the other themes - what will be included / installed by default? But I definitely agree that there needs to be some checks added to make sure if there is no default theme installed, that at least one of the modern ones is used, rather than falling back to an old one which most new PW users have never seen.1 point
-
1 point
-
Design looks more like some kind of food industry or distributor. No photos of the place it self.1 point
-
1 point
-
Did you see @Robin S's post above about max_input_vars? Did you try that? Do you have $config->debug set to true for debugging? Error messages? Error message in the dev console?1 point
-
Hi @AVD, usually changing font on the fly is not the best choice you could made on the front end, mainly because every font has a different way to handle kerning, line-height, weight, etc. This may cause issues in the whole design of the site, since it may be (or maybe not) possible that some elements on your page breaks the whole layout. Moreover I think that Wordpress themes (like Avada) offers way too many options that, even if fascinating at first, may lead to uncontrollable results on the front end, resulting in a mess (especially regarding the communication aspect of your - or your client - brand) if not handle properly. That said it's not hard to build some sort of switch on the Processwire backend to change fonts on the various pages, but I'd suggest to evalutate this option twice, if not mandatory for what you are achieve1 point
-
Thanks for the quick response. I have tried this before but it doesnt seem to work. This was because I had a writing mistake in my code. Now it works1 point
-
agree but of course you can combine markup regions and includes... agree1 point
-
Wow, thank you @adrian this works like a charm. Great community, thank you for your investment and also for all your plugins! One question: why is this not a default when only one Theme is installed? Btw. Sorry for my miserable post above, it was not even finished1 point
-
Thanks very much for figuring that out @Robin S - I certainly wasn't testing with a newly created/unsaved page. I have committed your fix. Cheers!1 point
-
Thanks tpr! I'm not seeing any PHP errors, but I'm still seeing some display issues. When viewing the AOS's module settings page with AdminThemeUikit, the enabled modules boxes are to big and the screen scrolls a lot because of it. To fix it, I had to add to src/aos_config.scss // fix AdminThemeUiKit from expanding the min-height at runtime .InputfieldContent.uk-form-controls{ min-height: auto !important; } There are couple of others small issues, but I'll follow up on Github.1 point
-
Update: Multi Sites Sites Manager Version 0.0.3. Multi Sites is dead! Long live Multi Sites!! Happy to announce Beta Release of Sites Manager. Please note, no upgrade path from versions 001 or 002 of Multi Sites. I have updated the first post. Download: GitHub Demo: Remote server single site install (PW 3.x + AdminThemeUIKit). YouTube Documentation: GitHub Changelog Changed name to Sites Manager (formerly Multi Sites). Thanks to @szabesz for suggestion. Fixed bugs in Type or Paste method (key=value pairs must now be separated by new line). Beta release.1 point
-
Ok, so that sounds promising. What happens if you run that Console panel code without the Mail Interceptor activated. Does the email get sent?1 point
-
v162 is uploaded, changelog here. The docs still needs to be updated (FieldOverrides and the new Branding logo feature at least).1 point
-
No, PW 2.3 is no insecure software. It's only missing some tons of new features. I'm also have some PW 2.3 versions running until now, (and don't see any reason to update them).1 point
-
At present, all templates are rendered via '_main.php' but each template that needs to be a rendered page (basic-page, blog-index, blog-entry etc.) uses the alternate template filename instead of '_main.php' being appended. Hence: // _main.php <?php include("./includes/header" . ".php"); ?> <?php include("./views/{$page->template->name}" . ".php"); ?> <?php include("./includes/footer" . ".php"); ?> and the header which is included on every page: <?php namespace ProcessWire; ?> <header> <div class="container"> LOGO, MENU ETC... </div> <?php if ($page->template == "tag-entry") { $title = "Processwire " . strtolower($page->title) . " tutorials"; } elseif ($page->parent->template == "blog-entry") { $title = $page->parent->title; } else { $title = $page->get("altTitle|title"); } ?> <div class="container pt-5 pb-6"> <h1 class="display-3"><?= $title; ?></h1> <?php if ($page->subtitle): ?> <p class="subtitle"><?= $page->subtitle; ?><p> <?php endif; ?> <?php if ($page->template == "blog-entry" && $page->parent->template == "blog-entry"): ?> <p class="date-and-cat"><span>Posted on</span> <strong><?= renderPostDate($page->parent) ;?></strong> <strong><?= renderTags($page->parent); ?></strong></p> <?php elseif ($page->template == "blog-entry" && $page->parent->template == "blog-index"): ?> <p class="date-and-cat"><span>Posted on</span> <strong><?= renderPostDate($page) ;?></strong> <strong><?= renderTags($page); ?></strong></p> <?php endif; ?> </div> </header> So, using another method such as markup regions, not sure how to render this. Maybe something like: // _main.php <?php if ($page->template == "tag-entry") { $title = "Processwire " . strtolower($page->title) . " tutorials"; } elseif ($page->parent->template == "blog-entry") { $title = $page->parent->title; } else { $title = $page->get("altTitle|title"); } ?> <region id="header"> <div class="container pt-5 pb-6"> <h1 class="display-3"><?= $title; ?></h1> <?php if ($page->subtitle): ?> <p class="subtitle"><?= $page->subtitle; ?><p> <?php endif; ?> <region id="date-and-cat"></region> </div> </region> and a blog page for example: // blog-entry.php <region id="date-and-cat"> <?php if ($page->parent->template == "blog-entry"): ?> <p class="date-and-cat"><span>Posted on</span> <strong><?= renderPostDate($page->parent) ;?></strong> <strong><?= renderTags($page->parent); ?></strong></p> <?php elseif ($page->parent->template == "blog-index"): ?> <p class="date-and-cat"><span>Posted on</span> <strong><?= renderPostDate($page) ;?></strong> <strong><?= renderTags($page); ?></strong></p> <?php endif; ?> </region> Not really sure here. I also have include files inside loops and stuff like that. I think my best bet is to start with empty templates and build it up rather than modifying my existing ones which is just confusing me no end. Don't really want to divert this thread too much though.1 point
-
wow, did'nt read all the answers, but it seems nobody mentioned markup regions anywhere? soma's post is a must-read of course, but it's also from 2011 and we now have the same functionality a lot easier and cleaner imho: https://processwire.com/blog/posts/processwire-3.0.62-and-more-on-markup-regions/ a simple setup could be: _main.php <html> <head> <!-- scripts&co --> </head> <body> <section id="header">your header, menu or the like...</section> <region id="main"></region> <section id="footer">your footer</section> </body> </html> home.php (really no other markup than this in this file!) <section id="main"> <h1>Welcome to my website!</h1> <p>This is the awesome text of my awesome website</p> </section> blogitem.php (for example) <section id="main"> <h1>Blog Item <?= $page->title ?></h1> <?= $page->body ?> <ul> <?php $page->siblings("id!=$page")->each(function($p) { echo "<li><a href='{$p->url}'>{$p->title}</a></li>"; } ?> </ul> </section> This will render your website with header and footer, inject scripts on all sites and just change the content of the main section on your pages.1 point
-
There exist two Pro modules which will help you to build this e-commerce website. Padloper (already mentioned) and Variations : https://variations.kongondo.com (check the tutorial and the video) Also there are two good reads on Snipcart, a tutorial and a case-study - a must read even if you plan to not use Snipcart: https://snipcart.com/blog/processwire-ecommerce-tutorial https://snipcart.com/blog/case-study-ateliers-fromagers-processwire Welcome to the forum @Samk80 and good day to you1 point
-
Here's a working example for you: <?php namespace ProcessWire; $showForm = true; if ($input->post->upload) { $tempDir = wire()->files->tempDir('userUploads')->get(); $uploaded = (new WireUpload('uploadedFile')) // same as form field name ->setValidExtensions(['txt', 'png', 'jpg', 'pdf']) ->setMaxFiles(1) // remove this to allow multiple files ->setMaxFileSize(10 * pow(2, 20))// 10MB ->setDestinationPath($tempDir) ->execute(); // $page = $pages->get(1234); foreach ($uploaded as $file) { $filePath = $tempDir . $file; // $page->files->add($filePath); echo $filePath . "<br>"; } // $page->save('files'); if (count($uploaded)) { echo sprintf("Uploaded %d files", count($uploaded)); $showForm = false; } } ?> <?php if ($showForm): ?> <?php // Adding enctype is crucial!! ?> <form method="POST" action="./" enctype="multipart/form-data"> <label for="uploadedFile"> Upload: <?php // suffix name with [] and add multiple attribute if you allow multiple files ?> <input type="file" name="uploadedFile[]" id="uploadedFile" multiple> </label> <div> <button name="upload" value="1">Upload</button> </div> </form> <?php endif; ?>1 point
-
Thanks for your detailed answer! You are being very generous, thank you! In the meantime I did install your fork and did not run into any issues. This filed should be in the core, btw... Let's see what @sforsman has to say. He has not logged in for a while, but one never knows1 point
-
Hi all, I'm new to Processwire, I just wanted to say thanks Martijn for this step by step guide. I would highly recommend this to any Mac user getting started with Processwire. I also followed these steps for using Gmail as the mail server. I would say the benefits of following a manual install (for a noob in terms running a local server) are high. I've now learned HOW the configuration works, and where the settings are stored, rather than running an install process. Thanks again! Dave1 point
-
Merry Christmas to everybody. (Missing Christmas Emoticon) The JavaScript File: $(document).ready(function() { // instantiate WireTabs if defined $('body.hasWireTabs #ModuleEditForm').WireTabs({ items: $("#ModuleEditForm > .Inputfields > .InputfieldWrapper"), }); }); The Module: <?php class ModuleSettingsTab extends Process implements ConfigurableModule { /** * * @return array * */ public static function getModuleInfo() { return array( 'title' => 'Module Settings Tabs', 'version' => 000, 'summary' => 'Provide Tabs for module settings screen' ); } public function __construct() { $this->wire('config')->scripts->add(wire('config')->urls->ModuleSettingsTab.'ModuleSettingsTab.js'); } /** * Initialize the module * */ public function init() { } /** * Module configuration * */ public function getModuleConfigInputfields(array $data) { wire('modules')->get('JqueryWireTabs'); $inputfields = new InputfieldWrapper(); $tab = new InputfieldWrapper(); $tab->attr('title', 'Settings'); $tab->attr('class', 'WireTab'); $markup = $this->modules->get('InputfieldMarkup'); $markup->label = 'Settings'; $markup->value = '<p>Just a placeholder for some inputfields.</p>'; $tab->add($markup); $inputfields->add($tab); $tab = new InputfieldWrapper(); // $tab->attr('id', 'ext_settings'); $tab->attr('title', 'Extended Settings'); $tab->attr('class', 'WireTab'); $markup = $this->modules->get('InputfieldMarkup'); $markup->label = 'Extended Settings'; $markup->value = '<p>For very experienced developers only.</p>'; $tab->add($markup); $inputfields->add($tab); return $inputfields; } }1 point
-
A feature request: Sass support (specifically SCSS). Thanks!1 point