how to use Dokuwiki for creating a common user manual - dokuwiki

I am trying to use Dokuwiki for creating a software user manual, given that I have to create 3 user manuals for the same product in different platform and the changes is very less. Is there any way in Dokuwiki to create a common user manual that can be used for different products?

For the specifics of DokuWiki I'd recommend the site export plugin (primarily because I made it and we use it for our documentation as well).
You can create the chapters of your book just like a normal page in your wiki. When it comes to combining them into different books, create a page called "toc" in a different namespace. In there have the following syntax (see the github page for details):
* [[namespace:chapter1]]
* [[namespace:chapter1.1]]
* [[namespace:chapter1.2]]
* [[namespace:chapter2]]
* [[namespace:chapter2.1]]
* [[namespace:chapter2.2]]
Now you can export this namespace with the roc option enabled - and merged into one document. You could also use the PDF export with custom book-like styles now (this is what we do primarily).

This answer applies to any wiki engine, not just DokuWiki.
Basically, what you need to do is factor out the common part of the documentation into separate pages that can be included in the product-specific pages. For DokuWiki this requires the include plugin (www.dokuwiki.org/plugin:include), although transclusion is often core functionality for a wiki. I'd suggest starting to write documentation for the most common product and then go back to see what portions of that can be pulled out to use for the common documentation.

Related

Looking for an Extension of an extensive link list

For the construction of an extensive list of links, since the source page is a thematic portal, I am looking for a suitable EXT., Which also runs under TYPO3 7.6 LTS.
it if the list of links to a permits the use of categories and multiple categorization of links is possible would be nice. should Weiterrhin the links are described not only the destination address and an alias but here should still an outline of the target page (possibly with photo) be possible.
Additional functions such as proposing links by users, reporting broken links or even a User Voting would nice additional features.
There were times the Modern Linklist, but they were no longer being developed for TYPO3 <6.x.
Is there perhaps somewhere an alternative or as one might like to vorhnandenen solutions might realize? It would be nice of course, without any programming knowledge, since I'm not a programmer.
P.S .: It is not about building a spam list but high quality links with topics relating to the original page.
As this seems to be a straight forward usage you could try to build that extension by yourself with the ExtensionBuilder.
just build up the records neccessary for your data. and let the EB generate all usefull actions: list & show, even create, edit, delete in FE would be possible.
Afterwards you just need to edit the generated fluid templates.
these links may help:
Overview
EB manual
small remark: if you want the newest code state, use the EB from git instead of TER
I`m not aware of an existing extension for it but it could be a good project to learn extbase / fluid.
You should also take a look at
typo3/sysext/fluid_styled_content/Resources/Private/Partials/Menu
and
typo3/sysext/fluid_styled_content/Classes/ViewHelpers/Menu
Fluid Content contains everything you need to create a list like that, you "just" have to combine the necessary bits and pieces.
You can do a lot with TYPO3 core functionality: there is a page type "external URL", pages can have categories by default, there are plenty of menu options (TypoScript HMENU, menu content elements, Fluid menu Viewhelpers). The Linkvalidator can periodically check all links and report broken links.
For suggestions you could add a form. Powermail for example can also store submitted info in database records, so your visitors could prepare page records (they are hidden until you make them visible).

How to set up multiple Sphinx documents in one project in ReadTheDocs?

I would like to use ReadTheDocs to host my Sphinx documentation. The project is hosted on github. I can connect to it just fine.
The particularity that I have is that the project contains 2 Sphinx documents (e.g. a programmer's manual and a user's manual). ReadTheDocs appears to be detecting both (there are two conf.py) and building both. However when it comes to displaying them, it displays the html for only one of them, as far as I can make it, the first one alphabetically.
So my questions are:
If both have been built, how do you get to see the other one?
Is there a way to use "subprojects" to specify the path to each conf.py and hence have clear URL to each document/manual? That would be the ideal solution.
Read the Docs does not support building two different sets of documentation from the same repository and same Read the Docs project. However, you could use sphinx-multiproject extension to achieve this.
You will need to define this extension in your requirements (see https://docs.readthedocs.io/en/stable/guides/specifying-dependencies.html) and then import your repository twice under Read the Docs --one time per set of documentation you want to host: mydocs-users and mydocs-developers, for example.
Note that this is the exact pattern that Read the Docs itself uses for its documentation:
User's documentation: https://docs.readthedocs.io/
Developer's documentation: https://dev.readthedocs.io/
The repository for both sets of documentation is the same (https://github.com/readthedocs/readthedocs.org/) but documentation generated on each of the projects is defined by that sphinx-multiproject extension. See https://github.com/readthedocs/readthedocs.org/blob/6bf0bede7b757f1e9458e29ba89b591389cae4d5/docs/conf.py#L48-L63
Be sure you follow the tutorial.
Usually you need an index (in conf.py it is referred as master_doc).
Then each file must be referenced, either in a toctree or a include, or a link, etc.
Look at examples on github (ie: the Sphinx-doc repository).

How to scrape and virtually combine wiki articles?

So our company has a large number of internal wiki sites for different departments and I'm looking for a way to unify them. We keep trying to get everybody to use the same wiki but it never works, they keep wanting to create new ones. What I'm wanting to do as an alternative is to scrape each wiki and create a new wiki with articles that has combined information from each source.
In terms of implementation I've looked at Nutch (http://nutch.apache.org/) and (http://scrapy.org/) to do the web crawling and using MediaWiki as the frontend. Basically I'd use the crawler as the front end to scrape each wiki, write some code in the middle (I'm thinking of using Python or Perl) to make sense of it and create new articles, writing to MediaWiki using its API.
Wasn't sure if anybody had similar experience and a better way to do this, trying to do some R&D before I get too deep into the project.
I did something very similar a little while back. I wrote a little Python script that scrapes a page hierarchy in our Confluence wiki, saves the resulting html pages locally and converts them into DITA XML topics for processing by our documentation team.
Python was a good choice - I used mechanize for my browsing/scraping needs, and the lxml module for making sense of the xhtml (it has quite a nice range of xml traversing/selection methods. Worked out nicely!
Please don't do screenscraping, you make me cry.
If you just want to regularly merge all wikis into one and have them under a "single wiki", export each wiki to XML and import the XML of each wiki into its own namespace of the combined wiki.
If you want to integrate the wikis more tightly and on a live basis, you need crosswiki transclusion on the combined wiki to load the HTML from a remote wiki and show it as a local page. You can build on existing solutions:
the DoubleWiki extension,
Wikisource's interwiki transclusion gadget.

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.

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!