README.md in character-0.1.0 vs README.md in character-1.0.0
- old
+ new
@@ -1,20 +1,191 @@
-# Character
+# Character Rails Admin
-This is blogging app based on Ghost designed to be used with Active Admin.
+Have you heard of [Django](https://www.djangoproject.com/), [Wordpress](https://wordpress.org/), [Active Admin](http://activeadmin.info/), [Locomotive](http://locomotivecms.com/)? Yeah?! — Those are all awesome... and **Character** is BETTER!
-## Installation
+![Character Image](http://character.s3.amazonaws.com/character1.jpg)
+## Setup new [Rails 4.1](http://rubyonrails.org) project
+ rails new ProjectName -T -O
+
+Add gems to the ```Gemfile```:
+
+ # Mongoid ORM + Character
+ gem 'carrierwave-mongoid', github: 'carrierwaveuploader/carrierwave-mongoid', require: 'carrierwave/mongoid'
+ gem 'character'
+
+Run bundle and run generators:
+
+ bundle ; rails g mongoid:config ; rails g character:bootstrap
+
## TODO
-1. After post date is changed fix it's position in the list if required
-2. Implement quick blog post search
-3. Implement image uploading functionality
-4. Implement google analytics dashboard
-5. Implement youtube videos support for markdown
-6. Add a quick syntax helper for editor
-7. Fix word counter to do not count single symbols like '-'
-8. Add metadata input fields in post settings: tags, description, og fields
-9. Optional tags, categories support
-10. Featured image uploading via post settings
-11.
+. Save unpublished post
+. Fix paste code issue for redactor.js + chrome
+
+
+## Routes
+
+After character generator finishes it's dirty business, in ```/config/routes.rb``` you see:
+
+ mount_character_instance 'admin'
+
+This mounts character instance **admin** to ```/admin``` path and make character app accessible there. There are also two optional helpers ```mount_posts_at``` and ```mount_pages_at```, they mount default controllers to routes as well. Remove them if no need in **posts** or **pages** app.
+
+Instance name **admin** could be changed, and you can use something different. This option is here for the case when a few character instances are required.
+
+- mount_character_instance
+- mount_posts_at
+- mount_pages_at
+
+
+## Running Automated Tests
+
+`$ bundle exec rake test`
+
+
+## Modules
+
+- chr.genericModule()
+- chr.postsModule()
+- chr.pagesModule()
+- chr.settingsModule()
+- chr.settingsWebsite()
+- chr.settingsPostCategories()
+- chr.settingsAdmins()
+- chr.settingsRedirects()
+
+
+## Forms
+
+To have custom form implementation for model, create ```form.html``` in ```/app/views/admin/model_names/``` — replace *model_names* with pluralized models name and if needed character instance name *admin* (default).
+
+### Generic form template
+
+Generic form template looks like this:
+
+ <%= simple_form_for @object, url: @form_action_url, method: :post do |f| %>
+ <%= f.input :name %>
+ <% end %>
+
+Checkout [Simple Form](https://github.com/plataformatec/simple_form) reference for all options (there are tons of them) which are available here.
+
+**No need to include SUBMIT button in form!**
+
+### Hideable
+
+If you want to make model hideable include ```include Hideable``` in model and add hidden field to your form:
+
+ <%= f.input :hidden, as: :hidden %>
+
+This will add an eye button trigger in the admin header, which allows to switch state for model.
+
+### Inline forms
+
+Form inline elements could be added with this code (images example):
+
+ <div class='chr-form-nested chr-form-nested-images sortable-list'>
+ <%= f.fields_for :images do |ff| %>
+ <%= ff.link_to_remove "Remove" %>
+ <%= image_tag ff.object.image.small.url %>
+ <%= ff.input :title, placeholder: 'Image title' %>
+ <%= ff.input :image %>
+ <%= ff.input :_position, as: :hidden %>
+ <% end %>
+ <%= f.link_to_add "Add an Image", :images %>
+ </div>
+
+- This template is based on [Nested Forms](https://github.com/ryanb/nested_form) gem by Ryan Bates, checkout docs for implementation details.
+- Including ```sortable-list``` class and ```<%= ff.input :_position, as: :hidden %>``` make inline objects reorderable.
+- This example uses ```chr-form-nested-images``` class for layout styling.
+
+
+## Models
+
+- Character::Post
+- Character::PostCategory
+- Character::Page
+- Character::Image
+- Character::Settings::Variable
+- Character::User
+- Character::Redirect
+
+
+## Concerns
+
+- UpdatedAgo
+- CreatedAgo
+- Orderable
+- Hideable
+
+
+## Helpers
+
+- Character::SitemapGeneratorHelper
+
+
+## Shortcuts
+
+- CMD+s — save changes
+- CMD+e — toggle fullscreen
+
+
+## API
+
+**[Character.Generic.DetailsView](https://github.com/slate-studio/character/blob/master/app/assets/javascripts/character/generic/details.coffee) and [Character.Settings.DetailsView](https://github.com/slate-studio/character/blob/master/app/assets/javascripts/character/settings/details.coffee)**
+
+These are blank methods that could be overriden to extend view functionality. Example of ```Character.Generic.DetailsView``` override: [character/posts/module.coffee](https://github.com/slate-studio/character/blob/master/app/assets/javascripts/character/posts/module.coffee)
+
+- @beforeContentRequest()
+- @beforeRenderContent()
+- @beforeFormHelpersStart()
+- @afterRenderContent()
+- @beforeSave()
+- @beforeFormSubmit(arr, $form, options)
+- @afterFormSubmitSuccess(responseText, statusText, xhr, $form)
+- @beforeOnClose()
+- @afterOnClose()
+
+
+## Instances
+
+Initializers for different instances are in ```config/initializers/character.rb```:
+
+ Character.configure do |config|
+ config.title = 'Project Title | Admin'
+ end
+
+Options:
+
+- @title = 'Character'
+- @user_model = 'Character::User'
+- @development_auto_login = false
+- @force_ssl = true
+
+## Analytics
+
+* Create a new project (```GA_APP_NAME```) at: [https://console.developers.google.com/project](https://console.developers.google.com/project)
+* Enable Analytics under **APIs & auth** -> **APIs** -> Analytics API
+* Create another client under **Credentials**
+* Download and put **key-file** (```GA_KEY_FILE_NAME```) to your projects ```config``` folder
+* Go to you (Analytics)[www.google.com/analytics] account and add the **Service account** email address to your account (```GA_SERVICE_ACCOUNT_EMAIL```). It should be something like ```something-long@developer.gserviceaccount.com```.
+
+Set all variables in server environment:
+
+- ```GA_APP_NAME```
+- ```GA_SERVICE_ACCOUNT_EMAIL```
+- ```GA_KEY_FILE_NAME```
+- ```GA_PROFILE_ID```
+
+
+## Settings
+
+
+## Reports
+
+(to be continued...)
+
+
+## Redirects
+
+Redirects app allows to quickly setup 301/302 redirects for the website.
\ No newline at end of file