muck-users 0.3.0 → 0.3.1

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -46,20 +46,31 @@ class Admin::Muck::RolesController < Admin::Muck::BaseController
46
46
  flash[:notice] = translate('muck.users.cant_delete_administrator_role')
47
47
  output_admin_messages
48
48
  else
49
- @role.delete
50
- render :update do |page|
51
- page.remove @role.dom_id
49
+ success = @role.delete
50
+ flash[:notice] = translate('muck.users.role_not_deleted') if !success
51
+
52
+ respond_to do |format|
53
+ format.html do
54
+ flash[:notice] = translate('muck.users.role_deleted') if success
55
+ redirect_to admin_roles_path
56
+ end
57
+ format.xml { head :ok }
58
+ format.js do
59
+ if success
60
+ render :js => 'admin/roles/destroy'
61
+ else
62
+ output_admin_messages
63
+ end
64
+ end
52
65
  end
66
+
53
67
  end
54
68
  end
55
69
 
56
70
  protected
57
71
 
58
72
  def ajax_update_roles
59
- render :update do |page|
60
- page.replace_html 'current-roles', :partial => 'admin/roles/role', :collection => Role.by_alpha
61
- page << "jQuery('.dialog').dialog('close');"
62
- end
73
+ render :template => 'admin/roles/ajax_update_roles'
63
74
  end
64
75
 
65
76
  end
@@ -125,7 +125,7 @@ class Admin::Muck::UsersController < Admin::Muck::BaseController
125
125
  redirect_to admin_users_path
126
126
  end
127
127
  format.xml { head :ok }
128
- format.js { render(:update){|page| page.visual_effect :fade, "#{@user.dom_id('row')}".to_sym} }
128
+ format.js { render :js => "#{}jQuery('##{@user.dom_id('row')}').fadeOut();" }
129
129
  end
130
130
  end
131
131
 
@@ -137,10 +137,7 @@ class Admin::Muck::UsersController < Admin::Muck::BaseController
137
137
 
138
138
  def update_permissions(user, message)
139
139
  flash[:notice] = message
140
- render :update do |page|
141
- page << "jQuery('.dialog').dialog('close');"
142
- page.replace_html user.dom_id('permissions'), :partial => 'admin/permissions/permission', :collection => user.permissions, :locals => { :user => user }
143
- end
140
+ render :template => 'admin/users/update_permissions', :layout => false
144
141
  end
145
142
 
146
143
  def update_activate(message)
@@ -97,8 +97,8 @@ class Muck::UsersController < ApplicationController
97
97
  end
98
98
  end
99
99
  respond_to do |format|
100
- format.html { render :text => result}
101
- format.js { render :text => result}
100
+ format.html { render :text => result }
101
+ format.js { render :text => result }
102
102
  end
103
103
  end
104
104
 
@@ -120,7 +120,7 @@ class Muck::UsersController < ApplicationController
120
120
  end
121
121
  respond_to do |format|
122
122
  format.html { render :text => result }
123
- format.js { render :text => result}
123
+ format.js { render :text => result }
124
124
  end
125
125
  end
126
126
 
@@ -0,0 +1,2 @@
1
+ jQuery('#current-roles').html('<%=escape_javascript(render(:partial => 'admin/roles/role', :collection => Role.by_alpha))%>');
2
+ jQuery('.dialog').dialog('close');
@@ -0,0 +1,2 @@
1
+ <%= hide_admin_messages %>
2
+ jQuery('#<%=@role.dom_id%>').fadeOut();"
@@ -0,0 +1,2 @@
1
+ jQuery('.dialog').dialog('close');
2
+ jQuery('#<%= user.dom_id('permissions') %>').html('<%= escape_javascript(render(:partial => 'admin/permissions/permission', :collection => user.permissions, :locals => { :user => user })) %>');
@@ -1,18 +1,3 @@
1
- <% content_for :javascript do -%>
2
- jQuery("#user_login").blur(function(){
3
- jQuery.post("is_login_available",{ user_login:jQuery(this).val() } ,function(data){
4
- jQuery("#username-availibility").html(data);
5
- });
6
- });
7
- jQuery("#user_login").keydown(function() {
8
- jQuery("#username-availibility").html('');
9
- });
10
- jQuery("#user_email").blur(function(){
11
- jQuery.post("is_email_available",{ user_email:jQuery(this).val() } ,function(data){
12
- jQuery("#email-availibility").html(data);
13
- });
14
- });
15
- jQuery("#user_email").keydown(function() {
16
- jQuery("#email-availibility").html('');
17
- });
1
+ <% content_for :head do -%>
2
+ <%= javascript_include_tag 'muck-users' %>
18
3
  <% end -%>
data/locales/en.yml CHANGED
@@ -51,9 +51,9 @@ en:
51
51
  select_new_password: Select a New Password
52
52
  access_code_delete_link: Delete Access Code
53
53
  request_access_code: Request Access Code
54
- updated_permissions: Updated Permissions
55
54
  first_name: First Name
56
55
  forgot_username: Forgot Username
56
+ updated_permissions: Updated Permissions
57
57
  account_activated: Your account has been activated! You can now login.
58
58
  already_logged_in: You are already logged in and don't need to recover your password.
59
59
  email_invalid: Invalid email
@@ -116,11 +116,13 @@ en:
116
116
  add_permission_to_user: Add Permission to user {{user}}
117
117
  user_account_deleted: You have successfully deleted your account.
118
118
  sign_in: Sign In
119
+ role_deleted: Role Deleted
120
+ role_not_deleted: Role could not be deleted
119
121
  complete_profile: Complete Your Profile
120
122
  access_codes: Access Codes
123
+ access_code_delete_confirm: Are you sure you want to cancel this access code?
121
124
  expiration_date_tip: Enter the date upon which the access code will become invalid
122
125
  problem_editing_account: There was a problem updating your information.
123
- access_code_delete_confirm: Are you sure you want to cancel this access code?
124
126
  navigation:
125
127
  inactive_users: Inactive Users
126
128
  all_users: All Users
data/muck-users.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{muck-users}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin Ball", "Joel Duffin"]
12
- s.date = %q{2010-01-30}
12
+ s.date = %q{2010-02-01}
13
13
  s.description = %q{Easily add user signup, login and other features to your application}
14
14
  s.email = %q{justin@tatemae.com}
15
15
  s.extra_rdoc_files = [
@@ -46,6 +46,8 @@ Gem::Specification.new do |s|
46
46
  "app/views/admin/access_codes/show.html.erb",
47
47
  "app/views/admin/permissions/_permission.html.erb",
48
48
  "app/views/admin/roles/_role.html.erb",
49
+ "app/views/admin/roles/ajax_update_roles.js.erb",
50
+ "app/views/admin/roles/destroy.js.erb",
49
51
  "app/views/admin/roles/edit.html.erb",
50
52
  "app/views/admin/roles/index.html.erb",
51
53
  "app/views/admin/roles/new.html.erb",
@@ -63,6 +65,7 @@ Gem::Specification.new do |s|
63
65
  "app/views/admin/users/index.html.erb",
64
66
  "app/views/admin/users/permissions.html.erb",
65
67
  "app/views/admin/users/search.html.erb",
68
+ "app/views/admin/users/update_permissions.js.erb",
66
69
  "app/views/password_resets/edit.html.erb",
67
70
  "app/views/password_resets/new.html.erb",
68
71
  "app/views/user_mailer/access_code.text.html.erb",
@@ -674,6 +677,7 @@ Gem::Specification.new do |s|
674
677
  "public/images/admin/source/roles.png",
675
678
  "public/images/admin/user.gif",
676
679
  "public/images/profile_default.jpg",
680
+ "public/javascripts/muck-users.js",
677
681
  "rails/init.rb",
678
682
  "tasks/rails.rake",
679
683
  "test/rails_root/.gitignore",
@@ -688,7 +692,6 @@ Gem::Specification.new do |s|
688
692
  "test/rails_root/app/models/user.rb",
689
693
  "test/rails_root/app/models/user_session.rb",
690
694
  "test/rails_root/app/views/default/index.html.erb",
691
- "test/rails_root/app/views/layouts/default.html.erb",
692
695
  "test/rails_root/config/amazon_s3.yml",
693
696
  "test/rails_root/config/boot.rb",
694
697
  "test/rails_root/config/database.yml",
@@ -1143,6 +1146,8 @@ Gem::Specification.new do |s|
1143
1146
  "test/rails_root/public/javascripts/jquery/jquery.swapimage.min.js",
1144
1147
  "test/rails_root/public/javascripts/jquery/jquery.tips.js",
1145
1148
  "test/rails_root/public/javascripts/jquery/jrails.js",
1149
+ "test/rails_root/public/javascripts/muck-countries.js",
1150
+ "test/rails_root/public/javascripts/muck-users.js",
1146
1151
  "test/rails_root/public/javascripts/muck.js",
1147
1152
  "test/rails_root/public/javascripts/muck_activities.js",
1148
1153
  "test/rails_root/public/javascripts/muck_time/en.js",
@@ -1188,6 +1193,7 @@ Gem::Specification.new do |s|
1188
1193
  "test/rails_root/public/stylesheets/blueprint/src/print.css",
1189
1194
  "test/rails_root/public/stylesheets/blueprint/src/reset.css",
1190
1195
  "test/rails_root/public/stylesheets/blueprint/src/typography.css",
1196
+ "test/rails_root/public/stylesheets/default.css",
1191
1197
  "test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png",
1192
1198
  "test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-thick_15_444444_40x40.png",
1193
1199
  "test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_100_f0f0f0_1x400.png",
@@ -0,0 +1,18 @@
1
+ jQuery(document).ready(function() {
2
+ jQuery("#user_login").blur(function(){
3
+ jQuery.post("is_login_available",{ user_login:jQuery(this).val(), format:'js' },function(data){
4
+ jQuery("#username-availibility").html(data);
5
+ });
6
+ });
7
+ jQuery("#user_login").keydown(function() {
8
+ jQuery("#username-availibility").html('');
9
+ });
10
+ jQuery("#user_email").blur(function(){
11
+ jQuery.post("is_email_available",{ user_email:jQuery(this).val(), format:'js' },function(data){
12
+ jQuery("#email-availibility").html(data);
13
+ });
14
+ });
15
+ jQuery("#user_email").keydown(function() {
16
+ jQuery("#email-availibility").html('');
17
+ });
18
+ });
@@ -2,6 +2,8 @@ class ApplicationController < ActionController::Base
2
2
  include SslRequirement
3
3
  helper :all
4
4
  protect_from_forgery
5
+
6
+ layout 'default'
5
7
 
6
8
  protected
7
9
 
@@ -19,9 +19,7 @@ Rails::Initializer.run do |config|
19
19
  config.gem "authlogic"
20
20
  config.gem "searchlogic"
21
21
  config.gem "bcrypt-ruby", :lib => "bcrypt"
22
- config.gem 'jrails'
23
22
  config.gem "overlord"
24
23
  config.gem 'muck-engine', :lib => 'muck_engine'
25
24
  config.plugin_locators << TestGemLocator
26
- end
27
-
25
+ end
@@ -0,0 +1,50 @@
1
+ function setup_country(force_load){
2
+
3
+ var country_id = jQuery("#countries").val();
4
+ var state_id = jQuery("#states").val();
5
+
6
+ if (country_id == undefined){
7
+ return;
8
+ }
9
+
10
+ if (country_id == '-1'){
11
+ jQuery("#states").val('-1');
12
+ jQuery("#counties").val('-1');
13
+ }
14
+
15
+ if (country_id == '-1' || country_id == ''){
16
+ jQuery("#states-container").hide();
17
+ jQuery("#counties-container").hide();
18
+ return;
19
+ }
20
+
21
+ if(force_load || state_id == '' || state_id == null || state_id == -1) {
22
+ jQuery.getJSON("/helper/load_states_for_country/" + country_id + ".js", function(data){
23
+ var options = '';
24
+ jQuery("#counties-container").hide();
25
+ jQuery('#states-container label').html(data.label);
26
+ states = data.states;
27
+ if(states.length > 0){
28
+ for (var i = 0; i < states.length; i++) {
29
+ var state_id = states[i].state.id;
30
+ if(state_id == undefined) { state_id = ''; }
31
+ options += '<option value="' + state_id + '">' + states[i].state.name + '</option>';
32
+ }
33
+ jQuery("#states-container").show();
34
+ jQuery("select#states").html(options);
35
+ } else {
36
+ jQuery("#states-container").hide();
37
+ }
38
+ });
39
+ }
40
+ }
41
+
42
+ jQuery(document).ready(function() {
43
+ jQuery("#countries-container select").change(function() {
44
+ setup_country(true);
45
+ });
46
+ if(jQuery("#states").val() == '' || jQuery("#states").val() == null) {
47
+ jQuery("#states-container").hide();
48
+ }
49
+ setup_country(false);
50
+ });
@@ -0,0 +1,18 @@
1
+ jQuery(document).ready(function() {
2
+ jQuery("#user_login").blur(function(){
3
+ jQuery.post("is_login_available",{ user_login:jQuery(this).val(), format:'js' },function(data){
4
+ jQuery("#username-availibility").html(data);
5
+ });
6
+ });
7
+ jQuery("#user_login").keydown(function() {
8
+ jQuery("#username-availibility").html('');
9
+ });
10
+ jQuery("#user_email").blur(function(){
11
+ jQuery.post("is_email_available",{ user_email:jQuery(this).val(), format:'js' },function(data){
12
+ jQuery("#email-availibility").html(data);
13
+ });
14
+ });
15
+ jQuery("#user_email").keydown(function() {
16
+ jQuery("#email-availibility").html('');
17
+ });
18
+ });
@@ -8,88 +8,6 @@ jQuery(document).ajaxSend(function(event, request, settings) {
8
8
  settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
9
9
  });
10
10
 
11
- function setup_submit_delete(){
12
- jQuery(".submit-delete").click(function() {
13
- // if(!confirm("Are you sure?")){
14
- // return false;
15
- // }
16
- jQuery(this).parents('.delete-container').fadeOut();
17
- var form = jQuery(this).parents('form');
18
- jQuery.post(form.attr('action') + '.json', form.serialize(),
19
- function(data){
20
- var json = eval('(' + data + ')');
21
- if(!json.success){
22
- jQuery.jGrowl.info(json.message);
23
- }
24
- });
25
- return false;
26
- });
27
- jQuery(".submit-delete-js").click(function() {
28
- // if(!confirm("Are you sure?")){
29
- // return false;
30
- // }
31
- jQuery(this).parents('.delete-container').fadeOut();
32
- var form = jQuery(this).parents('form');
33
- jQuery.post(form.attr('action') + '.js', form.serialize(),
34
- function(data){
35
- });
36
- return false;
37
- });
38
- }
39
-
40
- function show_hide_obj (ary_objs_to_show, ary_objs_to_hide)
41
- {
42
- for (i=0;i<ary_objs_to_show.length;i++) {
43
- if (obj_to_show = document.getElementById(ary_objs_to_show[i])) obj_to_show.style.display="";
44
- if (tab = document.getElementById('anchor'+ary_objs_to_show[i])) tab.className = 'curTab';
45
- }
46
- for (i=0;i<ary_objs_to_hide.length;i++) {
47
- if (obj_to_hide = document.getElementById(ary_objs_to_hide[i])) obj_to_hide.style.display="none";
48
- if (tab = document.getElementById('anchor'+ary_objs_to_hide[i])) tab.className = '';
49
- }
50
- }
51
-
52
- function setup_country(force_load){
53
-
54
- var country_id = jQuery("#countries").val();
55
- var state_id = jQuery("#states").val();
56
-
57
- if (country_id == undefined){
58
- return;
59
- }
60
-
61
- if (country_id == '-1'){
62
- jQuery("#states").val('-1');
63
- jQuery("#counties").val('-1');
64
- }
65
-
66
- if (country_id == '-1' || country_id == ''){
67
- jQuery("#states-container").hide();
68
- jQuery("#counties-container").hide();
69
- return;
70
- }
71
-
72
- if(force_load || state_id == '' || state_id == null || state_id == -1) {
73
- jQuery.getJSON("/helper/load_states_for_country/" + country_id + ".js", function(data){
74
- var options = '';
75
- jQuery("#counties-container").hide();
76
- jQuery('#states-container label').html(data.label);
77
- states = data.states;
78
- if(states.length > 0){
79
- for (var i = 0; i < states.length; i++) {
80
- var state_id = states[i].state.id;
81
- if(state_id == undefined) { state_id = ''; }
82
- options += '<option value="' + state_id + '">' + states[i].state.name + '</option>';
83
- }
84
- jQuery("#states-container").show();
85
- jQuery("select#states").html(options);
86
- } else {
87
- jQuery("#states-container").hide();
88
- }
89
- });
90
- }
91
- }
92
-
93
11
  function apply_ajax_forms() {
94
12
  jQuery('form.ajax').ajaxForm({
95
13
  dataType: 'script',
@@ -133,21 +51,26 @@ jQuery(document).ready(function() {
133
51
  return false;
134
52
  });
135
53
 
136
- jQuery("#global-login").focus(function() {
137
- jQuery("#global-login").val("");
138
- });
139
- jQuery("#global-password").focus(function() {
140
- jQuery("#global-password").val("");
141
- });
142
- jQuery("#quick-login-submit").click(function() {
143
- jQuery("#quick-login").submit();
144
- });
145
-
146
- jQuery("#countries-container select").change(function() {
147
- setup_country(true);
54
+ jQuery(".submit-delete").live('click', function() {
55
+ jQuery(this).parents('.delete-container').fadeOut();
56
+ var form = jQuery(this).parents('form');
57
+ jQuery.post(form.attr('action') + '.json', form.serialize(),
58
+ function(data){
59
+ var json = eval('(' + data + ')');
60
+ if(!json.success){
61
+ jQuery.jGrowl.info(json.message);
62
+ }
63
+ });
64
+ return false;
65
+ });
66
+
67
+ jQuery(".submit-delete-js").live('click', function() {
68
+ jQuery(this).parents('.delete-container').fadeOut();
69
+ var form = jQuery(this).parents('form');
70
+ jQuery.post(form.attr('action') + '.js', form.serialize(),
71
+ function(data){
72
+ });
73
+ return false;
148
74
  });
149
- if(jQuery("#states").val() == '' || jQuery("#states").val() == null) {
150
- jQuery("#states-container").hide();
151
- }
152
- setup_country(false);
75
+
153
76
  });
@@ -26,7 +26,9 @@ ul.admin-list li a{font-size:1.2em;}
26
26
  /* errors, message */
27
27
  .notify-box{font-size:1.2em;color:#555;width:100%}
28
28
  .error,.notice,.success {margin:0;}
29
- #errorExplanation{margin:0;padding:0;}
29
+ #errorExplanation{margin:0;padding:.8em;width:97%;border:2px solid #ddd;background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
30
+ #admin-messages{display:none;}
31
+
30
32
  /* tables */
31
33
  .adminTable{margin:5px 0 0 0;padding:0 0 40px 0px;width:980px;}
32
34
  .adminTable a{color:#000;text-decoration:none;font-weight:bold;}
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muck-users
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Ball
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-01-30 00:00:00 -07:00
13
+ date: 2010-02-01 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -102,6 +102,8 @@ files:
102
102
  - app/views/admin/access_codes/show.html.erb
103
103
  - app/views/admin/permissions/_permission.html.erb
104
104
  - app/views/admin/roles/_role.html.erb
105
+ - app/views/admin/roles/ajax_update_roles.js.erb
106
+ - app/views/admin/roles/destroy.js.erb
105
107
  - app/views/admin/roles/edit.html.erb
106
108
  - app/views/admin/roles/index.html.erb
107
109
  - app/views/admin/roles/new.html.erb
@@ -119,6 +121,7 @@ files:
119
121
  - app/views/admin/users/index.html.erb
120
122
  - app/views/admin/users/permissions.html.erb
121
123
  - app/views/admin/users/search.html.erb
124
+ - app/views/admin/users/update_permissions.js.erb
122
125
  - app/views/password_resets/edit.html.erb
123
126
  - app/views/password_resets/new.html.erb
124
127
  - app/views/user_mailer/access_code.text.html.erb
@@ -730,6 +733,7 @@ files:
730
733
  - public/images/admin/source/roles.png
731
734
  - public/images/admin/user.gif
732
735
  - public/images/profile_default.jpg
736
+ - public/javascripts/muck-users.js
733
737
  - rails/init.rb
734
738
  - tasks/rails.rake
735
739
  - test/rails_root/.gitignore
@@ -744,7 +748,6 @@ files:
744
748
  - test/rails_root/app/models/user.rb
745
749
  - test/rails_root/app/models/user_session.rb
746
750
  - test/rails_root/app/views/default/index.html.erb
747
- - test/rails_root/app/views/layouts/default.html.erb
748
751
  - test/rails_root/config/amazon_s3.yml
749
752
  - test/rails_root/config/boot.rb
750
753
  - test/rails_root/config/database.yml
@@ -1199,6 +1202,8 @@ files:
1199
1202
  - test/rails_root/public/javascripts/jquery/jquery.swapimage.min.js
1200
1203
  - test/rails_root/public/javascripts/jquery/jquery.tips.js
1201
1204
  - test/rails_root/public/javascripts/jquery/jrails.js
1205
+ - test/rails_root/public/javascripts/muck-countries.js
1206
+ - test/rails_root/public/javascripts/muck-users.js
1202
1207
  - test/rails_root/public/javascripts/muck.js
1203
1208
  - test/rails_root/public/javascripts/muck_activities.js
1204
1209
  - test/rails_root/public/javascripts/muck_time/en.js
@@ -1244,6 +1249,7 @@ files:
1244
1249
  - test/rails_root/public/stylesheets/blueprint/src/print.css
1245
1250
  - test/rails_root/public/stylesheets/blueprint/src/reset.css
1246
1251
  - test/rails_root/public/stylesheets/blueprint/src/typography.css
1252
+ - test/rails_root/public/stylesheets/default.css
1247
1253
  - test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png
1248
1254
  - test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_diagonals-thick_15_444444_40x40.png
1249
1255
  - test/rails_root/public/stylesheets/jquery/cupertino/images/ui-bg_glass_100_f0f0f0_1x400.png
@@ -1,26 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
- <head>
4
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
5
- <title>home</title>
6
- <%= stylesheet_link_tag 'application', :cache=>true -%>
7
- <%= javascript_include_tag 'application' -%>
8
- <%= javascript_tag %[const AUTH_TOKEN = #{form_authenticity_token.inspect};] if protect_against_forgery? -%>
9
- <%= yield :head -%>
10
- <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
11
- </head>
12
- <body>
13
- <div id="header">
14
- <div id="top-navigation">
15
- </div>
16
- <div class="clear"></div>
17
- </div>
18
- <div id="main">
19
- <div id="content">
20
- <%= yield %>
21
- </div>
22
- </div>
23
- <div id="footer">
24
- </div>
25
- </body>
26
- </html>