AndZyk
Members-
Posts
712 -
Joined
-
Days Won
10
Everything posted by AndZyk
-
@Sergio Thank you for the hint. ? This solution is ok, but I don't like, that the page name is now before the page title and takes up so much space. A smaller page name edit field under the page title (like the WordPress one) or a quick link to the field in the settings tab would in my opinion be nicer. I know that ProcessWire doesn't want to clutter up the back-end and that is a reason why I love it and I know that I could add a note in the page title field or a hook for changing the page name on every save. But I think in this case, showing the page name under the page title would be better then hiding it under the settings tab. Maybe @ryan could consider this wish. ? Regards, Andreas
-
Hello, when you add a page you can see the page name of the page under the page title field. But when you change the page title afterwards, you have to go to the settings tab to also change the page name. We have many clients that change the page title afterwards but forget to change the page name, because they don't look in the settings tab or forget it. Is it possible to show the page name on the content tab under the page title? I hate to say this, but I like how WordPress handles this better: Or should I open an GitHub request? Regards, Andreas
-
Thank you. ? My solution was to include a script for converting PHP to ICS, if you visit the event template with the URL segment "/download/". Tricky was to format all data for the ICS format. Here is my version of the script mentioned above: <?php namespace ProcessWire; // Variables used in this script: // $summary - text title of the event // $datestart - the starting date (in seconds since unix epoch) // $dateend - the ending date (in seconds since unix epoch) // $address - the event's address // $uri - the URL of the event (add http://) // $description - text description of the event // $filename - the name of this file for saving (e.g. my-event-name.ics) // // Notes: // - the UID should be unique to the event, so in this case I'm just using // uniqid to create a uid, but you could do whatever you'd like. // // - iCal requires a date format of "yyyymmddThhiissZ". The "T" and "Z" // characters are not placeholders, just plain ol' characters. The "T" // character acts as a delimeter between the date (yyyymmdd) and the time // (hhiiss), and the "Z" states that the date is in UTC time. Note that if // you don't want to use UTC time, you must prepend your date-time values // with a TZID property. See RFC 5545 section 3.3.5 // // - The Content-Disposition: attachment; header tells the browser to save/open // the file. The filename param sets the name of the file, so you could set // it as "my-event-name.ics" or something similar. // // - Read up on RFC 5545, the iCalendar specification. There is a lot of helpful // info in there, such as formatting rules. There are also many more options // to set, including alarms, invitees, busy status, etc. // // https://www.ietf.org/rfc/rfc5545.txt $filename = page()->name . ".ics"; // 1. Set the correct headers for this file header('Content-type: text/calendar; charset=utf-8'); header('Content-Disposition: attachment; filename=' . $filename); // 2. Define helper functions // Converts a unix timestamp to an ics-friendly format // NOTE: "Z" means that this timestamp is a UTC timestamp. If you need // to set a locale, remove the "\Z" and modify DTEND, DTSTAMP and DTSTART // with TZID properties (see RFC 5545 section 3.3.5 for info) // // Also note that we are using "H" instead of "g" because iCalendar's Time format // requires 24-hour time (see RFC 5545 section 3.3.12 for info). function dateToCal($timestamp) { return gmdate('Ymd\THis\Z', $timestamp); } // Escapes a string of characters function escapeString($string) { return preg_replace('/([\,;])/','\\\$1', $string); } // 3. Echo out the ics file's contents ?> BEGIN:VCALENDAR CALSCALE:GREGORIAN VERSION:2.0 PRODID:-//Stadtkirche Pforzheim//NONSGML ProcessWire//DE <?php if (page()->template == "event"): $summary = page()->getUnformatted("headline"); $dateStart = page()->dateStart; $dateEnd = page()->dateEnd; $address = page()->place->getUnformatted("title"); $uri = page()->httpUrl; $description = strip_tags(page()->getUnformatted("summary")); ?> BEGIN:VEVENT DTEND:<?= dateToCal($dateEnd) . "\n"; ?> UID:<?= uniqid() . "\n"; ?> DTSTAMP:<?= dateToCal(time()) . "\n"; ?> LOCATION:<?= escapeString($address) . "\n"; ?> DESCRIPTION:<?= escapeString($description) . "\n"; ?> URL;VALUE=URI:<?= escapeString($uri) . "\n"; ?> SUMMARY:<?= escapeString($summary) . "\n"; ?> DTSTART:<?= dateToCal($dateStart) . "\n"; ?> END:VEVENT <?php elseif (page()->template == "ensemble"): $eventsPage = pages()->get("template=events"); $events = pages()->find("template=event, has_parent=$eventsPage, ensemblesSinging|ensemblesPlaying=$page, sort=dateStart, dateStart>" . time()); foreach ($events as $event): $summary = $event->getUnformatted("headline"); $dateStart = $event->dateStart; $dateEnd = $event->dateEnd; $address = $event->place->getUnformatted("title"); $uri = $event->httpUrl; $description = strip_tags($event->getUnformatted("summary")); ?> BEGIN:VEVENT DTEND:<?= dateToCal($dateEnd) . "\n"; ?> UID:<?= uniqid() . "\n"; ?> DTSTAMP:<?= dateToCal(time()) . "\n"; ?> LOCATION:<?= escapeString($address) . "\n"; ?> DESCRIPTION:<?= escapeString($description) . "\n"; ?> URL;VALUE=URI:<?= escapeString($uri) . "\n"; ?> SUMMARY:<?= escapeString($summary) . "\n"; ?> DTSTART:<?= dateToCal($dateStart) . "\n"; ?> END:VEVENT <?php endforeach; endif; ?> END:VCALENDAR I have never bothered to try any other calendar format than ICS, because ICS is the only standard calendar format I know of. I usually use the latest version installed with Yarn and then compile the source SCSS. The source SCSS files don't seem to have the comment.
-
Thank you for your feedback. I think the page load of the homepage was slow, because the whole archive of exhibitions was loaded. I now have reduced it to only three exhibitions in the archive and you can load the rest via Ajax. Hopefully this will improve the performance. ?
-
This is a website for the musical area of the protestant town church Pforzheim, Germany. Our agency designconcepts developed a website that provides informations about the choirs, ensembles and orchestras as well as dates for their rehearsals, services and concerts. The website was build with help of the framework UIkit. www.musik.stadtkirche-pforzheim.de Features: Events Download dates Events The events for rehearsals, services and concerts were created in Microsoft Excel and then imported as pages from CSV. For better organization, events are cross-referenced with choirs, ensembles and orchestras. Services and concerts are displayed in a events list, but rehearsals are only displayed on the page of the choir, ensemble or orchestra, to make the events list more compact. Download dates It is possible to download every event date as ICS file, which will be generated on clicking the download button. You can then add this event easily to your calendar app and stay up-to-date. Modules used: Email Obfuscation (EMO) Front-End Page Editor Import Pages from CSV Markup Sitemap XML ProCache Tracy Debugger Upgrades Wire Mail SMTP Regards, Andreas
-
Gallery Claeys is a art gallery in Freiburg, Germany, with focus on exhibitions of female artists. Our agency designconcepts developed a website that features the latest exhibitions of the gallery as well as an archive of previous exhibitions. Every artist has its own page with an excerpt of their works and a vita of the artist. The website was build with help of the framework UIkit and Barba.js for smooth transitions between pages. www.galerie-claeys.de Features: Exhibitions Page transitions Exhibitions On the homepage you can find a preview of upcoming or current exhibitions as well as an archive of previous exhibitions. Based on the date the exhibitions get automatically sorted in one of the three categories (preview, current or archive). Each category has its own deep-link with URL segment. Page transitions The smooth fading page transitions are made with Barba.js. Modules used: Front-End Page Editor Markup Sitemap XML ProCache Tracy Debugger Upgrades Regards, Andreas
-
RockSkinUikit - Easily and quickly skin your AdminThemeUikit backend
AndZyk replied to bernhard's topic in Modules/Plugins
Hello @bernhard, I like the idea of this module, but if I understand correctly, it is currently only possible to use this module with a copy of the AdminThemeUIkit inside the sites-folder? This is currently a deal-breaker for me, because I don't want to miss out on AdminThemeUIkit updates. Hopefully the theme will be hookable, so that the AdminThemeUIkit inside the wire-folder can be used. So long I will wait with your module. But thank you for your efforts. ? Regards, Andreas -
I really like the Material Theme. ?
- 246 replies
-
- visual studio code
- vsc
-
(and 2 more)
Tagged with:
-
Here is another example of a nice homepage feature switcher with good screenshots for inspiration. ?
-
My bad, thank you for the clarification.
-
Just wanted to mention, that the blue is the default primary background color of UIkit. Probably it will change and it wasn‘t chosen on purpose. ?
-
First of all @ryan thank you for your work on the new website. It is already looking promising. ? You have already much feedback, but I wanted to give also some first suggestions: Container As @Robin S already mentioned, for very large screens (for example 27 inch iMacs) it would be better in my opinion to limit the container width to uk-container-large. Section Right now every sections is either default or primary. You are are aware of this, but the section component also offers secondary or muted sections. I think it would be nicer to spice things up with more different sections. For example the footer could be first be muted (twitter, forum and news) and then secondary (copyright), Blog I also don't like the current blog overview. In my opinion it would be nicer with cards. Navigation The search should be in my opinion be the last item in the navigation. Although the new search is now really powerful, searching should be the last thing a visitor has to do after all contents are discovered. That was it for now and keep up the great work. ? Regards, Andreas
-
With around 3,400 employees worldwide, IMS Gear develops and produces specific drive solutions for international customers. In addition to the focus on the automotive industry, the focus is on applications for industry and e-mobility concepts. Finding new employees is important for the day-to-day business of IMS Gear. For this reason our agency designconcepts developed a job portal, where potential employees can easily inform themselves about the company, the application process and find the job they are looking for. The website was build with help of the framework UIkit. jobs.imsgear.com Features: Job finder Job offer PDF Newsletter Fly-in information pages Job finder Core of the website is the job exchange with the job finder. Here you get a list of all available jobs which you can filter by three main areas (categories, task areas and locations). Or you can type in anything in the search field and filter by various keys (for example ID, title, country and hidden tags). The job finder was build with jQuery Typeahead, which was really helpful in building this complex logic. If you want to know which job is the closest to you, you can sort them by distance. Job offer PDF Every job offer has a printable PDF version for newspapers or other job platforms. The job offer PDF can be created by checking a checkbox in the back-end and saving the page. The PDF will then be created with all needed fields of that page and DocRaptor. This workflow is really easy for editors and guarantees a consistent layout for all created PDFs. Newsletter If there is no job for you available at the moment, you can subscribe to a newsletter with your areas of interest. Then you will be notified daily if a job is available with your interests. Instead of using a separate newsletter tool, the nice module Newsletter Subscription was used to manage subscribers. The newsletter will be send via a shell script executed by a daily cron job. Modules used: Continents and Countries Front-End Page Editor Functional Fields Markup Sitemap XML Newsletter Subscription ProCache Repeater Matrix Tracy Debugger Upgrades Wire Mail SMTP Regards, Andreas
-
S. Siedle & Söhne Telefon- und Telegrafenwerke OHG is one of the leading manufacturers of building communications technology in Germany and Europe. For a company of this size it is important to have a solid brand communication. For this reason our agency designconcepts developed a portal where the employees of the company as well as others who work with or have interest in their brand can find everything that is important for the brand Siedle. The website introduces the brand, provides informations for different topics (for example logos, typography, colors etc.) and has a large Media-Center with images, videos and documents. The website was build with the framework UIkit. brand.siedle.com Features: Repeater Matrix Protected Content Media-Center Cart Auotcomplete Search Repeater Matrix The information pages are build with a Repeater Matrix field and have a two columns layout. To be even more flexible, a section is a content element containing two Repeater Matrix fields for each column. This maybe sound crazy at first but was no problem and made complex layouts possible. ? Protected Content Not all of the informations are meant for guests, so we made it possible to protect each page, section and content element with a checkbox. If this checkbox is checked, the content will only be visible for logged-in users. Media-Center The core of the brand portal is the Media-Center. The Media-Center is actually a mirror of a separate digital assets management database where the client can manage images, videos and documents with a nice interface in a protected environment. All new assets will be synced via a shell script containing PHP and curl commands calling the API of the database. This script will be executed every 15 minutes via cron job. This way all of the assets are saved as pages in ProcessWire and we can expand them with our own logic and fields. Also for the unlikely case that the database is not available, the Media-Center would still work. Cart Inside the Media-Center you can add assets to your cart. This cart is for downloading selected assets or sharing them with others. A cart will be accessible for 30 days. Modules used: Admin Custom Files Continents and Countries Email Obfuscation (EMO) Front-End Page Editor Functional Fields Markup Sitemap XML ProCache Repeater Matrix Tracy Debugger Upgrades Regards, Andreas
-
The Katharinenhöhe is a rehabilitation clinic in the Black Forest (Germany) for teenagers, young adults and families with children who suffer from cancer. Our agency designconcepts was lucky to relaunch their website. Our goal was to unify the previous separated areas (families and teenagers/young adults) and provide a clear structure for potential patients. Also we wanted to show that the clinic is a nice place to live, despite the circumstances. We rebuild the website from scratch with the framework UIkit and used large images as well as videos. www.katharinenhoehe.de Features: Repeater Matrix Tour Contrast Theme Glossary Autocomplete Search Facebook Repeater Matrix Most of the pages use a basic page template which have one Repeater Matrix field. This field has around 15 different content elements, so it is easy to build a page with different elements in various amounts. Tour On the site tour we build a image map with markers showing interesting places of the clinic. For this task the nice module Image Marker and the Marker component of UIkit came in handy. The tour is available on every page containing a marker. Contrast Theme For a better reading experience you can switch to a more contrasting theme of the website by clicking the theme switcher (on the top right). This is a separate stylesheet with darker color variables. The choice will be saved in a session variable and stays as long as the browser is opened. Glossary To explain complicated medical terms better, we highlight a set of terms in every textarea they occur and explain them with a tooltip. For this task we wrote a simple Textformatter module which looks for the terms in a page and replaces the terms with the tooltip. This tutorial by @benbyf helped me. Thank you! ? Modules used: Color Email Obfuscation (EMO) Front-End Page Editor Functional Fields Image Marker Markup Sitemap XML Phone ProCache Repeater Matrix Tracy Debugger Upgrades Regards, Andreas
-
If you are looking for a example you could look here: This website is build with Vue.js and has also a dynamic language switcher without page reload, but has no specific language URL, which is as mentioned bad for SEO. You could add the language URL on switch with for example pushState, but in my opinion the language URL should be available without making a switch first. ?
-
Hello @spacemonkey95, sorry for not being helpful, but you could build your own logic with: Language API Multi-Language Field Values However I would recommend you not to do this. Having a translated website with no different URLs is bad for SEO and in my opinion a bad user experience, because the user always would have to switch first for having the right language. If you really want to do this, maybe someone else has experience with this. ? Regards, Andreas
-
Hello @felted, the translated name should show up, if you are on the translated page: $dataProtection = $pages->get("/datenschutz/"); // German on the default page echo $dataProtection->name; // danteschutz // English on the translated page echo $dataProtection->name; // data_protection If that doesn't work somehow, you could force this as mentioned with localName: // German echo $dataProection->localName("default"); // datenschutz // English echo $dataProtection->localName("english"); // data_protection Or you could try Multi-Language Field Values: $page->of(false); // turn off outputFormatting (if it's not already) // German echo $dataProtection->name->getLanguageValue("default"); // datenschutz // German echo $dataProtection->name->getLanguageValue("default"); // data_protection Important is to pass the language you are looking for. ? Regards, Andreas
-
Just a wild guess, but maybe you could try this: $page->matches(["name=" => "ueber-uns"]);
-
The latest version. But now I have noticed that with Material Theme that known HTML tags are highlighted red and custom HTML tags with a different red. ?
- 246 replies
-
- visual studio code
- vsc
-
(and 2 more)
Tagged with:
-
I can recommend the Material Theme extension. Never noticed this issue with this theme. ?
- 246 replies
-
- visual studio code
- vsc
-
(and 2 more)
Tagged with:
-
Sorry if I wasn’t clear enough: You can choose with ProcessWire on the fron-end side whatever you want. If your project needs a framework, no framework or even no front-end at all is up to you. That is the beauty of PW. ? My intention was not to drive you away from PW, that would be unfortunate. I just wanted clear some things you have mixed up. Hopefully you reconsider. ?
-
You seem to be confused, let me help to clarify: Front-end ProcessWire will hopefully never dictate what you should use in the front-end. So you can use whatever you want, framework or not. If PW ever would force me to use something in the front-end, I would look for alternatives. Back-end PW uses multiple libraries for the back-end, like UIkit, jQuery, jQuery UI etc. Simply because it would be stupid to invent everything new. I don‘t care what the back-end uses as long it is nice and flexible, neither should you. ProcessWire website While I like that the new website will use UIkit as framework, I wouldn‘t care either if it would use something different. I am just happy it gets a relaunch. Luckily it is not our decisions what the back-end or website of PW uses. So one more time: Nothing should change for you. You can choose to use for your project whatever you want. Please stop hijacking this thread.