sakai-cle-test-api 0.0.75 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. data/lib/sakai-cle-test-api.rb +4 -5
  2. data/lib/sakai-cle-test-api/base_page.rb +20 -0
  3. data/lib/sakai-cle-test-api/core-ext.rb +90 -0
  4. data/lib/sakai-cle-test-api/data_objects/announcement.rb +81 -0
  5. data/lib/sakai-cle-test-api/data_objects/assessment.rb +32 -0
  6. data/lib/sakai-cle-test-api/data_objects/assignment.rb +90 -0
  7. data/lib/sakai-cle-test-api/data_objects/event.rb +89 -0
  8. data/lib/sakai-cle-test-api/data_objects/lesson.rb +185 -0
  9. data/lib/sakai-cle-test-api/data_objects/resource.rb +209 -0
  10. data/lib/sakai-cle-test-api/data_objects/site.rb +208 -0
  11. data/lib/sakai-cle-test-api/data_objects/syllabus.rb +39 -0
  12. data/lib/sakai-cle-test-api/data_objects/web_content_tool.rb +51 -0
  13. data/lib/sakai-cle-test-api/data_objects/wiki.rb +53 -0
  14. data/lib/sakai-cle-test-api/gem_ext.rb +23 -0
  15. data/lib/sakai-cle-test-api/page_helper.rb +22 -0
  16. data/lib/sakai-cle-test-api/page_maker.rb +48 -0
  17. data/lib/sakai-cle-test-api/page_objects/account.rb +111 -0
  18. data/lib/sakai-cle-test-api/page_objects/aliases.rb +43 -0
  19. data/lib/sakai-cle-test-api/page_objects/announcements.rb +190 -0
  20. data/lib/sakai-cle-test-api/page_objects/assessments.rb +874 -0
  21. data/lib/sakai-cle-test-api/page_objects/assignments.rb +771 -0
  22. data/lib/sakai-cle-test-api/page_objects/basic_lti.rb +6 -0
  23. data/lib/sakai-cle-test-api/page_objects/blogger.rb +205 -0
  24. data/lib/sakai-cle-test-api/page_objects/blogs.rb +60 -0
  25. data/lib/sakai-cle-test-api/page_objects/calendar.rb +431 -0
  26. data/lib/sakai-cle-test-api/page_objects/calendar_summary.rb +1 -0
  27. data/lib/sakai-cle-test-api/page_objects/chat_room.rb +12 -0
  28. data/lib/sakai-cle-test-api/page_objects/drop_box.rb +9 -0
  29. data/lib/sakai-cle-test-api/page_objects/email_archive.rb +22 -0
  30. data/lib/sakai-cle-test-api/page_objects/evaluations.rb +158 -0
  31. data/lib/sakai-cle-test-api/page_objects/feedback.rb +36 -0
  32. data/lib/sakai-cle-test-api/page_objects/forms.rb +120 -0
  33. data/lib/sakai-cle-test-api/page_objects/forums.rb +289 -0
  34. data/lib/sakai-cle-test-api/page_objects/glossary.rb +117 -0
  35. data/lib/sakai-cle-test-api/page_objects/gradebook.rb +29 -0
  36. data/lib/sakai-cle-test-api/page_objects/gradebook2.rb +17 -0
  37. data/lib/sakai-cle-test-api/page_objects/home.rb +36 -0
  38. data/lib/sakai-cle-test-api/page_objects/jforums.rb +444 -0
  39. data/lib/sakai-cle-test-api/page_objects/job_scheduler.rb +121 -0
  40. data/lib/sakai-cle-test-api/page_objects/lessons.rb +360 -0
  41. data/lib/sakai-cle-test-api/page_objects/login.rb +28 -0
  42. data/lib/sakai-cle-test-api/page_objects/matrix.rb +241 -0
  43. data/lib/sakai-cle-test-api/page_objects/media_gallery.rb +13 -0
  44. data/lib/sakai-cle-test-api/page_objects/messages.rb +622 -0
  45. data/lib/sakai-cle-test-api/page_objects/my_workspace.rb +44 -0
  46. data/lib/sakai-cle-test-api/page_objects/news.rb +8 -0
  47. data/lib/sakai-cle-test-api/page_objects/podcasts.rb +27 -0
  48. data/lib/sakai-cle-test-api/page_objects/polls.rb +69 -0
  49. data/lib/sakai-cle-test-api/page_objects/portfolio_templates.rb +161 -0
  50. data/lib/sakai-cle-test-api/page_objects/portfolios.rb +162 -0
  51. data/lib/sakai-cle-test-api/page_objects/post_em.rb +1 -0
  52. data/lib/sakai-cle-test-api/page_objects/profile.rb +51 -0
  53. data/lib/sakai-cle-test-api/page_objects/profile2.rb +344 -0
  54. data/lib/sakai-cle-test-api/page_objects/public_search.rb +61 -0
  55. data/lib/sakai-cle-test-api/page_objects/realms.rb +19 -0
  56. data/lib/sakai-cle-test-api/page_objects/resources.rb +326 -0
  57. data/lib/sakai-cle-test-api/{resources_roster.rb → page_objects/resources_roster.rb} +0 -0
  58. data/lib/sakai-cle-test-api/page_objects/rosters.rb +70 -0
  59. data/lib/sakai-cle-test-api/page_objects/rwiki.rb +34 -0
  60. data/lib/sakai-cle-test-api/page_objects/search.rb +34 -0
  61. data/lib/sakai-cle-test-api/page_objects/sections.rb +295 -0
  62. data/lib/sakai-cle-test-api/page_objects/single_user.rb +1 -0
  63. data/lib/sakai-cle-test-api/page_objects/site_setup.rb +686 -0
  64. data/lib/sakai-cle-test-api/page_objects/site_statistics.rb +1 -0
  65. data/lib/sakai-cle-test-api/page_objects/sites.rb +255 -0
  66. data/lib/sakai-cle-test-api/page_objects/styles.rb +74 -0
  67. data/lib/sakai-cle-test-api/page_objects/syllabus.rb +166 -0
  68. data/lib/sakai-cle-test-api/page_objects/user_membership.rb +57 -0
  69. data/lib/sakai-cle-test-api/page_objects/users.rb +88 -0
  70. data/lib/sakai-cle-test-api/rich_text.rb +27 -0
  71. data/lib/sakai-cle-test-api/utilities.rb +260 -0
  72. data/lib/sakai-cle-test-api/workflows.rb +224 -0
  73. data/sakai-cle-test-api.gemspec +3 -5
  74. metadata +74 -64
  75. data/lib/sakai-cle-test-api/admin_page_elements.rb +0 -1030
  76. data/lib/sakai-cle-test-api/announcements.rb +0 -59
  77. data/lib/sakai-cle-test-api/assessments.rb +0 -194
  78. data/lib/sakai-cle-test-api/assignments.rb +0 -113
  79. data/lib/sakai-cle-test-api/basic_lti.rb +0 -5
  80. data/lib/sakai-cle-test-api/blogs.rb +0 -5
  81. data/lib/sakai-cle-test-api/calendar.rb +0 -65
  82. data/lib/sakai-cle-test-api/calendar_summary.rb +0 -0
  83. data/lib/sakai-cle-test-api/common_page_elements.rb +0 -1228
  84. data/lib/sakai-cle-test-api/drop_box.rb +0 -0
  85. data/lib/sakai-cle-test-api/email_archive.rb +0 -10
  86. data/lib/sakai-cle-test-api/forums.rb +0 -39
  87. data/lib/sakai-cle-test-api/gradebook.rb +0 -10
  88. data/lib/sakai-cle-test-api/gradebook2.rb +0 -6
  89. data/lib/sakai-cle-test-api/messages.rb +0 -119
  90. data/lib/sakai-cle-test-api/news.rb +0 -9
  91. data/lib/sakai-cle-test-api/polls.rb +0 -24
  92. data/lib/sakai-cle-test-api/post_em.rb +0 -0
  93. data/lib/sakai-cle-test-api/profile.rb +0 -17
  94. data/lib/sakai-cle-test-api/profile2.rb +0 -43
  95. data/lib/sakai-cle-test-api/rwiki.rb +0 -0
  96. data/lib/sakai-cle-test-api/sections.rb +0 -47
  97. data/lib/sakai-cle-test-api/single_user.rb +0 -0
  98. data/lib/sakai-cle-test-api/site_page_elements.rb +0 -2350
  99. data/lib/sakai-cle-test-api/site_statistics.rb +0 -0
  100. data/lib/sakai-cle-test-api/syllabus.rb +0 -77
  101. data/lib/sakai-cle-test-api/tools_menu.rb +0 -415
@@ -0,0 +1 @@
1
+ # Work needs to be done here. :-)
@@ -0,0 +1,12 @@
1
+ #================
2
+ # Chat Room Pages
3
+ #================
4
+
5
+ #
6
+ class ChatRoom < BasePage
7
+
8
+ frame_element
9
+
10
+ value(:total_messages_shown) { |b| b.frame(:class=>"wcwmenu").div(:id=>"chat2_messages_shown_total").text }
11
+
12
+ end
@@ -0,0 +1,9 @@
1
+ #================
2
+ # Drop Box pages
3
+ #================
4
+
5
+ # TODO: See what is needed in this class (and if it's needed at all)
6
+ #class DropBox < ResourcesBase
7
+
8
+
9
+ #end
@@ -0,0 +1,22 @@
1
+ #
2
+ class EmailArchive < BasePage
3
+
4
+ frame_element
5
+
6
+ # EmailArchiveOptions
7
+ action(:options){ |b| b.frm.link(:text=>"Options").click }
8
+
9
+ # Returns an array containing the
10
+ def email_list
11
+ end
12
+
13
+ element(:search_field) { |b| b.frm.text_field(:id=>"search") }
14
+ action(:search_button) { |b| b.frm.button(:value=>"Search").click }
15
+
16
+ end
17
+
18
+ class EmailArchiveOptions < BasePage
19
+
20
+ frame_element
21
+
22
+ 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,289 @@
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
+ def new_forum
13
+ frm.link(:text=>"New Forum").click
14
+ EditForum.new(@browser)
15
+ end
16
+
17
+ def new_topic_for_forum(name)
18
+ index = forum_titles.index(name)
19
+ frm.link(:text=>"New Topic", :index=>index).click
20
+ AddEditTopic.new(@browser)
21
+ end
22
+
23
+ def organize
24
+ frm.link(:text=>"Organize").click
25
+ OrganizeForums.new(@browser)
26
+ end
27
+
28
+ def template_settings
29
+ frm.link(:text=>"Template Settings").click
30
+ ForumTemplateSettings.new(@browser)
31
+ end
32
+
33
+ def forums_table
34
+ frm.div(:class=>"portletBody").table(:id=>"msgForum:forums")
35
+ end
36
+
37
+ def forum_titles
38
+ titles = []
39
+ title_links = frm.div(:class=>"portletBody").links.find_all { |link| link.class_name=="title" && link.id=="" }
40
+ title_links.each { |link| titles << link.text }
41
+ return titles
42
+ end
43
+
44
+ def topic_titles
45
+ titles = []
46
+ title_links = frm.div(:class=>"portletBody").links.find_all { |link| link.class_name == "title" && link.id != "" }
47
+ title_links.each { |link| titles << link.text }
48
+ return titles
49
+ end
50
+
51
+ def forum_settings(name)
52
+ index = forum_titles.index(name)
53
+ frm.link(:text=>"Forum Settings", :index=>index).click
54
+ EditForum.new(@browser)
55
+ end
56
+
57
+ def topic_settings(name)
58
+ index = topic_titles.index(name)
59
+ frm.link(:text=>"Topic Settings", :index=>index).click
60
+ AddEditTopic.new(@browser)
61
+ end
62
+
63
+ def delete_forum(name)
64
+ index = forum_titles.index(name)
65
+ frm.link(:id=>/msgForum:forums:\d+:delete/,:text=>"Delete", :index=>index).click
66
+ EditForum.new(@browser)
67
+ end
68
+
69
+ def delete_topic(name)
70
+ index = topic_titles.index(name)
71
+ frm.link(:id=>/topics:\d+:delete_confirm/, :text=>"Delete", :index=>index).click
72
+ AddEditTopic.new(@browser)
73
+ end
74
+
75
+ def open_forum(forum_title)
76
+ frm.link(:text=>forum_title).click
77
+ # New Class def goes here.
78
+ end
79
+
80
+ def open_topic(topic_title)
81
+ frm.link(:text=>topic_title).click
82
+ TopicPage.new(@browser)
83
+ end
84
+ end
85
+
86
+ class TopicPage < BasePage
87
+
88
+ frame_element
89
+
90
+ def post_new_thread
91
+ frm.link(:text=>"Post New Thread").click
92
+ ComposeForumMessage.new(@browser)
93
+ end
94
+
95
+ def thread_titles
96
+ titles = []
97
+ message_table = frm.table(:id=>"msgForum:messagesInHierDataTable")
98
+ 1.upto(message_table.rows.size-1) do |x|
99
+ titles << message_table[x][1].span(:class=>"firstChild").link(:index=>0).text
100
+ end
101
+ return titles
102
+ end
103
+
104
+ def open_message(message_title)
105
+ frm.div(:class=>"portletBody").link(:text=>message_title).click
106
+ ViewForumThread.new(@browser)
107
+ end
108
+
109
+ def display_entire_message
110
+ frm.link(:text=>"Display Entire Message").click
111
+ TopicPage.new(@browser)
112
+ end
113
+ end
114
+
115
+ class ViewForumThread < BasePage
116
+
117
+ frame_element
118
+
119
+ def reply_to_thread
120
+ frm.link(:text=>"Reply to Thread").click
121
+ ComposeForumMessage.new(@browser)
122
+ end
123
+
124
+ def reply_to_message(index)
125
+ frm.link(:text=>"Reply", :index=>(index.to_i - 1)).click
126
+ ComposeForumMessage.new(@browser)
127
+ end
128
+ end
129
+
130
+ class ComposeForumMessage < BasePage
131
+
132
+ include FCKEditor
133
+ frame_element
134
+
135
+ expected_element :editor
136
+
137
+ def post_message
138
+ frm.button(:text=>"Post Message").click
139
+ # Not sure if we need logic here...
140
+ TopicPage.new(@browser)
141
+ end
142
+
143
+ element(:editor) { |b| b.frm.frame(:id, "dfCompose:df_compose_body_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0) }
144
+
145
+ def message=(text)
146
+ editor.send_keys(text)
147
+ end
148
+
149
+ def reply_text
150
+ @browser.frame(:index=>1).div(:class=>"singleMessageReply").text
151
+ end
152
+
153
+ def add_attachments
154
+ #FIXME
155
+ end
156
+
157
+ def cancel
158
+ frm.button(:value=>"Cancel").click
159
+ # Logic for picking the correct page class
160
+ if frm.link(:text=>"Reply to Thread")
161
+ ViewForumThread.new(@browser)
162
+ elsif frm.link(:text=>"Post New Thread").click
163
+ TopicPage.new(@browser)
164
+ end
165
+ end
166
+
167
+ element(:title) { |b| b.frm.text_field(:id=>"dfCompose:df_compose_title") }
168
+
169
+ end
170
+
171
+ class ForumTemplateSettings < BasePage
172
+
173
+ frame_element
174
+
175
+ value(:page_title) { |b| b.frm.div(:class=>"portletBody").h3(:index=>0).text }
176
+
177
+ def save
178
+ frm.button(:value=>"Save").click
179
+ Forums.new(@browser)
180
+ end
181
+
182
+ def cancel
183
+ frm.button(:value=>"Cancel").click
184
+ Forums.new(@browser)
185
+ end
186
+
187
+ end
188
+
189
+ class OrganizeForums < BasePage
190
+
191
+ frame_element
192
+
193
+ def save
194
+ frm.button(:value=>"Save").click
195
+ Forums.new(@browser)
196
+ end
197
+
198
+ # These are set to so that the user
199
+ # does not have to start the list at zero...
200
+ def forum(index)
201
+ frm.select(:id, "revise:forums:#{index.to_i - 1}:forumIndex")
202
+ end
203
+
204
+ def topic(forumindex, topicindex)
205
+ frm.select(:id, "revise:forums:#{forumindex.to_i - 1}:topics:#{topicindex.to_i - 1}:topicIndex")
206
+ end
207
+ end
208
+
209
+ class EditForum < BasePage
210
+
211
+ frame_element
212
+
213
+ def save
214
+ frm.button(:value=>"Save").click
215
+ Forums.new(@browser)
216
+ end
217
+
218
+ def save_and_add
219
+ frm.button(:value=>"Save Settings & Add Topic").click
220
+ AddEditTopic.new(@browser)
221
+ end
222
+
223
+ def editor
224
+ frm.div(:class=>"portletBody").frame(:id, "revise:df_compose_description_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0)
225
+ end
226
+
227
+ def description=(text)
228
+ editor.send_keys(text)
229
+ end
230
+
231
+ def add_attachments
232
+ frm.button(:value=>/attachments/).click
233
+ ForumsAddAttachments.new(@browser)
234
+ end
235
+
236
+ element(:title){ |b| b.frm.text_field(:id=>"revise:forum_title") }
237
+ element(:short_description){ |b| b.frm.text_field(:id=>"revise:forum_shortDescription") }
238
+
239
+ end
240
+
241
+ class AddEditTopic < BasePage
242
+
243
+ frame_element
244
+
245
+ @@table_index=0
246
+
247
+ def editor
248
+ frm.div(:class=>"portletBody").frame(:id, "revise:topic_description_inputRichText___Frame").td(:id, "xEditingArea").frame(:index=>0)
249
+ end
250
+
251
+ def description=(text)
252
+ editor.send_keys(text)
253
+ end
254
+
255
+ def save
256
+ frm.button(:value=>"Save").click
257
+ Forums.new(@browser)
258
+ end
259
+
260
+ def add_attachments
261
+ frm.button(:value=>/Add.+ttachment/).click
262
+ ForumsAddAttachments.new(@browser)
263
+ end
264
+
265
+ def roles
266
+ roles=[]
267
+ options = frm.select(:id=>"revise:role").options.to_a
268
+ options.each { |option| roles << option.text }
269
+ return roles
270
+ end
271
+
272
+ def site_role=(role)
273
+ frm.select(:id=>"revise:role").select(role)
274
+ 0.upto(frm.select(:id=>"revise:role").length - 1) do |x|
275
+ if frm.div(:class=>"portletBody").table(:class=>"permissionPanel jsfFormTable lines nolines", :index=>x).visible?
276
+ @@table_index = x
277
+
278
+ def permission_level=(value)
279
+ frm.select(:id=>"revise:perm:#{@@table_index}:level").select(value)
280
+ end
281
+
282
+ end
283
+ end
284
+ end
285
+
286
+ element(:title) { |b| b.frm.text_field(:id=>"revise:topic_title") }
287
+ element(:short_description) { |b| b.frm.text_field(:id=>"revise:topic_shortDescription") }
288
+
289
+ end