typus 3.1.0.rc11 → 3.1.0.rc12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/.gitignore +4 -16
  2. data/.gitmodules +3 -6
  3. data/README.md +50 -16
  4. data/Rakefile +19 -26
  5. data/app/helpers/admin/resources/data_types/belongs_to_helper.rb +15 -18
  6. data/app/helpers/admin/resources/data_types/position_helper.rb +9 -11
  7. data/app/helpers/admin/resources/form_helper.rb +13 -13
  8. data/app/helpers/admin/resources/relationships_helper.rb +4 -1
  9. data/app/helpers/admin/resources/table_helper.rb +11 -14
  10. data/app/helpers/admin/resources_helper.rb +12 -3
  11. data/app/themes/default/assets/javascripts/typus/jquery.application.js +0 -6
  12. data/app/themes/default/assets/stylesheets/typus/pagination.css +1 -2
  13. data/app/themes/default/views/admin/base/user_guide.html.erb +25 -27
  14. data/app/themes/default/views/admin/dashboard/_applications.html.erb +2 -10
  15. data/app/themes/default/views/admin/dashboard/_sidebar.html.erb +9 -2
  16. data/app/themes/default/views/admin/dashboard/styles.html.erb +10 -15
  17. data/app/themes/default/views/admin/resources/_form.html.erb +4 -2
  18. data/app/themes/default/views/admin/resources/_form_javascripts.html.erb +0 -0
  19. data/app/themes/default/views/admin/templates/README.md +5 -0
  20. data/app/themes/default/views/admin/templates/_dragonfly.html.erb +1 -0
  21. data/app/themes/default/views/admin/templates/_has_one.html.erb +1 -1
  22. data/app/themes/default/views/admin/templates/_position.html.erb +5 -0
  23. data/app/themes/default/views/admin/templates/_profile_sidebar.html.erb +2 -1
  24. data/app/themes/default/views/admin/templates/_selector.html.erb +4 -1
  25. data/app/themes/default/views/admin/templates/_text_with_ckeditor.html.erb +0 -4
  26. data/app/themes/default/views/helpers/admin/resources/_filters.html.erb +1 -3
  27. data/app/themes/default/views/helpers/admin/resources/_sidebar.html.erb +6 -9
  28. data/app/themes/default/views/helpers/admin/resources/_table.html.erb +11 -13
  29. data/lib/generators/templates/config/initializers/typus_resources.rb +1 -1
  30. data/lib/generators/templates/config/typus/README +1 -1
  31. data/lib/typus.rb +15 -26
  32. data/lib/typus/authentication/base.rb +4 -0
  33. data/lib/typus/authentication/http_basic.rb +2 -2
  34. data/lib/typus/authentication/session.rb +3 -5
  35. data/lib/typus/configuration.rb +14 -12
  36. data/lib/typus/controller/filters.rb +22 -0
  37. data/lib/typus/i18n.rb +17 -0
  38. data/lib/typus/orm/active_record/user/class_methods.rb +1 -1
  39. data/lib/typus/orm/base.rb +2 -2
  40. data/lib/typus/resources.rb +1 -1
  41. data/lib/typus/version.rb +1 -1
  42. metadata +21 -26
  43. data/.yardopts +0 -6
  44. data/Gemfile +0 -60
  45. data/doc/yard/handlers/configurable_attr_handler.rb +0 -38
  46. data/doc/yard/setup.rb +0 -9
  47. data/doc/yard/templates/default/fulldoc/html/css/common.css +0 -109
  48. data/doc/yard/templates/default/layout/html/layout.erb +0 -126
  49. data/doc/yard/templates/default/module/html/configuration_summary.erb +0 -31
  50. data/doc/yard/templates/default/module/setup.rb +0 -17
data/.gitignore CHANGED
@@ -1,24 +1,12 @@
1
- *.gem
1
+ # Bundler stuff
2
2
  .bundle
3
+ vendor/gems
3
4
  Gemfile.lock
4
- pkg/*
5
5
 
6
- # Projecte specific ignores
7
- .bundle
8
- all.css
9
- all.js
6
+ # Generated stuff
7
+ *.gem
10
8
  db/*.sqlite3
11
9
  log/*.log
12
10
  test/fixtures/rails_app/public/system/*
13
11
  test/fixtures/rails_app/tmp/*
14
12
  tmp/**/*
15
-
16
- # Ignore generated documentation
17
- .yardoc
18
- doc/*.html
19
- doc/css
20
- doc/js
21
- doc/Admin
22
- doc/Typus
23
- doc/ActiveRecord
24
-
@@ -1,6 +1,3 @@
1
- [submodule "doc/wiki"]
2
- path = doc/wiki
3
- url = git@github.com:typus/typus.wiki.git
4
- [submodule "doc/site"]
5
- path = doc/site
6
- url = git@github.com:typus/site.git
1
+ [submodule "test/fixtures/rails_app"]
2
+ path = test/fixtures/rails_app
3
+ url = git@github.com:typus/demo.git
data/README.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # Typus: Admin Panel for Ruby on Rails applications
2
2
 
3
- **Typus** allows trusted users to edit structured content.
3
+ **Typus** is a control panel for [Ruby on Rails][rails] applications to allow
4
+ trusted users edit structured content.
5
+
6
+ It’s not a CMS with a full working system but it provides a part of the
7
+ system: authentication, permissions and basic look and feel for your
8
+ websites control panel. So using [Rails][rails] with **Typus** lets you
9
+ concentrate on your application instead of the bits to manage the system.
10
+
11
+ **Typus** is the "old latin" word for **type** which stands for:
12
+
13
+ > A category of people or things having common characteristics.
14
+
15
+ You can try a demo [here][demo].
4
16
 
5
17
  ## Key Features
6
18
 
@@ -9,25 +21,18 @@
9
21
  - Internationalized interface ([See available translations][locales])
10
22
  - Customizable and extensible templates.
11
23
  - Integrated [paperclip][paperclip] and [dragonfly][dragonfly] attachments viewer.
12
- - Works with `Rails 3.0.X`.
24
+ - Works with `Rails 3.1.X`.
13
25
  - Tested with latest versions of `1.8.7`, `ree`, `1.9.2` and `jruby`.
14
26
  - Tested with `SQLite`, `MySQL` and `PostgreSQL`.
15
27
 
16
- ## Links
17
-
18
- - [Documentation](https://github.com/typus/typus/wiki)
19
- - [Issues](https://github.com/typus/typus/issues)
20
- - [Demo](http://demo.typuscms.com/) ([Code][code])
21
- - [Source Code](http://github.com/typus/typus)
22
- - [Mailing List](http://groups.google.com/group/typus)
23
- - [Gems](http://rubygems.org/gems/typus)
24
- - [Contributors List](http://github.com/typus/typus/contributors)
25
-
26
28
  ## Installing
27
29
 
28
30
  Add **Typus** to your `Gemfile`
29
31
 
30
- gem 'typus', :git => 'git://github.com/typus/typus.git', :branch => '3-1-unstable'
32
+ gem 'typus', '~> 3.1.0.rc'
33
+
34
+ # Bundle edge typus instead:
35
+ # gem 'typus', :git => 'git://github.com/typus/typus.git', :branch => '3-1-unstable'
31
36
 
32
37
  Update your bundle, run the generator and start the application server:
33
38
 
@@ -37,11 +42,40 @@ Update your bundle, run the generator and start the application server:
37
42
 
38
43
  and go to <http://0.0.0.0:3000/admin>.
39
44
 
40
- ## License
45
+ ## Links
46
+
47
+ - [Documentation](https://github.com/typus/typus/wiki)
48
+ - [Issues](https://github.com/typus/typus/issues)
49
+ - [Source Code](http://github.com/typus/typus) and [RubyGems](http://rubygems.org/gems/typus)
50
+ - [Mailing List](http://groups.google.com/group/typus)
51
+ - [Contributors List](http://github.com/typus/typus/contributors)
52
+
53
+ ## MIT License
54
+
55
+ Copyright (c) 2007-2011 Francesc Esplugas Marti
56
+
57
+ Permission is hereby granted, free of charge, to any person obtaining
58
+ a copy of this software and associated documentation files (the
59
+ "Software"), to deal in the Software without restriction, including
60
+ without limitation the rights to use, copy, modify, merge, publish,
61
+ distribute, sublicense, and/or sell copies of the Software, and to
62
+ permit persons to whom the Software is furnished to do so, subject to
63
+ the following conditions:
64
+
65
+ The above copyright notice and this permission notice shall be
66
+ included in all copies or substantial portions of the Software.
41
67
 
42
- Typus is released under the MIT license.
68
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
69
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
70
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
71
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
72
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
73
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
74
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
43
75
 
76
+ [demo]: http://demo.typuscms.com/
44
77
  [paperclip]: http://rubygems.org/gems/paperclip
45
78
  [dragonfly]: http://rubygems.org/gems/dragonfly
79
+ [rails]: http://rubyonrails.org/
46
80
  [code]: https://github.com/typus/typus/tree/master/test/fixtures/rails_app
47
- [locales]: https://github.com/typus/typus/tree/master/config/locales
81
+ [locales]: https://github.com/typus/typus/tree/master/config/locales
data/Rakefile CHANGED
@@ -1,23 +1,18 @@
1
- require 'bundler'
2
- Bundler::GemHelper.install_tasks
3
-
4
- require 'rubygems'
1
+ require 'bundler/gem_tasks'
5
2
  require 'rake/testtask'
6
3
  require 'rdoc/task'
7
4
 
8
5
  task :default => :test
9
6
 
10
- desc 'Test the typus plugin.'
11
- Rake::TestTask.new(:test) do |t|
12
- t.libs << 'lib'
13
- t.libs << 'test'
14
- # t.pattern = 'test/**/*_test.rb'
15
- t.pattern = 'test/app/controllers/**/*_test.rb'
7
+ Rake::TestTask.new do |t|
8
+ t.libs << "test"
9
+ t.test_files = FileList['test/app/controllers/**/*_test.rb',
10
+ 'test/lib/support/*_test.rb',
11
+ 'test/config/*_test.rb']
16
12
  t.verbose = true
17
13
  end
18
14
 
19
- desc 'Generate plugin documentation.'
20
- Rake::RDocTask.new(:rdoc) do |rdoc|
15
+ RDoc::Task.new do |rdoc|
21
16
  rdoc.rdoc_dir = 'rdoc'
22
17
  rdoc.title = 'Typus'
23
18
  rdoc.options << '--line-numbers' << '--inline-source'
@@ -25,11 +20,6 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
25
20
  rdoc.rdoc_files.include('lib/**/*.rb')
26
21
  end
27
22
 
28
- desc "Deploy test/fixtures/rails_app"
29
- task :deploy do
30
- system "cd test/fixtures/rails_app && cap deploy"
31
- end
32
-
33
23
  RUBIES = %w[1.8.7 ree 1.9.2 jruby].join(",")
34
24
 
35
25
  namespace :setup do
@@ -54,14 +44,17 @@ namespace :test do
54
44
 
55
45
  end
56
46
 
57
- require 'yard'
47
+ namespace :demo do
58
48
 
59
- YARD::Rake::YardocTask.new do |t|
60
- t.files = []
61
- t.options = []
62
- end
49
+ desc "Update demo"
50
+ task :update do
51
+ system "git pull && git submodule update --init"
52
+ end
63
53
 
64
- YARD::Rake::YardocTask.new 'yard:changed' do |t|
65
- t.files = `git status | grep '.rb' | grep modified | grep -v yard | cut -d' ' -f4`.split
66
- t.options = []
67
- end
54
+ desc "Upgrade demo"
55
+ task :upgrade do
56
+ system "git submodule foreach 'git pull origin master'"
57
+ system "git ci -m 'Updated submodules' ."
58
+ end
59
+
60
+ end
@@ -22,21 +22,19 @@ module Admin::Resources::DataTypes::BelongsToHelper
22
22
  message = link_to Typus::I18n.t("Add New"), options, { :class => 'iframe' }
23
23
  end
24
24
 
25
- # Set the template.
26
- template = if Typus.autocomplete && (related.respond_to?(:roots) || !(related.count > Typus.autocomplete))
27
- "admin/templates/belongs_to"
28
- else
29
- "admin/templates/belongs_to_with_autocomplete"
30
- end
25
+ # By default the used template is ALWAYS `belongs_to` unless we have the
26
+ # `Typus.autocomplete` feature enabled.
27
+ template = Typus.autocomplete ? "belongs_to_with_autocomplete" : "belongs_to"
31
28
 
32
- # Set the values.
33
- values = if related.respond_to?(:roots)
34
- expand_tree_into_select_field(related.roots, related_fk)
35
- elsif Typus.autocomplete && !(related.count > Typus.autocomplete)
36
- related.order(related.typus_order_by).map { |p| [p.to_label, p.id] }
37
- end
29
+ # If `Typus.autocomplete` is enabled we don't set the values as will be
30
+ # autocompleted.
31
+ if related.respond_to?(:roots)
32
+ values = expand_tree_into_select_field(related.roots, related_fk)
33
+ elsif !Typus.autocomplete
34
+ values = related.order(related.typus_order_by).map { |p| [p.to_label, p.id] }
35
+ end
38
36
 
39
- render template,
37
+ render "admin/templates/#{template}",
40
38
  :association => association,
41
39
  :resource => @resource,
42
40
  :attribute => attribute,
@@ -53,14 +51,13 @@ module Admin::Resources::DataTypes::BelongsToHelper
53
51
  def table_belongs_to_field(attribute, item)
54
52
  if att_value = item.send(attribute)
55
53
  action = item.send(attribute).class.typus_options_for(:default_action_on_item)
54
+ message = att_value.to_label
56
55
  if admin_user.can?(action, att_value.class.name)
57
- link_to att_value.to_label, :controller => "/admin/#{att_value.class.to_resource}", :action => action, :id => att_value.id
58
- else
59
- att_value.to_label
56
+ message = link_to(message, :controller => "/admin/#{att_value.class.to_resource}", :action => action, :id => att_value.id)
60
57
  end
61
- else
62
- "&mdash;".html_safe
63
58
  end
59
+
60
+ message || "&mdash;".html_safe
64
61
  end
65
62
 
66
63
  def display_belongs_to(item, attribute)
@@ -1,22 +1,20 @@
1
1
  module Admin::Resources::DataTypes::PositionHelper
2
2
 
3
3
  def table_position_field(attribute, item, connector = " / ")
4
- html_position = []
4
+ locals = { :html_position => [], :connector => connector, :item => item }
5
+ positions = { :move_to_top => "Top", :move_higher => "Up", :move_lower => "Down", :move_to_bottom => "Bottom" }
5
6
 
6
- [ [:move_to_top, "Top"],
7
- [:move_higher, "Up"],
8
- [:move_lower, "Down"],
9
- [:move_to_bottom, "Bottom"] ].each do |key, value|
7
+ positions.each do |key, value|
8
+ first_item = item.respond_to?(:first?) && ([:move_higher, :move_to_top].include?(key) && item.first?)
9
+ last_item = item.respond_to?(:last?) && ([:move_lower, :move_to_bottom].include?(key) && item.last?)
10
10
 
11
- options = { :controller => "/admin/#{item.class.to_resource}", :action => "position", :id => item.id, :go => key }
12
- should_be_inactive = (item.respond_to?(:first?) && ([:move_higher, :move_to_top].include?(key) && item.first?)) ||
13
- (item.respond_to?(:last?) && ([:move_lower, :move_to_bottom].include?(key) && item.last?))
14
- html_position << link_to_unless(should_be_inactive, Typus::I18n.t(value), params.merge(options)) do |name|
15
- %w(<span class="inactive">#{name}</span>)
11
+ unless first_item || last_item
12
+ options = { :controller => "/admin/#{item.class.to_resource}", :action => "position", :id => item.id, :go => key }
13
+ locals[:html_position] << link_to(Typus::I18n.t(value), params.merge(options))
16
14
  end
17
15
  end
18
16
 
19
- "#{item.position}<br/><br/>#{html_position.compact.join(connector)}".html_safe
17
+ render "admin/templates/position", locals
20
18
  end
21
19
 
22
20
  end
@@ -46,24 +46,24 @@ module Admin::Resources::FormHelper
46
46
  end
47
47
  end
48
48
 
49
- def display_errors
50
- render "helpers/admin/resources/errors"
49
+ def build_save_options
50
+ save_options_for_user_class || save_options_for_headless_mode || save_options
51
51
  end
52
52
 
53
53
  def save_options
54
- if Typus.user_class == @resource && admin_user.is_not_root?
55
- options = { "_continue" => "Save and continue editing" }
56
- end
57
-
58
- if headless_mode? && params[:resource]
59
- options = { "_saveandassign" => "Save and assign" }
60
- end
54
+ { "_addanother" => "Save and add another",
55
+ "_continue" => "Save and continue editing",
56
+ "_save" => "Save" }
57
+ end
61
58
 
62
- if headless_mode?
63
- options = { "_continue" => "Save and continue editing" }
64
- end
59
+ def save_options_for_headless_mode
60
+ return unless headless_mode?
61
+ params[:resource] ? { "_saveandassign" => "Save and assign" } : { "_continue" => "Save and continue editing" }
62
+ end
65
63
 
66
- options || { "_addanother" => "Save and add another", "_continue" => "Save and continue editing", "_save" => "Save" }
64
+ def save_options_for_user_class
65
+ return unless Typus.user_class == @resource && admin_user.is_not_root?
66
+ { "_continue" => "Save and continue editing" }
67
67
  end
68
68
 
69
69
  end
@@ -33,7 +33,10 @@ module Admin::Resources::RelationshipsHelper
33
33
  :resource_action => 'relate',
34
34
  :return_to => request.path }
35
35
 
36
- if set_condition && admin_user.can?("create", @model_to_relate)
36
+ # Add new basically means: We can create new items or relate existing ones.
37
+ create_or_read = admin_user.can?("create", @model_to_relate) || admin_user.can?("read", @model_to_relate)
38
+
39
+ if set_condition && create_or_read
37
40
  link_to Typus::I18n.t("Add New"), default_options.merge(options), { :class => "iframe" }
38
41
  end
39
42
  end
@@ -30,15 +30,11 @@ module Admin::Resources::TableHelper
30
30
  switch = sort_order.last if params[:order_by].eql?(order_by)
31
31
  options = { :order_by => order_by, :sort_order => sort_order.first }
32
32
  message = [content, switch].compact.join(" ").html_safe
33
- link_to message, params.merge(options)
34
- else
35
- content
33
+ content = link_to(message, params.merge(options))
36
34
  end
37
-
38
- else
39
- content
40
35
  end
41
36
 
37
+ content
42
38
  end
43
39
  end
44
40
 
@@ -47,15 +43,16 @@ module Admin::Resources::TableHelper
47
43
  end
48
44
 
49
45
  def table_actions(model, item, association_name = nil)
50
- resource_actions.map do |body, url, options, proc|
51
- if admin_user.can?(url[:action], model.name)
52
- next if proc && proc.respond_to?(:call) && proc.call(item) == false
46
+ resource_actions.reject! do |body, url, options, proc|
47
+ admin_user.cannot?(url[:action], model.name)
48
+ end
53
49
 
54
- link_to Typus::I18n.t(body),
55
- params.dup.cleanup.merge(url).merge(:controller => "/admin/#{model.to_resource}", :id => item.id),
56
- options
57
- end
58
- end.compact.join(" / ").html_safe
50
+ resource_actions.map do |body, url, options, proc|
51
+ next if proc && proc.respond_to?(:call) && proc.call(item) == false
52
+ { :message => Typus::I18n.t(body),
53
+ :url => params.dup.cleanup.merge(url).merge(:controller => "/admin/#{model.to_resource}", :id => item.id),
54
+ :options => options }
55
+ end
59
56
  end
60
57
 
61
58
  end
@@ -15,15 +15,24 @@ module Admin::ResourcesHelper
15
15
  resources = ActiveSupport::OrderedHash.new
16
16
  app_name = @resource.typus_application
17
17
 
18
- admin_user.application(app_name) { |a,b| a.typus_constantize.model_name.human <=> b.typus_constantize.model_name.human }.each do |resource|
18
+ admin_user.application(app_name).each do |resource|
19
19
  klass = resource.typus_constantize
20
- resources[resource] = [ link_to_unless_current(Typus::I18n.t("All #{klass.model_name.human.pluralize}"), :action => "index") ]
21
- resources[resource] << link_to_unless_current(Typus::I18n.t("Add New"), :action => "new") if admin_user.can?("create", klass)
20
+ resources[resource] = [sidebar_all_resource(klass), sidebar_add_new(klass)].compact
22
21
  end
23
22
 
24
23
  render "helpers/admin/resources/sidebar", :resources => resources
25
24
  end
26
25
 
26
+ def sidebar_add_new(klass)
27
+ if admin_user.can?("create", klass)
28
+ { :message => Typus::I18n.t("Add New"), :url => { :action => "new" } }
29
+ end
30
+ end
31
+
32
+ def sidebar_all_resource(klass)
33
+ { :message => Typus::I18n.t("All #{klass.model_name.human.pluralize}"), :url => { :action => "index" } }
34
+ end
35
+
27
36
  # TODO: This method should be moved to `lib/typus/controller/actions.rb`
28
37
  def resource_actions
29
38
  @resource_actions ||= []
@@ -31,12 +31,6 @@ $(document).ready(function() {
31
31
  $('.action-toggle').each(function() { this.checked = status; });
32
32
  });
33
33
 
34
- // This method is used by `text_with_ckeditor` template.
35
- if ($('textarea.ckeditor').length > 0) {
36
- var data = $('textarea');
37
- $.each(data, function(i) { CKEDITOR.replace(data[i].id); });
38
- }
39
-
40
34
  });
41
35
 
42
36
  function setConfirmUnload(on) {
@@ -13,5 +13,4 @@
13
13
 
14
14
  .pagination .first,
15
15
  .pagination .last,
16
- .pagination .current,
17
- .pagination .gap { display: none; }
16
+ .pagination .current { display: none; }
@@ -10,19 +10,23 @@
10
10
 
11
11
  <% end %>
12
12
 
13
+ <%
14
+ rails = "http://rubyonrails.org/"
15
+ typus = "http://core.typuscms.com/"
16
+ %>
17
+
13
18
  <a name="introduction"></a>
14
19
 
15
20
  <h2>Introduction</h2>
16
21
 
17
- <p>
18
- This website is powered by <%= link_to "Ruby on Rails", "http://rubyonrails.org/" %> and <%= link_to "Typus", "http://core.typuscms.com/" %>.
19
- </p>
22
+ <p>This website is powered by <%= link_to "Ruby on Rails", rails %> and
23
+ <%= link_to "Typus", typus %>.</p>
20
24
 
21
- <p>With <%= link_to "Typus", "http://core.typuscms.com/" %>, also known as the application backend or admin interface, you'll be able to update your application contents and perform the most common operations for the site maintenance.</p>
25
+ <p>With <%= link_to "Typus", typus %>, also known as the application backend
26
+ or admin interface, you'll be able to update your application contents and
27
+ perform the most common operations for the site maintenance.</p>
22
28
 
23
- <p>
24
- You can get more information at <%= link_to "http://core.typuscms.com/", "http://core.typuscms.com/" %>.
25
- </p>
29
+ <p>You can get more information at <%= link_to typus, typus %>.</p>
26
30
 
27
31
  <a name="basics"></a>
28
32
 
@@ -30,22 +34,18 @@ You can get more information at <%= link_to "http://core.typuscms.com/", "http:/
30
34
 
31
35
  <h3>Create Entries</h3>
32
36
 
33
- <p>
34
- To create a new entry:
35
- </p>
37
+ <p>To create a new entry:</p>
36
38
 
37
39
  <ul>
38
- <li>Click on entries tab.</li>
39
- <li>Click "Add New" sub tab.</li>
40
- <li>Start filling in the blanks.</li>
41
- <li>When you are ready, click "Save Entry".</li>
40
+ <li>Click on entries tab.</li>
41
+ <li>Click "Add New" sub tab.</li>
42
+ <li>Start filling in the blanks.</li>
43
+ <li>When you are ready, click "Save Entry".</li>
42
44
  </ul>
43
45
 
44
46
  <h3>Editing &amp; Updating Entries</h3>
45
47
 
46
- <p>
47
- To edit entries:
48
- </p>
48
+ <p>To edit entries:</p>
49
49
 
50
50
  <ul>
51
51
  <li>Click on entries tab.</li>
@@ -57,9 +57,7 @@ To edit entries:
57
57
 
58
58
  <h3>Removing Entries</h3>
59
59
 
60
- <p>
61
- To remove entries:
62
- </p>
60
+ <p>To remove entries:</p>
63
61
 
64
62
  <ul>
65
63
  <li>Click on entries tab.</li>
@@ -68,18 +66,18 @@ To remove entries:
68
66
  <li>Click "Ok" on the dialog to confirm you want to remove the entry.</li>
69
67
  </ul>
70
68
 
71
- <p>
72
- Removing entries will be only available if you have permissions to do so.
73
- </p>
69
+ <p>Removing entries will be only available if you have permissions to do so.</p>
74
70
 
75
71
  <a name="registered-users"></a>
76
72
 
77
73
  <h2>Registered Users</h2>
78
74
 
79
- <p>
80
- Registered users can do a variety of different things on a <strong>Typus</strong> driven site. The various elements available to the user are determined by their user level. </p>
75
+ <p>Registered users can do a variety of different things on a <strong>Typus</strong>
76
+ driven site. The various elements available to the user are determined by their
77
+ user level.</p>
81
78
 
82
- <p>When <code>:session</code> authentication is enabled <strong>Typus</strong> will enable a a default role which will allow registered users perform all kind of operations on entries: create, read, update and destroy.
83
- </p>
79
+ <p>When <code>:session</code> authentication is enabled <strong>Typus</strong>
80
+ will enable a a default role which will allow registered users perform all kind
81
+ of operations on entries: create, read, update and destroy.</p>
84
82
 
85
83
  <p>It's usually recommended having an extra role which some restrictions.</p>