Index: lams_admin/web/WEB-INF/web.xml =================================================================== diff -u -r85d81241e2ed717af5d7a966970e010667a07d37 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_admin/web/WEB-INF/web.xml (.../web.xml) (revision 85d81241e2ed717af5d7a966970e010667a07d37) +++ lams_admin/web/WEB-INF/web.xml (.../web.xml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -10,13 +10,18 @@ org.lamsfoundation.lams.admin.ApplicationResources + + contextClass + org.jboss.spring.factory.VFSXmlWebApplicationContext + + contextConfigLocation classpath:/org/lamsfoundation/lams/admin/adminApplicationContext.xml locatorFactorySelector - classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml + classpath:/org/lamsfoundation/lams/beanRefContext.xml parentContextKey Index: lams_build/librarypackages/forumscribe/language/lams/ApplicationResources_ru_RU.properties =================================================================== diff -u --- lams_build/librarypackages/forumscribe/language/lams/ApplicationResources_ru_RU.properties (revision 0) +++ lams_build/librarypackages/forumscribe/language/lams/ApplicationResources_ru_RU.properties (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -0,0 +1,14 @@ +appName = forumscribe +#language code: ru +#locale code: RU + + # CVS ID: $Id$ Exported from the LAMS Community by Ernie Ghiglione on Thu May 21 06:27:24 CST 2009 + +#=================== labels for Forum & Scribe =================# + +activity.helptext =\u0412\u0435\u0440\u0445\u043d\u0435\u0435 \u043e\u043a\u043d\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0424\u043e\u0440\u0443\u043c, \u0430 \u043d\u0438\u0436\u043d\u0435\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0443 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u044b\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432. +activity.title =\u0424\u043e\u0440\u0443\u043c & \u041f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 +activity.description =\u0421\u043e\u0432\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u0435 \u0444\u043e\u0440\u0443\u043c \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0430 + + +#======= End labels: Exported 3 labels for ru RU ===== Index: lams_central/conf/flashxml/lams/monitoring/ru_RU_dictionary.xml =================================================================== diff -u -r9ecb59c6bfeb87410ae1368938b2e358a32005b2 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_central/conf/flashxml/lams/monitoring/ru_RU_dictionary.xml (.../ru_RU_dictionary.xml) (revision 9ecb59c6bfeb87410ae1368938b2e358a32005b2) +++ lams_central/conf/flashxml/lams/monitoring/ru_RU_dictionary.xml (.../ru_RU_dictionary.xml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -1 +1 @@ -
getDictionary3al_noНет'No' on the alert dialogstaff_group_name{0} сотрудниковGroup name for the class's staff group.ls_win_editclass_cancel_btnОтменитьCancel button on Edit Class popupcheck_avail_btnПроверить доступностьCheck Availability button labells_sequence_live_edit_btn_tooltipРедактировать проект этого урокаTool tip message for Live Edit buttonls_learnerURL_lblСсылка для ученика:Learner URL:continue_btnПродолжитьContinue button labelmv_search_not_found_msg{0} не найдено.This message appears when the search does not find any learners whose names contain the search parameter.mv_search_go_btn_lblПерейти кIf the learner entered text into the index/search field, clicking this button will search all started learners names for the text they entered, otherwise if they entered a number and clicked go. It will show the contents of the page, whose number they entered.ls_win_learners_close_btnЗакрытьClose button on View Learners popupmv_search_current_page_lblСтраница {0} из {1}{0} is the page we are on now and {1} is the number of pagesls_manage_learners_btn_tooltipПоказать всех уччеников, крикрепленных к этому урокуtool tip message for the view learners button in lesson tab under manage lesson sectionls_manage_apply_btn_tooltipИзменить статус урока, основываясь на выборе в выпадающем менюtool tip message for the apply button in lesson tab under manage lesson section to change the lesson statusls_seq_status_system_gateСистемный затворA System Gate is a stop point that can be controlled by time setting or user controlmnu_go_todoСписок заданийMenu bar Todomtab_todoСписок заданийMonitor Todo tabtd_desc_textИспользование Списка заданий необязательно для выполнения этой последовательности. Обратите в раздел помощь за соотвествующей информацией.<br><br> Эта функция теперь доступна в полном объеме.Todo tab descriptional_error_forcecomplete_invalidactivityВы перетащили пользователя '{0}' на его текущее или уже выполненное задание '{1}'Error message when learner has been dropped on its previous or on its current activityccm_monitor_activityhelpПомощь по мониторингу заданийLabel for Custom Context Monitor Activity Helpal_validation_schstartВы не выбрали дату. Выберите, пожалуйста, дату и время.Message when no date is selected for starting a lesson by schedule.al_confirm_forcecomplete_toactivityДействительно ли вы желаете принудительно завершить задания у ученика '{0}' вплоть до '{1}'?Message to get confirmation from user before send data to server for force complete a learner to the activity it has been droppedls_seq_status_not_setЕще не заданThe value of the sequence's status is not setls_sequence_live_edit_btnРедактирование "на лету"Live Edit buttonabout_popup_license_lblЭто программа является free software; Вы можете распространять и/или изменять ее при условиях соответствия GNU General Public License version 2 опубликованной Free Software Foundation. {0}Label displaying the license statement in the About dialog.stream_reference_lblLAMSReference label for the application stream.gpl_license_urlwww.gnu.org/licenses/gpl.txt URL address for GPL licence.stream_urlhttp://{0}foundation.orgURL address for the application stream.al_okОКOK on the alert dialogclose_mc_tooltipСвернутьTooltip message for close button on Branching canvas.ls_tasks_txtОбязательные заданияHeading for Required Tasks (todo section of Lesson tab)ls_manage_time_lblВремя (Часы : Минуты)Time fields title - Lesson details (manage section)ls_continue_lblЗдравствуйте, {1}, вы не закончили редактирование {0}.Continue message labelal_confirm_forcecomplete_tofinishДействительно ли вы желаете принудительно завершить урок у ученика '{0}'?Message to get confirmation from user before sending data to server for force complete to the end of lessoncompetences_mapped_to_act_lblЗнания определены к {0}Label in the Competence Mappings dialog to show all the competences mapped to an activity who's name is given by the argumentls_status_cmb_removeУдалитьLesson status option - Removels_status_removed_lblУдаленныйCurrent status description if deleted (removed) lesson.al_yesДаYes on the alert dialogls_continue_action_lblНажмите {0}, чтобы продолжить. Action label displayed when a user can proceed to Live Edit.mv_search_default_txtВведите поисковый запрос или номер страницыThe text that is initially displayed in the search/index text field. Search query corresponds to all or part of a learners' name and page number corresponds to a specific page of learners. The user will enter something and then click on the 'Go' button, after which the results will be displayed.branch_mapping_dlg_conditions_dgd_lblСоотвествияHeading label for Mapping datagrid.lbl_num_sequences{0} - ПоследовательностейNumber of child sequence or Optional Sequences activity shown on canvas.al_activity_openContent_invalidИзвините! Перед тем как нажать пункт меню Открыть/Редактировать Задание, Вы должны выбрать задание.alert message when user click Open/Edit Activity Content menu item in context menu before selecting any activity on the canvasmv_search_error_msgВведите, пожалуйста, поисковый запрос или номер страницы между 1 и {0}This error message appears if the search/index field is blank when the user clicks the 'Go' button.mv_search_invalid_input_msgНомер страницы должен быть между 1 и {0}This error message appears if the number entered by the user lies outside the range of viewable pages.ls_seq_status_sched_gateЗатвор, работающий по времениA type of Gate Activity where progress depends on time (start time and/or end time)branch_mapping_dlg_branch_col_lblРазветвлениеColumn heading for showing sequence name of the mapping.finish_learner_tooltipЧтобы принудительно завершить урок у ученика, перетащите его иконку ну эту панель.Rollover message when user moves their mouse over the end gate bar in monitor tab viewal_confirm_forcecomplete_to_end_of_branching_seqВы желаете принудительно завершить эту разветвляющуюся последовательность у ученика '{0}'?This confirmation dialog appears after a learner icon has been dropped on the finish door within the branching view.mnu_help_helpПомощь по мониторингуMenu bar Help itemls_manage_status_lblИзменить статус:Status managing label - Lesson detailsls_manage_learners_btnПросмотр учениковView learners button - Lesson details (manage section)ls_manage_learnerExpp_lblРазрешить ученикам экспортировать портфолиоLabel for Enable export portfolio for Learnerls_confirm_expp_enabledЭкспорт портфолио разрешен для учениковConfirmation message on enabling export portfolio for learnersls_confirm_expp_disabledЭкспорт портфолио запрещен для учениковConfirmation message on disabling export portfolio for learnersls_duration_lblОжидаемая продолжительность:Elapsed duration of lesson - Lesson detailstd_desc_headingРасширенное управлениеTodo tab description headingopt_activity_titleОпциональное заданиеTitle for Optional Activity on canvas (monitoring)lbl_num_activities{0} - ЗаданияNumber of child activities for Complex activity shown on canvas.ls_of_textизi.e. 1 of 10 Used for showing how many learners have startedls_manage_txtУправление урокомHeading for Management section of Lesson Tabtd_goContribute_btnПерейти кGo button on contribute entry itemlearner_exportPortfolio_btnЭкспорт портфолиоLabel for Export Portfolio used both on learners tab to export learner data and monitor tab to export class dataal_sendОтправитьSend button label on the system error dialogls_status_scheduled_lblЗапланированоеLesson status option - Scheduled (Not Started)goContribute_btn_tooltipЗавершить это задание сейчасtool tip message for go button in required tasks list in lesson tabhelp_btn_tooltipПомощьtool tip message for help button in toolbarls_manage_start_btn_tooltipНачать урок незамедлительноtool tip message for the start now button in lesson tab under manage lesson section when staff has not yet started the lesson while creating a lessonmsg_bubble_check_action_lblПроверка...Label displayed when checking availability of lesson.msg_bubble_failed_action_lblНедостуно, попробуйте еще раз.Label displayed when check failed i.e. lesson is still locked.ls_locked_msg_lblИзвините, но {0} сейчас редактируется {1}.Warning message on Monitor locked screen.al_confirm_live_editРедактирование "на лету" будет открыто. Желаете продолжить?Confirm warning (dialog) message displayed when opening Live Edit.about_popup_title_lblО программе - {0}Title for the About Pop-up window.about_popup_version_lblВерсияLabel displaying the version no on the About dialog.about_popup_copyright_lbl© 2002-2008 {0} Foundation.Label displaying copyright statement in About dialog.about_popup_trademark_lbl{0} является торговой маркой {0} Foundation ( {1} ).Label displaying the trademark statement in the About dialog.branch_mapping_dlg_condition_col_lblУсловиеColumn heading for showing condition description of the mapping.al_error_forcecomplete_to_different_seqВы не можете перетащить {0} на задание из другой ветви или последовательности.This alert appears when either: The learner is in a branching sequence and the monitor tries to force complete them to an activity in a different branching sequence, or: the learner is in an optional sequence and the monitor tries to force complete them to an activity in a different optional sequenceal_error_forcecomplete_notargetПожалуйста, перетащите пользователя '{0}' на задание либо конец урока.Error Message when learner has been dropped outside of an activity or end of lesson bar at the bottom on the canvasls_win_editclass_organisation_lblОрганизацияHeading for Organisation tree on Edit Class popupmnu_file_startСтартMenu bar Startmnu_helpПомощьMenu bar Helpmnu_help_abtО программеMenu bar Aboutperm_act_lblРазрешениеLabel for permission gate activitysched_act_lblРасписаниеLabel for schedule gate activitysynch_act_lblСинхронизированныйUsed as a label for the Synch Gate Activity Typews_RootКореньRoot folder title for workspacews_dlg_cancel_buttonОтменить2ws_dlg_location_buttonРасположениеWorkspace dialogue Location btn labelws_tree_mywspМоя рабочая средаThe root level of the treews_tree_orgsОрганизацииShown in the top level of the tree in the workspacesys_error_msg_startПроизошла следующая системная ошибка:Common System error message starting linesys_errorСистемная ошибкаSystem Error elert window titlemnu_file_scheduleРасписаниеMenu bar Schedulemnu_file_exitВыходMenu bar Exitmnu_view_learnersУченики...Menu bar Learnersmnu_goПерейти кMenu bar Gomnu_go_lessonУрокMenu bar Go to Lesson Tabmnu_go_scheduleРасписаниеMenu bar Go to Schedule Tabmnu_go_learnersУченикиMenu bar Go to Learners Tabrefresh_btnОбновитьRefresh buttonhelp_btnПомощьHelp buttonrefresh_btn_tooltipОбновить пользовательскую информацию.tool tip message for the refresh buttonal_alertПредупреждениеGeneric title for Alert windowal_cancelОтменитьTo Confirm title for LFErroral_confirmПодтвердитьTo Confirm title for LFErrorapp_chk_langloadЯзыковые данные загружены неудачноmessage for unsuccessful language loadingapp_chk_themeloadДанные для темы загружены неудачноmessage for unsuccessful theme loadingapp_fail_continueПрограмма завершит работу. Пожалуйста, свяжитесь со службой поддержки.message if application cannot continue due to any errordb_datasend_confirmСпасибо за то, что послали данные на серверMessage when user sucessfully dumps data to the servermnu_editРедактироватьMenu bar Editmnu_edit_copyКопироватьMenu bar Edit &gt; Copymnu_edit_cutВырезатьMenu bar Edit &gt; Cutmnu_edit_pasteВставитьMenu bar Edit &gt; Pastemnu_fileФайлMenu bar Filemnu_file_refreshОбновитьMenu bar Refreshmnu_file_editclassРедактировать классMenu bar Edit Classbranch_mapping_dlg_group_col_lblГруппаColumn heading for showing group name of the mapping.mnu_go_sequenceПоследовательностьMenu bar Go to Sequence Tabcv_activity_helpURL_undefinedНет справки для {0}Alert message when a tool activity has no help url defined.cv_design_unsaved_live_editНесохраненные изменения будут автоматически сохранены. Желаете ли вы продолжить вставку/слияние?Confirm alert message displayed when doing an insert/merge to a modified design in Live Edit.mtab_lessonУрокMonitor Lesson details tabmtab_seqПоследовательностьMonitor Sequence tabmtab_learnersУченикиMonitor Learners tabls_status_lblСтатус:Status label - Lesson detailsls_learners_lblУченики:Learner label - Lesson detailsls_class_lblКласс:Class label - Lesson detailsls_manage_class_lblКласс:Class managing label - Lesson detailsls_manage_editclass_btnРедактировать классEdit class button - Lesson details (manage section)ls_manage_apply_btnПрименитьStatus Apply button - Lesson details (manage section)ls_manage_schedule_btnРасписаниеSchedule start button - Lesson details (manage section)ls_manage_start_btnСтартовать сейчасStart immediately button - Lesson details (manage section)ls_manage_date_lblДатаDate field title - Lesson details (manage section)ls_manage_status_cmbВыберите статус:Status combo top (index) item - Lesson details (manage section)ls_status_cmb_activateАктивироватьLesson status option - Activatels_status_cmb_disableДеактивироватьLesson status option - Disable (suspend)ls_status_cmb_enableАктивноLesson status option - Enable (make active/unsuspend)ls_status_cmb_archiveАрхивLesson status option - Archivels_status_active_lblСоздано, но еще запущенCurrent status description if active (enabled)ls_status_disabled_lblНеактивноCurrent status description if suspended (disabled)ls_status_archived_lblАрхивныйCurrent status description if archviedls_status_started_lblЗапущенныйCurrent status description if started (enabled)ls_win_editclass_titleРедактировать классEdit class window titlels_win_learners_titleПросмотр учениковView learners window titlemnu_viewВидMenu bar Viewls_win_editclass_save_btnСохранитьSave button on Edit Class popupls_win_editclass_staff_lblСотрудникиHeading for Staff list on Edit Class popupls_win_editclass_learners_lblУченикиHeading for Learners list on the Edit Class popupls_win_learners_heading_lblУченики в классе:Heading on View Learners window panel.sys_error_msg_finishЧтобы продолжить работу, перезапустите, пожалуйста, Редактор заданий. Желаете ли Вы сохранить информацию о произошедщей ошибке, чтобы помочь решить ее в будущем?Common System error message finish paragraphccm_monitor_activityОткрыть мониторинг заданияLabel for Custom Context Monitor Activityccm_monitor_view_condition_mappingsПосмотреть соотвествия Ветвей УсловиямLabel for Custom Context View Condition Mappingsccm_monitor_view_group_mappingsПосмотреть соотвествия Ветвей ГруппамLabel for Custom Context View Group Mappingstitle_sequencetab_endGateЗавершили:Title for end gate bar shown at the bottom of monitor tab where user can drop a learner to force complete to the end of lessonls_seq_status_perm_gateРазрешение учителяA type of Gate Activity where progress depends on permission from a Teacherls_seq_status_synch_gateСинхронизацияA type of Gate Activity where progress depends on all Learners in the Class or Group reaching the activityal_doubleclick_todoactivityИзвините, но ученик {0} еще не достиг {1} заданияalert message when user double click on the todo activity in the sequence under learner tabls_remove_confirm_msgВы нажали Удалить этот урок. Удаленные уроки не могут быть восстановлены. Продолжить?remove confirm msgls_remove_warning_msgВНИМАНИЕ: Урок будет удален. Желаете ли вы сохранить его?Message for the alert dialog which appears following confirmation dialog for removing a lesson.mv_search_index_view_btn_lblИндекс страницWhen the user clicks this button, they will be returning from the search view to the index view. It will once again allow them to view all the available pages, and navigate to them directly. This button is only visible when the user is in the search view.ls_seq_status_moderationАрбитражDisplayed when we want the Teacher to moderate an activitiy (for example a chat room)ls_seq_status_define_laterОпределить позжеOf an Activity: when the content for the Activity must defined in the Lesson (via Monitoring) rather than by the Authorls_seq_status_choose_groupingРаспределить по группамAllows the Teacher to add the learners to chosen groupsls_seq_status_contributionСделатьAny 'Contributions' to be made by a monitor, such as editing text for 'Define in Monitor' tasks, marking essay/reports, releasing stop points, etc.ls_seq_status_teacher_branchingОснованное на решении учителяA type of branching where the Teacher chooses which learners to add to each branchls_manage_schedule_btn_tooltipЗапланировать старт урока на заданное времяtool tip message for the schedule button in lesson tab under manage lesson section to shedule the lesson to start of selected date and timecurrent_act_tooltipДважды нажмите мышью, чтобы посмотреть текущее состояние задания у пользователяtool tip message for current activity iconcompleted_act_tooltipДважды нажмите мышью, чтобы посмотреть завершенные задания у пользователяtool tip message for completed activity iconal_validation_schtimeВведите, пожалуйста, правильное время.Alert message when user enters an invalid time for schedule startlearner_viewJournals_btnЗаписиLabel for Journal Entries button used on Learners tab to view all journal entires for the lesson.learner_viewJournals_btn_tooltipПросмотреть все записи, сделанные пользователемtool tip message for Journal Entries button used on Learner tab to view all journal entires for the lesson.class_exportPortfolio_btn_tooltipЭкспортировать и сохранить портфолио всего класса для дальнейщих обращений к немуtool tip message for exportportfolio button next to refresh button to export class portfolio and save in on user computerlearner_exportPortfolio_btn_tooltipЭкспортировать и сохранить портфолио пользователя для дальнейщих обращений к немуtool tip message for exportportfolio button for individual learner to export portfolio for the respective learner and save to it in on user computer for future referencels_manage_editclass_btn_tooltipРедактировать список пользователей и сотрудников, прикрепленных к этому уроку.tool tip message for the edit class button in lesson tab under manage lesson sectionlabel.grouping.general.instructions.branchingВы не можете добавлять или удалять группы в это групповое задание, так как оно используется в Разветвлении, а добавление или удаление новых групп повлечет за собой изменение настроек соотвествий ветвей группам. Вы можете только добавлять или удалять пользователей в уже существующие группы.Third instructions paragraph on the chosen branching screen.competence_title_lblЗаголовокCompetence Title label in Mapped Competences dialogcompetence_desc_lblОписаниеCompetence Description label in Mapped Competences dialogls_manage_presenceEnabled_lblРазрешить ученикам видеть кто находится онлайнls_manage_presenceEnabled_lblls_confirm_presence_enabledС данного момента ученики могут видеть кто находится онлайнls_confirm_presence_enabledls_confirm_presence_disabledС данного момента ученики не могут видеть кто находится онлайнls_confirm_presence_disabledls_win_learners_heading_class_lblКлассHeading on View Learners window panel (learners of the class).ls_win_learners_heading_activity_lblЗаданиеHeading on View Learners window panel (learners at activity).learner_plus_tooltip{0} учеников. Щелкните два раза для просмотра полного списка.Tooltip message displayed when mouse-over the cross icon, displayed when there is a large amount of users at an activity.view_time_graph_btnПросмотр временного графикаButton to display students progress against time in a graph in the learner tabview_time_graph_btn_tooltipПросмотреть график успеваемости выбранных студентов по времени, потраченном на каждое заданиеTooltip for View Time Graph button in learner tabview_time_chart_btnПросмотр временной диаграммыButton to display students progress against time in a chart in the learner tabview_time_chart_btn_tooltipПросмотреть диаграмму успеваемости выбранных студентов по времени, потраченном на каждое заданиеTooltip for View Time Chart button in learner tabls_manage_start_lblСтарт:Start managing label - Lesson detailsview_competences_dlgПросмотреть знанияAllows you to view all the competences within a learning designview_competences_in_ld_lblЗнания в учебных шаблонах: {0}Label for dialog that shows all the competences in a learning design with a name specified by the argumentview_act_mapped_competencesПросмотреть определенные знанияAllows you to view competences mapped to a particular activitymapped_competences_lblОпределенные знанияTitle for the dialog that shows all competences mapped to an activityal_activity_view_competence_mappings_invalidПожалуйста, убедитесь, что вы выбрали задание перед просмотром знаний.Warning that appears when no activity is selected when the user tries to view competence mappingsorder_learners_by_completion_lblУпорядочить по факту завершенияLabel for checkbox in index bar in the learners tab to order learners based how far they've progressed through the lessonlearners_group_name{0} ученикиGroup name for the class's learners group. \ No newline at end of file +
getDictionary3al_noНетstaff_group_name{0} сотрудниковls_win_editclass_cancel_btnОтменитьcheck_avail_btnПроверить доступностьls_sequence_live_edit_btn_tooltipРедактировать проект этого урокаls_learnerURL_lblСсылка для ученика:continue_btnПродолжитьmv_search_not_found_msg{0} не найдено.mv_search_go_btn_lblПерейти кls_win_learners_close_btnЗакрытьmv_search_current_page_lblСтраница {0} из {1}ls_manage_learners_btn_tooltipПоказать всех уччеников, крикрепленных к этому урокуls_manage_apply_btn_tooltipИзменить статус урока, основываясь на выборе в выпадающем менюls_seq_status_system_gateСистемный затворmnu_go_todoСписок заданийmtab_todoСписок заданийtd_desc_textИспользование Списка заданий необязательно для выполнения этой последовательности. Обратите в раздел помощь за соотвествующей информацией.<br><br> Эта функция теперь доступна в полном объеме.al_error_forcecomplete_invalidactivityВы перетащили пользователя '{0}' на его текущее или уже выполненное задание '{1}'ccm_monitor_activityhelpПомощь по мониторингу заданийal_validation_schstartВы не выбрали дату. Выберите, пожалуйста, дату и время.al_confirm_forcecomplete_toactivityДействительно ли вы желаете принудительно завершить задания у ученика '{0}' вплоть до '{1}'?ls_seq_status_not_setЕще не заданls_sequence_live_edit_btnРедактирование "на лету"about_popup_license_lblЭто программа является free software; Вы можете распространять и/или изменять ее при условиях соответствия GNU General Public License version 2 опубликованной Free Software Foundation. {0}stream_reference_lblLAMSgpl_license_urlwww.gnu.org/licenses/gpl.txt stream_urlhttp://{0}foundation.orgal_okОКclose_mc_tooltipСвернутьls_tasks_txtОбязательные заданияls_manage_time_lblВремя (Часы : Минуты)ls_continue_lblЗдравствуйте, {1}, вы не закончили редактирование {0}.al_confirm_forcecomplete_tofinishДействительно ли вы желаете принудительно завершить урок у ученика '{0}'?competences_mapped_to_act_lblЗнания определены к {0}ls_status_cmb_removeУдалитьls_status_removed_lblУдаленныйal_yesДаls_continue_action_lblНажмите {0}, чтобы продолжить. mv_search_default_txtВведите поисковый запрос или номер страницыbranch_mapping_dlg_conditions_dgd_lblСоотвествияlbl_num_sequences{0} - Последовательностейal_activity_openContent_invalidИзвините! Перед тем как нажать пункт меню Открыть/Редактировать Задание, Вы должны выбрать задание.mv_search_error_msgВведите, пожалуйста, поисковый запрос или номер страницы между 1 и {0}mv_search_invalid_input_msgНомер страницы должен быть между 1 и {0}ls_seq_status_sched_gateЗатвор, работающий по времениbranch_mapping_dlg_branch_col_lblРазветвлениеfinish_learner_tooltipЧтобы принудительно завершить урок у ученика, перетащите его иконку ну эту панель.mnu_help_helpПомощь по мониторингуls_manage_status_lblИзменить статус:ls_manage_learners_btnПросмотр учениковls_manage_learnerExpp_lblРазрешить ученикам экспортировать портфолиоls_confirm_expp_enabledЭкспорт портфолио разрешен для учениковls_confirm_expp_disabledЭкспорт портфолио запрещен для учениковls_duration_lblОжидаемая продолжительность:td_desc_headingРасширенное управлениеopt_activity_titleОпциональное заданиеlbl_num_activities{0} - Заданияls_of_textизls_manage_txtУправление урокомtd_goContribute_btnПерейти кlearner_exportPortfolio_btnЭкспорт портфолиоal_sendОтправитьls_status_scheduled_lblЗапланированоеgoContribute_btn_tooltipЗавершить это задание сейчасhelp_btn_tooltipПомощьls_manage_start_btn_tooltipНачать урок незамедлительноmsg_bubble_check_action_lblПроверка...msg_bubble_failed_action_lblНедостуно, попробуйте еще раз.ls_locked_msg_lblИзвините, но {0} сейчас редактируется {1}.al_confirm_live_editРедактирование "на лету" будет открыто. Желаете продолжить?about_popup_title_lblО программе - {0}about_popup_version_lblВерсияabout_popup_copyright_lbl© 2002-2008 {0} Foundation.about_popup_trademark_lbl{0} является торговой маркой {0} Foundation ( {1} ).branch_mapping_dlg_condition_col_lblУсловиеal_error_forcecomplete_to_different_seqВы не можете перетащить {0} на задание из другой ветви или последовательности.al_error_forcecomplete_notargetПожалуйста, перетащите пользователя '{0}' на задание либо конец урока.ls_win_editclass_organisation_lblОрганизацияmnu_file_startСтартmnu_helpПомощьmnu_help_abtО программеperm_act_lblРазрешениеsched_act_lblРасписаниеsynch_act_lblСинхронизированныйws_RootКореньws_dlg_cancel_buttonОтменитьws_dlg_location_buttonРасположениеws_tree_mywspМоя рабочая средаws_tree_orgsОрганизацииsys_error_msg_startПроизошла следующая системная ошибка:sys_errorСистемная ошибкаmnu_file_scheduleРасписаниеmnu_file_exitВыходmnu_view_learnersУченики...mnu_goПерейти кmnu_go_lessonУрокmnu_go_scheduleРасписаниеmnu_go_learnersУченикиrefresh_btnОбновитьhelp_btnПомощьrefresh_btn_tooltipОбновить пользовательскую информацию.al_alertПредупреждениеal_cancelОтменитьal_confirmПодтвердитьapp_chk_langloadЯзыковые данные загружены неудачноapp_chk_themeloadДанные для темы загружены неудачноapp_fail_continueПрограмма завершит работу. Пожалуйста, свяжитесь со службой поддержки.db_datasend_confirmСпасибо за то, что послали данные на серверmnu_editРедактироватьmnu_edit_copyКопироватьmnu_edit_cutВырезатьmnu_edit_pasteВставитьmnu_fileФайлmnu_file_refreshОбновитьmnu_file_editclassРедактировать классbranch_mapping_dlg_group_col_lblГруппаmnu_go_sequenceПоследовательностьcv_activity_helpURL_undefinedНет справки для {0}cv_design_unsaved_live_editНесохраненные изменения будут автоматически сохранены. Желаете ли вы продолжить вставку/слияние?mtab_lessonУрокmtab_seqПоследовательностьmtab_learnersУченикиls_status_lblСтатус:ls_learners_lblУченики:ls_class_lblКласс:ls_manage_class_lblКласс:ls_manage_editclass_btnРедактировать классls_manage_apply_btnПрименитьls_manage_schedule_btnРасписаниеls_manage_start_btnСтартовать сейчасls_manage_date_lblДатаls_manage_status_cmbВыберите статус:ls_status_cmb_activateАктивироватьls_status_cmb_disableДеактивироватьls_status_cmb_enableАктивноls_status_cmb_archiveАрхивls_status_active_lblСоздано, но еще запущенls_status_disabled_lblНеактивноls_status_archived_lblАрхивныйls_status_started_lblЗапущенныйls_win_editclass_titleРедактировать классls_win_learners_titleПросмотр учениковmnu_viewВидls_win_editclass_save_btnСохранитьls_win_editclass_staff_lblСотрудникиls_win_editclass_learners_lblУченикиls_win_learners_heading_lblУченики в классе:sys_error_msg_finishЧтобы продолжить работу, перезапустите, пожалуйста, Редактор заданий. Желаете ли Вы сохранить информацию о произошедщей ошибке, чтобы помочь решить ее в будущем?ccm_monitor_activityОткрыть мониторинг заданияccm_monitor_view_condition_mappingsПосмотреть соотвествия Ветвей Условиямccm_monitor_view_group_mappingsПосмотреть соотвествия Ветвей Группамtitle_sequencetab_endGateЗавершили:ls_seq_status_perm_gateРазрешение учителяls_seq_status_synch_gateСинхронизацияal_doubleclick_todoactivityИзвините, но ученик {0} еще не достиг {1} заданияls_remove_confirm_msgВы нажали Удалить этот урок. Удаленные уроки не могут быть восстановлены. Продолжить?ls_remove_warning_msgВНИМАНИЕ: Урок будет удален. Желаете ли вы сохранить его?mv_search_index_view_btn_lblИндекс страницls_seq_status_moderationАрбитражls_seq_status_define_laterОпределить позжеls_seq_status_choose_groupingРаспределить по группамls_seq_status_contributionСделатьls_seq_status_teacher_branchingОснованное на решении учителяls_manage_schedule_btn_tooltipЗапланировать старт урока на заданное времяcurrent_act_tooltipДважды нажмите мышью, чтобы посмотреть текущее состояние задания у пользователяcompleted_act_tooltipДважды нажмите мышью, чтобы посмотреть завершенные задания у пользователяal_validation_schtimeВведите, пожалуйста, правильное время.learner_viewJournals_btnЗаписиlearner_viewJournals_btn_tooltipПросмотреть все записи, сделанные пользователемlearner_exportPortfolio_btn_tooltipЭкспортировать и сохранить портфолио пользователя для дальнейщих обращений к немуls_manage_editclass_btn_tooltipРедактировать список пользователей и сотрудников, прикрепленных к этому уроку.label.grouping.general.instructions.branchingВы не можете добавлять или удалять группы в это групповое задание, так как оно используется в Разветвлении, а добавление или удаление новых групп повлечет за собой изменение настроек соотвествий ветвей группам. Вы можете только добавлять или удалять пользователей в уже существующие группы.al_activity_view_competence_mappings_invalidПожалуйста, убедитесь, что вы выбрали задание перед просмотром знаний.order_learners_by_completion_lblУпорядочить по факту завершенияlearners_group_name{0} ученикиls_manage_start_lblСтарт:view_competences_dlgПросмотреть знанияview_competences_in_ld_lblЗнания в учебных шаблонах: {0}view_act_mapped_competencesПросмотреть определенные знанияmapped_competences_lblОпределенные знанияcompetence_title_lblЗаголовокcompetence_desc_lblОписаниеls_manage_presenceEnabled_lblРазрешить ученикам видеть кто находится онлайнls_confirm_presence_enabledС данного момента ученики могут видеть кто находится онлайнls_confirm_presence_disabledС данного момента ученики не могут видеть кто находится онлайнls_win_learners_heading_class_lblКлассls_win_learners_heading_activity_lblЗаданиеlearner_plus_tooltip{0} учеников. Щелкните два раза для просмотра полного списка.view_time_graph_btnПросмотр временного графикаview_time_graph_btn_tooltipПросмотреть график успеваемости выбранных студентов по времени, потраченном на каждое заданиеview_time_chart_btnПросмотр временной диаграммыview_time_chart_btn_tooltipПросмотреть диаграмму успеваемости выбранных студентов по времени, потраченном на каждое заданиеclass_exportPortfolio_btn_tooltipЭкспортировать и сохранить портфолио всего класса для дальнейщих обращений к немуal_confirm_forcecomplete_to_end_of_branching_seqВы желаете принудительно завершить эту разветвляющуюся последовательность у ученика '{0}'?support_act_titleВспомогательное заданиеal_error_forcecomplete_support_actНевозможно принудительно завершить вспомогательные задания у ученикаmsg_no_learners_in_lessonОдин или более учеников должны быть отмеченыls_manage_presenceImEnabled_lblРазрешить обмен сообщениямиls_confirm_presence_im_enabledОбмен сообщениями включенls_confirm_presence_im_disabledОбмен сообщениями отключен \ No newline at end of file Index: lams_central/web/WEB-INF/struts/struts-config.xml =================================================================== diff -u -rf0bef7d11b4f82936c417e6e55c25fe9bfdb9a82 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_central/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision f0bef7d11b4f82936c417e6e55c25fe9bfdb9a82) +++ lams_central/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -64,6 +64,7 @@ + Index: lams_central/web/WEB-INF/web.xml =================================================================== diff -u -racc8d2acf5b6b0002e0c8129947040a779ab4077 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_central/web/WEB-INF/web.xml (.../web.xml) (revision acc8d2acf5b6b0002e0c8129947040a779ab4077) +++ lams_central/web/WEB-INF/web.xml (.../web.xml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -12,9 +12,9 @@ This refBeanContext.xml contains definition of the shared context. It is located by this entry: locatorFactorySelector - classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml + classpath:/org/lamsfoundation/lams/beanRefContext.xml - telling to look for refBeanContext.xml files in selected parts of the classpath. + telling to look for refBeanContext.xml files in selected part of the classpath. Currently LAMS has only one refBeanContext.xml with one shared context definition. Lams_central uses only beans from the shared context "context.central". That is why there is no value in contextConfigLocation. @@ -24,13 +24,20 @@ If there are local (private for web application; see tools and admin for example) bean definitions, path to application context XML file can still be added to contextConfigLocation. --> + + + contextClass + org.jboss.spring.factory.VFSXmlWebApplicationContext + contextConfigLocation locatorFactorySelector - classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml + classpath:/org/lamsfoundation/lams/beanRefContext.xml parentContextKey @@ -235,11 +242,6 @@ - PresenceChatLoggerServlet - org.lamsfoundation.lams.webservice.PresenceChatLoggerServlet - - - updateCollapsedGroup org.lamsfoundation.lams.web.UpdateCollapsedGroupServlet @@ -347,7 +349,6 @@ Instructions Download - Instructions Download download org.lamsfoundation.lams.contentrepository.client.ToolDownload @@ -361,15 +362,13 @@ AxisServlet - Apache-Axis Servlet org.apache.axis.transport.http.AxisServlet AdminServlet - Axis Admin Servlet org.apache.axis.transport.http.AdminServlet @@ -378,23 +377,20 @@ LoginRequest - LoginRequest Servlet For Integration org.lamsfoundation.lams.web.LoginRequestServlet LearningDesignRepository - LearningDesignRepository Servlet org.lamsfoundation.lams.webservice.xml.LearningDesignRepositoryServlet LessonManager - LessonManager Servlet org.lamsfoundation.lams.webservice.xml.LessonManagerServlet @@ -467,10 +463,6 @@ /fckeditor/editor/filemanager/upload/simpleuploader - PresenceChatLoggerServlet - /PresenceChatLogger - - updateCollapsedGroup /servlet/updateCollapsedGroup @@ -632,6 +624,7 @@ /admin.jsp /author.jsp /authoringConfirm.jsp + /community.jsp /editprofile.jsp /findUserLessons.jsp /findUserLessonsAutocomplete.jsp Fisheye: Tag 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 refers to a dead (removed) revision in file `lams_central/web/pedagogical_planner/defaultActivityForm.jsp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 refers to a dead (removed) revision in file `lams_central/web/pedagogical_planner/sequenceChooser.jsp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 refers to a dead (removed) revision in file `lams_central/web/pedagogical_planner/templateBase.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/gradebook/GradebookUserActivity.hbm.xml =================================================================== diff -u -r8176135403562bdf207f9477805d0e092915312a -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/gradebook/GradebookUserActivity.hbm.xml (.../GradebookUserActivity.hbm.xml) (revision 8176135403562bdf207f9477805d0e092915312a) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/gradebook/GradebookUserActivity.hbm.xml (.../GradebookUserActivity.hbm.xml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -67,6 +67,15 @@ column="feedback" length="65535" /> + + - + @@ -233,5 +233,5 @@ - + Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/validators/LessonValidator.as =================================================================== diff -u -rb791537342fb2b0446a7010efcc2db8ef94e826a -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/validators/LessonValidator.as (.../LessonValidator.as) (revision b791537342fb2b0446a7010efcc2db8ef94e826a) +++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/validators/LessonValidator.as (.../LessonValidator.as) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -2,9 +2,14 @@ { import com.visualempathy.display.controls.datetime.DateTimePicker; + import mx.collections.ArrayCollection; + import mx.containers.FormItem; + import mx.controls.ComboBox; + import mx.core.Application; import mx.validators.ValidationResult; import mx.validators.Validator; + import org.lamsfoundation.lams.views.Advanced; import org.lamsfoundation.lams.vos.UserCollection; public class LessonValidator extends Validator @@ -26,9 +31,12 @@ validateLessonName(value as String); } else if(value is UserCollection) { validateUserCollection(value as UserCollection); - } else if(value is DateTimePicker) { - validateScheduleDate(value as DateTimePicker); - } + } else if(value is FormItem) { + var children:Array = (value as FormItem).getChildren(); + if(children.length > 0) { + validateScheduleDate(children[0] as DateTimePicker, children[1] as ComboBox); + } + } // Return if there are errors. if(results.length > 0) @@ -54,9 +62,17 @@ results.push(new ValidationResult(true, "", "noLearners", this.errorMessage)); } - private function validateScheduleDate(timePicker:DateTimePicker):void { + private function validateScheduleDate(timePicker:DateTimePicker, timeZonePicker:ComboBox):void { var now:Date = new Date(); + var tzList:ArrayCollection = (timeZonePicker.dataProvider != null) ? timeZonePicker.dataProvider as ArrayCollection : new ArrayCollection(); + var usersTzIdx:uint = Advanced.getUserTimeZone(Application.application.param("tz") as String, tzList.toArray()); + var usersTzOffset:Number = timeZonePicker.dataProvider[usersTzIdx].data; + + var selectedTzOffset:Number = timeZonePicker.selectedItem.data; + var rawOffset:Number = (usersTzOffset - selectedTzOffset); + var valTime:Number = now.setTime(now.getTime() - rawOffset); + if(timePicker.enabled) { if(timePicker.selectedDate.date > now.date) return; Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Advanced.mxml =================================================================== diff -u -rc5f26ff17ed946dc8f8b33be285b2ee01178ef40 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Advanced.mxml (.../Advanced.mxml) (revision c5f26ff17ed946dc8f8b33be285b2ee01178ef40) +++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Advanced.mxml (.../Advanced.mxml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -7,6 +7,9 @@ 0) + return; + + tzList = new Array(); + + // populate TimeZone list from User (java) class passed through in the Dictionary data. + for (var i:uint = 0; i <= 30; i++) { + label = dictionary.getLabel(String('timezoneID' + i)); + value = dictionary.getValue(String('timezoneID' + i)) as String; + + tzList.push({label: label, data: value }); + } + + //tzList = [ "GMT-12", "GMT-11", "GMT-10", "GMT-9", "GMT-8", "GMT-7", + // "GMT-6", "GMT-5", "GMT-4", "Canada/Newfoundland", "GMT-3", "GMT-2", "GMT-1", "GMT", "GMT+1", "GMT+2", + // "GMT+3", "Asia/Tehran", "GMT+4", "Asia/Kabul", "GMT+5", "Asia/Calcutta", "Asia/Katmandu", "GMT+6", "GMT+7", + // "GMT+8", "GMT+9", "Australia/Adelaide", "GMT+10", "GMT+11", "GMT+12" ] + + userTimeZone = Advanced.getUserTimeZone(Application.application.param("tz") as String, tzList); + } ]]> @@ -202,7 +272,7 @@ - + @@ -235,11 +305,14 @@ + + + + + + - - - Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Learners.mxml =================================================================== diff -u -rc5f26ff17ed946dc8f8b33be285b2ee01178ef40 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Learners.mxml (.../Learners.mxml) (revision c5f26ff17ed946dc8f8b33be285b2ee01178ef40) +++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Learners.mxml (.../Learners.mxml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -208,7 +208,7 @@ - + Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Lesson.mxml =================================================================== diff -u -rbe74d3dc52dfbec1f93a16c71fd253972600d150 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Lesson.mxml (.../Lesson.mxml) (revision be74d3dc52dfbec1f93a16c71fd253972600d150) +++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Lesson.mxml (.../Lesson.mxml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -62,7 +62,7 @@ } private function createInitWorkspace():void { - organisationID = Application.application.parameters.organisationID; + organisationID = Application.application.param("organisationID"); var wizardEvent:WizardEvent = new WizardEvent(WizardEvent.INIT_WORKSPACE); this.dispatchEvent(wizardEvent); @@ -131,7 +131,7 @@ this.dispatchEvent(new NavigationEvent(NavigationEvent.ADVANCED)); // schedule validation (tab - advanced) - } else if(advanced.enableScheduling && (valEvent = advanced.scheduleValidator.validate()).results != null) { + } else if(advanced.enableScheduling.selected && (valEvent = advanced.scheduleValidator.validate()).results != null) { this.dispatchEvent(valEvent); // event not bubbled advanced.setValidationFocus(valEvent.currentTarget.listener); @@ -191,6 +191,7 @@ wizardEvent.lesson = newLesson; wizardEvent.schedule = (newLesson.enableScheduling) ? advanced.scheduleDateTimeStr : null; + wizardEvent.timeZone = advanced.scheduleDateTZ.selectedIndex if(lessonInstances.length > 1) { startLessonInstances(wizardEvent); @@ -211,6 +212,8 @@ wizardEvent.lesson = newLesson; wizardEvent.schedule = event.schedule; + wizardEvent.timeZone = advanced.scheduleDateTZ.selectedIndex + wizardEvent.last = (lessonInstances.length == count); this.dispatchEvent(wizardEvent); Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Wizard.mxml =================================================================== diff -u -r58860805a9ca7a628058c2c280fc27cf3547d3ae -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Wizard.mxml (.../Wizard.mxml) (revision 58860805a9ca7a628058c2c280fc27cf3547d3ae) +++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Wizard.mxml (.../Wizard.mxml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -30,7 +30,7 @@ public var orgName:String; private function init():void { - orgName = Application.application.parameters.orgName; + orgName = Application.application.param("orgName") as String; } private function tabChange(event:IndexChangedEvent):void { Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceCollection.as =================================================================== diff -u -rb791537342fb2b0446a7010efcc2db8ef94e826a -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceCollection.as (.../WorkspaceCollection.as) (revision b791537342fb2b0446a7010efcc2db8ef94e826a) +++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceCollection.as (.../WorkspaceCollection.as) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -16,6 +16,8 @@ public function getChildren(node:Object, model:Object=null):ICollectionView { + + return node.children; } Index: lams_flash/src/central/flex/TimeChart/src/assets/styles/main.css =================================================================== diff -u -r36d58516270e64c1a292ca45b1f7ded31d6600f7 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/central/flex/TimeChart/src/assets/styles/main.css (.../main.css) (revision 36d58516270e64c1a292ca45b1f7ded31d6600f7) +++ lams_flash/src/central/flex/TimeChart/src/assets/styles/main.css (.../main.css) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -2,6 +2,8 @@ Application { backgroundColor: #FFFFFF; themeColor: #0087e5; + backgroundGradientAlphas: 1.0, 1.0; + backgroundGradientColors: #FFFFFF, #FFFFFF; } Alert { Index: lams_flash/src/central/flex/TimeChart/src/org/lamsfoundation/lams/views/Chart.mxml =================================================================== diff -u -r559d69ef3eeb3ebfa2878c3195d5652bb67a26d4 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/central/flex/TimeChart/src/org/lamsfoundation/lams/views/Chart.mxml (.../Chart.mxml) (revision 559d69ef3eeb3ebfa2878c3195d5652bb67a26d4) +++ lams_flash/src/central/flex/TimeChart/src/org/lamsfoundation/lams/views/Chart.mxml (.../Chart.mxml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -8,8 +8,9 @@ + + + Index: lams_flash/src/central/flex/TimeChart/src/org/lamsfoundation/lams/views/Chart_functions.as =================================================================== diff -u -rbf27fc1b52ff31029166ff63dac3911e6fdfce00 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/central/flex/TimeChart/src/org/lamsfoundation/lams/views/Chart_functions.as (.../Chart_functions.as) (revision bf27fc1b52ff31029166ff63dac3911e6fdfce00) +++ lams_flash/src/central/flex/TimeChart/src/org/lamsfoundation/lams/views/Chart_functions.as (.../Chart_functions.as) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -2,6 +2,8 @@ import flash.events.Event; import mx.collections.ArrayCollection; +import mx.controls.Alert; +import mx.core.Application; import org.lamsfoundation.lams.vos.LearnerProgress; @@ -21,25 +23,42 @@ } public function loadSelectedLearner():void { - _learnerProgressList = new ArrayCollection(); + var hasCompletedActs:Boolean = false; - if(selectedLearnerProgress == null) { - selectLearner(learnerProgressData.getItemAt(0)); - return; - } + if(learnerProgressData.length > 0) { - chart_lbl.htmlText = "" + dictionary.getLabel("label.learner") + " :: " + selectedLearnerProgress.learner_fname + " " + selectedLearnerProgress.learner_lname + ""; - - for each(var cp:CompletedActivity in selectedLearnerProgress.completedActivities) { - _learnerProgressList.addItem(cp.dataObject); - - //trace('adding new c: ' + cp.dataObject.Completed); - //trace('adding new t: ' + cp.dataObject.Title); - //trace('adding new d: ' + cp.dataObject.Duration); + _learnerProgressList = new ArrayCollection(); + + if(selectedLearnerProgress == null) { + selectLearner(learnerProgressData.getItemAt(0)); + return; + } + + chart_lbl.htmlText = "" + dictionary.getLabel("label.learner") + " :: " + selectedLearnerProgress.learner_fname + " " + selectedLearnerProgress.learner_lname + ""; + + if(selectedLearnerProgress.completedActivities.length > 0) + hasCompletedActs = true; + + for each(var cp:CompletedActivity in selectedLearnerProgress.completedActivities) { + _learnerProgressList.addItem(cp.dataObject); + + //trace('adding new c: ' + cp.dataObject.Completed); + //trace('adding new t: ' + cp.dataObject.Title); + //trace('adding new d: ' + cp.dataObject.Duration); + } + } - + + // show error if no data + if(!hasCompletedActs) + mx.controls.Alert.show(dictionary.getLabel("alert.no.learner.data"), dictionary.getLabel("sys.error"), Alert.OK, null, disableApp); + } + private function disableApp(event:Event):void { + Application.application.enabled = false; + } + public function selectActivity(item:Object):void { } Index: lams_flash/src/central/flex/VideoRecorder/src/VideoRecorder.mxml =================================================================== diff -u -ra62085da6f361d202e9664749f1e7c7066679462 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/central/flex/VideoRecorder/src/VideoRecorder.mxml (.../VideoRecorder.mxml) (revision a62085da6f361d202e9664749f1e7c7066679462) +++ lams_flash/src/central/flex/VideoRecorder/src/VideoRecorder.mxml (.../VideoRecorder.mxml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -8,6 +8,7 @@ preinitialize="onPreinitialize(event)"> - + Index: lams_flash/src/common/flex/lib/Degrafa_Beta3.1_Flex3.swc =================================================================== diff -u -r210b6abb78a3b1dc2ca7d9b9538f4ec1c73b8975 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 Binary files differ Index: lams_flash/src/common/flex/lib/Mate_06_2.swc =================================================================== diff -u -rc18e988af13e3ade386f0c2b76e84e5ea44dbd83 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 Binary files differ Index: lams_flash/src/common/flex/lib/mate.license.txt =================================================================== diff -u --- lams_flash/src/common/flex/lib/mate.license.txt (revision 0) +++ lams_flash/src/common/flex/lib/mate.license.txt (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -0,0 +1,55 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS Fisheye: Tag 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 refers to a dead (removed) revision in file `lams_flash/src/common/flex/lib/mate_06_2.license.txt'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_flash/src/common/flex/org/lamsfoundation/lams/common/dictionary/XMLDictionary.as =================================================================== diff -u -r20caa3eb4561d03835bc6a8e0380b02467ebbd73 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/common/flex/org/lamsfoundation/lams/common/dictionary/XMLDictionary.as (.../XMLDictionary.as) (revision 20caa3eb4561d03835bc6a8e0380b02467ebbd73) +++ lams_flash/src/common/flex/org/lamsfoundation/lams/common/dictionary/XMLDictionary.as (.../XMLDictionary.as) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -15,6 +15,15 @@ eventDispatcher.dispatchEvent(new XMLDictionaryEvent(XMLDictionaryEvent.COMPLETE)); } + public function getValue(s:String):String { + if(!isEmpty()) { + var value:String = dictionaryXML.language.entry.(@key==s).data; + return value; + } + + return null; + } + public function getLabel(s:String):String{ if(!isEmpty()){ return dictionaryXML.language.entry.(@key==s).name; Index: lams_flash/src/common/flex/org/lamsfoundation/lams/common/dictionary/XMLDictionaryRegistry.as =================================================================== diff -u -r20caa3eb4561d03835bc6a8e0380b02467ebbd73 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/common/flex/org/lamsfoundation/lams/common/dictionary/XMLDictionaryRegistry.as (.../XMLDictionaryRegistry.as) (revision 20caa3eb4561d03835bc6a8e0380b02467ebbd73) +++ lams_flash/src/common/flex/org/lamsfoundation/lams/common/dictionary/XMLDictionaryRegistry.as (.../XMLDictionaryRegistry.as) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -25,8 +25,15 @@ this.dispatchEvent(new Event("updatedLabelsReplace")); this.dispatchEvent(new Event("updatedLabelsConcatentate")); this.dispatchEvent(new Event("updatedLabelsInsert")); + + this.dispatchEvent(new Event("updatedValues")); } + [Bindable (event="updatedValues")] + public function getValue(key:String):Object { + return _xmlDictionary.getValue(key); + } + [Bindable (event="updatedLabels")] public function getLabel(key:String):String { return _xmlDictionary.getLabel(key); @@ -52,6 +59,8 @@ this.dispatchEvent(new Event("updatedLabelsReplace")); this.dispatchEvent(new Event("updatedLabelsConcatentate")); this.dispatchEvent(new Event("updatedLabelsInsert")); + + this.dispatchEvent(new Event("updatedValues")); } } } \ No newline at end of file Index: lams_flash/src/common/flex/org/lamsfoundation/lams/common/ui/components/VideoDisplay.mxml =================================================================== diff -u -rf0bef7d11b4f82936c417e6e55c25fe9bfdb9a82 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/common/flex/org/lamsfoundation/lams/common/ui/components/VideoDisplay.mxml (.../VideoDisplay.mxml) (revision f0bef7d11b4f82936c417e6e55c25fe9bfdb9a82) +++ lams_flash/src/common/flex/org/lamsfoundation/lams/common/ui/components/VideoDisplay.mxml (.../VideoDisplay.mxml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -464,6 +464,11 @@ publishHelper(takeScreenshot); } else{ + if(_mic && !_cam){ + //change the view stack + selectedChild = audioView; + } + // just start publishing publishHelper(takeScreenshot); } Index: lams_flash/src/common/flex/pl/cfml/coldfusion/as3/utils/WDDX.as =================================================================== diff -u -r275c1e79dec8acc5121f05540f7453fa216ada61 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_flash/src/common/flex/pl/cfml/coldfusion/as3/utils/WDDX.as (.../WDDX.as) (revision 275c1e79dec8acc5121f05540f7453fa216ada61) +++ lams_flash/src/common/flex/pl/cfml/coldfusion/as3/utils/WDDX.as (.../WDDX.as) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -22,6 +22,12 @@ public class WDDX { + private static var etRev:Array = new Array(); + private static var at:Array = new Array(); + private static var atRev:Array = new Array(); + private static var et:Array = new Array(); + + /** * Compiles AS3 objects to WDDX. * Type are mapped against these rules: @@ -172,6 +178,8 @@ private static function _fromWDDX(data:XML):Object { + setupEncoding(); + var o:Object = {}; switch (data.name().toString().toLowerCase()) { @@ -202,7 +210,7 @@ private static function _fromString(data:XML):String { - return data.text(); + return decodeStr(data.text()); } private static function _fromBoolean(data:XML):Boolean { @@ -227,5 +235,94 @@ } return o; } + + private static function setupEncoding():void { + for (var i:int = 0; i<256; ++i) { + if (i<32 && i != 9 && i != 10 && i != 13) { + var hex:String = i.toString(16); + if (hex.length == 1) { + hex = "0"+hex; + } + et[i] = ""; + at[i] = ""; + } else if (i<128) { + et[i] = String.fromCharCode(i); + at[i] = String.fromCharCode(i); + } else { + et[i] = "&#x"+i.toString(16)+";"; + etRev["&#x"+i.toString(16)+";"] = String.fromCharCode(i); + at[i] = "&#x"+i.toString(16)+";"; + atRev["&#x"+i.toString(16)+";"] = String.fromCharCode(i); + } + } + + et[new String("<").charCodeAt(0)] = "<"; + et[new String(">").charCodeAt(0)] = ">"; + et[new String("&").charCodeAt(0)] = "&"; + + etRev["<"] = "<"; + etRev[">"] = ">"; + etRev["&"] = "&"; + + at[new String("<").charCodeAt(0)] = "<"; + at[new String(">").charCodeAt(0)] = ">"; + at[new String("&").charCodeAt(0)] = "&"; + at[new String("'").charCodeAt(0)] = "'"; + at[new String("\"").charCodeAt(0)] = """; + + atRev["<"] = "<"; + atRev[">"] = ">"; + atRev["&"] = "&"; + atRev["'"] = "'"; + atRev["""] = "\""; + + } + + private static function encodeStr(str:String):String { + var tempString:String = ""; + var max:Number = str.length; + + for (var i:Number=0; i<=max; ++i) { + var char:String = str.substr(i, 1); + var ord:Number = str.substr(i, 1).charCodeAt(0); + if(ord < 256) { + if(char == et[13]){ + tempString += "%0D%0A"; + } else { + tempString += (et[str.substr(i+1, 1).charCodeAt(0)]); + } + } else { + tempString += "&#" + ord.toString() + ";"; + } + } + + return tempString; + } + + private static function decodeStr(str:String):String { + var max:Number = str.length; + var i:Number = 0; + var char:String; + var output:String = ""; + + while (i<=max) { + char = str.substr(i, 1).charAt(0) + if (char == "&") { + var buff:String = char; + do { + ++i; + char = str.substr(i, 1).charAt(0) + buff += char; + } while (char != ";"); + output += etRev[buff]; + } else { + output += char; + } + + ++i; + } + + return output; + } } } \ No newline at end of file Index: lams_gradebook/conf/language/lams/ApplicationResources_es_ES.properties =================================================================== diff -u --- lams_gradebook/conf/language/lams/ApplicationResources_es_ES.properties (revision 0) +++ lams_gradebook/conf/language/lams/ApplicationResources_es_ES.properties (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -0,0 +1,77 @@ +appName = gradebook +#language code: es +#locale code: ES + + # CVS ID: $Id$ Exported from the LAMS Community by Ernie Ghiglione on Thu Jun 18 01:55:57 CST 2009 + +#=================== labels for Gradebook =================# + +gradebook.columntitle.competences =Competencias +heading.general.error =Error +error.authorisation =No esta autorizado para realizar esta tarea +error.general.1 =Ha ocurrido un error en el sistema. +error.general.2 =Ha ocurrido un error. Por favor cierre esta ventana y vuelva a intentar. +error.general.3 =Si el problema persiste, pongase en contacto con el administrador del sistema. +gradebook.gridtitle.usergrid =Vista por Estudiantes +gradebook.gridtitle.activitygrid =Vista por Actividades +gradebook.columntitle.name =Nombre +gradebook.columntitle.progress =Progreso +gradebook.columntitle.timeTaken =Tiempo +gradebook.columntitle.lessonFeedback =Comentarios +gradebook.columntitle.lessonName =Nombre +gradebook.columntitle.subGroup =Curso/Clase +gradebook.columntitle.startDate =Fecha Comienzo +gradebook.columntitle.completeDate =Fecha Completado +gradebook.columntitle.mark =Nota +gradebook.columntitle.activity =Actividad +gradebook.columntitle.activityFeedback =Comentarios sobre Actividad +gradebook.columntitle.averageTimeTaken =Promedio Tiempo +gradebook.columntitle.averageMark =Promedio Notas +gradebook.columntitle.learnerName =Estudiante +gradebook.function.window.showColumns =Esconder/Mostrar Columnas +gradebook.function.error.enterNumber =Entar un n\u00famero +gradebook.function.search.title =Buscar en Table +gradebook.function.search.contains =contiene +gradebook.function.search.endsWith =termina con +gradebook.function.search.startsWith =empieza con +gradebook.function.search.equalTo =es igual a +gradebook.function.search.notEqualTo =no es igual a +label.ok =OK +label.cancel =Cancelar +label.find =Buscar +label.reset =Borrar +gradebook.title.window.lessonMonitor =Calificaciones de la lecci\u00f3n +gradebook.title.window.courseMonitor =Calificaciones +gradebook.title.window.myGradebook =Mis Calificaciones +gradebook.title.courseMonitor =Calificaciones de la clase: {0} +gradebook.title.lessonGradebook =Calificaciones de la lecci\u00f3n: {0} +gradebook.title.myGradebook =Calificaciones de {0} +gradebook.columntitle.outputs =Resultados de la actividad +gradebook.error.loaderror =Ha ocurrido un error al tratar de cargar las calificaciones. Si este problema persiste, contacte a su administrador de sistema. +gradebook.monitor.releasemarks.1 =Mostrar calificaciones a estudiantes +gradebook.monitor.releasemarks.3 =calificaciones por esa lecci\u00f3n +gradebook.monitor.releasemarks.check =\u00bfEst\u00e1 seguro que quiere mostrar las calificaciones a los alumnos? +gradebook.monitor.releasemarks.check2 =\u00bfEsta seguro que quiere esconder las calificaciones de los alumnos? +error.releasemarks.fail =Ha ocurrido un error. Por favor contacte a su administrador de sistema. +error.markhigher =La nota debe ser menor a la calificaci\u00f3n m\u00e1xima +error.cellsave =Ha ocurrido un error al tratar de guardar el contenido de la celda. Por favor contacte a su administrador de sistema +label.error =Error +gradebook.monitor.releasemarks.2 =Esconder +gradebook.export.excel.1 =Exportar +gradebook.export.excel.2 =calificaciones a una hoja de c\u00e1lculo +gradebook.export.activity =Actividad +gradebook.export.activities =Actividades +gradebook.export.outputs =Resultados +gradebook.export.average.lesson.mark =Nota promedio de la lecci\u00f3n: +gradebook.export.average.lesson.time.taken =Tiempo de finalizaci\u00f3n promedio de la lecci\u00f3n: +gradebook.export.total.marks.for.lesson =Total de calificaciones +gradebook.export.total.mark =Calificaci\u00f3n total +gradebook.export.dateheader =Fecha de exportaci\u00f3n: +gradebook.export.lesson.summary =Resumen de lecci\u00f3n +gradebook.export.learner.view =Vista de estudiantes +gradebook.export.time.taken.seconds =Tiempo de realizaci\u00f3n (en segundos) +gradebook.export.average.time.taken.seconds =Promedio de tiempo (en segundos) +gradebook.export.user =Usuario + + +#======= End labels: Exported 66 labels for es ES ===== Index: lams_gradebook/conf/language/lams/ApplicationResources_ru_RU.properties =================================================================== diff -u --- lams_gradebook/conf/language/lams/ApplicationResources_ru_RU.properties (revision 0) +++ lams_gradebook/conf/language/lams/ApplicationResources_ru_RU.properties (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -0,0 +1,62 @@ +appName = gradebook +#language code: ru +#locale code: RU + + # CVS ID: $Id$ Exported from the LAMS Community by Ernie Ghiglione on Thu May 21 06:33:26 CST 2009 + +#=================== labels for Gradebook =================# + +gradebook.columntitle.name =\u0418\u043c\u044f +gradebook.gridtitle.activitygrid =\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0437\u0430\u0434\u0430\u043d\u0438\u044f +gradebook.columntitle.progress =\u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 +gradebook.columntitle.subGroup =\u041f\u043e\u0434\u0433\u0440\u0443\u043f\u043f\u0430 +heading.general.error =\u041e\u0448\u0438\u0431\u043a\u0430 +gradebook.columntitle.mark =\u041e\u0446\u0435\u043d\u043a\u0430 +gradebook.columntitle.activity =\u0417\u0430\u0434\u0430\u043d\u0438\u0435 +gradebook.columntitle.averageTimeTaken =\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f +gradebook.columntitle.averageMark =\u0421\u0440\u0435\u0434\u043d\u044f\u044f \u043e\u0446\u0435\u043d\u043a\u0430 +gradebook.columntitle.learnerName =\u0418\u043c\u044f \u0443\u0447\u0435\u043d\u0438\u043a\u0430 +gradebook.function.window.showColumns =\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c/\u0441\u043a\u0440\u044b\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043a\u0438 +gradebook.function.search.contains =\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 +gradebook.function.search.endsWith =\u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f +gradebook.function.search.startsWith =\u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 +gradebook.function.search.equalTo =\u0440\u043e\u0432\u043d\u044f\u0435\u0442\u0441\u044f +gradebook.function.search.notEqualTo =\u043d\u0435 \u0440\u043e\u0432\u043d\u044f\u0435\u0442\u0441\u044f +label.ok =\u041e\u041a +label.cancel =\u041e\u0442\u043c\u0435\u043d\u0430 +label.find =\u041f\u043e\u0438\u0441\u043a +label.reset =\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c +gradebook.monitor.releasemarks.1 =\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c +gradebook.monitor.releasemarks.3 =\u043e\u0446\u0435\u043d\u043a\u0438 \u0437\u0430 \u0443\u0440\u043e\u043a. +label.error =\u041e\u0448\u0438\u0431\u043a\u0430 +gradebook.monitor.releasemarks.2 =\u0421\u043a\u0440\u044b\u0442\u044c +error.authorisation =\u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. +error.general.1 =\u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. +error.general.2 =\u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u0417\u0430\u043a\u0440\u043e\u0439\u0442\u0435 \u044d\u0442\u043e \u043e\u043a\u043d\u043e \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437. +error.general.3 =\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043d\u0430 \u0444\u043e\u0440\u0443\u043c \u0442\u0435\u0445\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 LAMS Community. +gradebook.title.window.lessonMonitor =\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0416\u0443\u0440\u043d\u0430\u043b\u0430 \u0443\u0440\u043e\u043a\u0430 +gradebook.title.window.courseMonitor =\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0416\u0443\u0440\u043d\u0430\u043b\u0430 \u043a\u0443\u0440\u0441\u0430 +gradebook.title.window.myGradebook =\u041c\u043e\u0439 \u0436\u0443\u0440\u043d\u0430\u043b +gradebook.title.courseMonitor =\u0416\u0443\u0440\u043d\u0430\u043b \u043a\u0443\u0440\u0441\u0430 \u0434\u043b\u044f {0} +gradebook.title.lessonGradebook =\u0416\u0443\u0440\u043d\u0430\u043b \u0443\u0440\u043e\u043a\u0430 \u0434\u043b\u044f {0} +gradebook.title.myGradebook =\u0416\u0443\u0440\u043d\u0430\u043b \u0434\u043b\u044f {0} +gradebook.gridtitle.usergrid =\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0443\u0440\u043e\u043a\u0430 \u0443\u0447\u0435\u043d\u0438\u043a\u0430 +gradebook.columntitle.timeTaken =\u0417\u0430\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f +gradebook.columntitle.lessonFeedback =\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u043f\u043e \u0443\u0440\u043e\u043a\u0443 +gradebook.columntitle.lessonName =\u0418\u043c\u044f \u0443\u0440\u043e\u043a\u0430 +gradebook.columntitle.startDate =\u0414\u0430\u0442\u0430 \u043d\u0430\u0447\u0430\u043b\u0430 +gradebook.columntitle.completeDate =\u0414\u0430\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f +gradebook.columntitle.activityFeedback =\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044e +gradebook.columntitle.outputs =\u0412\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 +gradebook.function.error.enterNumber =\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 +gradebook.function.search.title =\u041f\u043e\u0438\u0441\u043a \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 +gradebook.error.loaderror =\u041f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u0421\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c. +gradebook.monitor.releasemarks.check =\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043e\u0446\u0435\u043d\u043a\u0438 \u0434\u043b\u044f \u0443\u0447\u0435\u043d\u0438\u043a\u043e\u0432 \u044d\u0442\u043e\u0433\u043e \u0443\u0440\u043e\u043a\u0430? +gradebook.monitor.releasemarks.check2 =\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043a\u0440\u044b\u0442\u044c \u043e\u0446\u0435\u043d\u043a\u0438 \u043e\u0442 \u0443\u0447\u0435\u043d\u0438\u043a\u043e\u0432 \u0432 \u044d\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435? +error.releasemarks.fail =\u041f\u0440\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0446\u0435\u043d\u043e\u043a \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438. \u0421\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c. +error.markhigher =\u041e\u0446\u0435\u043d\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0438\u0436\u0435, \u0447\u0435\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f. +error.cellsave =\u0412\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0432 \u043a\u043b\u0435\u0442\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0421\u0432\u044f\u0436\u0438\u0442\u0435\u0441\u044c \u0441 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c. +gradebook.columntitle.competences =\u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f + + +#======= End labels: Exported 51 labels for ru RU ===== Index: lams_gradebook/web/WEB-INF/web.xml =================================================================== diff -u -rdaf00a52f630e4b979227c958b7d1e70e0a9b466 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_gradebook/web/WEB-INF/web.xml (.../web.xml) (revision daf00a52f630e4b979227c958b7d1e70e0a9b466) +++ lams_gradebook/web/WEB-INF/web.xml (.../web.xml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -9,9 +9,18 @@ javax.servlet.jsp.jstl.fmt.localizationContext org.lamsfoundation.lams.gradebook.ApplicationResources + + contextClass + org.jboss.spring.factory.VFSXmlWebApplicationContext + + + contextConfigLocation + classpath:/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml + + locatorFactorySelector - classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml + classpath:/org/lamsfoundation/lams/beanRefContext.xml parentContextKey Index: lams_learning/conf/xdoclet/web-settings.xml =================================================================== diff -u -r61e7bbf20d65e2ecb5e50f3154e52264003defa1 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_learning/conf/xdoclet/web-settings.xml (.../web-settings.xml) (revision 61e7bbf20d65e2ecb5e50f3154e52264003defa1) +++ lams_learning/conf/xdoclet/web-settings.xml (.../web-settings.xml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -8,6 +8,10 @@ learningMessageSource + + contextClass + org.jboss.spring.factory.VFSXmlWebApplicationContext + contextConfigLocation Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java =================================================================== diff -u -ra53a5e52a7bd24bf223708957166c92c8c32dd31 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision a53a5e52a7bd24bf223708957166c92c8c32dd31) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -21,12 +21,11 @@ * **************************************************************** */ -/* $$Id$$ */ +/* $$Id$$ */ package org.lamsfoundation.lams.learning.web.action; import java.io.IOException; import java.io.PrintWriter; -import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -38,7 +37,6 @@ import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.learning.service.ICoreLearnerService; import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; -import org.lamsfoundation.lams.learning.web.bean.ActivityURL; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.learningdesign.Activity; @@ -57,624 +55,646 @@ import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; - -/** +/** * - *

The action servlet that interacts with learner to start a lams learner - * module, join a user to the lesson and allows a user to exit a lesson.

+ *

+ * The action servlet that interacts with learner to start a lams learner module, join a user to the lesson and allows a + * user to exit a lesson. + *

* - *

It is also responsible for the interaction between lams server and - * flash. Flash will call method implemented in this class to get progress - * data or trigger a lams server calculation here

+ *

+ * It is also responsible for the interaction between lams server and flash. Flash will call method implemented in this + * class to get progress data or trigger a lams server calculation here + *

* - * Note:It needs to extend the LamsDispatchAction which has - * been customized to accomodate struts features to solve duplicate - * submission problem. + * Note:It needs to extend the LamsDispatchAction which has been customized to accomodate struts + * features to solve duplicate submission problem. * * @author Jacky Fang * @since 3/03/2005 * @version 1.1 * * ----------------XDoclet Tags-------------------- * - * @struts:action path="/learner" - * parameter="method" - * validate="false" - * @struts:action-forward name="displayActivity" path="/DisplayActivity.do" - * @struts:action-forward name="displayProgress" path="/progress.jsp" - * ----------------XDoclet Tags-------------------- + * @struts:action path="/learner" parameter="method" validate="false" + * @struts:action-forward name="displayActivity" path="/DisplayActivity.do" + * @struts:action-forward name="displayProgress" path="/progress.jsp" ----------------XDoclet Tags-------------------- * */ -public class LearnerAction extends LamsDispatchAction -{ - //--------------------------------------------------------------------- +public class LearnerAction extends LamsDispatchAction { + // --------------------------------------------------------------------- // Instance variables - //--------------------------------------------------------------------- - private static Logger log = Logger.getLogger(LearnerAction.class); - - //--------------------------------------------------------------------- + // --------------------------------------------------------------------- + private static Logger log = Logger.getLogger(LearnerAction.class); + + // --------------------------------------------------------------------- // Class level constants - Struts forward - //--------------------------------------------------------------------- - - private static IAuditService auditService; - - private ActionForward redirectToURL(ActionMapping mapping, HttpServletResponse response, String url) throws IOException, ServletException { - if ( url != null ) { - String fullURL = WebUtil.convertToFullURL(url); - response.sendRedirect(response.encodeRedirectURL(fullURL)); - } else { - throw new ServletException("Tried to redirect to url but url is null"); - } - return null; - } + // --------------------------------------------------------------------- - /** Handle an exception - either thrown by the service or by the web layer. Allows the exception - * to be logged properly and ensure that an actual message goes back to Flash. - * - * @param e - * @param methodKey - * @param learnerService - * @return - */ - protected FlashMessage handleException(Exception e, String methodKey, ICoreLearnerService learnerService) { - log.error("Exception thrown "+methodKey,e); - String[] msg = new String[1]; - msg[0] = e.getMessage(); - - getAuditService().log(LearnerAction.class.getName()+":"+methodKey, e.toString()); - - return new FlashMessage(methodKey, - learnerService.getMessageService().getMessage("error.system.learner", msg), - FlashMessage.CRITICAL_ERROR); + private static IAuditService auditService; + + private ActionForward redirectToURL(ActionMapping mapping, HttpServletResponse response, String url) + throws IOException, ServletException { + if (url != null) { + String fullURL = WebUtil.convertToFullURL(url); + response.sendRedirect(response.encodeRedirectURL(fullURL)); + } else { + throw new ServletException("Tried to redirect to url but url is null"); } + return null; + } /** - *

The structs dispatch action that joins a learner into a lesson. This - * call is used for a user to start a lesson.

+ * Handle an exception - either thrown by the service or by the web layer. Allows the exception to be logged + * properly and ensure that an actual message goes back to Flash. * - * @param mapping An ActionMapping class that will be used by the Action class to tell - * the ActionServlet where to send the end-user. + * @param e + * @param methodKey + * @param learnerService + * @return + */ + protected FlashMessage handleException(Exception e, String methodKey, ICoreLearnerService learnerService) { + LearnerAction.log.error("Exception thrown " + methodKey, e); + String[] msg = new String[1]; + msg[0] = e.getMessage(); + + getAuditService().log(LearnerAction.class.getName() + ":" + methodKey, e.toString()); + + return new FlashMessage(methodKey, learnerService.getMessageService().getMessage("error.system.learner", msg), + FlashMessage.CRITICAL_ERROR); + } + + /** + *

+ * The structs dispatch action that joins a learner into a lesson. This call is used for a user to start a lesson. + *

* - * @param form The ActionForm class that will contain any data submitted - * by the end-user via a form. - * @param request A standard Servlet HttpServletRequest class. - * @param response A standard Servlet HttpServletResponse class. - * @return An ActionForward class that will be returned to the ActionServlet indicating where - * the user is to go next. + * @param mapping + * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to + * send the end-user. * + * @param form + * The ActionForm class that will contain any data submitted by the end-user via a form. + * @param request + * A standard Servlet HttpServletRequest class. + * @param response + * A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go + * next. + * * @throws IOException * @throws ServletException */ - public ActionForward joinLesson(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException - { - //initialize service object - ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - Integer learner = null; - try { - - //get user and lesson based on request. - learner = LearningWebUtil.getUserId(); - long lessonID = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); - - - if(log.isDebugEnabled()) - log.debug("The learner ["+learner+"] is joining the lesson ["+lessonID+"]"); - - //join user to the lesson on the server - LearnerProgress learnerProgress = learnerService.joinLesson(learner,lessonID); - - if(log.isDebugEnabled()) - log.debug("The learner ["+learner+"] joined lesson. The" - +"progress data is:"+learnerProgress.toString()); - - LearningWebUtil.putLearnerProgressInRequest(request,learnerProgress); - - ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); - String url = "learning/" + activityMapping.getDisplayActivityAction(lessonID); - - redirectToURL(mapping, response, url); - - } catch (Exception e ) { - log.error("An error occurred while learner "+learner+" attempting to join the lesson.",e); - return mapping.findForward(ActivityMapping.ERROR); - } - - return null; + public ActionForward joinLesson(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + // initialize service object + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + Integer learner = null; + try { + + // get user and lesson based on request. + learner = LearningWebUtil.getUserId(); + long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("The learner [" + learner + "] is joining the lesson [" + lessonID + "]"); + } + + // join user to the lesson on the server + LearnerProgress learnerProgress = learnerService.joinLesson(learner, lessonID); + + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("The learner [" + learner + "] joined lesson. The" + "progress data is:" + + learnerProgress.toString()); + } + + LearningWebUtil.putLearnerProgressInRequest(request, learnerProgress); + + ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet() + .getServletContext()); + String url = "learning/" + activityMapping.getDisplayActivityAction(lessonID); + + redirectToURL(mapping, response, url); + + } catch (Exception e) { + LearnerAction.log + .error("An error occurred while learner " + learner + " attempting to join the lesson.", e); + return mapping.findForward(ActivityMapping.ERROR); + } + + return null; } - + /** - *

The structs dispatch action that joins a learner into a lesson. This - * call is used for a user to resume a lesson.

+ *

+ * The structs dispatch action that joins a learner into a lesson. This call is used for a user to resume a lesson. + *

* - * @param mapping An ActionMapping class that will be used by the Action class to tell - * the ActionServlet where to send the end-user. + * @param mapping + * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to + * send the end-user. * - * @param form The ActionForm class that will contain any data submitted - * by the end-user via a form. - * @param request A standard Servlet HttpServletRequest class. - * @param response A standard Servlet HttpServletResponse class. - * @return An ActionForward class that will be returned to the ActionServlet indicating where - * the user is to go next. + * @param form + * The ActionForm class that will contain any data submitted by the end-user via a form. + * @param request + * A standard Servlet HttpServletRequest class. + * @param response + * A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go + * next. * * @throws IOException * @throws ServletException */ - public ActionForward resumeLesson(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException - { - //initialize service object - ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + public ActionForward resumeLesson(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + // initialize service object + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - FlashMessage message = null; - try { - - //get user and lesson based on request. - Integer learner = LearningWebUtil.getUserId(); - long lessonID = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); - - - if(log.isDebugEnabled()) - log.debug("The learner ["+learner+"] is joining the lesson ["+lessonID+"]"); - - //join user to the lesson on the server - LearnerProgress learnerProgress = learnerService.joinLesson(learner,lessonID); - - if(log.isDebugEnabled()) - log.debug("The learner ["+learner+"] joined lesson. The" - +"porgress data is:"+learnerProgress.toString()); - - LearningWebUtil.putLearnerProgressInRequest(request,learnerProgress); - - //serialize a acknowledgement flash message with the path of display next - //activity - - ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); - message = new FlashMessage("joinLesson", activityMapping.getDisplayActivityAction(null)); - - } catch (Exception e ) { - message = handleException(e, "joinLesson", learnerService); - } - - String wddxPacket = WDDXProcessor.serialize(message); - if(log.isDebugEnabled()) - log.debug("Sending Lesson joined acknowledge message to flash:"+wddxPacket); - - //we hand over the control to flash. - response.getWriter().print(wddxPacket); - return null; + FlashMessage message = null; + try { + + // get user and lesson based on request. + Integer learner = LearningWebUtil.getUserId(); + long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("The learner [" + learner + "] is joining the lesson [" + lessonID + "]"); + } + + // join user to the lesson on the server + LearnerProgress learnerProgress = learnerService.joinLesson(learner, lessonID); + + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("The learner [" + learner + "] joined lesson. The" + "porgress data is:" + + learnerProgress.toString()); + } + + LearningWebUtil.putLearnerProgressInRequest(request, learnerProgress); + + // serialize a acknowledgement flash message with the path of display next + // activity + + ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet() + .getServletContext()); + message = new FlashMessage("joinLesson", activityMapping.getDisplayActivityAction(null)); + + } catch (Exception e) { + message = handleException(e, "joinLesson", learnerService); + } + + String wddxPacket = WDDXProcessor.serialize(message); + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Sending Lesson joined acknowledge message to flash:" + wddxPacket); + } + + // we hand over the control to flash. + response.getWriter().print(wddxPacket); + return null; } /** - *

Exit the current lesson that is running in the leaner window. It - * expects lesson id passed as parameter from flash component. + *

+ * Exit the current lesson that is running in the leaner window. It expects lesson id passed as parameter from flash + * component. * - * @param mapping An ActionMapping class that will be used by the Action class to tell - * the ActionServlet where to send the end-user. + * @param mapping + * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to + * send the end-user. * - * @param form The ActionForm class that will contain any data submitted - * by the end-user via a form. - * @param request A standard Servlet HttpServletRequest class. - * @param response A standard Servlet HttpServletResponse class. - * @return An ActionForward class that will be returned to the ActionServlet indicating where - * the user is to go next. + * @param form + * The ActionForm class that will contain any data submitted by the end-user via a form. + * @param request + * A standard Servlet HttpServletRequest class. + * @param response + * A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go + * next. * * @throws IOException * @throws ServletException */ - public ActionForward exitLesson(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException - { - //initialize service object - ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + public ActionForward exitLesson(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + // initialize service object + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - FlashMessage message = null; - try { - // get user and lesson based on request. - Integer learner = LearningWebUtil.getUserId(); - Long lessonID = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); - - if(log.isDebugEnabled()) - log.debug("Exiting lesson, lesson id is: "+lessonID); - - learnerService.exitLesson(learner, lessonID); - - //send acknowledgment to flash as it is triggered by flash - message = new FlashMessage("exitLesson", true); + FlashMessage message = null; + try { + // get user and lesson based on request. + Integer learner = LearningWebUtil.getUserId(); + Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); - } catch (Exception e ) { - message = handleException(e, "exitLesson", learnerService); - } - - String wddxPacket = WDDXProcessor.serialize(message); - if(log.isDebugEnabled()) - log.debug("Sending Exit Lesson acknowledge message to flash:"+wddxPacket); - response.getWriter().print(wddxPacket); - return null; + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Exiting lesson, lesson id is: " + lessonID); + } + + learnerService.exitLesson(learner, lessonID); + + // send acknowledgment to flash as it is triggered by flash + message = new FlashMessage("exitLesson", true); + + } catch (Exception e) { + message = handleException(e, "exitLesson", learnerService); + } + + String wddxPacket = WDDXProcessor.serialize(message); + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Sending Exit Lesson acknowledge message to flash:" + wddxPacket); + } + response.getWriter().print(wddxPacket); + return null; } - + /** - * Gets the basic lesson details (name, descripton, etc) for a lesson. Contains a LessonDTO. - * Takes a single parameter lessonID + * Gets the basic lesson details (name, descripton, etc) for a lesson. Contains a LessonDTO. Takes a single + * parameter lessonID */ - public ActionForward getLesson(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException - { + public ActionForward getLesson(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { - //initialize service object - ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + // initialize service object + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - FlashMessage message = null; - try { + FlashMessage message = null; + try { - Long lessonID = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); + Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); - if(log.isDebugEnabled()) - log.debug("get lesson..."+lessonID); + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("get lesson..." + lessonID); + } - LessonDTO dto = learnerService.getLessonData(lessonID); - - //send acknowledgment to flash as it is triggerred by flash - message = new FlashMessage("getLesson",dto); + LessonDTO dto = learnerService.getLessonData(lessonID); - } catch (Exception e ) { - message = handleException(e, "getLesson", learnerService); - } - - String wddxPacket = WDDXProcessor.serialize(message); - if(log.isDebugEnabled()) - log.debug("Sending getLesson data message to flash:"+wddxPacket); - response.getWriter().print(wddxPacket); - return null; + // send acknowledgment to flash as it is triggerred by flash + message = new FlashMessage("getLesson", dto); + + } catch (Exception e) { + message = handleException(e, "getLesson", learnerService); + } + + String wddxPacket = WDDXProcessor.serialize(message); + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Sending getLesson data message to flash:" + wddxPacket); + } + response.getWriter().print(wddxPacket); + return null; } - + /** - *

The struts dispatch action to retrieve the progress data from the - * server and tailor it into the object struture that expected by flash. - * A wddx packet with object data struture is sent back in the end of this - * call. It is used to construct or restore the flash learner progress - * bar

+ *

+ * The struts dispatch action to retrieve the progress data from the server and tailor it into the object struture + * that expected by flash. A wddx packet with object data struture is sent back in the end of this call. It is used + * to construct or restore the flash learner progress bar + *

* - *

Gets the most recent copy from the database - not the cached version. - * That way if the cached version has problems, at least we start off right! + *

+ * Gets the most recent copy from the database - not the cached version. That way if the cached version has + * problems, at least we start off right! *

* - *

As this process is expensive, the server is only expecting this call - * whenever is necessary. For example, starting, resuming and restoring - * a new lesson. And it should not happen every time that learner is - * progressing to next activity.

+ *

+ * As this process is expensive, the server is only expecting this call whenever is necessary. For example, + * starting, resuming and restoring a new lesson. And it should not happen every time that learner is progressing to + * next activity. + *

* - * @param mapping An ActionMapping class that will be used by the Action class to tell - * the ActionServlet where to send the end-user. + * @param mapping + * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to + * send the end-user. * - * @param form The ActionForm class that will contain any data submitted - * by the end-user via a form. - * @param request A standard Servlet HttpServletRequest class. - * @param response A standard Servlet HttpServletResponse class. - * @return An ActionForward class that will be returned to the ActionServlet indicating where - * the user is to go next. + * @param form + * The ActionForm class that will contain any data submitted by the end-user via a form. + * @param request + * A standard Servlet HttpServletRequest class. + * @param response + * A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go + * next. * @throws IOException * @throws ServletException */ - public ActionForward getFlashProgressData(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException - { - if(log.isDebugEnabled()) - log.debug("Getting Flash progress data..."); - - FlashMessage message = null; - try { - - //SessionBean sessionBean = LearningWebUtil.getSessionBean(request,getServlet().getServletContext()); - - Integer learnerId = LearningWebUtil.getUserId(); - ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - - Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID ); - LearnerProgressDTO learnerProgress = learnerService.getProgressDTOByLessonId(lessonId, learnerId); - - message = new FlashMessage("getFlashProgressData",learnerProgress); + public ActionForward getFlashProgressData(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Getting Flash progress data..."); + } - } catch (Exception e ) { - message = handleException(e, "getFlashProgressData", LearnerServiceProxy.getLearnerService(getServlet().getServletContext())); - } - - String wddxPacket = WDDXProcessor.serialize(message); - if(log.isDebugEnabled()) - log.debug("Sending learner progress data to flash:"+wddxPacket); - response.getWriter().print(wddxPacket); + FlashMessage message = null; + try { - //don't need to return a action forward because it sent the wddx packet - //back already. - return null; + // SessionBean sessionBean = LearningWebUtil.getSessionBean(request,getServlet().getServletContext()); + + Integer learnerId = LearningWebUtil.getUserId(); + ICoreLearnerService learnerService = LearnerServiceProxy + .getLearnerService(getServlet().getServletContext()); + + Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + LearnerProgressDTO learnerProgress = learnerService.getProgressDTOByLessonId(lessonId, learnerId); + + message = new FlashMessage("getFlashProgressData", learnerProgress); + + } catch (Exception e) { + message = handleException(e, "getFlashProgressData", LearnerServiceProxy.getLearnerService(getServlet() + .getServletContext())); + } + + String wddxPacket = WDDXProcessor.serialize(message); + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Sending learner progress data to flash:" + wddxPacket); + } + response.getWriter().print(wddxPacket); + + // don't need to return a action forward because it sent the wddx packet + // back already. + return null; } - + /** - *

The struts dispatch action to view the activity. This will be called - * by flash progress bar to check up the activity component. The lams side - * will calculate the url and send a flash message back to the - * flash component.

+ *

+ * The struts dispatch action to view the activity. This will be called by flash progress bar to check up the + * activity component. The lams side will calculate the url and send a flash message back to the flash component. + *

* - * @param mapping An ActionMapping class that will be used by the Action class to tell - * the ActionServlet where to send the end-user. + * @param mapping + * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to + * send the end-user. * - * @param form The ActionForm class that will contain any data submitted - * by the end-user via a form. - * @param request A standard Servlet HttpServletRequest class. - * @param response A standard Servlet HttpServletResponse class. - * @return An ActionForward class that will be returned to the ActionServlet indicating where - * the user is to go next. + * @param form + * The ActionForm class that will contain any data submitted by the end-user via a form. + * @param request + * A standard Servlet HttpServletRequest class. + * @param response + * A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go + * next. * @throws IOException * @throws ServletException */ - public ActionForward getLearnerActivityURL(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException - { - if(log.isDebugEnabled()) - log.debug("Getting url for learner activity..."); + public ActionForward getLearnerActivityURL(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Getting url for learner activity..."); + } - FlashMessage message = null; - try { + FlashMessage message = null; + try { - // get the activity id and calculate the url for this activity. - long activityId = WebUtil.readLongParam(request,AttributeNames.PARAM_ACTIVITY_ID); - String url = getLearnerActivityURL(request, activityId); - - //send data back to flash. - ProgressActivityDTO activityDTO = new ProgressActivityDTO(new Long(activityId),url); - message = new FlashMessage("getLearnerActivityURL",activityDTO); + // get the activity id and calculate the url for this activity. + long activityId = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); + String url = getLearnerActivityURL(request, activityId); - } catch (Exception e ) { - message = handleException(e, "getLearnerActivityURL", LearnerServiceProxy.getLearnerService(getServlet().getServletContext())); - } - - String wddxPacket = WDDXProcessor.serialize(message); - if(log.isDebugEnabled()) - log.debug("Sending learner activity url data to flash:"+wddxPacket); - - response.getWriter().print(wddxPacket); - return null; + // send data back to flash. + ProgressActivityDTO activityDTO = new ProgressActivityDTO(new Long(activityId), url); + message = new FlashMessage("getLearnerActivityURL", activityDTO); + + } catch (Exception e) { + message = handleException(e, "getLearnerActivityURL", LearnerServiceProxy.getLearnerService(getServlet() + .getServletContext())); + } + + String wddxPacket = WDDXProcessor.serialize(message); + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Sending learner activity url data to flash:" + wddxPacket); + } + + response.getWriter().print(wddxPacket); + return null; } - /** - * @param request - * @param activityId - * @return - */ - private String getLearnerActivityURL(HttpServletRequest request, long activityId) { - //initialize service object - ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); - ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + /** + * @param request + * @param activityId + * @return + */ + private String getLearnerActivityURL(HttpServletRequest request, long activityId) { + // initialize service object + ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - //getting requested object according to coming parameters - Integer learnerId = LearningWebUtil.getUserId(); - User learner = (User)LearnerServiceProxy.getUserManagementService(getServlet().getServletContext()).findById(User.class,learnerId); + // getting requested object according to coming parameters + Integer learnerId = LearningWebUtil.getUserId(); + User learner = (User) LearnerServiceProxy.getUserManagementService(getServlet().getServletContext()).findById( + User.class, learnerId); - Activity requestedActivity = learnerService.getActivity(new Long(activityId)); - Lesson lesson = learnerService.getLessonByActivity(requestedActivity); - String url = activityMapping.calculateActivityURLForProgressView(lesson,learner,requestedActivity); - return url; - } - + Activity requestedActivity = learnerService.getActivity(new Long(activityId)); + Lesson lesson = learnerService.getLessonByActivity(requestedActivity); + String url = activityMapping.calculateActivityURLForProgressView(lesson, learner, requestedActivity); + return url; + } + /** - * Gets the same url as getLearnerActivityURL() but forwards directly to the url, rather than - * returning the url in a Flash packet. + * Gets the same url as getLearnerActivityURL() but forwards directly to the url, rather than returning the url in a + * Flash packet. * - * @param mapping An ActionMapping class that will be used by the Action class to tell - * the ActionServlet where to send the end-user. - * @param form The ActionForm class that will contain any data submitted - * by the end-user via a form. - * @param request A standard Servlet HttpServletRequest class. - * @param response A standard Servlet HttpServletResponse class. - * @return An ActionForward class that will be returned to the ActionServlet indicating where - * the user is to go next. + * @param mapping + * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to + * send the end-user. + * @param form + * The ActionForm class that will contain any data submitted by the end-user via a form. + * @param request + * A standard Servlet HttpServletRequest class. + * @param response + * A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go + * next. * @throws IOException * @throws ServletException */ - public ActionForward displayProgress(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException - { - Integer learnerId = LearningWebUtil.getUserId(); - Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID ); - - ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - Object[] ret = learnerService.getStructuredActivityURLs(learnerId, lessonId);; - request.setAttribute("progressList", (List)ret[0]); - request.setAttribute("currentActivityID", ret[1]); - - return mapping.findForward("displayProgress"); + public ActionForward displayProgress(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + Integer learnerId = LearningWebUtil.getUserId(); + Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + Object[] ret = learnerService.getStructuredActivityURLs(learnerId, lessonId); + ; + request.setAttribute("progressList", ret[0]); + request.setAttribute("currentActivityID", ret[1]); + + return mapping.findForward("displayProgress"); } - + /** * Forces a move to a destination Activity in the learning sequence, returning a WDDX packet * - * @param mapping An ActionMapping class that will be used by the Action class to tell - * the ActionServlet where to send the end-user. - * @param form The ActionForm class that will contain any data submitted - * by the end-user via a form. - * @param request A standard Servlet HttpServletRequest class. - * @param response A standard Servlet HttpServletResponse class. - * @return An ActionForward class that will be returned to the ActionServlet indicating where - * the user is to go next. + * @param mapping + * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to + * send the end-user. + * @param form + * The ActionForm class that will contain any data submitted by the end-user via a form. + * @param request + * A standard Servlet HttpServletRequest class. + * @param response + * A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go + * next. * @throws IOException * @throws ServletException */ - public ActionForward forceMove(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException { - FlashMessage flashMessage = null; - ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); - Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); - - try { - String url; - Activity targetActivity = forceMoveShared(request, learnerService, lessonId); - - if(!targetActivity.isFloating()) url = activityMapping.getDisplayActivityAction(null); - else url = activityMapping.getActivityURL(targetActivity); - - //TODO: update for moving to Floating Activity in Flash Learner - flashMessage = new FlashMessage("forceMove", activityMapping.getDisplayActivityAction(null)); - } catch (Exception e) { - flashMessage = handleException(e, "forceMove", learnerService); - } + public ActionForward forceMove(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + FlashMessage flashMessage = null; + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); + Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); - PrintWriter writer = response.getWriter(); - writer.println(flashMessage.serializeMessage()); - return null; - + try { + String url; + Activity targetActivity = forceMoveShared(request, learnerService, lessonId); + + if (!targetActivity.isFloating()) { + url = activityMapping.getDisplayActivityAction(null); + } else { + url = activityMapping.getActivityURL(targetActivity); + } + + // TODO: update for moving to Floating Activity in Flash Learner + flashMessage = new FlashMessage("forceMove", activityMapping.getDisplayActivityAction(null)); + } catch (Exception e) { + flashMessage = handleException(e, "forceMove", learnerService); + } + + PrintWriter writer = response.getWriter(); + writer.println(flashMessage.serializeMessage()); + return null; + } /** - * Forces a move to a destination Activity in the learning sequence, redirecting to the new - * page rather than returning a WDDX packet. + * Forces a move to a destination Activity in the learning sequence, redirecting to the new page rather than + * returning a WDDX packet. * - * @param mapping An ActionMapping class that will be used by the Action class to tell - * the ActionServlet where to send the end-user. - * @param form The ActionForm class that will contain any data submitted - * by the end-user via a form. - * @param request A standard Servlet HttpServletRequest class. - * @param response A standard Servlet HttpServletResponse class. - * @return An ActionForward class that will be returned to the ActionServlet indicating where - * the user is to go next. + * @param mapping + * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to + * send the end-user. + * @param form + * The ActionForm class that will contain any data submitted by the end-user via a form. + * @param request + * A standard Servlet HttpServletRequest class. + * @param response + * A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go + * next. * @throws IOException * @throws ServletException */ - public ActionForward forceMoveRedirect(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException { - ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); - Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); - - try { - String url; - Activity targetActivity = forceMoveShared(request, learnerService,lessonId); - - if(!targetActivity.isFloating()) url = "/learning" + activityMapping.getDisplayActivityAction(lessonId); - else url = activityMapping.getActivityURL(targetActivity); - - return redirectToURL(mapping, response, url); - } catch (Exception e) { - log.error("Exception throw doing force move",e); - throw new ServletException(e); - } + public ActionForward forceMoveRedirect(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); + Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + + try { + String url; + Activity targetActivity = forceMoveShared(request, learnerService, lessonId); + + if (!targetActivity.isFloating()) { + url = "/learning" + activityMapping.getDisplayActivityAction(lessonId); + } else { + url = activityMapping.getActivityURL(targetActivity); + } + + return redirectToURL(mapping, response, url); + } catch (Exception e) { + LearnerAction.log.error("Exception throw doing force move", e); + throw new ServletException(e); + } } /** - * @param request - * @return targetActivity The activity we are moving to. - */ - private Activity forceMoveShared(HttpServletRequest request, ICoreLearnerService learnerService, Long lessonId) { + * @param request + * @return targetActivity The activity we are moving to. + */ + private Activity forceMoveShared(HttpServletRequest request, ICoreLearnerService learnerService, Long lessonId) { - //getting requested object according to coming parameters - Integer learnerId = LearningWebUtil.getUserId(); + // getting requested object according to coming parameters + Integer learnerId = LearningWebUtil.getUserId(); - //get parameters - Long fromActivityId = null; - Long toActivityId = null; - - String fromActId = request.getParameter(AttributeNames.PARAM_CURRENT_ACTIVITY_ID); - String toActId = request.getParameter(AttributeNames.PARAM_DEST_ACTIVITY_ID); - if(fromActId != null) - try{ - fromActivityId = new Long(Long.parseLong(fromActId)); - }catch(Exception e){ - fromActivityId = null; - } - - if(toActId != null) - try{ - toActivityId = new Long(Long.parseLong(toActId)); - }catch(Exception e){ - toActivityId = null; - } - - - Activity fromActivity = null; - Activity toActivity = null; - - if(fromActivityId != null) - fromActivity = learnerService.getActivity(fromActivityId); - - if(toActivityId != null) - toActivity = learnerService.getActivity(toActivityId); - - learnerService.moveToActivity(learnerId, lessonId, fromActivity, toActivity); - - if ( log.isDebugEnabled() ) { - log.debug("Force move for learner "+learnerId+" lesson "+lessonId+". "); - } - - return toActivity; + // get parameters + Long fromActivityId = null; + Long toActivityId = null; + + String fromActId = request.getParameter(AttributeNames.PARAM_CURRENT_ACTIVITY_ID); + String toActId = request.getParameter(AttributeNames.PARAM_DEST_ACTIVITY_ID); + if (fromActId != null) { + try { + fromActivityId = new Long(Long.parseLong(fromActId)); + } catch (Exception e) { + fromActivityId = null; + } } - - /** - * Get AuditService bean. - * @return - */ - private IAuditService getAuditService(){ - if(auditService==null){ - WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); - auditService = (IAuditService) ctx.getBean("auditService"); - } - return auditService; + + if (toActId != null) { + try { + toActivityId = new Long(Long.parseLong(toActId)); + } catch (Exception e) { + toActivityId = null; + } } - + + Activity fromActivity = null; + Activity toActivity = null; + + if (fromActivityId != null) { + fromActivity = learnerService.getActivity(fromActivityId); + } + + if (toActivityId != null) { + toActivity = learnerService.getActivity(toActivityId); + } + + learnerService.moveToActivity(learnerId, lessonId, fromActivity, toActivity); + + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Force move for learner " + learnerId + " lesson " + lessonId + ". "); + } + + return toActivity; + } + /** - * Gets the same url as getLearnerActivityURL() but forwards directly to the url, rather than - * returning the url in a Flash packet. + * Get AuditService bean. * - * @param mapping An ActionMapping class that will be used by the Action class to tell - * the ActionServlet where to send the end-user. - * @param form The ActionForm class that will contain any data submitted - * by the end-user via a form. - * @param request A standard Servlet HttpServletRequest class. - * @param response A standard Servlet HttpServletResponse class. - * @return An ActionForward class that will be returned to the ActionServlet indicating where - * the user is to go next. + * @return + */ + private IAuditService getAuditService() { + if (LearnerAction.auditService == null) { + WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet() + .getServletContext()); + LearnerAction.auditService = (IAuditService) ctx.getBean("auditService"); + } + return LearnerAction.auditService; + } + + /** + * Gets the same url as getLearnerActivityURL() but forwards directly to the url, rather than returning the url in a + * Flash packet. + * + * @param mapping + * An ActionMapping class that will be used by the Action class to tell the ActionServlet where to + * send the end-user. + * @param form + * The ActionForm class that will contain any data submitted by the end-user via a form. + * @param request + * A standard Servlet HttpServletRequest class. + * @param response + * A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where the user is to go + * next. * @throws IOException * @throws ServletException */ - public ActionForward forwardToLearnerActivityURL(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException - { - long activityId = WebUtil.readLongParam(request,AttributeNames.PARAM_ACTIVITY_ID); - if(log.isDebugEnabled()) - log.debug("Forwarding to the url for learner activity..."+activityId); - - String url = getLearnerActivityURL(request, activityId); - return redirectToURL(mapping, response, url); + public ActionForward forwardToLearnerActivityURL(ActionMapping mapping, ActionForm form, + HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + long activityId = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Forwarding to the url for learner activity..." + activityId); + } + + String url = getLearnerActivityURL(request, activityId); + return redirectToURL(mapping, response, url); } - } \ No newline at end of file Index: lams_learning/web/WEB-INF/web.xml =================================================================== diff -u -r61df3f3f473a3619f93c63ceb879ae36438020e8 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_learning/web/WEB-INF/web.xml (.../web.xml) (revision 61df3f3f473a3619f93c63ceb879ae36438020e8) +++ lams_learning/web/WEB-INF/web.xml (.../web.xml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -11,13 +11,17 @@ learningMessageSource
+ + contextClass + org.jboss.spring.factory.VFSXmlWebApplicationContext + contextConfigLocation locatorFactorySelector - classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml + classpath:/org/lamsfoundation/lams/beanRefContext.xml parentContextKey Index: lams_monitoring/web/TimeChart.swf =================================================================== diff -u -r559d69ef3eeb3ebfa2878c3195d5652bb67a26d4 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 Binary files differ Index: lams_monitoring/web/WEB-INF/web.xml =================================================================== diff -u -racc8d2acf5b6b0002e0c8129947040a779ab4077 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_monitoring/web/WEB-INF/web.xml (.../web.xml) (revision acc8d2acf5b6b0002e0c8129947040a779ab4077) +++ lams_monitoring/web/WEB-INF/web.xml (.../web.xml) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -11,13 +11,17 @@ monitoringMessageSource + + contextClass + org.jboss.spring.factory.VFSXmlWebApplicationContext + contextConfigLocation locatorFactorySelector - classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml + classpath:/org/lamsfoundation/lams/beanRefContext.xml parentContextKey Fisheye: Tag 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 refers to a dead (removed) revision in file `lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/dbupdates/patch20080929_updateFrom21.sql'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 refers to a dead (removed) revision in file `lams_tool_mindmap/src/java/org/lamsfoundation/lams/tool/mindmap/dbupdates/patch20081118_updateFrom22.sql'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_notebook/.classpath =================================================================== diff -u -r671eb4d5d117da007a95d4c0e2c6efff19b58817 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 --- lams_tool_notebook/.classpath (.../.classpath) (revision 671eb4d5d117da007a95d4c0e2c6efff19b58817) +++ lams_tool_notebook/.classpath (.../.classpath) (revision 6710ffa47b5b99cb033f76dc5df2cc729cd34ce0) @@ -26,4 +26,4 @@ - + Index: lams_www/web/images/about.logo.swf =================================================================== diff -u Binary files differ Index: lams_www/web/images/dolly.swf =================================================================== diff -u Binary files differ Index: lams_www/web/images/learner.logo.swf =================================================================== diff -u -rb77a70725e1d754edad1b1b0b1b3b757d39bd077 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 Binary files differ Index: lams_www/web/images/monitor.logo.swf =================================================================== diff -u -rb77a70725e1d754edad1b1b0b1b3b757d39bd077 -r6710ffa47b5b99cb033f76dc5df2cc729cd34ce0 Binary files differ Index: lams_www/web/images/preloader.logo.swf =================================================================== diff -u Binary files differ Fisheye: Tag b0800a8cb6201277e215bc62d7092a94570743fa refers to a dead (removed) revision in file `lams_www/web/news.html'. Fisheye: No comparison available. Pass `N' to diff?