All Projects → bergie → Hallo

bergie / Hallo

Licence: mit
Simple rich text editor (contentEditable) for jQuery UI

Programming Languages

coffeescript
4710 projects
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to Hallo

Draft Extend
Build extensible Draft.js editors with configurable plugins and integrated serialization.
Stars: ✭ 109 (-95.56%)
Mutual labels:  rich-text-editor
Jquery Ui Month Picker
jQuery UI Month Picker Plugin
Stars: ✭ 154 (-93.73%)
Mutual labels:  jquery-ui
React Native Cn Richtext Editor
Richtext editor for react native
Stars: ✭ 180 (-92.67%)
Mutual labels:  rich-text-editor
Quill Sharedb Cursors
Collaborative editing with multi cursors sync using Quill and ShareDB.
Stars: ✭ 121 (-95.07%)
Mutual labels:  rich-text-editor
Rich editor
This is an RichEditor for the Flutter platform.
Stars: ✭ 135 (-94.5%)
Mutual labels:  rich-text-editor
Pell
📝 the simplest and smallest WYSIWYG text editor for web, with no dependencies
Stars: ✭ 11,653 (+374.66%)
Mutual labels:  rich-text-editor
React Native Draftjs
A full fledged React Native Rich Text editor based on draft.js
Stars: ✭ 103 (-95.8%)
Mutual labels:  rich-text-editor
Flutter Quill
Rich text editor for Flutter
Stars: ✭ 177 (-92.79%)
Mutual labels:  rich-text-editor
Ngx Quill Example
demo app for the advanced usage of ngx-quill module
Stars: ✭ 137 (-94.42%)
Mutual labels:  rich-text-editor
Knife
Knife is a rich text editor component for writing documents in Android.
Stars: ✭ 2,055 (-16.29%)
Mutual labels:  rich-text-editor
Etherpad Lite
Etherpad: A modern really-real-time collaborative document editor.
Stars: ✭ 11,937 (+386.23%)
Mutual labels:  rich-text-editor
Medium Draft
📝 A medium like Rich Text Editor built on draft-js with a focus on keyboard shortcuts.
Stars: ✭ 1,705 (-30.55%)
Mutual labels:  rich-text-editor
React Tapable Editor
A pluginable, intuitive medium/notion like rich text editor(currently in wip)
Stars: ✭ 170 (-93.08%)
Mutual labels:  rich-text-editor
Awesome Wysiwyg
A curated list of awesome WYSIWYG editors.
Stars: ✭ 1,801 (-26.64%)
Mutual labels:  rich-text-editor
Carbon
NO LONGER MAINTAINED - In-browser rich document editor.
Stars: ✭ 181 (-92.63%)
Mutual labels:  rich-text-editor
Dropdown
a lightweight dropdown of jQuery plugins
Stars: ✭ 105 (-95.72%)
Mutual labels:  jquery-ui
Zefyr
Soft and gentle rich text editing for Flutter applications.
Stars: ✭ 2,021 (-17.68%)
Mutual labels:  rich-text-editor
Structured Filter
jQuery UI widget for structured queries like "Contacts where Firstname starts with A and Birthday before 1/1/2000 and State in (CA, NY, FL)"...
Stars: ✭ 213 (-91.32%)
Mutual labels:  jquery-ui
Bs grid
Bootstrap Datagrid
Stars: ✭ 184 (-92.51%)
Mutual labels:  jquery-ui
Richtexteditor
Rich text editor lib for android. (Img support) - 富文本编辑器(支持图片)
Stars: ✭ 172 (-92.99%)
Mutual labels:  rich-text-editor

Hallo - contentEditable for jQuery UI Build Status Greenkeeper badge

Hallo Editor logo

Cross-browser testing status

Hallo is a very simple in-place rich text editor for web pages. It uses jQuery UI and the HTML5 contentEditable functionality to edit web content.

The widget has been written as a simple and liberally licensed editor. It doesn't aim to replace popular editors like Aloha, but instead to provide a simpler and more reusable option.

Read the introductory blog post for more information.

Using the editor

You need jQuery, jQuery UI (1.10+), and Rangy loaded. An easy way to do this is to use Google's JS service:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>
<script src="http://rangy.googlecode.com/svn/trunk/currentrelease/rangy-core.js"></script>

The editor toolbar is using jQuery UI theming, so you'll probably also want to grab a theme that fits your needs. Toolbar pluggins use icons from Font Awesome. Check these integration instructions for the right way to include Font Awesome depending on if/how you use Twitter Bootstrap. To style the toolbar as it appears in the demo, you'll also want to add some CSS (like background and border) to the class hallotoolbar.

<link rel="stylesheet" href="/path/to/your/jquery-ui.css">
<link rel="stylesheet" href="/path/to/your/font-awesome.css">

Then include Hallo itself:

<script src="hallo.js"></script>

Editor activation is easy:

jQuery('p').hallo();

You can also deactivate the editor:

jQuery('p').hallo({editable: false});

Hallo itself only makes the selected DOM elements editable and doesn't provide any formatting tools. Formatting is accomplished by loading plugins when initializing Hallo. Even simple things like bold and italic are plugins:

jQuery('.editable').hallo({
  plugins: {
    'halloformat': {}
  }
});

This example would enable the simple formatting plugin that provides functionality like bold and italic. You can include as many Hallo plugins as you want, and if necessary pass them options.

Hallo has got more options you set when instantiating. See the hallo.coffee file for further documentation.

Events

Hallo provides some events that are useful for integration. You can use jQuery bind to subscribe to them:

  • halloenabled: Triggered when an editable is enabled (editable set to true)
  • hallodisabled: Triggered when an editable is disabled (editable set to false)
  • hallomodified: Triggered whenever user has changed the contents being edited. Event data key content contains the HTML
  • halloactivated: Triggered when user activates an editable area (usually by clicking it)
  • hallodeactivated: Triggered when user deactivates an editable area

Plugins

  • halloformat - Adds Bold, Italic, StrikeThrough and Underline support to the toolbar. (Enable/Disable with options: "formattings": {"bold": true, "italic": true, "strikethrough": true, "underline": false})
  • halloheadings - Adds support for H1, H2, H3. You can pass a headings option key to specify what is going to be displayed (e.g. "formatBlocks":["p", "h2","h3"])
  • hallojustify - Adds align left, center, right support
  • hallolists - Adds support for ordered and unordered lists (Pick with options: "lists": {"ordered": false, "unordered": true})
  • halloreundo - Adds support for undo and redo
  • hallolink - Adds support to add links to a selection (currently not working)
  • halloimage - Image uploading, searching, suggestions
  • halloblacklist - Filtering unwanted tags from the content

Licensing

Hallo is free software available under the MIT license.

Contributing

Hallo is written in CoffeeScript, a simple language that compiles into JavaScript. You'll need Node.js to to build it. All build dependencies can be installed with:

$ npm install

To generate the JavaScript code to dist/hallo.js from Hallo sources, run Grunt:

$ grunt build

Hallo development is coordinated using Git. Just fork the Hallo repository on GitHub and send pull requests.

Unit tests

We use the Travis continuous integration service for testing Hallo. Currently we run two types of tests:

You can run the unit tests locally by opening test/index.html in your browser, or with PhantomJS by running:

$ grunt test

or:

$ npm test

Writing plugins

Hallo plugins are written as regular jQuery UI widgets.

When Hallo is loaded it will also load all the enabled plugins for the element, and pass them some additional options:

  • editable: The main Hallo widget instance
  • uuid: unique identifier of the Hallo instance, can be used for element IDs

A simplistic plugin would look like the following:

#    Formatting plugin for Hallo
#    (c) 2011 Henri Bergius, IKS Consortium
#    Hallo may be freely distributed under the MIT license
((jQuery) ->
  jQuery.widget "IKS.halloformat",
    boldElement: null

    options:
      uuid: ''
      editable: null

    _create: ->
      # Add any actions you want to run on plugin initialization
      # here

    populateToolbar: (toolbar) ->
      # Create an element for holding the button
      @boldElement = jQuery '<span></span>'

      # Use Hallo Button
      @boldElement.hallobutton
        uuid: @options.uuid
        editable: @options.editable
        label: 'Bold'
        # Icons come from Font Awesome
        icon: 'icon-bold'
        # Commands are used for execCommand and queryCommandState
        command: 'bold'

      # Append the button to toolbar
      toolbar.append @boldElement

    cleanupContentClone: (element) ->
      # Perform content clean-ups before HTML is sent out

)(jQuery)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].