Is there a way to add priority to plugins having translations? - plugins

We're using the Shopware Language Pack plugin to get more translations, but some of our plugin's translations don't get used anymore. This is because the language pack has it's own translations which somehow have a priority above ours. Can this be changed so that our plugin's translations always overwrite the language pack translations?

When you look at the DbalKernelPluginLoader you can find that plugins are sorted by the installed_at column of the table plugin. This is also the order they are loaded in. So you may change the date of that field to change the order. Unfortunately as of today there is no option in the web-interface or plugin api to change the load priority in another way.

Related

Update all slugs in all languages of all pages in TYPO3 10

Is there a possibility to update all slugs of all pages in all languages?
In an installation of one of my clients are hundreds of pages in multiple languages with wrong slugs (e.g.: prefix translate+german page name instead of translated page name etc.).
I remember an upgrade wizard in TYPO3 v9 but in version i cannot find this wizard.
This upgrade wizards appears if you just empty all slug fields of the table pages which is the fastest way to renew all slugs.
For special cases, maybe you would like to build your own Command.
Some nice thoughts (and helper methods) have been collected under TYPO3/Extbase How to create unique slug within create action?

Liferay 7.2 Customize Documents And Media Porlet

I have Liferay 7.2
I want to customize the html of the layout of the widget Documents AND Media
I tried to create a hook to document and media but it seems that is not the right way.
How can i do that?
First, the fact that you're talking about a hook tells me that you're coming from Liferay 6 or earlier. Forget the old module types ("war-style modules"), embrace the new "jar-style modules" or "OSGi modules", which leverage the OSGi methods and mechanisms in the foundation. The new module type that comes closest to the functionality of hooks would be a "module fragment".
Alternatively, if you want to create one module that overrides the JSPs of more than one other module (or overrides JSPs as a side effect to its main purpose), you may want to look into "JSP Bags".
Still, both methods are discouraged and should be taken as a last resort, according to Liferay's "Introduction to Customizing JSPs".
The preferred method would be to use Dynamic Includes (albeit they only work if the target portlet has been written to include inclusion points) or Portlet Filters (which basically allow you to programmatically edit the request to and response from the standard Portlet classes and JSPs).
Still, if you're aiming to replace most of the JSPs of the standard document and media widget (keep in mind: Widgets are still Portlets, they just have been renamed in the frontend), a module fragment still seems to the best way forward.
To identify the correct module, here are the necessary steps. I'll show it using the DLAdmin portlet from the control panel as an example:
Identify the portlet you want to edit: Look into the HTML using the DOM inspector of your browser. Look for section tags with IDs like <section class="portlet" id="portlet_com_liferay_document_library_web_portlet_DLAdminPortlet"> around the area of interest.
Now translate that ID into a package path with portlet class: com.liferay.document.library.web.portlet.DLAdminPortlet. Search for that class in the Liferay github repository. (Go there, press T, enter the class name, find its Java class source file. In case of multiple hits, you need to check the package path, too.)
Once you opened the source file, go back up in the file tree to the parent folder of the src folder. There's a bnd.bnd file. Take a look into it, it will tell you the Bundle-SymbolicName.
Use the Liferay IDE or Blade CLI (depending on your development environment) to create a module fragment for the module identified by the Bundle-SymbolicName.

How to add Typo3 Extensions to a page?

I googled for quite some time now and i cannot find a solution for such an easy beginner-problem.
I used the Typo3 Extension Builder to build a test-extension in Extbase. Now i want to use this and include it into one of my pages in the page tree structure to actually see if it works. When browsing the folder structure i can clearly see that the Domain model, the Controllers and all the views have properly been generated. But... How can i tell my page to include it and execute it?
I tried things like including the auto generated typescript into the templates of the pages but nothing works.
Thanks!
In Extension Builder make sure that you added "Frontend plugin" on the left pane. If you'll do it properly you will be able to add this plugin via CE "General Plugin" and then via field "Select plugin"
Sounds like you struggle on a more general level here.
In order to get the output of your Extension in the Frontend you have to assure the following steps:
Set up general Configuration, so that you can see the output of standard content elements in the frontend.
Install your extension and include its TypoScript.
Make sure you have a Plugin configured in your ext_localconf.php and registered in your ext_tables.php.
In the backend, create a new content element and choose "plugin" as its type.
Choose your registered plugin and save.
You should now see output of your extension in the frontend.

is it possible to get an xPages build number?

I do all development in a single application. when a new version is ready I create a template and give it a version number. this way I can store a history of all previous versions.
the development templates are used to push the new design to many applications via replace design.
Creating manual version number or template names is fine but I am looking for a more automatic way of finding out which build the different applications are inherited from
When I visit the different applications I would like to be able to see which build number each application are inherited from. is this possible?
A simple build time stamp could do, but is there a built in build number that can be used and that can be displayed on the xpage.
e.g Build 2012092712345
Update:
Thank you for all your answers, many good suggestions but it looks like all require manual work.
The best solution would be if there is a way to read (from ssjs) a timestamp from any file within the nsf that is always updated during a build. is this possible?
In classic notes, there was a method to add a shared field with a special name to the application. Cannot remember the details, but have it somewhere on the disk.
Then you can see the build number in the design tab of the application properties. And you can of course display the value in your applikation as well.
But you have to fill the item manually on each build. Or use teamstudio Buildmanager. This tool adds the value automatically.
And I also guess that you can write some code that changes the value whenever you create a new build.
Another option would be to use a versioning system like CVS/SVN. This is possible since 8.5.3.
Source control
I think I know what you are meaning. Your a pushing out design and want to check thru code what version each database has. I usually do this with a Build form. In this form I have computed fields with all the data I want to retrieve. Then I open the database with an agent create a document
and set the form field to "BuildForm" and do a computewithform.
Now I can see all information about this database.
I once wrote a rudimentary build system for "classic" Notes, and had the last part of the build pipeline create a form named _BUILDID_, and put the build id in the $Comment field.
The main reason to create a form instead of a shared field was that I could dynamically fetch the form using NotesDatabase.Forms, and open up the desired field.
I sure hope there are simpler solutions nowadays... :-)

Jira plugin development - Is it possible to customize the 'Add project' page from a plugin?

I am developing a JIRA plugin and I'm trying to add a custom field to the Add project page. As far as I know, a custom field can be added only for an issue. Is it possible to add a custom field (a text field or a select list) at a project level?
I have found an plugin, which is able to add metadata on Project level.
Please take a glimpse at this link
Short answer: doable but not particularly easily
The way you do this is to write a WebWork plugin that changes the Java class that handles that webpage. The process is that the actions.xml file contains the AddProjects.jspa, e.g.
<action name="project.AddProject" alias="AddProject" roles-required="admin">
<view name="error">/secure/admin/views/addproject.jsp</view>
<view name="input">/secure/admin/views/addproject.jsp</view>
</action>
which tells you that the class name is AddProject, which you can extend to handle the user setting a value in this new field. Then you also need to decide how you're going to store values for each project (more info in the Practical JIRA Plugins or JIRA Development Cookbook books). The hardest part here is that the template files are .jsp files which you can't change directly with a plugin. What I usually do is write a ServletFilter to inject JavaScript to change the AddProjects page that way.
There is no elegant way, but you possibly can use Custom Project Properties for JIRA plugin.
This plugin allows to:
define list of custom fields for projects
define custom fields per project
fill custom fields on project administration page