<%! from django.utils.translation import ugettext as _ %> <%inherit file="/main.html" /> <%! from django.core.urlresolvers import reverse %> <%namespace name='static' file='/static_content.html'/> <%block name="headextra"> <%static:css group='course'/> <%static:js group='module-descriptor-js'/> %if instructor_tasks is not None: %endif <%include file="/courseware/course_navigation.html" args="active_page='instructor'" />
%if settings.MITX_FEATURES.get('ENABLE_INSTRUCTOR_BETA_DASHBOARD'): %endif

${_("Instructor Dashboard")}

##----------------------------------------------------------------------------- %if modeflag.get('Grades'): %if offline_grade_log:

Pre-computed grades ${offline_grade_log} available: Use?

%endif

${_("Gradebook")}

${_("Grade summary")}


%if settings.MITX_FEATURES.get('REMOTE_GRADEBOOK_URL','') and instructor_access: <% rg = course.remote_gradebook %>

${_("Export grades to remote gradebook")}

${_("The assignments defined for this course should match the ones stored in the gradebook, for this to work properly!")}

  • ${_("Gradebook name:")} ${rg.get('name','None defined!')}





  • ${_("Assignment name:")}


%endif %if settings.MITX_FEATURES.get('ENABLE_INSTRUCTOR_BACKGROUND_TASKS'):

${_("Course-specific grade adjustment")}

${_("Specify a particular problem in the course here by its url:")}

${_('You may use just the "urlname" if a problem, or "modulename/urlname" if not. ' '(For example, if the location is i4x://university/course/problem/problemname, ' 'then just provide the problemname. ' 'If the location is i4x://university/course/notaproblem/someothername, then ' 'provide notaproblem/someothername.)')}

${_("Then select an action:")}

${_("These actions run in the background, and status for active tasks will appear in a table below. To see status for all tasks submitted for this problem, click on this button:")}


%endif

${_("Student-specific grade inspection and adjustment")}

${_("Specify the {platform_name} email address or username of a student here:").format(platform_name=settings.PLATFORM_NAME)}

${_("Click this, and a link to student's progress page will appear below:")}

${_("Specify a particular problem in the course here by its url:")}

${_('You may use just the "urlname" if a problem, or "modulename/urlname" if not. ' '(For example, if the location is i4x://university/course/problem/problemname, ' 'then just provide the problemname. ' 'If the location is i4x://university/course/notaproblem/someothername, then ' 'provide notaproblem/someothername.)')}

${_("Then select an action:")} %if settings.MITX_FEATURES.get('ENABLE_INSTRUCTOR_BACKGROUND_TASKS'): %endif

%if instructor_access:

${_("You may also delete the entire state of a student for the specified module:")}

%endif %if settings.MITX_FEATURES.get('ENABLE_INSTRUCTOR_BACKGROUND_TASKS'):

${_("Rescoring runs in the background, and status for active tasks will appear in a table below. " "To see status for all tasks submitted for this problem and student, click on this button:")}

%endif %endif ##----------------------------------------------------------------------------- %if modeflag.get('Psychometrics'):

${_("Select a problem and an action:")}

%endif ##----------------------------------------------------------------------------- %if modeflag.get('Admin'): %if instructor_access:


%endif %if admin_access:


%endif %if settings.MITX_FEATURES['ENABLE_MANUAL_GIT_RELOAD'] and admin_access:

%endif %endif ##----------------------------------------------------------------------------- %if modeflag.get('Forum Admin'): %if instructor_access:



%endif %if instructor_access or forum_admin_access:


%else:

${_("User requires forum administrator privileges to perform administration tasks. See instructor.")}

%endif %endif ##----------------------------------------------------------------------------- %if modeflag.get('Enrollment'):


%if settings.MITX_FEATURES.get('REMOTE_GRADEBOOK_URL','') and instructor_access: <% rg = course.remote_gradebook %>

${_("Pull enrollment from remote gradebook")}

  • ${_("Gradebook name:")} ${rg.get('name','None defined!')}
  • ${_("Section:")}

%endif

${_("Enroll or un-enroll one or many students: enter emails, separated by new lines or commas;")}

${_("Notify students by email")}

${_("Auto-enroll students when they activate")}

%endif ##----------------------------------------------------------------------------- %if modeflag.get('Data'):


${_("Problem urlname:")}


%endif ##----------------------------------------------------------------------------- %if modeflag.get('Manage Groups'): %if instructor_access:

## Translators: days_early_for_beta should not be translated ${_("Enter usernames or emails for students who should be beta-testers, one per line, or separated by commas. They will get to " "see course materials early, as configured via the days_early_for_beta option in the course policy.")}


%if course.is_cohorted: <%include file="/course_groups/cohort_management.html" /> %endif %endif %endif ##----------------------------------------------------------------------------- %if modeflag.get('Email'): %if email_msg:

${email_msg}

%endif
  • %if subject: %else: %endif
${_("Please try not to email students more than once a day. Important things to consider before sending:")}
  • ${_("Have you read over the email to make sure it says everything you want to say?")}
  • ${_("Have you sent the email to yourself first to make sure you're happy with how it's displayed?")}
%endif
##----------------------------------------------------------------------------- %if msg:

${msg}

%endif ##----------------------------------------------------------------------------- %if modeflag.get('Analytics'): %if not any(analytics_results.values()):

${_("No Analytics are available at this time.")}

%endif %if analytics_results.get("StudentsEnrolled"):

${_("Students enrolled:")} ${analytics_results["StudentsEnrolled"]['data'][0]['students']} (${analytics_results["StudentsEnrolled"]['time']})

%endif %if analytics_results.get("StudentsActive"):

${_("Students active in the last week:")} ${analytics_results["StudentsActive"]['data'][0]['active']} (${analytics_results["StudentsActive"]['time']})

%endif %if analytics_results.get("StudentsDropoffPerDay"):

${_("Student activity day by day")} (${analytics_results["StudentsDropoffPerDay"]['time']})

%for row in analytics_results['StudentsDropoffPerDay']['data']: ## For now, just discard the non-date portion %endfor
${_("Day")} ${_("Students")}
${row['last_day'].split("T")[0]} ${row['num_students']}
%endif
%if analytics_results.get("ProblemGradeDistribution"):

${_("Answer distribution for problems")} (${analytics_results["ProblemGradeDistribution"]['time']})

%for row in analytics_results['ProblemGradeDistribution']['data']: %endfor %endfor
${_("Problem")} ${_("Max")} ${_("Points Earned (Num Students)")}
${row['module_id'].split('/')[-1]} ${max(grade_record['max_grade'] for grade_record in row["grade_info"])} %for grade_record in row["grade_info"]: %if isinstance(grade_record["grade"], float): ${"{grade:.2f}".format(**grade_record)} %else: ${"{grade}".format(**grade_record)} %endif (${grade_record["num_students"]})
%endif %endif %if modeflag.get('Analytics In Progress'): ##This is not as helpful as it could be -- let's give full point distribution ##instead. %if analytics_results.get("StudentsPerProblemCorrect"):

${_("Students answering correctly")} (${analytics_results["StudentsPerProblemCorrect"]['time']})

%for row in analytics_results['StudentsPerProblemCorrect']['data']: %endfor
${_("Problem")} ${_("Number of students")}
${row['module_id'].split('/')[-1]} ${row['count']}
%endif

${_("Student distribution per country, all courses, Sep-12 to Oct-17, 1 server (shown here as an example):")}

##

Number of students who dropped off per day before becoming inactive:

## ## % if dropoff_per_day is not None: ## % if dropoff_per_day['status'] == 'success': ##
## ## ## % for k,v in dropoff_per_day['data'].items(): ## ## % endfor ##
DayNumber of students
${k} ${v}
##
## % else: ## ${dropoff_per_day['error']} ## % endif ## % else: ## null data ## % endif ##

## ##

##

Daily activity (online version):

## ## ## % for k,v in daily_activity_json['data'].items(): ## ## ## ## % endfor ##
DayNumber of students
${k} ${v}
##

%endif ##----------------------------------------------------------------------------- %if datatable and modeflag.get('Psychometrics') is None:


${datatable['title'] | h}

%for hname in datatable['header']: %endfor %for row in datatable['data']: %for value in row: %endfor %endfor
${hname | h}
${value | h}

%endif ## Output tasks in progress %if instructor_tasks is not None and len(instructor_tasks) > 0:

${_("Pending Instructor Tasks")}

%for tasknum, instructor_task in enumerate(instructor_tasks): %endfor
${_("Task Type")} ${_("Task inputs")} ${_("Task Id")} ${_("Requester")} ${_("Submitted")} ${_("Task State")} ${_("Duration (sec)")} ${_("Task Progress")}
${instructor_task.task_type} ${instructor_task.task_input} ${instructor_task.task_id} ${instructor_task.requester} ${instructor_task.created} ${instructor_task.task_state} ${_("unknown")} ${_("unknown")}

%endif ##----------------------------------------------------------------------------- %if course_stats and modeflag.get('Psychometrics') is None:


${course_stats['title'] | h}

%for hname in course_stats['header']: %endfor %for row in course_stats['data']: %for value in row: %endfor %endfor
${hname | h}
${value | h}

%endif ##----------------------------------------------------------------------------- %if modeflag.get('Psychometrics'): %for plot in plots:

${plot['title']}


${plot['info']}




%endfor %endif ##----------------------------------------------------------------------------- ## always show msg ##----------------------------------------------------------------------------- %if modeflag.get('Admin'): % if course_errors is not UNDEFINED:

${_("Course errors")}

%if not course_errors: None %else:
    % for (summary, err) in course_errors:
  • ${summary | h} % if err:
    • ${err | h}
    % else:

     

    % endif
  • % endfor
%endif
% endif %endif