Adding the Multilanguage Associations Manager #13537

Merged
merged 41 commits into from Jan 17, 2017
@rdeutz
Contributor
rdeutz commented Jan 10, 2017

Executive summary

This PR is a partial rewrite of the com_associations component based ion the work done in the Google Summer of Code Project "Improved Multilingual" (Repo: https://github.com/joomla-projects/gsoc16_improved-multi-lingual)

Background information

The original concept made a lot of assumptions about fields and extensions and instantiated extensions models to get information about the internal structure. This concept comes with two problems:

  1. Guessing can be wrong :-)
  2. Instantiate a model can end up in fatal errors and a not working Website when the extension has a bug.

I removed the guess and model instantiating and replaced it with a help class for extensions. This helper class provides all the needed information.

Backwards compatibility

It is a new function so no problem here

Translation impact

Two new language files for com_associations and one new language for any core extension that supports associations.

Testing instruction

  • clone or get a copy of the staging branch
  • setup a multilingual website
  • Apply patch
  • discover install

You will now find a new extension under components.
The select box allows to chose an item type.

ml-pic1

When you have chosen a type and language, you can see your articles.

ml-pic2

Click on an article (reference) and you will see the reference article on the left side. On the right side you can chose a translation target and translate your article.

ml-pic3

If you click on the available translation you get directly the view with two articles side by side.

ml-pic4

Developer documentation

If your extension support association and you will make your extension available in the Associations Manager you have to provide a helper class (we have examples for com_content, com_contact, com_newsfeeds, com_menus, please look at the example implementation for inspiration :-))

You need to create a file "associations.php" in your component admin helper directory. If your component is names foobar the help class must be named as "FoobarAssociationsHelper" and it must extend "JAssociationExtensionHelper".

Define three protected vars:

$extension = 'com_foobar';
$itemTypes = array('your_itemname', 'category');
$associationsSupport = true;

Define three public functions:

public function getAssociations($typeName, $id)

This function provides an interface the "JLanguageAssociations::getAssociations" and returns an array of associated items

public function getItem($typeName, $id)

This function should return a JTable Object for the type and id. Don't forget something like "JTable::addIncludePath(DIR . '/../tables')" so that the class can be found

public function getType($typeName = '')

Here you set up information per type, the function returns an array:

array(
'fields' => $fields,
'support' => $support,
'tables' => $tables,
'joins' => $joins,
'title' => $title
);

For fields and support we have a template function that set defaults so the you only have to overwrite what is different in your extension. Make sure that $fields['title'] and $fields['state'] are set right.

We need to write some documentation in JDocs but I think that here should be enough as a start.

Open Issues

  • Ordering not great
  • Deal with checkout items
  • Extensions with multiple use of categories (seems a theoretical problem, because we couldn't find an extension using it)

Final words

I would like to says thanks to the GSOC project members you did most of the work.

@rdeutz rdeutz added this to the Joomla 3.7.0 milestone Jan 10, 2017
@infograf768
Member
infograf768 commented Jan 10, 2017 edited

We do need indeed some inpt to solve the checkedout.
And also the ACL: do we let edit/create associations for items where one has no create/edit permissions, on individual as well as extension level.

@laoneo
Member
laoneo commented Jan 10, 2017

This is a very handy functionality, but should this not being built into the article manager itself, when editing an article? On a first glance it will be difficult to understand why the compare editor is on a completely different place, despite that the association is managed in the article itself.

@infograf768
Member
infograf768 commented Jan 10, 2017 edited

this does not only deals with articles. it is a general interface concerning all associations. here already implemented for core extensions, i.e. articles, menu items, contacts, newsfeeds, and will be for weblinks.
we already can deal, article per article, generally speaking with all core extensions, item per item. com_associations is centralising all these (including 3pd if they set it) in a unique interface.

@infograf768
Member

@rdeutz
please add as new feature

@Bakual Bakual added the New Feature label Jan 10, 2017
@rdeutz rdeutz fix language tag, thanks to brian teeman and twitter :-)
7b0b75f
@laoneo
Member
laoneo commented Jan 10, 2017 edited

From developer point of view you are absolutely right and all makes sense. But for the end user I think it would be more convenient when you don't have to

  1. close the article edit view
  2. switch to the associations component
  3. select the type
  4. select the article
  5. select the language
  6. click on the article
  7. select the target language

before the compare view opens.

Mostly you want to do that when you edit the article directly. Probably a button beside the "Save as copy" button would make sense to switch to the compare view. The same should then be possible for all components which do integrate associations.

But I'm more of a developer than UX person so I think would be nice to have some input from UX people as well.

@andrepereiradasilva
Contributor
andrepereiradasilva commented Jan 10, 2017 edited

This is a very handy functionality, but should this not being built into the article manager itself, when editing an article? On a first glance it will be difficult to understand why the compare editor is on a completely different place, despite that the association is managed in the article itself.

@laoneo IMHO, if this componet exist it should be relatively straigh forward to integrate it in the "Associations" Tab "Edit" buttons (or something like it) in the future (excluding ACL checks, basicly should be opening the modal with the com_associations URI, instead of edit URI). Here:
image

@mbabker
Member
mbabker commented Jan 10, 2017

If I'm not mistaken you'd still be able to set associations from within the article edit view, it just seems like this mainly creates an alternative workflow to set associations and a way to have the content from two associated items open side-by-side instead of needing modals or separate windows. Just from the screenshots and what little I know of associations since I get chastised whenever I touch content on the one multilingual site I manage I don't see any UX issues with this at the moment.

@infograf768
Member
infograf768 commented Jan 10, 2017 edited

It is not only extremely handy to use it when you create a multilingual site: prepare your site in one language and then do all associations (it includes also create a new one or change the assoc to another item) from the original reference item, but also, after on when you change some stuff in the "base" item and want to modify the assoc content (what we call the Target item).

@infograf768
Member
infograf768 commented Jan 10, 2017 edited

It took me a few minutes to make an associations helper for sermonspeaker:
screen shot 2017-01-10 at 19 03 51

@Bakual
associations.php.zip
(Still have an error in side by side with this file though)

+++ a new ini string
COM_SERMONSPEAKER_CATEGORIES="Categories"

+
+ $support = self::$extensionsSupport[$extensionName];
+
+ return $support->get('helper');
@zero-24
zero-24 Jan 10, 2017 Contributor

I'm not 100% sure can't we change this to: self::$extensionsSupport[$extensionName]->get('helper');

@rdeutz
rdeutz Jan 11, 2017 Contributor

should work but I wouldn't change it here

+ $groupby[] = 'ag.title';
+
+ // Implement View Level Access.
+ if (!$user->authorise('core.admin', $extension))
@zero-24
zero-24 Jan 10, 2017 Contributor

please double check the $extension should this not be $extensionName

@infograf768
infograf768 Jan 11, 2017 edited Member

I agree. Also we may need to check if type is category as in this case it would be I guess
`if (!$user->authorise('core.admin', $extensionName . category))

ACL have anyway to be completed.

+ }
+
+ // If component item type is menus we need to remove the root item and the administrator menu.
+ if ($extension === 'com_menus')
@zero-24
zero-24 Jan 10, 2017 Contributor

same here $extensionName?

@infograf768
infograf768 Jan 11, 2017 Member

Indeed, although that check is a bit useless as these items will never get a language assigned and therefore should never display in the assoc manager.

+ JToolBarHelper::custom('copy', 'copy.png', '', 'COM_ASSOCIATIONS_COPY_REFERENCE', false);
+
+ JToolbarHelper::cancel('association.cancel', 'JTOOLBAR_CLOSE');
+ JToolbarHelper::help('JGLOBAL_HELP');
@zero-24
zero-24 Jan 10, 2017 Contributor

I guess this needs to be a todo?

@zero-24
zero-24 Jan 10, 2017 Contributor

as we need to add a help page here?

@rdeutz
rdeutz Jan 11, 2017 Contributor

yes is a todo

+ unset($this->activeFilters['menutype']);
+ $this->filterForm->removeField('menutype', 'filter');
+ }
+ if (! in_array($extension, array('com_categories', 'com_menus')))
@zero-24
zero-24 Jan 10, 2017 Contributor

again extension to extensionname?

@infograf768
infograf768 Jan 11, 2017 Member

Not in at case imho.
We have above:
$extension = AssociationsHelper::getSupportedExtension($extensionName);

@rdeutz
rdeutz Jan 11, 2017 Contributor

extensionName would be correct

@infograf768
Member

@Bakual
Corrected the error in the sermonspeaker helper
associations.php.zip

@Bakual
Contributor
Bakual commented Jan 11, 2017

@infograf768 Didn't have yet time t test anything here, but thanks. I've already added it to my repo 😄
https://github.com/Bakual/SermonSpeaker/blob/master/com_sermonspeaker/admin/helpers/associations.php

@infograf768
Member

👍 @Bakual

Eagerly waiting for help from you to solve first the checked_out issue.

@AlexRed
Contributor
AlexRed commented Jan 11, 2017 edited

I have tested this item successfully on 7b0b75f

Ok for me.
But please consider to change the "Clear" button in the Target side in "Delete Association" to avoid confusion and help in the translation procedure.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/13537.

@infograf768
Member

Here is a demo of the checked_out issue.
The item concerned has been checked out by another user.
The user editing has no com_checkin manage permission.

associationscheckedout

@Bakual
Contributor
Bakual commented Jan 11, 2017

I have tested this item successfully on 7b0b75f

Small thing:
In the "Select Target" modal, the tooltips for the search fields above are hidden behind the modal header. In other similar modals we set the tooltips to go below the field and not on top.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/13537.

@infograf768
Member
infograf768 commented Jan 11, 2017 edited

For the Select Target Modal tooltip, change in /administrator/components/com_associations/views/associations/tmpl/modal.php

JHtml::_('bootstrap.tooltip');
to
JHtml::_('bootstrap.tooltip', '.hasTooltip', array('placement' => 'bottom'));

+ unset($this->activeFilters['category_id']);
+ $this->filterForm->removeField('category_id', 'filter');
+ }
+ if ($extension !== 'com_menu')
@andrepereiradasilva
andrepereiradasilva Jan 11, 2017 edited Contributor

com_menus?

@infograf768
infograf768 Jan 11, 2017 Member

Agree, that is also a wrong one.

rdeutz added some commits Jan 11, 2017
@rdeutz rdeutz Merge pull request #7 from zero-24/com_associations_rewrite_merge
intial review and update to staging
0826d30
@rdeutz rdeutz app isn’t set a model property 7e8422b
@rdeutz rdeutz correct return value 1ca1c8e
@rdeutz rdeutz simplify code adn use helper method dbba275
@rdeutz rdeutz use typename directly
fc79b46
@rdeutz rdeutz changed the tooltip position
d64c742
+<extension type="component" version="3.7" method="upgrade">
+ <name>com_associations</name>
+ <author>Joomla! Project</author>
+ <creationDate>Januar 2017</creationDate>
@infograf768 infograf768 added a commit to infograf768/weblinks that referenced this pull request Jan 12, 2017
@infograf768 infograf768 Create associations.php
This should be merged after the new com_associations gets in core
joomla/joomla-cms#13537
05ce2fa
@infograf768
Member

Created helper for weblinks.
joomla-extensions/weblinks#294

+ unset($this->activeFilters['category_id']);
+ $this->filterForm->removeField('category_id', 'filter');
+ }
+ if ($extensionName !== 'com_menu')
@infograf768
infograf768 Jan 12, 2017 Member

should be com_menus

@infograf768
infograf768 Jan 12, 2017 Member

Once this is corrected, we do get the Select Menu filter
screen shot 2017-01-12 at 09 30 36

BUT when choosing a menu type, we get a 500
500 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 'mainmenu-fr-fr' GROUP BYa.id,a.title,a.language,l.title,l.' at line 7 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= 'mainmenu-fr-fr' GROUP BYa.id,a.title,a.language,l.title,l.' at line 7

@infograf768
infograf768 Jan 12, 2017 Member

Found the culprit

@infograf768
infograf768 Jan 12, 2017 Member

See patch rdeutz#8 correcting the menutype.
Still remains to change 'com_menu' to 'com_menus'

infograf768 and others added some commits Jan 12, 2017
@infograf768 infograf768 Correct menu helper edccd27
@rdeutz rdeutz remove unreacable code
868edd4
@infograf768 infograf768 correcting checked_out ca50fd1
@infograf768 infograf768 com_menus 04df8c3
@infograf768
Member

@rdeutz
These are ready, correcting com_menus typo, checked_out wrong variable, $cancheckin and menu helper
rdeutz#11
rdeutz#10
rdeutz#9
rdeutz#8

rdeutz added some commits Jan 13, 2017
@rdeutz rdeutz Merge pull request #8 from infograf768/patch-10
Correct menu helper
7ab1191
@rdeutz rdeutz Merge pull request #9 from infograf768/patch-11
correcting checked_out
e5fb8bd
@rdeutz rdeutz Merge pull request #11 from infograf768/patch-13
com_menu => com_menus
97c437f
COM_MENUS_MENU_TITLE_DESC="The title of the menu to display in the Administrator Menubar and lists."
COM_MENUS_MENU_TYPE_NOT_ALLOWED="This is a reserved menutype."
COM_MENUS_MENUS_FILTER_SEARCH_DESC="Search in title and menu type."
COM_MENUS_MENUS_FILTER_SEARCH_LABEL="Search Menus"
-COM_MENUS_PAGE_OPTIONS_LABEL="Page Display"
-COM_MENUS_LABEL_HIDDEN="Hidden"
@andrepereiradasilva
andrepereiradasilva Jan 13, 2017 Contributor

why are there removed?

@infograf768
infograf768 Jan 13, 2017 Member

Agree, they should not

@rdeutz
rdeutz Jan 15, 2017 Contributor

I didn't remove them I just fixed the alpha ordering

@@ -145,13 +146,11 @@ COM_MENUS_MENU_MENUTYPE_LABEL="Menu Type"
COM_MENUS_MENU_SAVE_SUCCESS="Menu successfully saved"
COM_MENUS_MENU_SEARCH_FILTER="Search in Title or Menu type"
COM_MENUS_MENU_SPRINTF="Menu: %s"
-COM_MENUS_TYPE_SYSTEM="System Links"
@andrepereiradasilva
andrepereiradasilva Jan 13, 2017 Contributor

why are this removed?

@infograf768
infograf768 Jan 13, 2017 Member

Agree, they should not

@rdeutz
rdeutz Jan 15, 2017 Contributor

I didn't remove them I just fixed the alpha ordering

+
+ if (!AssociationsHelper::hasSupport($extensionName))
+ {
+ throw new Exception(JText::_('COM_ASSOCIATIONS_COMPONENT_NOT_SUPPORTED') . ' ' . $itemType->realcomponent, 404);
@andrepereiradasilva
andrepereiradasilva Jan 13, 2017 Contributor

Does $itemType->realcomponent exists? or is a leftover?

@infograf768
infograf768 Jan 13, 2017 Member

Also, the lang string COM_ASSOCIATIONS_COMPONENT_NOT_SUPPORTED is not present in the ini file.

@infograf768
infograf768 Jan 13, 2017 edited Member

Maybe we should have something like:
throw new Exception(JText::sprintf('COM_ASSOCIATIONS_COMPONENT_NOT_SUPPORTED', JText::_($extensionName), 404);

and
COM_ASSOCIATIONS_COMPONENT_NOT_SUPPORTED="The extension %s does not support multilingual associations."

@rdeutz
rdeutz Jan 15, 2017 Contributor

fixed with 406d18d thanks!

@rdeutz rdeutz fixed not supportted message
406d18d
@andrepereiradasilva
Contributor

@rdeutz @infograf768 it seems this PR misses the update (extension + asset) and installation part (extension + asset).

@rdeutz
Contributor
rdeutz commented Jan 15, 2017

@andrepereiradasilva yes I am working on it just at this moment :-)

@rdeutz rdeutz installation
e4f03ee
installation/sql/mysql/joomla.sql
-(101, 'mainmenu', 'Home', 'home', '', 'home', 'index.php?option=com_content&view=featured', 'component', 1, 1, 1, 22, 0, '0000-00-00 00:00:00', 0, 1, '', 0, '{"featured_categories":[""],"layout_type":"blog","num_leading_articles":"1","num_intro_articles":"3","num_columns":"3","num_links":"0","multi_column_order":"1","orderby_pri":"","orderby_sec":"front","order_date":"","show_pagination":"2","show_pagination_results":"1","show_title":"","link_titles":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_vote":"","show_readmore":"","show_readmore_title":"","show_icons":"","show_print_icon":"","show_email_icon":"","show_hits":"","show_noauth":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":1,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 41, 42, 1, '*', 0);
+(20, 'main', 'com_tags', 'Tags', '', 'Tags', 'index.php?option=com_tags', 'component', 0, 1, 1, 29, 0, '0000-00-00 00:00:00', 0, 1, 'class:tags', 0, '', 39, 40, 0, '', 1),
+(21, 'main', 'com_postinstall', 'Post-installation messages', '', 'Post-installation messages', 'index.php?option=com_postinstall', 'component', 0, 1, 1, 32, 0, '0000-00-00 00:00:00', 0, 1, 'class:postinstall', 0, '', 41, 42, 0, '*', 1),
+(22, 'menu', 'com_associations', 'Multilingual Associations', '', 'Multilingual Associations', 'index.php?option=com_associations', 'component', 1, 1, 1, 28, 0, '0000-00-00 00:00:00', 0, 0, 'class:associations', 0, '', 37, 38, 0, '*', 1),
@andrepereiradasilva
andrepereiradasilva Jan 15, 2017 Contributor

the component id is 34, not 28, see above

@rdeutz
rdeutz Jan 15, 2017 Contributor

ups wrong file version

installation/sql/postgresql/joomla.sql
@@ -504,7 +504,8 @@ INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder"
(30, 'com_contenthistory', 'component', 'com_contenthistory', '', 1, 1, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0),
(31, 'com_ajax', 'component', 'com_ajax', '', 1, 1, 1, 1, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0),
(32, 'com_postinstall', 'component', 'com_postinstall', '', 1, 1, 1, 1, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0),
-(33, 'com_fields', 'component', 'com_fields', '', 1, 1, 1, 1, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0);
+(33, 'com_fields', 'component', 'com_fields', '', 1, 1, 1, 1, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0),
+(33, 'com_associations', 'component', 'com_associations', '', 1, 1, 1, 1, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0);
@andrepereiradasilva
andrepereiradasilva Jan 15, 2017 Contributor

should be id 34
missing asset

@rdeutz rdeutz fix menu install
cc61448
@alikon alikon referenced this pull request in rdeutz/joomla-cms Jan 16, 2017
Closed

[com_associations ] - mssql sql update #12

@@ -285,6 +285,7 @@ protected function updateManifestCaches()
array('component', 'com_postinstall', '', 1),
array('component', 'com_joomlaupdate', '', 1),
array('component', 'com_fields', '', 1),
+ array('component', 'com_associations', '', 1),
@infograf768
infograf768 Jan 16, 2017 Member

should be tabs instead of spaces and align to the others

@rdeutz rdeutz self-assigned this Jan 16, 2017
rdeutz and others added some commits Jan 17, 2017
@rdeutz rdeutz Merge branch 'staging' into com_associations_rewrite_merge
95fc4b6
@wilsonge wilsonge Spaces -> tabs
9fd1d9b
@wilsonge wilsonge merged commit 4a5ee88 into joomla:staging Jan 17, 2017

0 of 2 checks passed

continuous-integration/drone this build is pending
Details
continuous-integration/travis-ci/pr The Travis CI build is in progress
Details
@wilsonge
Member

Good work to everyone involved. Especially @rdeutz @infograf768 and especially @jreys for getting this started with your gsoc work :)

@alikon alikon added a commit to alikon/joomla-cms that referenced this pull request Jan 17, 2017
@alikon alikon [com_associations] - mssql updates
the missed mssql updates for #13537
424cab6
@rdeutz rdeutz added a commit that referenced this pull request Jan 17, 2017
@alikon @rdeutz alikon + rdeutz [com_associations] - mssql updates (#13617)
the missed mssql updates for #13537
56ad6aa
@rdeutz rdeutz deleted the rdeutz:com_associations_rewrite_merge branch Jan 17, 2017
@puneet0191
Contributor

Thanks guys! @rdeutz @infograf768 @alikon @andrepereiradasilva and @jreys 👍 and all the testers as well

@wilsonge wilsonge pushed a commit that referenced this pull request Jan 23, 2017
@C-Lodder @dgt41 C-Lodder + dgt41 Merge from staging #8 (#306)
* tinymce 4.5.2

Version 4.5.2 - January 4, 2017

* Clean up JModelForm

* xml update version

* Catch "expects parameter 2 to be string" error

* Remove multiple parameter from user field

* Remove default value from the field params to inherit from plugin

* It's 2017. Happy New Year

* Some improvements in tests #3: (#13402)

* Some improvements in tests #3:
- call static methods correctly

* Fix T_PAAMAYIM_NEKUDOTAYIM (for all PHP 5.x)

* Remove forgotten call

* Changed a few things after conversation with @mbabker

* Fixes according to @andrepereiradasilva's comments

* Unnecessary double quotes in  /libraries/joomla (#13372)

* Replace unnecessary double quotes in /libraries/joomla

* Formatting

* CS Fix

* Fixes, based on @andrepereiradasilva's comments.

* Change remove string concatenations for some occurrences.

* Fixes, based on @andrepereiradasilva's comments.

* Fixes, based on @andrepereiradasilva's comments.

* Fixes, based on @andrepereiradasilva's comments.

* Fixing search for MySQL (#13571)

* Use $query->castAsChar instead of casting to integer

* Codestyle

* Clean up old code in cache.php file (#12183)

* Clean up in cache - part 1

* Remove old php4 style to catch exception which currently is useless.
* Add shorten version of ternary pperators.

* Add fix for contains()

* Add more email cloaking unit tests and fix email cloaking bug (#13446)

* Rsponsive article edit fields (#13586)

* Fix BS grid (#13560)

* Fixing Showon in plugins/modules/templates (#13549)

* Adding field group to JFormHelper::parseShowOnConditions and rearranged argument order.

* codestyle

* $field->assigned_cat_ids may not exist. (#13570)

* Clean up ModulesModelModule class (#13380)

* Make the calendar work in the subform field (#13153)

* [com_fields] Add Joomla loading overlay when form submit is triggered by category selector change (#13320)

* Added overlay box and message box for submit and reload form after category change

* Removed commented testing code

* Added language strings

* CS fix, added missing spaces

* Used Joomla logo spinner instead of fixed message

* Reverted changes in admin lang file

* CS

* Revert frontend lang changes

* Added Joomla loading overlay to new field form when changing field type

* Added Joomla.loadingLayer show to typeHasChanged JS method too

* PostgreSQL - return the same string each time of call __toString() on update query (#13284)

* TranslateFormat in all other forms (#13158)

* TranslateFormat in all other forms

* Revert for tracks filter bar

* Fix for issue #13531 (#13535)

* Fix for issue #13531
- [AND] and [OR] operators were not functioning correctly. Fixed.
- some cleanup of whitespaces in XML file and removal of rulers when the encapsulated fields are not showing.

* Removed $key, as it was an unused leftover

* CS Fix

* Whitespace Fix

* Whitespace Fix

* Whitespace Fix#2

* Conflict resolution (hopefully, Don't have a complete dev-environment right now.)

* Added css classes to the mod_login submit buttons (#13379)

* Added css classes to the mod_login submit buttons

* Added css classes to the mod_login submit buttons

* Changed class to login-button in both modules

* PHPMailer update (#13575)

* Correcting sidebar display LTR and RTL (replaces #13548) (#13593)

* Fix for Issue #13588 - mod_articles_categories - Fatal error: Class 'ContentHelperRoute' not found... (#13590)

* Update helper.php

Remove JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');

* Update mod_articles_categories.php

* Make clear Exception messages in JTable (#13603)

* Fix issue where fields is false (#13574)

* Update jQuery Autocomplete to 1.2.27 (#13282)

* Show text "No Information Entered" in users profile when no value is set (#13589)

* Delete UCM content entries when Joomla articles are deleted (#13592)

* [com_fields] Add base list plugin class which activates the list plugin (#13546)

* Add base list plugin class

* Update fieldslistplugin.php

* Fixes #13177: Added where clause with block status (#13545)

* Menu manager for Joomla Backend Menu (#13036)

* Added client id column to menu_type table.
Allow creating and editing of "menutype" records with client_id = 1
Add client_id filters in menu and menu items list views
Sync menu type filter and client_id filter allowing only menu type in the URL query parameter (B/C)
Both Lists now also filtered by client id.
Client id selection updates the menu type list options to show choices only for that client id

TBD:
Reserved menu types: main & menu

* In modal list view we currently hide client_id filter and show only site menu types, will be updated once we have more clear vision.
Menu type assignment to backend mod_menu config from both menu manager and module manager. Though that is not functional within the module itself.

* Add/edit menu item redirect with clientId from list filter.
Load menu item form based on active client id
Menu type dropdown choices limited to active client id value
Show menu-item-type choices (modal) trigger with client id parameter in the url
Switch edit layout based on client id

* Menu item type loading from component metadata xml or mvc not identifies backend and frontend application separately. Not yet able to load menu item type from backend so returns empty list. Front-end is still intact and unaffected.

* Edit menu item and create menu item set to follow client id and menu type value consistenty.
When creating menu item alias, the referenced menu must also belong to same client id.
Client id field removed from form, this should be auto-calculated from the menu type when saving.

* Adding layout metadata xml in backend to reference menu item types as it was in front-end.
Removed unnecessary admin specific layout added earlier as it is so far same as original edit.php, may be added back when needed.
Remove page specific meta data fields from backend component type menu items.
For now disable/unsupport association for backend menu items.
Disallow change of client id for existing menu items, unexpected conflicts may occur if allowed so better be safe.

Ref to #2

* Created each backend menu items using menu manager as a replica of existing Joomla backend menu. These are to be used for testing during upgrading menu module.
language keys are not yet translated. Translation will be done as we are ready with most new or modified language keys application wide.
Backend menu items does not require all those parameters as that with front-end menu items. Therefore segregated entire menu item xml for backend/frontend.

Ref #2

* [a11y] Protostar back to top (#12446)

* [a11y] Protostar - back to top link

* Oops Andre was right

* add anchor for non-js enabled browsers

* Restructure mod_menu to load preset menu items as an option (default). Other options will be the menu-type and will cause us to load from database. Ref #2

* Disallow editing and set to home of protected menu type menu items viz. 'main' and 'menu'
Allow explicit filtering by protected menu type choices in menu items list view. Not limited to #__menutypes table entries only. Unfiltered list still excludes those menu items. (B/C ok)
Menu items created during installation of a component are now saved as published. When unpublished we won't load it in customised menu's component menu container. They will still be loaded irrespective of state as previously when preset is in use. (B/C ok)
Home page can now be set one per client instead of one overall.
Menu module only loads item from 'main' and 'menu' type menu items when requested for component menu items. This filter is now required because we are now going to have other custom menu types for backend which should not be included.

Ref #2

* Load menu items from databases in correct hierarchy. Remove any extra separator type menu items created due to exclusion of certain menu items based on various conditions.
Populate menu items loaded from db into the AdminCssMenu object for final rendering.
Load new installed components menu items dynamically under the specified menu item with “components container” flag. Any unpublished menu items from the protected menutypes (viz. “main” and “menu”) will be skipped.
When loading from system preset menu items, these components menu items are all included regardless of their published state. (B/C ok).

Ref #2

* View manifests for menu item type and related language key updates. ref #2

* Minor mistake fix.

* Translate menu item titles in list view. Ref #2

* Reset the preset menu structure to be same as the current J37 branch state, dropping implicit inclusion of joomla/joomla-cms#10657 improvement. Ref #2

* Allow the existing components to leverage the menu/submenu entries in their install manifest for admin menu manager menu link types.
This provides ability to create links for then without requiring them to add layout manifests. Hence, full B/C solution. Ref #2

* Minor fix

* Remove temporary dev phase files

* Preparing for PR, database and install script updates.
Ref #2

* Minor fix

* Codestyle fix

* CS fix

* Don’t sort menu items

* Sort lang keys
Allow ‘component’ as first level alias in admin menu items
Fix lang key
Remove ‘home’ setting from admin menu items

* apply in hathor

* menu item alias check for site only

* Post merge fixes.

* Fixes as suggested by @infograf768

1. Group menu types by client id in lists and default admin menu
2. Hide association tab for admin menu items.
3. Hide client id filter for association mapping modal.

* Add recovery mode for menu where the selected admin menu does not contain link to module manager and/or menu manager.

* minor bug fix

* Remove assoc column for admin menu items.
Make recovery mode message more straight forward.
Change radio to toggle buttons.

* Add SMS to External URL menu item type (#13615)

Allows data like sms://+15555555555 to be used instead of getting "Save Not Permitted"

* Adding the Multilanguage Associations Manager (#13537)

* Merge Associations rewrite

* updated searchtool with the new way

* udpated edit view title

* added contact associationshelper class

* temp fix

* fix for category filter

* added newsfeeds associations helper

* CAPS for params

* lang tag and added a helper function

* added land tags

* code style fix

* better title in associations view

* better title

* use the usual naming

* fix language tag, thanks to brian teeman and twitter :-)

* initial review

* on simple change

* on simple change 2

* simple

* some more helper changes

* Update associations.php

* Update associations.php

* app isn’t set a model property

* correct return value

* simplify code adn use helper method

* use typename directly

* changed the tooltip position

* Correct menu helper

* remove unreacable code

* correcting checked_out

* com_menus

* fixed not supportted message

* installation

* fix menu install

* Spaces -> tabs

* [com_associations] - mssql updates (#13617)

the missed mssql updates for #13537

* [com_fields] Improved description in the "description" tooltip Fixes #13392 (#13557)

* Fixes #13195: Added margin bottom to sidebar menu

* Fixes #13392: Changed description field tooltip

* Fixes #13392: Changed description field tooltip

* Fixes #13392: Changed description field tooltip

* sync admin menu menutype (#13618)

* Routing: Remove IDs from tags URLs, use menu item of tags view as default for tag view (#11166)

* Remove id from tags, use tags list menu item as default for tag

* Code style, remove useless code, feature: first Itemid for tags view, second Itemid for default tag view

* Updating install.xml en-GB administrator (#13623)

* run grunt
a135d31
@sloanthrasher

Will the side-by-side view be available when editing an article on the front-end?

@infograf768
Member

Will the side-by-side view be available when editing an article on the front-end?

Not in 3.7.0
I am not aware of anybody working on a frontend Interface.

@joomleb
joomleb commented Feb 11, 2017 edited

Hi guys,
I have a question, you wrote:

  • "When you have chosen a type and language, you can see your articles."
  • "Click on an article (reference) and you will see the reference article on the left side. On the right side you can chose a translation target and translate your article."
  • "If you click on the available translation you get directly the view with two articles side by side."
    Please, the "available translation" availability depend on... ?
    Depend on the default "Language > Content: Language Tag creation" ?!?

To really be able to manage sites multilanguage sites (quickly and simply) I think 3 things are a must:
1 - A front-end interface, on normal sites is unthinkable to give translators an administrator access. This front-end interface should have an ACL based on language/s assigned to the user (showing only those languages)
2 - A layout more simple as possible. This is way I want put in evidence the Speedy Translate extension by Solidres. They found some solutions that in my opinion should be a need on joomla Multilanguage. In first of all I want put in evidence the "Inline Translation" feature. Click on a flag is 1 click, while click on a selector, choose, and select are "3 clicks".
3 - Last but not least, an article a lot of time have to be ready quickly and it is hard to have all translated well soon. So, a "pre" - "auto-populate" button can be a solution (where clicking all the enabled languages are populated into the articles), as it is running (one by one) the Translater CKEditor plugin.
Would be good have it integrated into the "copy Reference to Target" button, or as I wrote an "auto-populate all articles", where in the Extension options we can set the translator engine for each language association...

Many Thanks to all for this great new feature...

@Bakual
Contributor
Bakual commented Feb 12, 2017

@joomleb This is a closed (merged) PR and thus doesn't get much attention. You would have to create a new issue if you have found a real issue. If you just need assistance with this new feature, feel free to use the forums (http://forum.joomla.org/)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment