Jump to content






Photo * * * * * 1 votes

Let's design a Wiki for IP.Content

Posted by Wolfie, in IP.Content 13 March 2010 · 524 views


Since I can edit a blog entry indefinitely (at least I hope), it'll be easier to organize things here.
Original post here: Let's design a wiki system!


The goal of this is to try to use input from multiple members to either put together a wiki as a group, or at least have enough ideas, code, templates, etc so that someone else could take over and finish the product.  Either way, a group effort will help us get a wiki for IP.Content.

It would be nice if the wiki could also be easily converted into an article system, so that it's not only a wiki mod, but with a couple of changes, it's also an article, tutorial, recipe, etc, whatever someone needs.

I'll update this blog entry to reflect decisions and such about features, structure, appearance, etc.

Features
  • Well first, duh, someone to be able to add an entry
  • Viewing a list of available entries
  • Viewing history of changes (for all who have permission)
  • Ability to revert changes (front end, not ACP)
  • Hide discussion into a separate tab (just like a real wiki!)
  • Search wiki only content

Database structure
  • Title - 80 characters, required
  • Content - 10k, required
  • Views - numerical, not user editable (needs to be auto incremented)
  • Tags - 100 characters, text box, not required

Functions needed
  • Auto increment view count
  • Version comparisons
  • Reverting to earlier version

Skin layout
  • Similar to other wiki's, with main index being on far left, main content in rest of the view.  IPB wrapper preferred, so that it keeps the same look/feel as the site (admins choice though).
  • Tab to put discussions in separate view from main article.
  • Tab for edit history


I'll be editing this entry as needed.




YES PLEASE! It's as if you were reading my mind! I have given up on waiting for IPBWiki to be released for IPB3... but I desperately need a Wiki for my forum that doesn't require users to create a second account.
This is a great idea.
The part of having a revision history and reverting is something that bfarber wants to make available to the front end of IP.Content.

Keep in mind that someone else may need to step in and do the actual work on this, but might help if things are thought out for whoever decides to do it.  Aside from the revision history, it is actually possible to have a watered down wiki system.  Making the database is the easy part, the harder part is the appearance and little bits of scripting to add a few features.
In order to separate a Wiki from what IP.Content delivers, I think you'd need the following:

- Bracketed [page name] interlinking where if you click on it, it leads you to the page or to the add page that would allow someone to extend/create if the page hasn't been created yet.  Some visual way to tell whether a link actually goes to an existing page or needs to be created is also a must.
- Backlinking (display of all pages linking to the current page).
- Change control/revision history/reverting.
- role-based security (of course) to disallow banned members or guests from editing, as well as assign admins/moderators.
- user pages.  I used this quite a lot in mediawiki, as a space for my users to add stuff they didn't want others to edit.
- disambiguation/redirection
- a way to return lists of pages that meet various criteria.  Mediawiki has plenty of "special pages" that return lists of new pages, popular pages, orphaned pages, recent changes, what links here, etc.

basically? most everything here: http://en.wikipedia.org/wiki/Wiki

I don't need a database of pages in a list, IP.Content already does that.  I want a real wiki where the infrastructure fades back and you just have the wiki itself, going from page directly to page as you follow information.

ladyofdragons, on 23 March 2010 - 11:40 PM, said:

In order to separate a Wiki from what IP.Content delivers, I think you'd need the following:
- Bracketed [page name] interlinking where if you click on it, it leads you to the page or to the add page that would allow someone to extend/create if the page hasn't been created yet.  Some visual way to tell whether a link actually goes to an existing page or needs to be created is also a must.
It may be necessary to have an error page that will parse the URL attempted and then figure out what to do from there.  If it sees that someone tried to access a /wiki/ page that doesn't exist, then it could redirect (or load) another page that would determine what action to take.  This would make it a simple edit to an existing error page.

- Backlinking (display of all pages linking to the current page).
I'm not quite sure how the backlinking would work.  But then again, if someone comes along that wants to put this all together, they may know how to pull it off.  I would imagine that when a page is edited, it looks at all the pages it's linking to and makes sure that all those other records are noted (only need to be referenced once to know it's there).  At the same time, it could look at pages that use it as a reference and remove any references that are dead for some reason.

- Change control/revision history/reverting.
The revision history thing is a problem.  Unless there's a way to look at the history via programming, then it'll have to wait until it's made available to the front end.  bfarber has already said he'd like to do that, but that doesn't mean it'll happen.  What he'd like to do and what he's able to do aren't always the same, so just have to hope he can do it.

- role-based security (of course) to disallow banned members or guests from editing, as well as assign admins/moderators.
You can control this with the permission masks per database, so that part is already covered.

- user pages.  I used this quite a lot in mediawiki, as a space for my users to add stuff they didn't want others to edit.
I think that should actually be a separate project, where a member can have a user page that can be linked to via their member profile as well as other places.  It'd offer more power to the member and could be installed separately without having to install a wiki.

- disambiguation/redirection
Explain please.

- a way to return lists of pages that meet various criteria.  Mediawiki has plenty of "special pages" that return lists of new pages, popular pages, orphaned pages, recent changes, what links here, etc.
Sort of like an advanced search or just pages of different special criteria?

basically? most everything here: http://en.wikipedia.org/wiki/Wiki
Haven't looked yet, but let's keep in mind that to make an exact wiki replica, might just be easier to find a method of integration as opposed to something custom made.

I don't need a database of pages in a list, IP.Content already does that.  I want a real wiki where the infrastructure fades back and you just have the wiki itself, going from page directly to page as you follow information.
I'm aware that IPC can do quite a bit.  The problem is in knowing how to accomplish the desired goals/tasks.


Please do keep in mind that I'm hopeful someone will come along and express an interest in doing an IPC project and then they can be pointed to this and have a grand wish list of things already laid out for them.
so basically, you haven't looked from a software architecture standpoint at what it is a wiki actually does, and how it's different from a basic articles system, and yet you're looking to make one?

The link I pointed to was the history of the wiki, and what makes a wiki a wiki.  I've done a bit of study of different wiki systems over the past few years as a comparison of features between mediawiki, pmwiki, and several others.  While a couple of the things I listed were in mediawiki, others such as informative linking that tells you when a page is actually there or not and moves you to the page add for that specific page title if you click on it and backlinking are standard.  HOW it would be done would be to do it just like every other wiki does it, by building an index of links on each page each time it is saved, and using that information to build the display.

I've already started building a wiki for IPB.  Right now I'm just stuck on having little time to put towards it and trying to get through the learning curve of the new architecture/development procedure for building IPB apps in 3.x.  Would be great if someone else were to make one I could just buy or use, but not just an articles system with the word "wiki" attached to it just because it uses wiki markup or because it allows users to add pages.
I have no doubt that you've done research and such into what a wiki is and the different types.  I've said from the beginning that it'd be nice to either put this together as a group effort, or to at least get the features and some concepts put together, so that someone who wants to put this together will have some of the planning and such already done for them.

Were you planning to design a wiki that would integrate with IPB3 or one that would be installed via IP.Content?
Did anyone start any projects into this? What is the best plugin(if there is one) to create a page which is wiki like with IP?

Wolfie, on 28 March 2010 - 02:18 AM, said:

It may be necessary to have an error page that will parse the URL attempted and then figure out what to do from there.  If it sees that someone tried to access a /wiki/ page that doesn't exist, then it could redirect (or load) another page that would determine what action to take.  This would make it a simple edit to an existing error page.
If you have an Apache server, you may use a fake "wiki" folder and work with user friendly links. Using Python you can redirect the user that goes to the fake folder "e.g: 'site.com/wiki/STRING' redirects to 'site.com/index.php?/page/wiki/STRING'". Using a custom PHP code you can check the database if the STRING exists. If yes, redirect to the page, if no, go to a generic php page with a $GET variable containing the STRING
It's the best I can think for now :)

Recent Entries

May 2012

S M T W T F S
  12345
6789101112
13141516171819
20 21 2223242526
2728293031  

Categories