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