The method for managing permissions is part of the core - and we have a nice tutorial in the wiki from QM-B on how he implemented it that started out as a discussion in the forums.
There's so much to be found in the forum! And there are a lot of yet to be utilized parts of the core.
Here's one about opengraph and schema.org - Re: Question about facebook social plugin - a mere 10 years ago.
There are other meta data that should be controlled by the site - some are not relevant for all, like location and geo data. To move towards a 'no code' solution, where this is done through the admin panel or a module, we'll have to consider impact for those, like you and I, that have built themes to include these data and what injecting the new meta data into the theme and how we go about doing it.
Back on the easy stuff: There's a config option being checked by the current metagen methods - $icmsModuleConfig['show_mod_name_breadcrumb'] - that I don't believe is in any module. It is part of the title generation and the breadcrumb generation. Just so you know.
You are using the same pragmatic approach I've used until now, but this kind of functionality really shouldn't be handled in the theme layer or each module separately, but site-wide. Whether we make metagen smarter or extensible, or have a separate module to handle the metadata on a site-wide bases are both possibilities.
I've built in the metadata for open graph (Facebook/Instagram and Pinterest, mostly) and Twitter into the themes I use, using the same template vars ($icms_pagetitle, $icms_meta_keywords, $icms_meta_description, etc).
The next thing I was hoping to work out is a method for determining the components of each value. You could set preferences to change the pattern of your pagetitle - like %post title% %category% %module% - %sitename%, or %category%: %post title% - %module%, %sitename%. That way, you have control and flexibility, and you don't have to edit a bunch of files to make changes.
This method would also allow you to make it work with whatever theme you were using. Again, without having to edit the theme.
PHPStorm identifies loads of parts of the code that contain repetitive statements, so your findings are more or less expected. We can't fix them all at once, and the metagen is a good place to start.
This is an area that can be more fleshed out as well, I would expect the metagen function to be able to generate other metadata like the ones for facebook, twitter (sorry, 'X'), linkedin, schema.org and the likes.
When metagen was developed, those newer systems weren't there yet (or not as ubiquitous), now they're the norm and search engines have reduced or dropped the importance of the fields we're generating at the moment.
Here are some code snippets to look at -
libraries/icms/ipf/Metagen.php - setTitle()
These both have this: @todo Remove this and use the proper data filter and HTML Purifier
include/functions.php - icms_html2text()
include/functions.php - icms_purifyText()
My review is that at this point, when the title tag is being rendered, the title has already been filtered and purified before being saved in the database, and then retrieved and sent to these functions. It's important to note that the title is not sent through these functions for rendering on the page.
I'm working through a few things on a couple of sites and looking a little more into ways to improve readability for all readers - people and search engines.
Page titles are always a key thing and it is something we need to pay more attention to. The ICMS IPF Metagen class handles creating meta tags, including the title. However, much of it was done before we implemented HTML Purifier and our standard filtering practices for content being saved into the database and before it is rendered.
What I find happening is punctuation - which is allowed - is being stripped out, making it a little awkward to read. It all starts in icms_ipf_Metagen->setTitle(). The first thing it does is call icms_html2text(), a function to strip HTML tags and replace HTML entities with text equivalents. Then, icms_purifyText() gets called to strip out punctuation. The post title displays as desired in the content, but the meta title is altered.
Would removing those 2 function calls be risky? After all, a module following the IPF methods and any module saving content is having the content filtered before being added to the database. I think these 2 functions served a different purpose, and the code comments even indicate they should be replaced by other methods already in the core.
There are other parts of this to explore in more detail. Just starting with this one, since it isn't one that can be overridden by other properties saved with the post, like the keywords, description, and short URL text can be.
I am working on the mockups in plain HTML, that works easier than directly in Smarty. it's coming along quite well for a first iteration.
I was wrong on the theming for the pages : the Adsense page for example does not take into account theme templates. It does work with a different template defined in a template set, so I'm taking that route for the moment.
Alas, no. The reflex theme doesn't really define new blocks that are used in the ACP part of the admin theme. It defines a new CSS that gives the existing layout a fresh coat of paint, but nothing more than that. I'll try to dig up an ancient version of the new theme MrTheme started working on several years back, he did a total overhaul if I'm not mistaken. Let's see if I can get it working on 2.0 RC1.
If the reflex theme is still working, there are template overrides for blocks in it -
\themes\reflex\modules\system\blocks\
I create a new theme without theme.html, but with theme_admin.html as main template. That part works well, I can have the overall structure of my page defined by that template. The ACP page content such as adsense can also be themed. I'm still working on re-theming the table component, but that's just figuring out how to understand those admittedly very complex theme files.
The only thing I haven't been able to get to theme are the blocks. But the start page of the ACP is only made out of blocks, so it's quite a big deal if I want to have a modern-looking and inviting first impression
How are you attempting to override the admin theme? I know a theme can add another option to the admin theme selector. I’m not sure how to override an existing admin theme.
I have been looking into upgrading our admin theme, as the current one is way out of date (no mobile support for instance). I made some good headway working out the theme_admin.html template, but once you want to go and change some more detailed parts such as the way the content of the ACP blocks is rendered, I'm hitting a wall.
It looks like the template overrides don't work in the context of the ACP. I'm going through some debugging sessions at the moment to try to figure out why that is exactly, but that is a major roadblock in getting a new, fresh admin theme out there.
To be continued
Looking at the code, there appears to be 4 fields for storing the image information, one it is received. There may be some nuances in how the control is rendered - try using 'multiple=multiple' as the extra argument and see what you get. Once that is working, have a look at modules/system/admin/images/main.php - function imanager_addfile(). It steps through the FILE variable and handles multiple files, though I don't see how this is set to work in the core.
I added several image fields in the event class, and I want to use the promoimage4 field to handle the multiple images as a gallery. Have a look on github : https://github.com/fiammybe/events/blob/add-previous-events/src/class/Event.php
Well, we know the form field will accept the input
Thinking about storing the images - how did you link the images to the event?
I hacked my page the same way
Rendering of the page was the same, I could only choose more than one item. But when I uploaded the items only the first one was shown by the component, so that needed more work. That was going to be the next step, after I could get a clean way of adding the extra 'multiple' parameter to the control.
With that change, how the field render on the page? What attributes did it have?
When I used the developer mode in my browser, I edited the HTML and added the attribute to the field. When I clicked on the Browse button to select a file, it allowed me to select more than one. Without that change, it did not.