sambal-cle 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/README.md +4 -0
  2. data/lib/sambal-cle/base_page.rb +20 -0
  3. data/lib/sambal-cle/core-ext.rb +90 -0
  4. data/lib/sambal-cle/data_objects/announcement.rb +82 -0
  5. data/lib/sambal-cle/data_objects/assessment.rb +32 -0
  6. data/lib/sambal-cle/data_objects/assignment.rb +205 -0
  7. data/lib/sambal-cle/data_objects/blog.rb +46 -0
  8. data/lib/sambal-cle/data_objects/blogger.rb +49 -0
  9. data/lib/sambal-cle/data_objects/chat_room.rb +54 -0
  10. data/lib/sambal-cle/data_objects/event.rb +89 -0
  11. data/lib/sambal-cle/data_objects/forum.rb +212 -0
  12. data/lib/sambal-cle/data_objects/lesson.rb +185 -0
  13. data/lib/sambal-cle/data_objects/message.rb +57 -0
  14. data/lib/sambal-cle/data_objects/poll.rb +74 -0
  15. data/lib/sambal-cle/data_objects/resource.rb +209 -0
  16. data/lib/sambal-cle/data_objects/site.rb +295 -0
  17. data/lib/sambal-cle/data_objects/syllabus.rb +73 -0
  18. data/lib/sambal-cle/data_objects/web_content_tool.rb +51 -0
  19. data/lib/sambal-cle/data_objects/wiki.rb +63 -0
  20. data/lib/sambal-cle/date_makers.rb +118 -0
  21. data/lib/sambal-cle/gem_ext.rb +23 -0
  22. data/lib/sambal-cle/page_helper.rb +22 -0
  23. data/lib/sambal-cle/page_maker.rb +48 -0
  24. data/lib/sambal-cle/page_objects/account.rb +111 -0
  25. data/lib/sambal-cle/page_objects/aliases.rb +43 -0
  26. data/lib/sambal-cle/page_objects/announcements.rb +190 -0
  27. data/lib/sambal-cle/page_objects/assessments.rb +874 -0
  28. data/lib/sambal-cle/page_objects/assignments.rb +770 -0
  29. data/lib/sambal-cle/page_objects/basic_lti.rb +6 -0
  30. data/lib/sambal-cle/page_objects/blogger.rb +205 -0
  31. data/lib/sambal-cle/page_objects/blogs.rb +60 -0
  32. data/lib/sambal-cle/page_objects/calendar.rb +330 -0
  33. data/lib/sambal-cle/page_objects/calendar_summary.rb +1 -0
  34. data/lib/sambal-cle/page_objects/chat_room.rb +22 -0
  35. data/lib/sambal-cle/page_objects/drop_box.rb +9 -0
  36. data/lib/sambal-cle/page_objects/email_archive.rb +22 -0
  37. data/lib/sambal-cle/page_objects/entity_picker.rb +62 -0
  38. data/lib/sambal-cle/page_objects/evaluations.rb +158 -0
  39. data/lib/sambal-cle/page_objects/feedback.rb +36 -0
  40. data/lib/sambal-cle/page_objects/forms.rb +120 -0
  41. data/lib/sambal-cle/page_objects/forums.rb +254 -0
  42. data/lib/sambal-cle/page_objects/glossary.rb +117 -0
  43. data/lib/sambal-cle/page_objects/gradebook.rb +29 -0
  44. data/lib/sambal-cle/page_objects/gradebook2.rb +17 -0
  45. data/lib/sambal-cle/page_objects/home.rb +36 -0
  46. data/lib/sambal-cle/page_objects/jforums.rb +444 -0
  47. data/lib/sambal-cle/page_objects/job_scheduler.rb +121 -0
  48. data/lib/sambal-cle/page_objects/lessons.rb +361 -0
  49. data/lib/sambal-cle/page_objects/login.rb +28 -0
  50. data/lib/sambal-cle/page_objects/matrix.rb +241 -0
  51. data/lib/sambal-cle/page_objects/media_gallery.rb +13 -0
  52. data/lib/sambal-cle/page_objects/messages.rb +622 -0
  53. data/lib/sambal-cle/page_objects/my_workspace.rb +44 -0
  54. data/lib/sambal-cle/page_objects/news.rb +8 -0
  55. data/lib/sambal-cle/page_objects/podcasts.rb +27 -0
  56. data/lib/sambal-cle/page_objects/polls.rb +69 -0
  57. data/lib/sambal-cle/page_objects/portfolio_templates.rb +161 -0
  58. data/lib/sambal-cle/page_objects/portfolios.rb +162 -0
  59. data/lib/sambal-cle/page_objects/post_em.rb +1 -0
  60. data/lib/sambal-cle/page_objects/profile.rb +51 -0
  61. data/lib/sambal-cle/page_objects/profile2.rb +344 -0
  62. data/lib/sambal-cle/page_objects/public_search.rb +61 -0
  63. data/lib/sambal-cle/page_objects/realms.rb +19 -0
  64. data/lib/sambal-cle/page_objects/resources.rb +326 -0
  65. data/lib/sambal-cle/page_objects/resources_roster.rb +0 -0
  66. data/lib/sambal-cle/page_objects/rosters.rb +70 -0
  67. data/lib/sambal-cle/page_objects/rwiki.rb +34 -0
  68. data/lib/sambal-cle/page_objects/search.rb +34 -0
  69. data/lib/sambal-cle/page_objects/sections.rb +295 -0
  70. data/lib/sambal-cle/page_objects/single_user.rb +1 -0
  71. data/lib/sambal-cle/page_objects/site_setup.rb +621 -0
  72. data/lib/sambal-cle/page_objects/site_statistics.rb +1 -0
  73. data/lib/sambal-cle/page_objects/sites.rb +255 -0
  74. data/lib/sambal-cle/page_objects/styles.rb +74 -0
  75. data/lib/sambal-cle/page_objects/syllabus.rb +166 -0
  76. data/lib/sambal-cle/page_objects/user_membership.rb +57 -0
  77. data/lib/sambal-cle/page_objects/users.rb +88 -0
  78. data/lib/sambal-cle/randomizers.rb +117 -0
  79. data/lib/sambal-cle/rich_text.rb +38 -0
  80. data/lib/sambal-cle/utilities.rb +31 -0
  81. data/lib/sambal-cle/workflows.rb +223 -0
  82. data/lib/sambal-cle.rb +31 -0
  83. data/sambal-cle.gemspec +14 -0
  84. data/test/add_assignment_to_calendar_spec.rb +86 -0
  85. data/test/assignment_announcements_spec.rb +71 -0
  86. data/test/assignment_gradebook_spec.rb +98 -0
  87. data/test/config.yml.template +4 -0
  88. data/test/directory.yml.template +123 -0
  89. data/test/duplicate_site_spec.rb +244 -0
  90. metadata +167 -0
@@ -0,0 +1,62 @@
1
+ class EntityPicker < BasePage
2
+
3
+ def view_assignment_details(title)
4
+ unless self.div(:class=>"title", :text=>title).present?
5
+ self.link(:text=>"Assignments").wait_until_present(5)
6
+ self.link(:text=>"Assignments").click
7
+ self.link(:text=>title).wait_until_present(15)
8
+ self.link(:text=>title).click
9
+ end
10
+ self.div(:class=>"title", :text=>title).wait_until_present(5)
11
+ end
12
+
13
+ def select_assignment(title)
14
+ view_assignment_details(title)
15
+ self.link(:text=>"Select this item").click
16
+ self.window(:index=>0).use
17
+ self.frame(:index=>2).button(:id=>"btnOk").click
18
+ end
19
+
20
+ def close_picker
21
+ self.window.close
22
+ self.window(:index=>0).use
23
+ self.frame(:index=>2).button(:id=>"btnCancel").click
24
+ end
25
+
26
+ def view_forum_details(title)
27
+ unless self.span(:class=>"entity-item-label icon-sakai-entity-forum", :text=>title).present?
28
+ self.link(:class=>/entity-item-label icon-sakai-entity-forum/).wait_until_present(10)
29
+ self.link(:class=>/entity-item-label icon-sakai-entity-forum/).click
30
+ self.link(:text=>title).wait_until_present(10)
31
+ self.link(:text=>title).click
32
+ end
33
+ self.div(:class=>"title", :text=>title).wait_until_present
34
+ end
35
+
36
+ def view_topic_details(forum, topic)
37
+ unless self.span(:class=>"entity-item-label icon-sakai-entity-forum", :text=>title).present?
38
+ self.link(:class=>/entity-item-label icon-sakai-entity-forum/).wait_until_present(10)
39
+ self.link(:class=>/entity-item-label icon-sakai-entity-forum/).click
40
+ self.link(:text=>forum).wait_until_present(10)
41
+ self.link(:text=>forum).click
42
+ self.link(:text=>topic).wait_until_present(10)
43
+ self.link(:text=>topic).click
44
+ end
45
+ self.div(:class=>"title", :text=>topic).wait_until_present(10)
46
+ end
47
+
48
+ value(:url) { |b| b.td(text: "url").parent.td(class: "attrValue").text }
49
+ value(:portal_url) { |b| b.td(text: "portalURL").parent.td(class: "attrValue").text }
50
+ value(:direct_link) { |b| b.link(text: "Select this item").href }
51
+ value(:retract_time) { |b| b.td(text: "Retract Time").parent.td(class: "attrValue").text }
52
+ value(:time_due) { |b| b.td(text: "Time Due").parent.td(class: "attrValue").text }
53
+ value(:time_modified) { |b| b.td(text: "Time Modified").parent.td(class: "attrValue").text }
54
+ value(:description) { |b| b.td(text: "Description").parent.td(class: "attrValue").text }
55
+ value(:time_created) { |b| b.td(text: "Time Created").parent.td(class: "attrValue").text }
56
+ value(:date_created) { |b| b.td(text: "Date Created").parent.td(class: "attrValue").text }
57
+ value(:author) { |b| b.td(text: "Author").parent.td(class: "attrValue").text }
58
+ value(:moderated) { |b| b.td(text: "Moderated").parent.td(class: "attrValue").text }
59
+ value(:modified_by) { |b| b.td(text: "Modified By").parent.td(class: "attrValue").text }
60
+ value(:date_modified) { |b| b.td(text: "Date Modified").parent.td(class: "attrValue").text }
61
+
62
+ end
@@ -0,0 +1,158 @@
1
+ #================
2
+ # Evaluation System Pages
3
+ #================
4
+
5
+ # The "Evaluations Dashboard"
6
+ class EvaluationSystem < BasePage
7
+
8
+ frame_element
9
+
10
+ # MyTemplates
11
+ action(:my_templates) { |b| b.frm.link(:text=>"My Templates").click }
12
+
13
+ # AddTemplateTitle
14
+ action(:add_template) { |b| b.frm.link(:text=>"Add Template").click }
15
+
16
+ # TakeEvaluation
17
+ def take_evaluation(evaluation_name)
18
+ frm.div(:class=>"summaryBox").table(:text=>/#{Regexp.escape(evaluation_name)}/).link.click
19
+ TakeEvaluation.new(@browser)
20
+ end
21
+
22
+ def status_of(evaluation_name)
23
+ frm.div(:class=>"summaryBox").table(:text=>/#{Regexp.escape(evaluation_name)}/)[1][1].text
24
+ end
25
+
26
+ end
27
+
28
+ #
29
+ class AddTemplateTitle < BasePage
30
+
31
+ frame_element
32
+
33
+ def save
34
+ frm.button(:value=>"Save").click
35
+ EditTemplate.new(@browser)
36
+ end
37
+
38
+ element(:title) { |b| b.frm.text_field(:id=>"title") }
39
+ element(:description) { |b| b.frm.text_area(:id=>"description") }
40
+
41
+ end
42
+
43
+
44
+ #
45
+ class EditTemplate < BasePage
46
+
47
+ frame_element
48
+
49
+ def item_text=(text)
50
+ frm.frame(:id, "item-text___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
51
+ end
52
+
53
+ action(:new_evaluation) { |b| b.frm.link(:text=>"New evaluation").click }
54
+
55
+ def add
56
+ frm.button(:value=>"Add").click
57
+ frm.frame(:id, "item-text___Frame").td(:id, "xEditingArea").wait_until_present
58
+ end
59
+
60
+ def save_item
61
+ frm.button(:value=>"Save item").click
62
+ frm.link(:text=>"New evaluation").wait_until_present
63
+ EditTemplate.new @browser
64
+ end
65
+
66
+ element(:item) { |b| b.frm.select_list(:id=>"add-item-control::add-item-classification-selection").click }
67
+ end
68
+
69
+
70
+ #
71
+ class NewEvaluation < BasePage
72
+
73
+ include FCKEditor
74
+ frame_element
75
+
76
+ expected_element :editor
77
+
78
+ element(:editor) { |b| b.frm.frame(:id, "instructions:1:input___Frame") }
79
+
80
+ def continue_to_settings
81
+ frm.button(:value=>"Continue to Settings").click
82
+ EvaluationSettings.new(@browser)
83
+ end
84
+
85
+ def instructions=(text)
86
+ frm.frame(:id, "instructions:1:input___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
87
+ end
88
+
89
+ element(:title) { |b| b.frm.text_field(:id=>"title") }
90
+
91
+ end
92
+
93
+
94
+ #
95
+ class EvaluationSettings < BasePage
96
+
97
+ frame_element
98
+
99
+ def continue_to_assign_to_courses
100
+ frm.button(:value=>"Continue to Assign to Courses").click
101
+ EditEvaluationAssignment.new(@browser)
102
+ end
103
+
104
+
105
+ end
106
+
107
+
108
+ #
109
+ class EditEvaluationAssignment < BasePage
110
+
111
+ frame_element
112
+
113
+ def save_assigned_groups
114
+ frm.button(:value=>"Save Assigned Groups").click
115
+ ConfirmEvaluation.new(@browser)
116
+ end
117
+
118
+ def check_group(title)
119
+ frm.table(:class=>"listHier lines nolines").wait_until_present
120
+ frm.table(:class=>"listHier lines nolines").row(:text=>/#{Regexp.escape(title)}/).checkbox(:name=>"selectedGroupIDs").set
121
+ end
122
+
123
+ action(:assign_to_evaluation_groups) { |b| b.frm.link(:text=>"Assign to Evaluation Groups").click }
124
+ end
125
+
126
+
127
+ #
128
+ class ConfirmEvaluation < BasePage
129
+
130
+ frame_element
131
+
132
+ def done
133
+ frm.button(:value=>"Done").click
134
+ MyEvaluations.new(@browser)
135
+ end
136
+
137
+ end
138
+
139
+ #
140
+ class MyEvaluations < BasePage
141
+
142
+ frame_element
143
+
144
+
145
+ end
146
+
147
+ #
148
+ class TakeEvaluation < BasePage
149
+
150
+ frame_element
151
+
152
+ def submit_evaluation
153
+ frm.button(:value=>"Submit Evaluation").click
154
+ EvaluationSystem.new(@browser)
155
+ end
156
+
157
+
158
+ end
@@ -0,0 +1,36 @@
1
+ #================
2
+ # Feedback pages
3
+ #================
4
+
5
+ #
6
+ class Feedback < BasePage
7
+
8
+ frame_element
9
+
10
+ def add
11
+ frm.link(:text=>"Add").click
12
+ AddUpdateFeedback.new(@browser)
13
+ end
14
+
15
+ # Returns an array containing the titles
16
+ # of the Feedback items listed on the page.
17
+ def feedback_items
18
+ items = []
19
+ frm.table(:class=>"listHier lines nolines").rows.each_with_index do |row, index|
20
+ next if index == 0
21
+ items << row[0].text
22
+ end
23
+ return items
24
+ end
25
+
26
+ end
27
+
28
+ #
29
+ class AddUpdateFeedback < BasePage
30
+
31
+ frame_element
32
+
33
+
34
+ element(:title) { |b| b.frm.text_field(:id=>"_idJsp1:title") }
35
+
36
+ end
@@ -0,0 +1,120 @@
1
+ #================
2
+ # Forms Pages - Portfolio Site
3
+ #================
4
+
5
+ # The topmost page of Forms in a Portfolio Site.
6
+ class Forms < BasePage
7
+
8
+ frame_element
9
+
10
+ # Clicks the Add button and instantiates
11
+ # the AddForm Class.
12
+ def add
13
+ frm.link(:text=>"Add").click
14
+ AddForm.new(@browser)
15
+ end
16
+
17
+ # Clicks the Publish buton for the specified
18
+ # Form, then instantiates the PublishForm Class.
19
+ def publish(form_name)
20
+ frm.table(:class=>"listHier lines nolines").tr(:text, /#{Regexp.escape(form_name)}/).link(:text=>/Publish/).click
21
+ PublishForm.new(@browser)
22
+ end
23
+
24
+ # Clicks the Import button, then
25
+ # instantiates the ImportForms Class.
26
+ def import
27
+ frm.link(:text=>"Import").click
28
+ ImportForms.new(@browser)
29
+ end
30
+
31
+ end
32
+
33
+ class ImportForms < BasePage
34
+
35
+ frame_element
36
+
37
+ def import
38
+ frm.button(:value=>"Import").click
39
+ Forms.new(@browser)
40
+ end
41
+
42
+ def select_file
43
+ frm.link(:text=>"Select File...").click
44
+ AttachFileFormImport.new(@browser)
45
+ end
46
+
47
+ end
48
+
49
+ class AddForm < BasePage
50
+
51
+ frame_element
52
+
53
+ def select_schema_file
54
+ frm.link(:text=>"Select Schema File").click
55
+ SelectSchemaFile.new(@browser)
56
+ end
57
+
58
+ def instruction=(text)
59
+ frm.frame(:id, "instruction___Frame").td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
60
+ end
61
+
62
+ def add_form
63
+ frm.button(:value=>"Add Form").click
64
+ Forms.new(@browser)
65
+ end
66
+
67
+ element(:name) { |b| b.frm.text_field(:id=>"description-id") }
68
+
69
+
70
+ end
71
+
72
+ class SelectSchemaFile < BasePage
73
+
74
+ frame_element
75
+
76
+ def show_other_sites
77
+ frm.link(:title=>"Show other sites").click
78
+ SelectSchemaFile.new(@browser)
79
+ end
80
+
81
+ def open_folder(name)
82
+ frm.link(:text=>name).click
83
+ SelectSchemaFile.new(@browser)
84
+ end
85
+
86
+ def select_file(filename)
87
+ index = file_names.index(filename)
88
+ frm.table(:class=>"listHier lines").tr(:text, /#{Regexp.escape(filename)}/).link(:text=>"Select").click
89
+ SelectSchemaFile.new(@browser)
90
+ end
91
+
92
+ def file_names #FIXME
93
+ names = []
94
+ resources_table = frm.table(:class=>"listHier lines")
95
+ 1.upto(resources_table.rows.size-1) do |x|
96
+ if resources_table[x][0].link.exist? && resources_table[x][0].a(:index=>0).title=~/File Type/
97
+ names << resources_table[x][0].text
98
+ end
99
+ end
100
+ return names
101
+ end
102
+
103
+ def continue
104
+ frm.button(:value=>"Continue").click
105
+ frm.frame(:id, "instruction___Frame").td(:id, "xEditingArea").wait_until_present
106
+ AddForm.new(@browser)
107
+ end
108
+
109
+ end
110
+
111
+ class PublishForm < BasePage
112
+
113
+ frame_element
114
+
115
+ def yes
116
+ frm.button(:value=>"Yes").click
117
+ Forms.new(@browser)
118
+ end
119
+
120
+ end
@@ -0,0 +1,254 @@
1
+ class Forums < BasePage
2
+
3
+ frame_element
4
+
5
+ # Pass this method a string that matches
6
+ # the title of a Forum on the page, it returns
7
+ # True if the specified forum row has "DRAFT" in it.
8
+ def draft?(title)
9
+ frm.table(:id=>"msgForum:forums").row(:text=>/#{Regexp.escape(title)}/).span(:text=>"DRAFT").exist?
10
+ end
11
+
12
+ action(:new_forum) { |b| b.frm.link(:text=>"New Forum").click }
13
+
14
+ # AddEditTopic
15
+ def new_topic_for_forum(name)
16
+ index = forum_titles.index(name)
17
+ frm.link(:text=>"New Topic", :index=>index).click
18
+ end
19
+
20
+ # OrganizeForums
21
+ action(:organize) { |b| b.frm.link(:text=>"Organize").click }
22
+
23
+ # ForumTemplateSettings
24
+ action(:template_settings) { |b| b.frm.link(:text=>"Template Settings").click }
25
+
26
+ element(:forums_table) { |b| b.frm.div(:class=>"portletBody").table(:id=>"msgForum:forums") }
27
+
28
+ def forum_titles
29
+ titles = []
30
+ title_links = frm.div(:class=>"portletBody").links.find_all { |link| link.class_name=="title" && link.id=="" }
31
+ title_links.each { |link| titles << link.text }
32
+ return titles
33
+ end
34
+
35
+ def topic_titles
36
+ titles = []
37
+ title_links = frm.div(:class=>"portletBody").links.find_all { |link| link.class_name == "title" && link.id != "" }
38
+ title_links.each { |link| titles << link.text }
39
+ return titles
40
+ end
41
+
42
+ # EditForum
43
+ def forum_settings(name)
44
+ index = forum_titles.index(name)
45
+ frm.link(:text=>"Forum Settings", :index=>index).click
46
+ end
47
+
48
+ # AddEditTopic
49
+ def topic_settings(name)
50
+ index = topic_titles.index(name)
51
+ frm.link(:text=>"Topic Settings", :index=>index).click
52
+ end
53
+
54
+ # EditForum
55
+ def delete_forum(name)
56
+ index = forum_titles.index(name)
57
+ frm.link(:id=>/msgForum:forums:\d+:delete/,:text=>"Delete", :index=>index).click
58
+ end
59
+
60
+ # AddEditTopic
61
+ def delete_topic(name)
62
+ index = topic_titles.index(name)
63
+ frm.link(:id=>/topics:\d+:delete_confirm/, :text=>"Delete", :index=>index).click
64
+ end
65
+
66
+ def open_forum(title)
67
+ frm.link(:text=>/#{title}/).wait_until_present(7)
68
+ frm.link(:text=>/#{title}/).click
69
+ end
70
+ alias open_topic open_forum
71
+
72
+ end
73
+
74
+ class TopicPage < BasePage
75
+
76
+ frame_element
77
+
78
+ # ComposeForumMessage
79
+ action(:post_new_thread) { |b| b.frm.link(:text=>"Post New Thread").click }
80
+
81
+ def thread_titles
82
+ titles = []
83
+ message_table = frm.table(:id=>"msgForum:messagesInHierDataTable")
84
+ 1.upto(message_table.rows.size-1) do |x|
85
+ titles << message_table[x][1].span(:class=>"firstChild").link(:index=>0).text
86
+ end
87
+ return titles
88
+ end
89
+
90
+ # ViewForumThread
91
+ def open_message(message_title)
92
+ frm.div(:class=>"portletBody").link(:text=>message_title).click
93
+ end
94
+
95
+ # TopicPage
96
+ action(:display_entire_message){ |b| b.frm.link(:text=>"Display Entire Message").click }
97
+
98
+ end
99
+
100
+ class ViewForumThread < BasePage
101
+
102
+ frame_element
103
+
104
+ # ComposeForumMessage
105
+ action(:reply_to_thread) { |b| b.frm.link(:text=>"Reply to Thread").click }
106
+
107
+ # ComposeForumMessage
108
+ # TODO: Figure out a better way to do this...
109
+ def reply_to_message(index)
110
+ frm.link(:text=>"Reply", :index=>(index.to_i - 1)).click
111
+ end
112
+ end
113
+
114
+ class ComposeForumMessage < BasePage
115
+
116
+ include FCKEditor
117
+ frame_element
118
+
119
+ expected_element :editor
120
+
121
+ # TopicPage, probably
122
+ action(:post_message) { |b| b.frm.button(:text=>"Post Message").click }
123
+
124
+ element(:editor) { |b| b.frm.frame(:id, "dfCompose:df_compose_body_inputRichText___Frame") }
125
+
126
+ def message=(text)
127
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
128
+ end
129
+
130
+ value(:reply_text) { |b| b.frame(:index=>1).div(:class=>"singleMessageReply").text }
131
+
132
+ action(:cancel) { |b| b.frm.button(:value=>"Cancel").click }
133
+
134
+ element(:title) { |b| b.frm.text_field(:id=>"dfCompose:df_compose_title") }
135
+
136
+ end
137
+
138
+ class ForumTemplateSettings < BasePage
139
+
140
+ frame_element
141
+
142
+ value(:page_title) { |b| b.frm.div(:class=>"portletBody").h3(:index=>0).text }
143
+
144
+ # Forums
145
+ action(:save) { |b| b.frm.button(:value=>"Save").click }
146
+
147
+ # Forums
148
+ action(:cancel) { |b| b.frm.button(:value=>"Cancel").click }
149
+
150
+ end
151
+
152
+ class OrganizeForums < BasePage
153
+
154
+ frame_element
155
+
156
+ # Forums
157
+ action(:save) { |b| b.frm.button(:value=>"Save").click }
158
+
159
+ # These are set to so that the user
160
+ # does not have to start the list at zero...
161
+ # TODO: Is there any chance there's a better way to do this? It's friggin' ugly!
162
+ def forum(index)
163
+ frm.select(:id, "revise:forums:#{index.to_i - 1}:forumIndex")
164
+ end
165
+
166
+ def topic(forumindex, topicindex)
167
+ frm.select(:id, "revise:forums:#{forumindex.to_i - 1}:topics:#{topicindex.to_i - 1}:topicIndex")
168
+ end
169
+ end
170
+
171
+ class EditForum < BasePage
172
+
173
+ include FCKEditor
174
+ frame_element
175
+
176
+ # Forums
177
+ action(:save) { |b| b.frm.button(:value=>"Save").click }
178
+ action(:cancel) { |b| b.frm.button(:value=>"Cancel").click }
179
+
180
+ # AddEditTopic
181
+ action(:save_and_add) { |b| b.frm.button(:value=>"Save Settings & Add Topic").click }
182
+
183
+ element(:editor) { |b| b.frm.div(:class=>"portletBody").frame(:id, "revise:df_compose_description_inputRichText___Frame") }
184
+
185
+ def description=(text)
186
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
187
+ end
188
+
189
+ #ForumsAddAttachments (or not, actually, now that I think of it)
190
+ action(:add_attachments) { |b| b.frm.button(:value=>/attachments/).click }
191
+
192
+ element(:title){ |b| b.frm.text_field(:id=>"revise:forum_title") }
193
+ element(:short_description){ |b| b.frm.text_field(:id=>"revise:forum_shortDescription") }
194
+
195
+ end
196
+
197
+ class AddEditTopic < BasePage
198
+
199
+ include FCKEditor
200
+ frame_element
201
+
202
+ @@table_index=0 # TODO: Seriously think about a better way to do this
203
+
204
+ def editor
205
+ frm.div(:class=>"portletBody").frame(:id, "revise:topic_description_inputRichText___Frame")
206
+ end
207
+
208
+ def description=(text)
209
+ editor.td(:id, "xEditingArea").frame(:index=>0).send_keys(text)
210
+ end
211
+
212
+ # Forums
213
+ action(:save) { |b| b.frm.button(:value=>"Save").click }
214
+ action(:cancel) { |b| b.frm.button(:value=>"Cancel").click }
215
+
216
+ action(:add_attachments) { |b| b.frm.button(:value=>/Add.+ttachment/).click }
217
+
218
+ def roles
219
+ roles=[]
220
+ options = frm.select(:id=>"revise:role").options.to_a
221
+ options.each { |option| roles << option.text }
222
+ return roles
223
+ end
224
+
225
+ def site_role=(role)
226
+ frm.select(:id=>"revise:role").select(role)
227
+ 0.upto(frm.select(:id=>"revise:role").length - 1) do |x|
228
+ if frm.div(:class=>"portletBody").table(:class=>"permissionPanel jsfFormTable lines nolines", :index=>x).visible?
229
+ @@table_index = x
230
+
231
+ def permission_level=(value)
232
+ frm.select(:id=>"revise:perm:#{@@table_index}:level").select(value)
233
+ end
234
+
235
+ end
236
+ end
237
+ end
238
+
239
+ element(:title) { |b| b.frm.text_field(:id=>"revise:topic_title") }
240
+ element(:short_description) { |b| b.frm.text_field(:id=>"revise:topic_shortDescription") }
241
+
242
+ end
243
+
244
+ class ForumView < BasePage
245
+
246
+ frame_element
247
+
248
+ action(:view_full_description) { |b| b.frm.link(id: "msgForum:forum_extended_show").click }
249
+ action(:hide_full_description) { |b| b.frm.link(id: "msgForum:forum_extended_hide").click }
250
+
251
+ value(:short_description) { |b| b.frm.span(class: "shortDescription").text }
252
+ value(:description_html) { |b| b.frm.div(class: "toggle").div(class: "textPanel").html }
253
+
254
+ end