GithubHelp home page GithubHelp logo

yeeki's Introduction

Yeeki

Yeeki is a flexible wiki engine that can be used either as a standalone application or as an Yii framework module.

By default it uses markdown syntax with addition of wiki-links.

Implemented features

  • Unicode support
  • namespaces
  • page index
  • revision history
  • ability to view specific revision
  • ability to enter change summary for edit and view it at revision history page
  • revision diff
  • multiple markup dialects support (only markdown provided out of the box)
  • cross-linking with [[wiki-links]]
  • theming support
  • i18n support

Requirements

Currently in order to use Yeeki you need MySQL with InnoDB engine enabled. In the future it is planned to allow using it with MyISAM and PostgreSQL.

Also server should be able to run Yii framework.

Using Yeeki as an application

Currently you need to perform steps listed below. In the future versions all these will be covered by automated installer.

  1. Unpack contents of release archive.
  2. Point your webserver docroot to www.
  3. Make sure webserver have write permissions for www/assets and app/runtime.
  4. Create a database with utf8 encoding and utf8_general_ci collation.
  5. Provide proper database credentials in app/config/db.php.
  6. Run install.php from a web browser.

Using Yeeki as a module

  • Copy app/modules/wiki to your application directory.
  • Using yiic apply migrations with the following command:
yiic migrate --migrationPath=application.modules.wiki.migrations --migrationTable=wiki_migration
  • Add wiki module to your web application config (usually it is protected/config/main.php):
return array(
	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
	'name'=>'My cool application',

	// add the following:
	'modules' => array(
		'wiki' => array(

		),
	),

	// …
  • Add cache component to your application configuration:
return array(
  // ...
  'components' => array(
    'cache' => array(
       'class' => 'CFileCache',
    ),
  ),
);

Implementing data interfaces and configuring module

In order to use wiki in your application you should implement some simple interfaces and configure module pointing to implementations. If you're using standard Yii::app()->user and standard RBAC then the only mandatory interface to implement is IWikiUser. You can find sample implementation in app/components/WikiUser.php. After implementing it you need to configure the module:

'modules' => array(
	'wiki' => array(
		'userAdapter' => array(
			'class' => 'WikiUser',
		),
	),
),

See also IWikiAuth, IWikiSearch.

Theming Yeeki

You can use standard Yii theming feature to theme Yeeki. For details please refer to the definitive guide.

License

Yeeki is licensed under New BSD license. That allows proprietary use, and for the software released under the license to be incorporated into proprietary products. Works based on the material may be released under a proprietary license or as closed source software. It is possible for something to be distributed with the BSD License and some other license to apply as well.

Credits

  • Initial code and ideas: Alexander Makarov, @samdark.
  • Features contribution: Mark Bryk, @mbryk.

Thanks

  • CleverTech for supporting this OpenSource project.

yeeki's People

Contributors

nizsheanez avatar samdark avatar uldisn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yeeki's Issues

Media manager

Need a media manager able to upload files, images, video, revisions and insert these into wiki pages.

Installer

Installer should be able to handler the whole installing process when using Yeeki as an application.

auth

С чем связано решение использовать собственный auth и user а не auth приложения?
Будут отличия?
Может, добавить

<?php
public function getUserAdapter()
{
   Yii::import('wiki.components.auth.*');
   if($this->_userAdapter===null)
   {
        if($this->userAdapter===null)
            $this->_userAdapter=Yii::app()->user;
        else
            $this->_userAdapter = Yii::createApplication($this->userAdapter);
    }
    return $this->_userAdapter;
}

markdown и id

markdown не дает выводить id для тегов, а значит нельзя делать якоря, и ссылки на конкретные части страницы, что для документации в общем-то критично.
я у себя решил это вот так:

protected function compileDocSyntax($str)
{
    $str = preg_replace_callback("/\[#(\w+)\]/",array($this,'renderAnchor'),$str);
    return $str;
}

protected function renderAnchor($matches)
{
    return "<span id='{$matches[1]}'></span>";
}

Поправьте меня, если я не прав или может есть лучшее решение?

Conflict handling

There should be a way to deal with conflicts. A conflict is when two users are editing the same article and then saving their changes:

R = read
S = save

User1---R------------S
User2----------R-----------S

User1---R--------S
User2----------R-S

Before saving select article again. If revision isn't the same as when started editing, then we have a conflict.

We can either:

  • Tell user that there's a conflict and article can't be saved (not friendly).
  • Try to merge changes somehow or show diff with editor window side by side (OK?).

Audit

Need audit feature so one will be able to view who did what and when.

Yii2 module

Is there any plan for Yii2
I'm willing to contribute in spare time if anyone from core developers volunteers to port to Yii2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.