module MoodleParser
Public Instance Methods
all_attempts_shown(page,number_of_attempts_shown = nil)
click to toggle source
# File lib/moodleQuizDownloader/moodle_parser.rb, line 72 def all_attempts_shown(page,number_of_attempts_shown = nil) unless number_of_attempts_shown number_of_attempts_shown = extract_attempt_list(page).size end number_of_attempts_shown == extract_attempt_count(page) end
extractUserName(page)
click to toggle source
# File lib/moodleQuizDownloader/moodle_parser.rb, line 79 def extractUserName(page) l = page.links.select {|x| @@user_view_regexp.match(x.href)} nutzerbild_string = "Nutzerbild " nutzerbild = l.select{ |x| /Nutzerbild/.match(x.text)} if nutzerbild.empty? nutzerbild = l.select{ |x| /Picture of/.match(x.text)} nutzerbild_string = "Picture of " end if nutzerbild.empty? puts "## WARNING! ##" puts "could not extract user name" puts "## nutzerbild #{nutzerbild.inspect}" puts "-- nutzerbild_string #{nutzerbild_string}" return "Unknown Student" end nutzerbild.first.text.gsub(nutzerbild_string,"") end
extract_attempt_count(page)
click to toggle source
# File lib/moodleQuizDownloader/moodle_parser.rb, line 65 def extract_attempt_count(page) ##class: quizattemptcounts quizattemptcounts_div = page.at('.quizattemptcounts') m = quizattemptcounts_div.content.match(/Attempts: (\d+)/) m[1].to_i end
extract_attempt_list(page)
click to toggle source
# File lib/moodleQuizDownloader/moodle_parser.rb, line 53 def extract_attempt_list(page) i = 1 result_list = [] while page.at("//*[@id=\"attempts\"]/tbody/tr[#{i}]/td[3]/a[1]") do student_name = page.at("//*[@id=\"attempts\"]/tbody/tr[#{i}]/td[3]/a[1]").text attempt_url = page.at("//*[@id=\"attempts\"]/tbody/tr[#{i}]/td[3]/a[2]").attributes["href"].value result_list << [student_name,attempt_url] i += 1 end result_list end
extract_complete_attempt_list(page)
click to toggle source
# File lib/moodleQuizDownloader/moodle_parser.rb, line 42 def extract_complete_attempt_list(page) page = select_all_attempts_done(page) attempt_list = extract_attempt_list(page) if (announced = extract_attempt_count(page)) != attempt_list.size puts "#### WARNING: There was a different number of " puts "#### attempts announced on the page - #{announced}" puts "#### but only #{attempt_list.size} could be downloaded" end attempt_list end
login(agent,moodle_login_page,moodle_username,moodle_password)
click to toggle source
# File lib/moodleQuizDownloader/moodle_parser.rb, line 25 def login(agent,moodle_login_page,moodle_username,moodle_password) chatter "connecting to moodle" puts "++++#{moodle_login_page}" page = agent.get(moodle_login_page) form = page.forms[1] form.username = moodle_username form.password = moodle_password page = form.submit end
moodle_item(server)
click to toggle source
# File lib/moodleQuizDownloader/moodle_parser.rb, line 17 def moodle_item(server) "#{server}/moodle/mod/quiz/view.php?id=" end
moodle_login_page(server)
click to toggle source
# File lib/moodleQuizDownloader/moodle_parser.rb, line 11 def moodle_login_page(server) "#{server}" # oder vielleicht besser: #https://moodle.htw-berlin.de/login/index.php # "#{server}/moodle/login/index.php" end
moodle_quiz_report(server)
click to toggle source
# File lib/moodleQuizDownloader/moodle_parser.rb, line 20 def moodle_quiz_report(server) # https://moodle.htw-berlin.de/mod/quiz/report.php?id=46982&mode=overview "#{server}/mod/quiz/report.php?mode=overview&id=" end
selectReviewLinks(page)
click to toggle source
# File lib/moodleQuizDownloader/moodle_parser.rb, line 35 def selectReviewLinks(page) page.links.select do |ll| css_class = ll.attributes.attributes['class'] css_class && css_class.value == 'reviewlink' end end