typus 3.1.0.rc11 → 3.1.0.rc12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>