Translation-oriented CMS/Wiki/HelpPortal systems? - content-management-system

We need to run a help portal for users of our application. We want every page to be accesible in several languages.
I want to find a content-management system which would have rich translation features, such as:
Per-paragraph translation;
Warnings for translated content that wasn't updated after a change was made to another language;
Possibility to choose whether to show or hide paragraphs/pages which are not translated;
Easy and user-friendly switching between languages (e.g. "this page is accessible in the following other languages: ...").
I found a MediaWiki plugin which allows at least some of the above mentioned. Are there any CMSes with native orientation for translations and multilingual content?

The Daisy CMS has great built-in translation support.
Break your content into sections and translate them individually, or whole pages at a time.
You can run a report that tells you which documents have translations that are out of sync with the base language, and which documents don't have translations at all. You can then translate inside the app or export for offline translation and import later.
You can exclude untranslated pages and paragraphs from the locale-specific navigation automatically.
The menu will automatically show the user which languages are available for a specific page.

Related

Is there a Rich text Editor for Wagtail that allows users to select font size?

I am using wagtail and my user wishes to be able to change font sizes in the Rich text editor. I have attempted to use TinyMCE but the install is problematic (see this question and non-answer)
Is there an alternative that would provide the functionality that I am looking for?
You'd probably consider this a non-answer too, but if a rich text editor with that feature did exist, it would be breaking the design principles of Wagtail. Wagtail is a system for capturing and presenting information, not a web design package, and mixing the two is liable to lead to all kinds of problems down the line (inconsistent styling between pages, difficulty redesigning or migrating the site in future, accessibility for screen-reader users).
The correct alternative is to find out what information your client wishes to communicate with different font sizes, and then make sure you're modelling that information in your page models. For example, if they want to include pull-quotes in their text, you can model the page content as a StreamField with a pull-quote block type (with its own text style defined by you in HTML/CSS). If they don't have any specific informational purpose in mind, and just want to play around with fonts, then gently advise them that that's your job, not theirs...

What is the relation between extensions and the backend of TYPO3?

I am new to TYPO3 and have trouble understanding the general relation between extensions and the backend of TYPO3.
For example, is it true that the goal of making an extension is to be able add edited/new content elements to your page that cannot be found in TYPO3 out of the box?
For example if I wanted to add a carousel to my page, would I make an extension and design it in such a way that I can add it from my backend to the desired page? Or would it make more sense to, for example, put it as a partial and import it to the desired page using fluid (all of this without using the backend and just using code).
Or are both approaches possible and when would you go for the first or the second (or seek out a third approach)?
Sorry if this question is too general/vague. I feel like I do not understand how the backend and the files in my TYPO3 folder communicate to generate the website and that I am using content elements in the backend one time and typing out the elements in HTML the next time without a good reason for it.
I try to bring some light into the dark areas.
Backend This is the admin area of the CMS where in most cases the content is created by editors.
Frontend: How the website looks to a regular visitor
Extension: An extension is custom code, either your own code or by others which extend TYPO3 in one or more ways. The benefit is that you don't change the code of TYPO3 core itself and therefore it can be always updated.
An extension can be used for a lot of things:
- Shipping a site template with all the assets like CSS, JavaScript, HTML template, ..
- Providing custom content elements
- Providing new record types like news or forms
- Improve user experience
So yes, if you want to have a new kind of content elements you need to use an extension:
Search on https://extensions.typo3.org to check if there is already something which fits your needs
Use https://extensions.typo3.org/extension/mask/ (best in combination with https://extensions.typo3.org/extension/mask_export/) or https://extensions.typo3.org/extension/dce/ to make it a lot faster to create content elements
If experienced you can also create a custom content elements without any additional extension but for start I don't recommend that.
One approach to look at this question in a different way might be to differentiate between content created and maintained by editors (the backend users which typically add and maintain content) and parts of the visible webpages created in other ways. For example, the header, footer, menu of a site may be created by a sitepackage extension - this is something the editor (backend user without admin access) typically has no permission to access and that is one of the points of a CMS - the content is editable by someone without technical background. Of course this improves the stability as well because you don't have people fiddling around with things they should not be able to have access to and thus cannot break.
If you want your editors to be able to add (remove, change) content - do it in a way they have access to (typically using content elements).
You are right, the core provides content elements (such as "textmedia"), extensions can extend this by adding other content elements.
For your example with "carousel" you might want to look at the (official) Introduction Package which uses the bootstrap_package which offers a carousel content element. The Installation Guide explains how to setup a TYPO3 installation with "Introduction Package" so you may already be using that.
For example, is it true that the goal of making an extension is to be able to add edited/new content elements to your page that cannot be found in TYPO3 out of the box?
That is one of many, many other possible purposes of an extension. For example, look at the extension "min". It does not provide any content element and there is no visible change for the editor. An extension is just a way to extend the TYPO3 core (while the core itself also consists of extensions).
Introduction of Extensions in TYPO3 Explained
Sitepackage Tutorial

What separates a content management system from just a bunch of web pages?

I have a website that has related pages. They have links that point back and forth to one another but I have no integrated system, nor do I know what that would mean.
What is the minimum code that a group of web pages must have to be considered a Content Management System (CMS). Is it that all the settings are in the database and the pages are generated somehow? Is there some small snippet that all my pages could share that makes them a CMS, database or not?
Thanks. I was also hoping not to have to study a giant CMS to see what makes it a CMS . After maybe a basic understanding I would know what I was looking for.
edit: here's why I ask about code. Whenever I have looked at a CMS, and maybe they aren't all the same, I saw that to develop a module you always had to inherit from certain classes and had some necessary code. I didn't know if there was some magic model that I just don't get that all cms makers understand.
edit: perhaps my question is more about being extendable or pluggable. What would a minimum look like? Is it possible to show that here?
edit: how about this? Is something a CMS if it is not extendable and/or pluggable?
I think this is really impossible to say. We all manage content. The "system" is just whatever mechanism you use to do so(dragging and dropping in Explorer or committing content changes via a SQL query). To say there is a minimum amount of code needed really isn't indicative. What is indicative is how often you find yourself making mistakes and how easy it is for a given user of a given skill level and knowledge to execute the functions in the designed system. That tells you the quality/degree of what you have in place being worthy of being called a "CMS."
Simply put a CMS is an application that allows the user to publish and edit existing web content.
In response to the edit:
A "good" CMS allows of extensibility. By using inheritence you can extend the functionality of a CMS outside of the core components provided. That's the magic.
About Extensibility:
Depending on the language/framework you want to build your CMS with, you can load pages or controls(ASP.NET) using command built into the framework. Typically what is being done is a parent class/interface is being defined that forces an module that is to be developed to follow some given standards:
Public MustInherit Class CMSModule
'Here you will define properties and functions that need to be global to all modules being developed to extend your CMS.
public property ModuleName as string
End Class
public class PlugInFooCMSPage
inherits CMSModule
end class
Then it's just a matter of simply loading a module dynamically in whatever construct a given language/framework provides.
Ultimately, a CMS is a system that lets you manage content, so it needs an user interface that is dedicated to letting you easily create, edit and delete pages on your website.
However, it's fairly usual to expect from a CMS to provide a browser-based WYSIWYG page editor, file uploading, image resizing, url rewriting, page categories and tags, user accounts (editor, moderator, administrator), and some kind of templae system.
Without dragging you into a theoretical explanation of what a CMS is and what it's not, perhaps some tutorials on the building methodology of a CMS will help you better understand.
http://css-tricks.com/php-for-beginners-building-your-first-simple-cms/
http://www.intranetjournal.com/php-cms/
A Content Management System is a System that Manages Content. :)
So if you got many pages that share the same layout, you can create a system that stores the content into a database and when a page is requested, it gets that content, merges it with a template that contains the page header, menu, etc.. and outputs the result.
The basis idea is that you don't want to copy HTML pages, and have to edit hundreds of them when you want to change your layout.
Such a system can be very complex, featuring wysiwyg editors, toolbars, version control, multiple user publishing and much more, but it could be as simple as a single page behind a standard loging, that contains only an input field for the title and a textarea in which you type the html content.

Difference between components, modules, extensions and plugins in Joomla

What is the difference between Joomla components, modules, extensions and plugins?
Plugins
Plugins enable you to execute code in response to certain events, either Joomla core events or custom events that are triggered from your own code. This is a powerful way of extending the basic Joomla functionality.
Components
Components are the main functional units that display in your template, like the content management system, contact forms, Web Links and the like. They are usually displayed in the center of the main content area of a template (depending on the template).
Modules
A more lightweight and flexible extension used for page rendering is a module. Modules are used for small bits of the page that are generally less complex and able to be seen across different components. Sometimes modules are linked to a component such as the core latest news module.
Extensions
Components, languages, modules, plugins and templates collectively known as Extensions.
Quickstart tutorial for free.
Components
A component is a separate application. You can think of a component as something that has its own functionality, its own database and its own presentation.
So, if you install a component, you add an application to your website. Examples of components are
a forum
a newsletter
a community system
a photo gallery
You could think of all of these as being a separate application. Each of these would make perfectly sense as a stand-alone system.
A component will be shown in the main part of your website and only one component will be shown. A menu is then nothing more than a switch between different components. You can compare it a bit with your windows taskbar, where you see a tab for each open application.
Modules
Modules are extensions which present certain pieces of information on your site. It's a way of presenting information that is already present. This can add a new function to an application, which was already part of your website.
Think about
latest article modules
login module
a menu
Typically, you'll have a number of modules on each web page.
The difference between a component and a module is not always very clear. A module doesn't make sense as a standalone application, it will just present information or add a function to an existing application.
Take a newsletter for instance. A newsletter is a component. You can have a website which is used as a newsletter only. That makes perfectly sense. Although a newsletter component probably will have a subscription page integrated, you might want to add a subscription module on a sidebar on every page of your website. You can put this subscribe module anywhere on your site. You'll probably agree with me that a site with just a subscription module and no actual newsletter component would be rather ridiculous.
Plugins
They used to be called mambots in Joomla 1.0.x, but since Joomla 1.5.x they're called plugins. A plugin is a function which is performed on a part of Joomla before this part is shown. This part can be on content, on the editor, on the complete system, etc. This might seem a bit abstract, but you'll understand it with an example.
Let's take one of the plugins of Ulti Joomla as an example: Ulti Reflection. This is a plugin which can make a reflection of the images you use in your content articles. To use this you just have to put something like
inside your content. Before the content is shown to the user, the Ulti Reflection plugin will scan the content to find the {reflection} tag. If it finds the tag, it will replace the tag with the image and its reflection.
Be carefull not to put to many plugins one your website, because some of them can really slow down your site.
If the difference between the three types of extensions is still not completely clear, then I advice you to go to admin pages of your joomla installation and check the components menu, the module manager and the plugin manager. Joomla comes with a number of core components, modules and plugins. By checking what they're doing, the difference between the three types of building blocks should become clear. You can also check out the official Joomla extensions page. Browse through the extension categories and you'll be amazed about the extension possiblities you have for your site.
Modules and components are displayed on a page.
Plugins operate behind the scenes and can do a multitude of things, like replacing content with other content, perform searches, perform login/logout functions, or anything really tricky that you can imagine.
There can only ever be one component on a page. When you choose menu items, you are actually choosing the component that you wish a page to display. The variables for the component are stored once (in the database), so you can't have multiple instances of the component!
On the other hand, modules are added multiple times. You can have many modules on the one page. In fact, you could have 100 instances of the same module on the one page. The variables for a module are stored against each instance. (in the database).
This is why joomla templates have one place holder for a component, and many place holders for modules.
A module can be added to an individual page (menu item) , or seleceted pages, or all pages.
Remember that a menu item is indeed a component choice. Each menu item does store variables in the database, so it is possible to feed the component display details. E.g. what page id the content component is to display.
In the back end, components can have many backend settings and functions, and "do" many more things than a module.
Examples of a component are:
com_content (displays articles...)
a bulletin board
a forum
a sitemap
Examples of a module:
a countdown clock
top 10 most read content
a poll
Unless you understand the difference between a module and a component, you will find it very difficult to administer your Joomla installation.
Modules
Modules are usually small pieces of functionality designed to present information in your site. They can appear a number of times, on a number of pages in various positions. On the contrary components are a full blown application, usually quite complex and are to the main body if a page. Also each module can be viewed in various pages, and the position of each module can be easily changed. You are allowed to select the menu items where a module is displayed. A good example of the usage of this functionality is targeted advertising. If your site has various sections, you can create module for each section. Each module will contain a targeted advert for the section. Now instead of showing all the modules, all the time, you customise the visibility of the module such that each advert is displayed only in the relevant menu links. Typical examples of standard Joomla modules are : Main / User / Top and other menus, Latest News, Popular Articles, Polls, Login Form, Syndication Details etc.
Components
On the other hand, a Joomla component is typically more complex, with extensive functionality and capabilities. A component can only be displayed in the main area of a page, and can only be displayed in a single page (usually). Links to components are usually done by creating menu items. Components usually have a particular page or pages for their configuration.
Extensions
Joomla extensions extend the functionality of Joomla websites. Five types of extensions may be distinguished: components, modules, plugins, templates, and languages. Each of these extensions handles a specific function.
Comdev is a Joomla development services provider, which provides varirties of extensions like: JomOffers, JomDirectory, JomHoliday 3, JomEstate, JomEvents.
Source: http://comdevjoomla.blogspot.com/

joomla multiple site content distribution

I'm just starting to evaluate joomla CMS as a tool to build out my personal site. I'd like to manage multiple sites/domains with one copy of joomla on one host. so I'll own mysite.com and myothersite.com, which will both point to the same host/joomla code. If I do this I need to be able to set which domain/site the content I add shows up on. For some sites the content will be on both for others it will be on only one. What would be ideal it to have some kind of filtering mechanism so I don't have to manually set where the content goes.
What would be ideal is for me to set tags on the content and each site can specify which taged content to show.
My last requirement is that I be able to have different pages on each site.
Is this possible or am I asking too much from a "free" CMS?
Thanks all
I don't know if there's a component that achieves what you're describing here. I use a multi-language component in some of my sites that shows translations, but it doesn't "suppress" articles that doesn't have references to a translation: it just says "No translations to this article". I know you're not asking for translations methods, but I think the Joomfish way of selecting content based in a chosen language would be what you wanted, but not based in languages, just domains.
The only component I know it would be able to suppress articles based in pre defined parameters (in its case the language), is the Joomfish's "Table Localization Plugin", but you need to be a Joomfish silver member paying $60 to Joomfish's developers.
You could write a component(see here for plugin documentation), that analyzing the domain, would suppress articles that shouldn't appear in that specific domain. But I think it's going yo be a lot of work. You would learn a lot of Joomla's architecture, though.
How Joomla displays its content (output) is controlled entirely by parameters. So if you can control what parameters are loading, you can create multiple displays per host
However, that may be overkill in this case. You can just easily hack your template. Just make it load a different menu for siteA and siteB. (The host is set in $_SERVER['HTTP_HOST'])
The menu on siteA could have a tagging component item, set to display articles tagged siteA.com. The siteB will have the same for its domain.
While there are extensions that will do what you describe (http://extensions.joomla.org/extensions/core-enhancements/multiple-sites), Joomla is really designed for one site at a time. I've done setups where I use the same codebase for Joomla and manage it with version control, but I always end up launching multiple sites with individual databases.
However, I don't know of any CMS that inherently allows you to share articles across instances while keeping the data centralized. You may be looking at an extension (or your own customization) regardless of which platform you pick.
We had a similar problem with needing to share content across multiple Joomla! sites so we developed this extension: http://extensions.joomla.org/extension/simple-sharing
It is not very robust in terms of what it can share but it does let you share Articles across multiple sites and choose which sites and categories those articles get published into. I hope it works for you.
Thanks!