Index: lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776) +++ lams_tool_assessment/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -152,6 +152,7 @@ error.msg.default.content.not.find =Could not retrieve default content record for this tool. msg.no.instruction =No instruction available. authoring.msg.cancel.save =Do you want to close this window without saving? +authoring.msg.one.question.to.be.saved =There must be at least one question to be saved. label.learning.page =Page: label.learning.comment.or.instruction =Comment/Instruction label.learning.title =Share Resource Learning @@ -189,7 +190,7 @@ monitoring.tab.statistics =Statistic monitoring.tab.edit.activity =Edit Activity monitoring.label.group =Group -monitoring.summary.note =Note: number of learners is the number of learners who have viewed the resource. +monitoring.summary.note =Note: number of learners is the number of learners who have started the assessment. monitoring.label.type =Type monitoring.label.title =Title monitoring.label.suggest =Suggested By @@ -202,6 +203,23 @@ label.monitoring.edit.activity.cancel =Cancel label.monitoring.edit.activity.update =Update label.monitoring.edit.activity.edit =Edit +label.monitoring.summary.results.question =Question results +label.monitoring.summary.see.results =See results for the question +label.monitoring.summary.choose =Choose +label.monitoring.summary.user.name =User name +label.monitoring.summary.total =Total +label.monitoring.user.summary.history.responses =User's history of responses +label.monitoring.user.summary.user.name =User Name +label.monitoring.user.summary.number.attempts =Number of attempts +label.monitoring.user.summary.time.last.attempt =Time in the last attempt +label.monitoring.user.summary.last.attempt.grade =Last attempt grade +label.monitoring.user.summary.attempt =Attempt +label.monitoring.user.summary.time =Time +label.monitoring.user.summary.response =Response +label.monitoring.user.summary.grade =Grade +label.monitoring.user.summary.title =Title: +label.monitoring.user.summary.question =Question: +label.monitoring.user.summary.ok =Ok label.resoruce.to.review =Resources to view message.monitoring.edit.activity.not.editable =This Activity is no longer editable export.label.resource =Resource Index: lams_tool_assessment/conf/xdoclet/struts-actions.xml =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -218,17 +218,28 @@ - + - - + parameter="questionSummary" > + + + + + + + + @@ -240,12 +251,7 @@ - - - - + Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/AssessmentConstants.java =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/AssessmentConstants.java (.../AssessmentConstants.java) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/AssessmentConstants.java (.../AssessmentConstants.java) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -151,6 +151,8 @@ public static final String ATTR_NEXT_ACTIVITY_URL = "nextActivityUrl"; public static final String ATTR_SUMMARY_LIST = "summaryList"; + + public static final String ATTR_USER_SUMMARY = "userSummary"; public static final String ATTR_USER_LIST = "userList"; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -29,10 +29,12 @@ public interface AssessmentResultDAO extends DAO { - List getAssessmentResult(Long assessmentUid, Long userId); + List getAssessmentResults(Long assessmentUid, Long userId); AssessmentResult getLastAssessmentResult(Long assessmentUid, Long userId); + AssessmentResult getLastFinishedAssessmentResult(Long assessmentUid, Long userId); + int getAssessmentResultCount(Long assessmentUid, Long userId); // /** Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -29,24 +29,19 @@ import org.lamsfoundation.lams.tool.assessment.model.AssessmentResult; public class AssessmentResultDAOHibernate extends BaseDAOHibernate implements AssessmentResultDAO { - + private static final String FIND_BY_ASSESSMENT_AND_USER = "from " + AssessmentResult.class.getName() + " as r where r.user.userId = ? and r.assessment.uid=? order by r.startDate asc"; - private static final String FIND_BY_ASSESSMENT_AND_SESSION = "from " + AssessmentResult.class.getName() - + " as r where r.sessionId = ? and r.assessment.uid=?"; + private static final String FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED = "from " + + AssessmentResult.class.getName() + + " as r where r.user.userId = ? and r.assessment.uid=? and (r.finishDate != null) order by r.startDate asc"; private static final String FIND_ASSESSMENT_RESULT_COUNT_BY_ASSESSMENT_AND_USER = "select count(*) from " + AssessmentResult.class.getName() + " as r where r.user.userId=? and r.assessment.uid=? and (r.finishDate != null)"; -// private static final String FIND_SUMMARY = "select v.assessmentQuestion.uid, count(v.assessmentQuestion) from " -// + AssessmentQuestionResult.class.getName() + " as v , " + AssessmentSession.class.getName() + " as s, " -// + Assessment.class.getName() + " as r " + " where v.sessionId = s.sessionId " -// + " and s.assessment.uid = r.uid " + " and r.contentId =? " -// + " group by v.sessionId, v.assessmentQuestion.uid "; - - public List getAssessmentResult(Long assessmentUid, Long userId) { - return getHibernateTemplate().find(FIND_BY_ASSESSMENT_AND_USER, new Object[] { userId, assessmentUid }); + public List getAssessmentResults(Long assessmentUid, Long userId) { + return getHibernateTemplate().find(FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED, new Object[] { userId, assessmentUid }); } public AssessmentResult getLastAssessmentResult(Long assessmentUid, Long userId) { @@ -57,6 +52,15 @@ return (AssessmentResult) list.get(list.size()-1); } } + + public AssessmentResult getLastFinishedAssessmentResult(Long assessmentUid, Long userId) { + List list = getHibernateTemplate().find(FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED, new Object[] { userId, assessmentUid }); + if (list == null || list.size() == 0) { + return null; + } else { + return (AssessmentResult) list.get(list.size()-1); + } + } public int getAssessmentResultCount(Long assessmentUid, Long userId) { List list = getHibernateTemplate().find(FIND_ASSESSMENT_RESULT_COUNT_BY_ASSESSMENT_AND_USER, new Object[] { userId, assessmentUid }); @@ -67,23 +71,6 @@ } } -// public Map getSummary(Long contentId) { -// // Note: Hibernate 3.1 query.uniqueResult() returns Integer, Hibernate 3.2 query.uniqueResult() returns Long -// List result = getHibernateTemplate().find(FIND_SUMMARY, contentId); -// Map summaryList = new HashMap(result.size()); -// for (Object[] list : result) { -// if (list[1] != null) { -// summaryList.put((Long) list[0], new Integer(((Number) list[1]).intValue())); -// } -// } -// return summaryList; -// -// } - -// public List getAssessmentResultBySession(Long sessionId, Long assessmentUid) { -// return getHibernateTemplate().find(FIND_BY_ASSESSMENT_AND_SESSION, new Object[] { sessionId, assessmentUid }); -// } - } \ No newline at end of file Fisheye: Tag d4022a5f15973e49528bcc3872b6ef4038dc4181 refers to a dead (removed) revision in file `lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/ReflectDTO.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/Summary.java =================================================================== diff -u -r3fdcee6fa67ca8bbbf112bb01a95873fc76a6b0f -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/Summary.java (.../Summary.java) (revision 3fdcee6fa67ca8bbbf112bb01a95873fc76a6b0f) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/Summary.java (.../Summary.java) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -24,8 +24,10 @@ /* $Id$ */ package org.lamsfoundation.lams.tool.assessment.dto; -import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion; +import java.util.List; +import org.lamsfoundation.lams.tool.assessment.model.AssessmentResult; + /** * List contains following element:
* @@ -39,24 +41,9 @@ private Long sessionId; private String sessionName; - private Long questionUid; - private short questionType; - private boolean questionCreateByAuthor; - private boolean questionHide; - private String questionTitle; - private String username; - private int viewNumber; + + private List assessmentResults; - // following is used for export portfolio programs: -// private String url; -// private Long fileUuid; -// private Long fileVersionId; -// private String fileName; - private String attachmentLocalUrl; - - // true: initial group question, false, belong to some group. - private boolean isInitGroup; - public Summary() { } @@ -69,92 +56,11 @@ * @param question * @param isInitGroup */ - public Summary(Long sessionId, String sessionName, AssessmentQuestion question) { + public Summary(Long sessionId, String sessionName) { this.sessionId = sessionId; this.sessionName = sessionName; - if (question != null) { - this.questionUid = question.getUid(); - this.questionType = question.getType(); - this.questionCreateByAuthor = question.isCreateByAuthor(); - this.questionHide = question.isHide(); - this.questionTitle = question.getTitle(); - this.username = question.getCreateBy() == null ? "" : question.getCreateBy().getLoginName(); -// this.url = AssessmentWebUtils.protocol(question.getUrl()); -// this.fileName = question.getFileName(); -// this.fileUuid = question.getFileUuid(); -// this.fileVersionId = question.getFileVersionId(); - } else - this.questionUid = new Long(-1); } - - /** - * Contruction method for export profolio function. - * - * Don't not set sessionId and viewNumber fields - * - * @param sessionName - * @param question - * @param isInitGroup - */ - public Summary(Long sessionId, String sessionName, AssessmentQuestion question, boolean isInitGroup) { - this.sessionId = sessionId; - this.sessionName = sessionName; - if (question != null) { - this.questionUid = question.getUid(); - this.questionType = question.getType(); - this.questionCreateByAuthor = question.isCreateByAuthor(); - this.questionHide = question.isHide(); - this.questionTitle = question.getTitle(); - this.username = question.getCreateBy() == null ? "" : question.getCreateBy().getLoginName(); -// this.url = AssessmentWebUtils.protocol(question.getUrl()); -// this.fileName = question.getFileName(); -// this.fileUuid = question.getFileUuid(); -// this.fileVersionId = question.getFileVersionId(); - } else - this.questionUid = new Long(-1); - this.isInitGroup = isInitGroup; - } - - public boolean isQuestionCreateByAuthor() { - return questionCreateByAuthor; - } - - public void setQuestionCreateByAuthor(boolean questionCreateByAuthor) { - this.questionCreateByAuthor = questionCreateByAuthor; - } - - public boolean isQuestionHide() { - return questionHide; - } - - public void setQuestionHide(boolean questionHide) { - this.questionHide = questionHide; - } - - public String getQuestionTitle() { - return questionTitle; - } - - public void setQuestionTitle(String questionTitle) { - this.questionTitle = questionTitle; - } - - public short getQuestionType() { - return questionType; - } - - public void setQuestionType(short questionType) { - this.questionType = questionType; - } - - public Long getQuestionUid() { - return questionUid; - } - - public void setQuestionUid(Long questionUid) { - this.questionUid = questionUid; - } - + public Long getSessionId() { return sessionId; } @@ -171,68 +77,12 @@ this.sessionName = sessionName; } - public String getUsername() { - return username; + public List getAssessmentResults() { + return assessmentResults; } - public void setUsername(String username) { - this.username = username; + public void setAssessmentResults(List assessmentResults) { + this.assessmentResults = assessmentResults; } - public int getViewNumber() { - return viewNumber; - } - - public void setViewNumber(int viewNumber) { - this.viewNumber = viewNumber; - } - -// public Long getFileUuid() { -// return fileUuid; -// } -// -// public void setFileUuid(Long fileUuid) { -// this.fileUuid = fileUuid; -// } -// -// public Long getFileVersionId() { -// return fileVersionId; -// } -// -// public void setFileVersionId(Long fileVersionId) { -// this.fileVersionId = fileVersionId; -// } -// -// public String getUrl() { -// return url; -// } -// -// public void setUrl(String url) { -// this.url = url; -// } - - public boolean isInitGroup() { - return isInitGroup; - } - - public void setInitGroup(boolean isInitGroup) { - this.isInitGroup = isInitGroup; - } - - public String getAttachmentLocalUrl() { - return attachmentLocalUrl; - } - - public void setAttachmentLocalUrl(String attachmentLocalUrl) { - this.attachmentLocalUrl = attachmentLocalUrl; - } - -// public String getFileName() { -// return fileName; -// } -// -// public void setFileName(String fileName) { -// this.fileName = fileName; -// } - } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/UserSummary.java =================================================================== diff -u --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/UserSummary.java (revision 0) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/UserSummary.java (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,87 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.tool.assessment.dto; + +import java.util.Date; +import java.util.List; + +import org.lamsfoundation.lams.tool.assessment.model.AssessmentResult; +import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser; + +/** + * List contains following element:
+ * + *
  • session_id
  • session_name
  • AssessmentQuestion.uid
  • AssessmentQuestion.question_type
  • + * AssessmentQuestion.create_by_author
  • AssessmentQuestion.is_hide
  • AssessmentQuestion.title
  • + * User.login_name
  • count(assessment_question_uid)
  • + * + * @author Andrey Balan + */ +public class UserSummary { + + private AssessmentUser user; + private int numberOfAttempts; + private Date timeOfLastAttempt; + private float lastAttemptGrade; + + private List userSummaryItems; + + public AssessmentUser getUser() { + return user; + } + public void setUser(AssessmentUser user) { + this.user = user; + } + + public int getNumberOfAttempts() { + return numberOfAttempts; + } + public void setNumberOfAttempts(int numberOfAttempts) { + this.numberOfAttempts = numberOfAttempts; + } + + public Date getTimeOfLastAttempt() { + return timeOfLastAttempt; + } + public void setTimeOfLastAttempt(Date timeOfLastAttempt) { + this.timeOfLastAttempt = timeOfLastAttempt; + } + + public float getLastAttemptGrade() { + return lastAttemptGrade; + } + public void setLastAttemptGrade(float lastAttemptGrade) { + this.lastAttemptGrade = lastAttemptGrade; + } + + public List getUserSummaryItems() { + return userSummaryItems; + } + public void setUserSummaryItems(List userSummaryItems) { + this.userSummaryItems = userSummaryItems; + } + +} + + \ No newline at end of file Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/UserSummaryItem.java =================================================================== diff -u --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/UserSummaryItem.java (revision 0) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dto/UserSummaryItem.java (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,66 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.tool.assessment.dto; + +import java.util.Date; +import java.util.List; + +import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion; +import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestionResult; +import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser; + +/** + * List contains following element:
    + * + *
  • session_id
  • session_name
  • AssessmentQuestion.uid
  • AssessmentQuestion.question_type
  • + * AssessmentQuestion.create_by_author
  • AssessmentQuestion.is_hide
  • AssessmentQuestion.title
  • + * User.login_name
  • count(assessment_question_uid)
  • + * + * @author Andrey Balan + */ +public class UserSummaryItem { + + private AssessmentQuestion question; + private List questionResults; + + public UserSummaryItem(AssessmentQuestion question) { + this.question = question; + } + + public AssessmentQuestion getQuestion() { + return question; + } + public void setQuestion(AssessmentQuestion question) { + this.question = question; + } + + public List getQuestionResults() { + return questionResults; + } + public void setQuestionResults(List questionResults) { + this.questionResults = questionResults; + } + +} + \ No newline at end of file Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/Assessment.hbm.xml =================================================================== diff -u -r8348d2289e46f1a2a5363868765c7844946f7874 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/Assessment.hbm.xml (.../Assessment.hbm.xml) (revision 8348d2289e46f1a2a5363868765c7844946f7874) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/Assessment.hbm.xml (.../Assessment.hbm.xml) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -125,7 +125,7 @@ inverse="false" cascade="all" sort="unsorted" - order-by="create_date desc" + order-by="sequence_id asc" > set = new TreeSet(new SequencableComparator()); while (iter.hasNext()) { AssessmentQuestion question = (AssessmentQuestion) iter.next(); AssessmentQuestion newQuestion = (AssessmentQuestion) question.clone(); @@ -165,7 +165,7 @@ // clone OverallFeedbacks if (overallFeedbacks != null) { Iterator iter = overallFeedbacks.iterator(); - Set set = new TreeSet(new SequencableComparator()); + Set set = new TreeSet(new SequencableComparator()); while (iter.hasNext()) { AssessmentOverallFeedback overallFeedback = (AssessmentOverallFeedback) iter.next(); AssessmentOverallFeedback newOverallFeedback = (AssessmentOverallFeedback) overallFeedback.clone(); @@ -434,7 +434,7 @@ /** * - * @hibernate.set lazy="true" inverse="false" cascade="all" order-by="create_date desc" + * @hibernate.set lazy="true" inverse="false" cascade="all" order-by="sequence_id asc" * @hibernate.collection-key column="assessment_uid" * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion" * @@ -450,15 +450,6 @@ /** * - * @hibernate.set lazy="true" inverse="false" cascade="all" order-by="create_date desc" - * @hibernate.collection-key column="assessment_uid" - * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion" - * - * @return - */ - - /** - * * @hibernate.set cascade="all" order-by="sequence_id asc" * @hibernate.collection-key column="assessment_uid" * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.assessment.model.AssessmentOverallFeedback" Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java (.../AssessmentQuestionResult.java) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java (.../AssessmentQuestionResult.java) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -24,12 +24,10 @@ /* $Id$ */ package org.lamsfoundation.lams.tool.assessment.model; +import java.util.Date; import java.util.LinkedHashSet; import java.util.Set; -import java.util.TreeSet; -import org.lamsfoundation.lams.tool.assessment.util.SequencableComparator; - /** * Assessment Question Result * @@ -51,6 +49,9 @@ private float penalty; private Set optionAnswers; + // DTO fields: + private Date finishDate; + public AssessmentQuestionResult() { optionAnswers = new LinkedHashSet(); } @@ -188,5 +189,12 @@ public void setOptionAnswers(Set answers) { this.optionAnswers = answers; } + + public Date getFinishDate() { + return finishDate; + } + public void setFinishDate(Date finishDate) { + this.finishDate = finishDate; + } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentResult.java =================================================================== diff -u -r98ccad973dd8280fbae78c301f824877b2564c44 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentResult.java (.../AssessmentResult.java) (revision 98ccad973dd8280fbae78c301f824877b2564c44) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentResult.java (.../AssessmentResult.java) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -155,7 +155,7 @@ /** * - * @hibernate.set cascade="all" + * @hibernate.set cascade="all" * @hibernate.collection-key column="result_uid" * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestionResult" * Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 1e41e09dbff6a9d1165cd1c7a1eb8e874a2b0776) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -28,12 +28,10 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; -import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; @@ -61,8 +59,6 @@ import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.lesson.service.ILessonService; -import org.lamsfoundation.lams.notebook.model.NotebookEntry; -import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolContentManager; @@ -78,8 +74,9 @@ import org.lamsfoundation.lams.tool.assessment.dao.AssessmentResultDAO; import org.lamsfoundation.lams.tool.assessment.dao.AssessmentSessionDAO; import org.lamsfoundation.lams.tool.assessment.dao.AssessmentUserDAO; -import org.lamsfoundation.lams.tool.assessment.dto.ReflectDTO; import org.lamsfoundation.lams.tool.assessment.dto.Summary; +import org.lamsfoundation.lams.tool.assessment.dto.UserSummary; +import org.lamsfoundation.lams.tool.assessment.dto.UserSummaryItem; import org.lamsfoundation.lams.tool.assessment.model.Assessment; import org.lamsfoundation.lams.tool.assessment.model.AssessmentAttachment; import org.lamsfoundation.lams.tool.assessment.model.AssessmentOptionAnswer; @@ -92,7 +89,6 @@ import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser; import org.lamsfoundation.lams.tool.assessment.util.AssessmentQuestionResultComparator; import org.lamsfoundation.lams.tool.assessment.util.AssessmentToolContentHandler; -import org.lamsfoundation.lams.tool.assessment.util.ReflectDTOComparator; import org.lamsfoundation.lams.tool.assessment.util.SequencableComparator; import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; @@ -320,69 +316,69 @@ } // initial assessment questions list List questionList = new ArrayList(); - Set resList = session.getAssessment().getQuestions(); - for (AssessmentQuestion question : resList) { - if (skipHide && question.isHide()) { - continue; - } - // if question is create by author - if (question.isCreateByAuthor()) { - Summary sum = new Summary(session.getSessionId(), session.getSessionName(), question, false); - questionList.add(sum); - } - } +// Set resList = session.getAssessment().getQuestions(); +// for (AssessmentQuestion question : resList) { +// if (skipHide && question.isHide()) { +// continue; +// } +// // if question is create by author +// if (question.isCreateByAuthor()) { +// Summary sum = new Summary(session.getSessionId(), session.getSessionName(), question, false); +// questionList.add(sum); +// } +// } +// +// // get this session's all assessment questions +// Set sessList = session.getAssessmentQuestions(); +// for (AssessmentQuestion question : sessList) { +// if (skipHide && question.isHide()) { +// continue; +// } +// +// // to skip all question create by author +// if (!question.isCreateByAuthor()) { +// Summary sum = new Summary(session.getSessionId(), session.getSessionName(), question, false); +// questionList.add(sum); +// } +// } - // get this session's all assessment questions - Set sessList = session.getAssessmentQuestions(); - for (AssessmentQuestion question : sessList) { - if (skipHide && question.isHide()) { - continue; - } - - // to skip all question create by author - if (!question.isCreateByAuthor()) { - Summary sum = new Summary(session.getSessionId(), session.getSessionName(), question, false); - questionList.add(sum); - } - } - return questionList; } public List> exportByContentId(Long contentId) { Assessment assessment = assessmentDao.getByContentId(contentId); List> groupList = new ArrayList(); - // create init assessment questions list - List initList = new ArrayList(); - groupList.add(initList); - Set resList = assessment.getQuestions(); - for (AssessmentQuestion question : resList) { - if (question.isCreateByAuthor()) { - Summary sum = new Summary(null, null, question, true); - initList.add(sum); - } - } +// // create init assessment questions list +// List initList = new ArrayList(); +// groupList.add(initList); +// Set resList = assessment.getQuestions(); +// for (AssessmentQuestion question : resList) { +// if (question.isCreateByAuthor()) { +// Summary sum = new Summary(null, null, question, true); +// initList.add(sum); +// } +// } +// +// // session by session +// List sessionList = assessmentSessionDao.getByContentId(contentId); +// for (AssessmentSession session : sessionList) { +// List group = new ArrayList(); +// // get this session's all assessment questions +// Set sessList = session.getAssessmentQuestions(); +// for (AssessmentQuestion question : sessList) { +// // to skip all question create by author +// if (!question.isCreateByAuthor()) { +// Summary sum = new Summary(session.getSessionId(), session.getSessionName(), question, false); +// group.add(sum); +// } +// } +// if (group.size() == 0) { +// group.add(new Summary(session.getSessionId(), session.getSessionName(), null, false)); +// } +// groupList.add(group); +// } - // session by session - List sessionList = assessmentSessionDao.getByContentId(contentId); - for (AssessmentSession session : sessionList) { - List group = new ArrayList(); - // get this session's all assessment questions - Set sessList = session.getAssessmentQuestions(); - for (AssessmentQuestion question : sessList) { - // to skip all question create by author - if (!question.isCreateByAuthor()) { - Summary sum = new Summary(session.getSessionId(), session.getSessionName(), question, false); - group.add(sum); - } - } - if (group.size() == 0) { - group.add(new Summary(session.getSessionId(), session.getSessionName(), null, false)); - } - groupList.add(group); - } - return groupList; } @@ -599,54 +595,75 @@ return assessmentQuestionDao.getByUid(questionUid); } - public List> getSummary(Long contentId) { - List> groupList = new ArrayList>(); - List group = new ArrayList(); + public List getSummaryList(Long contentId) { + List summaryList = new ArrayList(); - // get all question which is accessed by user - Map visitCountMap =null; - //assessmentQuestionResultDao.getSummary(contentId); - - Assessment assessment = assessmentDao.getByContentId(contentId); - Set resQuestionList = assessment.getQuestions(); - - // get all sessions in a assessment and retrieve all assessment questions under this session - // plus initial assessment questions by author creating (resquestionList) List sessionList = assessmentSessionDao.getByContentId(contentId); for (AssessmentSession session : sessionList) { - // one new group for one session. - group = new ArrayList(); - // firstly, put all initial assessment question into this group. - for (AssessmentQuestion question : resQuestionList) { - Summary sum = new Summary(session.getSessionId(), session.getSessionName(), question); - // set viewNumber according visit log - if (visitCountMap.containsKey(question.getUid())) { - sum.setViewNumber(visitCountMap.get(question.getUid()).intValue()); + Long sessionId = session.getSessionId(); + // one new summary for one session. + Summary summary = new Summary(sessionId, session.getSessionName()); + + List users = assessmentUserDao.getBySessionID(sessionId); + ArrayList assessmentResults = new ArrayList(); + for (AssessmentUser user : users) { + AssessmentResult assessmentResult = assessmentResultDao.getLastFinishedAssessmentResult(contentId, user.getUserId()); + if (assessmentResult == null) { + assessmentResult = new AssessmentResult(); + assessmentResult.setUser(user); + } else { + Set sortedQuestionResults = new TreeSet( + new AssessmentQuestionResultComparator()); + sortedQuestionResults.addAll(assessmentResult.getQuestionResults()); + assessmentResult.setQuestionResults(sortedQuestionResults); } - group.add(sum); + assessmentResults.add(assessmentResult); } - // get this session's all assessment questions - Set sessQuestionList = session.getAssessmentQuestions(); - for (AssessmentQuestion question : sessQuestionList) { - // to skip all question create by author - if (!question.isCreateByAuthor()) { - Summary sum = new Summary(session.getSessionId(), session.getSessionName(), question); - // set viewNumber according visit log - if (visitCountMap.containsKey(question.getUid())) { - sum.setViewNumber(visitCountMap.get(question.getUid()).intValue()); + summary.setAssessmentResults(assessmentResults); + summaryList.add(summary); + } + + return summaryList; + } + + public UserSummary getUserSummary(Long contentId, Long userId) { + UserSummary userSummary = new UserSummary(); + + AssessmentUser user = assessmentUserDao.getUserByUserIDAndContentID(userId, contentId); + userSummary.setUser(user); + List results = assessmentResultDao.getAssessmentResults(contentId, userId); + userSummary.setNumberOfAttempts(results.size()); + + AssessmentResult lastFinishedResult = assessmentResultDao.getLastFinishedAssessmentResult(contentId, userId); + long timeTaken = (lastFinishedResult == null) ? 0 : (lastFinishedResult.getFinishDate().getTime() - lastFinishedResult.getStartDate().getTime()); + userSummary.setTimeOfLastAttempt(new Date(timeTaken)); + if (lastFinishedResult != null) { + userSummary.setLastAttemptGrade(lastFinishedResult.getGrade()); + } + + Assessment assessment = assessmentDao.getByContentId(contentId); + ArrayList userSummaryItems = new ArrayList(); + Set questions = assessment.getQuestions(); + for (AssessmentQuestion question : questions) { + UserSummaryItem userSummaryItem = new UserSummaryItem(question); + List questionResultsForSummary = new ArrayList(); + + for (AssessmentResult result : results) { + for (AssessmentQuestionResult questionResult : result.getQuestionResults()) { + if (question.getUid().equals(questionResult.getAssessmentQuestion().getUid())) { + questionResult.setFinishDate(result.getFinishDate()); + questionResultsForSummary.add(questionResult); + break; } - group.add(sum); } + } - // so far no any question available, so just put session name info to Summary - if (group.size() == 0) { - group.add(new Summary(session.getSessionId(), session.getSessionName(), null)); - } - groupList.add(group); + userSummaryItem.setQuestionResults(questionResultsForSummary); + userSummaryItems.add(userSummaryItem); } + userSummary.setUserSummaryItems(userSummaryItems); - return groupList; - + return userSummary; } // public List getUserListBySessionQuestion(Long sessionId, Long questionUid) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -26,14 +26,11 @@ import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; -import java.util.Map; -import java.util.Set; import org.apache.struts.upload.FormFile; import org.lamsfoundation.lams.events.IEventNotificationService; -import org.lamsfoundation.lams.notebook.model.NotebookEntry; -import org.lamsfoundation.lams.tool.assessment.dto.ReflectDTO; import org.lamsfoundation.lams.tool.assessment.dto.Summary; +import org.lamsfoundation.lams.tool.assessment.dto.UserSummary; import org.lamsfoundation.lams.tool.assessment.model.Assessment; import org.lamsfoundation.lams.tool.assessment.model.AssessmentAttachment; import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion; @@ -200,10 +197,17 @@ * @param contentId * @return */ - List> getSummary(Long contentId); + List getSummaryList(Long contentId); + + /** + * Return user summary. This summary contains list of all attempts made by user. + * + * @param contentId + * @param userId + * @return + */ + UserSummary getUserSummary(Long contentId, Long userId); -// List getUserListBySessionQuestion(Long sessionId, Long questionUid); - /** * Set a assessment question visible or not. * Fisheye: Tag d4022a5f15973e49528bcc3872b6ef4038dc4181 refers to a dead (removed) revision in file `lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/util/ReflectDTOComparator.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -26,8 +26,6 @@ import java.io.IOException; import java.util.List; -import java.util.Map; -import java.util.Set; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -38,14 +36,10 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.lamsfoundation.lams.notebook.model.NotebookEntry; -import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.assessment.AssessmentConstants; -import org.lamsfoundation.lams.tool.assessment.dto.ReflectDTO; import org.lamsfoundation.lams.tool.assessment.dto.Summary; +import org.lamsfoundation.lams.tool.assessment.dto.UserSummary; import org.lamsfoundation.lams.tool.assessment.model.Assessment; -import org.lamsfoundation.lams.tool.assessment.model.AssessmentSession; -import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser; import org.lamsfoundation.lams.tool.assessment.service.IAssessmentService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -59,146 +53,145 @@ @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - String param = mapping.getParameter(); - request.setAttribute("initialTabId", WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_TAB, true)); + String param = mapping.getParameter(); if (param.equals("summary")) { return summary(mapping, form, request, response); } + if (param.equals("questionSummary")) { + return questionSummary(mapping, form, request, response); + } + if (param.equals("userSummary")) { + return userSummary(mapping, form, request, response); + } + if (param.equals("saveUserGrade")) { + return saveUserGrade(mapping, form, request, response); + } -// if (param.equals("listuser")) { -// return listUser(mapping, form, request, response); -// } + // not using now if (param.equals("showQuestion")) { return showQuestion(mapping, form, request, response); } if (param.equals("hideQuestion")) { return hideQuestion(mapping, form, request, response); } - if (param.equals("viewReflection")) { - return viewReflection(mapping, form, request, response); - } return mapping.findForward(AssessmentConstants.ERROR); } - private ActionForward hideQuestion(ActionMapping mapping, ActionForm form, HttpServletRequest request, + private ActionForward summary(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { + // initialize Session Map + SessionMap sessionMap = new SessionMap(); + request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - Long itemUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_UID); + Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); IAssessmentService service = getAssessmentService(); - service.setQuestionVisible(itemUid, false); + List summaryList = service.getSummaryList(contentId); - // get back SessionMap + Assessment assessment = service.getAssessmentByContentId(contentId); + assessment.toDTO(); + + // cache into sessionMap + sessionMap.put(AssessmentConstants.ATTR_SUMMARY_LIST, summaryList); + sessionMap.put(AssessmentConstants.PAGE_EDITABLE, assessment.isContentInUse()); + sessionMap.put(AssessmentConstants.ATTR_ASSESSMENT, assessment); + sessionMap.put(AssessmentConstants.ATTR_TOOL_CONTENT_ID, contentId); + sessionMap.put(AttributeNames.PARAM_CONTENT_FOLDER_ID, WebUtil.readStrParam(request, + AttributeNames.PARAM_CONTENT_FOLDER_ID)); + return mapping.findForward(AssessmentConstants.SUCCESS); + } + + private ActionForward questionSummary(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + - // update session value - List groupList = (List) sessionMap.get(AssessmentConstants.ATTR_SUMMARY_LIST); - if (groupList != null) { - for (List group : groupList) { - for (Summary sum : group) { - if (itemUid.equals(sum.getQuestionUid())) { - sum.setQuestionHide(true); - break; - } - } - } - } return mapping.findForward(AssessmentConstants.SUCCESS); } - private ActionForward showQuestion(ActionMapping mapping, ActionForm form, HttpServletRequest request, + private ActionForward userSummary(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - Long itemUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_UID); + String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + + Long userId = WebUtil.readLongParam(request, AttributeNames.PARAM_USER_ID); + Long contentId = (Long) sessionMap.get(AssessmentConstants.ATTR_TOOL_CONTENT_ID); IAssessmentService service = getAssessmentService(); - service.setQuestionVisible(itemUid, true); + UserSummary userSummary = service.getUserSummary(contentId, userId); + request.setAttribute(AssessmentConstants.ATTR_USER_SUMMARY, userSummary); + return mapping.findForward(AssessmentConstants.SUCCESS); + } - // get back SessionMap + private ActionForward saveUserGrade(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + + - // update session value - List groupList = (List) sessionMap.get(AssessmentConstants.ATTR_SUMMARY_LIST); - if (groupList != null) { - for (List group : groupList) { - for (Summary sum : group) { - if (itemUid.equals(sum.getQuestionUid())) { - sum.setQuestionHide(false); - break; - } - } - } - } return mapping.findForward(AssessmentConstants.SUCCESS); } - private ActionForward summary(ActionMapping mapping, ActionForm form, HttpServletRequest request, + private ActionForward hideQuestion(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - // initial Session Map - SessionMap sessionMap = new SessionMap(); - request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); - request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - // save contentFolderID into session - sessionMap.put(AttributeNames.PARAM_CONTENT_FOLDER_ID, WebUtil.readStrParam(request, - AttributeNames.PARAM_CONTENT_FOLDER_ID)); - Long contentId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); + Long itemUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_UID); IAssessmentService service = getAssessmentService(); - List> groupList = service.getSummary(contentId); + service.setQuestionVisible(itemUid, false); - Assessment assessment = service.getAssessmentByContentId(contentId); - assessment.toDTO(); + // get back SessionMap + String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - // cache into sessionMap - sessionMap.put(AssessmentConstants.ATTR_SUMMARY_LIST, groupList); - sessionMap.put(AssessmentConstants.PAGE_EDITABLE, assessment.isContentInUse()); - sessionMap.put(AssessmentConstants.ATTR_ASSESSMENT, assessment); - sessionMap.put(AssessmentConstants.ATTR_TOOL_CONTENT_ID, contentId); +// // update session value +// List groupList = (List) sessionMap.get(AssessmentConstants.ATTR_SUMMARY_LIST); +// if (groupList != null) { +// for (List group : groupList) { +// for (Summary sum : group) { +// if (itemUid.equals(sum.getQuestionUid())) { +// sum.setQuestionHide(true); +// break; +// } +// } +// } +// } + return mapping.findForward(AssessmentConstants.SUCCESS); } -// private ActionForward listUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, -// HttpServletResponse response) { -// Long sessionId = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); -// Long itemUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_UID); -// -// // get user list by given item uid -// IAssessmentService service = getAssessmentService(); -// List list = service.getUserListBySessionQuestion(sessionId, itemUid); -// -// // set to request -// request.setAttribute(AssessmentConstants.ATTR_USER_LIST, list); -// return mapping.findForward(AssessmentConstants.SUCCESS); -// } - - private ActionForward viewReflection(ActionMapping mapping, ActionForm form, HttpServletRequest request, + private ActionForward showQuestion(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - - Long uid = WebUtil.readLongParam(request, AssessmentConstants.ATTR_USER_UID); - Long sessionID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); - + Long itemUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_UID); IAssessmentService service = getAssessmentService(); - AssessmentUser user = service.getUser(uid); + service.setQuestionVisible(itemUid, true); - AssessmentSession session = service.getAssessmentSessionBySessionId(sessionID); + // get back SessionMap + String sessionMapID = request.getParameter(AssessmentConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + request.setAttribute(AssessmentConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); -// ReflectDTO refDTO = new ReflectDTO(user); -// if (notebookEntry == null) { -// refDTO.setFinishReflection(false); -// refDTO.setReflect(null); -// } else { -// refDTO.setFinishReflection(true); -// refDTO.setReflect(notebookEntry.getEntry()); +// // update session value +// List groupList = (List) sessionMap.get(AssessmentConstants.ATTR_SUMMARY_LIST); +// if (groupList != null) { +// for (List group : groupList) { +// for (Summary sum : group) { +// if (itemUid.equals(sum.getQuestionUid())) { +// sum.setQuestionHide(false); +// break; +// } +// } +// } // } -// refDTO.setReflectInstrctions(session.getAssessment().getReflectInstructions()); - -// request.setAttribute("userDTO", refDTO); - return mapping.findForward("success"); + return mapping.findForward(AssessmentConstants.SUCCESS); } // ************************************************************************************* Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/servlet/ExportServlet.java =================================================================== diff -u -r95a8036ef190595474c3bac650ecd8e004434fd2 -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision 95a8036ef190595474c3bac650ecd8e004434fd2) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -25,13 +25,9 @@ package org.lamsfoundation.lams.tool.assessment.web.servlet; -import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; import javax.servlet.ServletException; import javax.servlet.http.Cookie; @@ -40,11 +36,8 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import org.lamsfoundation.lams.notebook.model.NotebookEntry; -import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.assessment.AssessmentConstants; -import org.lamsfoundation.lams.tool.assessment.dto.ReflectDTO; import org.lamsfoundation.lams.tool.assessment.dto.Summary; import org.lamsfoundation.lams.tool.assessment.model.Assessment; import org.lamsfoundation.lams.tool.assessment.model.AssessmentSession; @@ -53,27 +46,23 @@ import org.lamsfoundation.lams.tool.assessment.service.AssessmentServiceProxy; import org.lamsfoundation.lams.tool.assessment.service.IAssessmentService; import org.lamsfoundation.lams.tool.assessment.util.AssessmentToolContentHandler; -import org.lamsfoundation.lams.tool.assessment.util.ReflectDTOComparator; -import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; /** - * Export portfolio servlet to export all shared assessment into offline HTML package. + * Export portfolio servlet to export all assessment questions into offline HTML package. * * @author Steve.Ni - * - * @version $Revision$ */ public class ExportServlet extends AbstractExportPortfolioServlet { private static final long serialVersionUID = -4529093489007108143L; private static Logger logger = Logger.getLogger(ExportServlet.class); - private final String FILENAME = "shared_assessment_main.html"; + private final String FILENAME = "assessment_main.html"; private AssessmentToolContentHandler handler; @@ -207,26 +196,26 @@ // if (summary.getQuestionType() == AssessmentConstants.QUESTION_TYPE_FILL_THE_GAP // || summary.getQuestionType() == AssessmentConstants.QUESTION_TYPE_CHOICE) // continue; - try { - int idx = 1; - String userName = summary.getUsername(); - String localDir; - while (true) { - localDir = FileUtil.getFullPath(directoryName, userName + "/" + idx); - File local = new File(localDir); - if (!local.exists()) { - local.mkdirs(); - break; - } - idx++; - } +// try { +// int idx = 1; +// String userName = summary.getUsername(); +// String localDir; +// while (true) { +// localDir = FileUtil.getFullPath(directoryName, userName + "/" + idx); +// File local = new File(localDir); +// if (!local.exists()) { +// local.mkdirs(); +// break; +// } +// idx++; +// } // summary.setAttachmentLocalUrl(userName + "/" + idx + "/" + summary.getFileUuid() + '.' // + FileUtil.getFileExtension(summary.getFileName())); // handler.saveFile(summary.getFileUuid(), FileUtil.getFullPath(directoryName, summary // .getAttachmentLocalUrl())); - } catch (Exception e) { - logger.error("Export forum topic attachment failed: " + e.toString()); - } +// } catch (Exception e) { +// logger.error("Export forum topic attachment failed: " + e.toString()); +// } } } Index: lams_tool_assessment/web/includes/css/jqGrid.grid.css =================================================================== diff -u --- lams_tool_assessment/web/includes/css/jqGrid.grid.css (revision 0) +++ lams_tool_assessment/web/includes/css/jqGrid.grid.css (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,459 @@ +.GridHeader { +} +.Header { + width: 100%; + } + +.Header th { + font-size: 100%; font-weight: bold; text-align: left; + padding: 3px; + background-image: url('../images/jqGrid.basic.theme/headerbg.gif'); color: #ffffff; + width: 100%; + white-space: nowrap; + } + +.HeaderLeft { + background-image: url(../images/jqGrid.basic.theme/headerleft.gif); + } + +.HeaderRight { + background-image: url(../images/jqGrid.basic.theme/headerright.gif); + } +.HeaderButton { + background-image: url(../images/jqGrid.basic.theme/headerbg.gif); +} +.HeaderButton img{ + width: 20px; +} + +.HeaderLeft img{ + width: 4px; + } + +.HeaderRight img{ + width: 9px; + } +.GridHeader table {margin:0;} +.GridHeader td, tr {padding:0;} + +/* Grid */ +table.scroll { + table-layout: fixed; + margin-bottom :0px; +} +table.scroll tbody tr { + background-color: #fffcf2; +} + +table.scroll tbody tr.alt { + background-color: #ecf7e4; +} + +table.scroll tr.over td{ + background-color: #FFDEAD; +} + + table.scroll tbody tr.selected td { + background: #3c964b; + color: #ecf7e4; +} + + table.scroll tbody td { + + padding: 2px; + text-align: left; + border-bottom: 1px solid #3c964b; + border-left: 1px solid #3c964b; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + height : auto; +} + +table.scroll thead th { + + padding: 2px; + border-bottom: 1px solid #3c964b; + border-left: 1px solid #3c964b; + text-align: left; + font-weight: normal; + overflow: hidden; + white-space: nowrap; + background-image: url(../images/jqGrid.basic.theme/grid-blue-hd.gif); + height : 17px; +} + +table.scroll th div { + overflow: hidden; +/* white-space: nowrap;*/ + word-wrap: break-word; + height : 17px; +} +table.scroll th span { + cursor: e-resize; + width: 10px; + float: right; + display: block; + margin: -2px -1px -2px 0px; + height: 18px; + overflow: hidden; + white-space: nowrap; +} + +table.scroll thead { +} + +/* End Grid */ + +/* Pager */ +div.scroll { + vertical-align: top; + height: 23px; + white-space: nowrap; + text-align: center; + background-image: url(../images/jqGrid.basic.theme/grid-blue-ft.gif); +/* + border-left: 1px solid #3c964b; + border-right: 1px solid #3c964b; + border-bottom: 1px solid #3c964b; +*/ +} +div.scroll span { + vertical-align : top; +} +.selbox { + font-size: x-small; + vertical-align : top; +} +input.selbox{ + font-size: x-small; + vertical-align : top; +} +.pgbuttons { + margin-top :2px; + width: 19px; +} +.nav-table-left { + padding:1px; + float: left; +/* position:absolute;*/ +} +.nav-table-right { + padding:1px; + float: right; +} +table.navtable {margin-bottom:0; width: auto;} + +table.navtable tr{ + background-image: url(../images/jqGrid.basic.theme/grid-blue-ft.gif); +} + +table.navtable td.nav-button { +/* margin-top:2px;*/ + border: 1px solid #E2ECF8; + white-space: nowrap; +} + +table.navtable td.nav-hover { + border: 1px solid #3c964b; +} + +table.tbutton tr td{ + border : none; + padding:0px; +} + + +img.jsHover { /*not used */ + border: 1px solid #99CCFF; +} +/* End Pager */ +/*multiselect checkbox */ +.cbox { + height: 10px; + width: 10px; + /*border:1px solid #999;*/ +} +/* end multiselect */ + + +/* loading div */ +div.loading { + position: absolute; + padding: 3px; + text-align: center; + font-weight: bold; + background: red; + color: white; + display: none; +} + +div.loadingui { + display:none; + z-index:6000; + position:absolute; +} + + +div.loadingui div.msgbox { + position: relative; + z-index:6001; + left: 35%; + top:45%; + background: url(../images/jqGrid.basic.theme/loading.gif) no-repeat left; + width: 100px; + border: 2px solid #B2D2FF; + text-align: right; + height: auto; + padding:2px; + margin: 0px; +} + +/* end loading div */ +/* toolbar */ +div.userdata { + margin-top: 0px; + background-color : #fffcf2; + height : 20px; + border-left: 1px solid #3c964b; + border-right: 1px solid #3c964b; + overflow: hidden; +} +/* end toolbar */ +/*Subgrid text mode*/ +.subgrid { + height: 100%; + overflow: auto; +} +.tablediv { + background-color: White; + border-spacing: 1px; /*cellspacing:poor IE support for this*/ + border-collapse: separate; + width:100%; /* FF hack poor when scroling subgrid */ +} +.celldiv { + float: left; + display: table-cell; + border: 1px dotted #CCCCCC; + overflow: auto; + white-space: normal; +} +.celldivth { + float: left; /*fix for buggy browsers*/ + border: 1px solid #CCCCCC; + background-color: #99CCFF; + border-bottom: 1px solid #CBC7B8; + text-align: left; + overflow: auto; +} +.rowdiv { + display: table-row; + background: #F9F9F9 none; + color: #000000; + width: 100%; + overflow:auto; +} +/* End Subgrid */ + +/* InLine editing */ +input.editable[type="text"] { + font-size: x-small; + overflow: hidden; +} +input.editable[type="checkbox"] { +} + +textarea.editable { + overflow-y: auto; +} + +select.editable { + font-size: x-small; +} +/* End Inline Editing */ + + +/* Modal window */ +.modaltext{ /*caption */ + text-align : left; +} +.modalwin{ + border:1px solid #555555; + text-align:left; + margin: 0 auto; + background: #F9F9F9; + overflow: auto; +} + +.modalhead{ + background-image: url(../images/jqGrid.basic.theme/grid-blue-hd.gif); + height: 20px; +} +.modalcontent { + overflow : auto; + background:#F9F9F9; + margin-bottom: 10px; + margin-left: 5px; +} +/* End modal window */ +/*search dialog */ +input.search { + margin: 2px; + width: 70px; + font-size: 10px; + color: #15428B; +} + +select.search { + margin: 2px; + width: 70px; + font-size: 10px; + color: #15428B; +} +.buttonsearch { + width : 50px; + font-size: 10px; + color: #15428B; +} +/*End search */ + +/* Form edit */ + +.FormGrid { + margin: 0px; +} +.EditTable { + width: 100%; +} + +.FormData { /* tr */ + +} +#FormError td { + font-size: 90%; + color: #FF0000; + vertical-align: top; + background-color: #f7f7f7; +} + +.CaptionTD{ /* td */ + font-weight: normal; text-align: left; vertical-align: top; + padding: 1px; + border-top: 1px solid #D4D0C8; + white-space: nowrap; + color: #000000; +} +.DataTD { /* td */ + padding: 1px; + border-top: 1px solid #D4D0C8; + vertical-align: top; +} +.navButton{ + border-top: 1px solid #D4D0C8; + border-bottom: 1px solid #D4D0C8; + text-align: center; +} +.navButton input { + width:18px; +} +input.EditButton { /* buttons are at footer tr */ + font-size: 10px; + color: #15428B; +} +td.EditButton { + text-align: right; + border-top: 1px solid #D4D0C8; + border-bottom: 1px solid #D4D0C8; +} + +.FormElement { /* form element - input -text,textarea,checkbox - select */ + +} +.FormElement { + font-size: 10px; +} +input[type="text"].FormElement{ + color: #15428B; +} +input[type="checkbox"].FormElement{ + width: 15px; + color: #15428B; +} +input[type="textarea"].FormElement{ + color: #15428B; +} +select.FormElement { + font-size: 10px; + color: #15428B; +} +/* End Eorm edit */ + +/*delete dialog */ +.DelButton > input { /* buttons are at footer tr */ + font-size: 10px; + color: #15428B; +} +.DelButton { + text-align: right; +} +/* End Delete Dialog */ +/* Resizing corner */ +img.jqResize { + position:absolute; + bottom: 0px; + right: 0px; + cursor :se-resize; +} +.dirty-cell { + background: transparent url(../images/jqGrid.basic.theme/dirty.gif) no-repeat 0 0; +} +#DelError td { + font-size: 90%; + color: #FF0000; + vertical-align: top; + background-color: #f7f7f7; +} + +/* Tree Grid */ +.tree-wrap +{ + float: left; + position: relative; + height: 18px; + white-space: nowrap; + overflow: hidden; +} +.tree-minus +{ + position: absolute; + height: 18px; + width: 16px; + overflow: hidden; + background: url(../images/jqGrid.basic.theme/tree_minus.gif) no-repeat; +} +.tree-plus +{ + position: absolute; + height: 18px; + width: 16px; + overflow: hidden; + background: url(../images/jqGrid.basic.theme/tree_plus.gif) no-repeat; +} +.tree-leaf +{ + position: absolute; + height: 18px; + width: 16px; + overflow: hidden; + background: url(../images/jqGrid.basic.theme/tree_leaf.gif) no-repeat; +} +.treeclick +{ + cursor: pointer; +} +.edit-cell { + background-color: #FFDEAD !important; +} +.selected-row, .selected-row TD { + background-color: #3c964b; +} Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/cd_run.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/dirty.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/down.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/find.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/first.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/folder.png =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/grid-blue-ft.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/grid-blue-hd.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/headerbg.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/headerleft.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/headerright.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/ico-close.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/last.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/leaf.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/line3.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/loading.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/minus.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/next.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/nochild.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/off-first.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/off-last.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/off-next.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/off-prev.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/plus.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/prev.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/refresh.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/resize.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/row_add.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/row_delete.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/row_edit.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/sort_asc.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/sort_desc.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/spacer.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/tab_close-on.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/tree_leaf.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/tree_minus.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/tree_plus.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/images/jqGrid.basic.theme/up.gif =================================================================== diff -u Binary files differ Index: lams_tool_assessment/web/includes/javascript/jqGrid/JsonXml.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/JsonXml.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/JsonXml.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,345 @@ +/* + The below work is licensed under Creative Commons GNU LGPL License. + + Original work: + + License: http://creativecommons.org/licenses/LGPL/2.1/ + Author: Stefan Goessner/2006 + Web: http://goessner.net/ + + Modifications made: + + Version: 0.9-p5 + Description: Restructured code, JSLint validated (no strict whitespaces), + added handling of empty arrays, empty strings, and int/floats values. + Author: Michael Schøler/2008-01-29 + Web: http://michael.hinnerup.net/blog/2008/01/26/converting-json-to-xml-and-xml-to-json/ + + Description: json2xml added support to convert functions as CDATA + so it will be easy to write characters that cause some problems when convert + Author: Tony Tomov +*/ + +/*global alert */ +var xmlJsonClass = { + // Param "xml": Element or document DOM node. + // Param "tab": Tab or indent string for pretty output formatting omit or use empty string "" to supress. + // Returns: JSON string + xml2json: function(xml, tab) { + if (xml.nodeType === 9) { + // document node + xml = xml.documentElement; + } + var nws = this.removeWhite(xml); + var obj = this.toObj(nws); + var json = this.toJson(obj, xml.nodeName, "\t"); + return "{\n" + tab + (tab ? json.replace(/\t/g, tab) : json.replace(/\t|\n/g, "")) + "\n}"; + }, + + // Param "o": JavaScript object + // Param "tab": tab or indent string for pretty output formatting omit or use empty string "" to supress. + // Returns: XML string + json2xml: function(o, tab) { + var toXml = function(v, name, ind) { + var xml = ""; + var i, n; + if (v instanceof Array) { + if (v.length === 0) { + xml += ind + "<"+name+">__EMPTY_ARRAY_\n"; + } + else { + for (i = 0, n = v.length; i < n; i += 1) { + var sXml = ind + toXml(v[i], name, ind+"\t") + "\n"; + xml += sXml; + } + } + } + else if (typeof(v) === "object") { + var hasChild = false; + xml += ind + "<" + name; + var m; + for (m in v) if (v.hasOwnProperty(m)) { + if (m.charAt(0) === "@") { + xml += " " + m.substr(1) + "=\"" + v[m].toString() + "\""; + } + else { + hasChild = true; + } + } + xml += hasChild ? ">" : "/>"; + if (hasChild) { + for (m in v) if (v.hasOwnProperty(m)) { + if (m === "#text") { + xml += v[m]; + } + else if (m === "#cdata") { + xml += ""; + } + else if (m.charAt(0) !== "@") { + xml += toXml(v[m], m, ind+"\t"); + } + } + xml += (xml.charAt(xml.length - 1) === "\n" ? ind : "") + ""; + } + } + else if (typeof(v) === "function") { + xml += ind + "<" + name + ">" + "" + ""; + } + else { + if (v.toString() === "\"\"" || v.toString().length === 0) { + xml += ind + "<" + name + ">__EMPTY_STRING_"; + } + else { + xml += ind + "<" + name + ">" + v.toString() + ""; + } + } + return xml; + }; + var xml = ""; + var m; + for (m in o) if (o.hasOwnProperty(m)) { + xml += toXml(o[m], m, ""); + } + return tab ? xml.replace(/\t/g, tab) : xml.replace(/\t|\n/g, ""); + }, + // Added by Tony Tomov + // parses xml string and convert it to xml Document + parseXml : function (xmlString) { + var xmlDoc; + try { + var parser = new DOMParser(); + xmlDoc = parser.parseFromString(xmlString,"text/xml"); + } + catch(e) { + xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + xmlDoc.async=false; + xmlDoc["loadXM"+"L"](xmlString); + } + return (xmlDoc && xmlDoc.documentElement && xmlDoc.documentElement.tagName != 'parsererror') ? xmlDoc : null; + }, + // Internal methods + toObj: function(xml) { + var o = {}; + var FuncTest = /function/i; + if (xml.nodeType === 1) { + // element node .. + if (xml.attributes.length) { + // element with attributes .. + var i; + for (i = 0; i < xml.attributes.length; i += 1) { + o["@" + xml.attributes[i].nodeName] = (xml.attributes[i].nodeValue || "").toString(); + } + } + if (xml.firstChild) { + // element has child nodes .. + var textChild = 0, cdataChild = 0, hasElementChild = false; + var n; + for (n = xml.firstChild; n; n = n.nextSibling) { + if (n.nodeType === 1) { + hasElementChild = true; + } + else if (n.nodeType === 3 && n.nodeValue.match(/[^ \f\n\r\t\v]/)) { + // non-whitespace text + textChild += 1; + } + else if (n.nodeType === 4) { + // cdata section node + cdataChild += 1; + } + } + if (hasElementChild) { + if (textChild < 2 && cdataChild < 2) { + // structured element with evtl. a single text or/and cdata node .. + this.removeWhite(xml); + for (n = xml.firstChild; n; n = n.nextSibling) { + if (n.nodeType === 3) { + // text node + o["#text"] = this.escape(n.nodeValue); + } + else if (n.nodeType === 4) { + // cdata node + if (FuncTest.test(n.nodeValue)) { + o[n.nodeName] = [o[n.nodeName], n.nodeValue]; + } else { + o["#cdata"] = this.escape(n.nodeValue); + } + } + else if (o[n.nodeName]) { + // multiple occurence of element .. + if (o[n.nodeName] instanceof Array) { + o[n.nodeName][o[n.nodeName].length] = this.toObj(n); + } + else { + o[n.nodeName] = [o[n.nodeName], this.toObj(n)]; + } + } + else { + // first occurence of element .. + o[n.nodeName] = this.toObj(n); + } + } + } + else { + // mixed content + if (!xml.attributes.length) { + o = this.escape(this.innerXml(xml)); + } + else { + o["#text"] = this.escape(this.innerXml(xml)); + } + } + } + else if (textChild) { + // pure text + if (!xml.attributes.length) { + o = this.escape(this.innerXml(xml)); + if (o === "__EMPTY_ARRAY_") { + o = "[]"; + } else if (o === "__EMPTY_STRING_") { + o = ""; + } + } + else { + o["#text"] = this.escape(this.innerXml(xml)); + } + } + else if (cdataChild) { + // cdata + if (cdataChild > 1) { + o = this.escape(this.innerXml(xml)); + } + else { + for (n = xml.firstChild; n; n = n.nextSibling) { + if(FuncTest.test(xml.firstChild.nodeValue)) { + o = xml.firstChild.nodeValue; + break; + } else { + o["#cdata"] = this.escape(n.nodeValue); + } + } + } + } + } + if (!xml.attributes.length && !xml.firstChild) { + o = null; + } + } + else if (xml.nodeType === 9) { + // document.node + o = this.toObj(xml.documentElement); + } + else { + alert("unhandled node type: " + xml.nodeType); + } + return o; + }, + toJson: function(o, name, ind) { + var json = name ? ("\"" + name + "\"") : ""; + if (o === "[]") { + json += (name ? ":[]" : "[]"); + } + else if (o instanceof Array) { + var n, i; + for (i = 0, n = o.length; i < n; i += 1) { + o[i] = this.toJson(o[i], "", ind + "\t"); + } + json += (name ? ":[" : "[") + (o.length > 1 ? ("\n" + ind + "\t" + o.join(",\n" + ind + "\t") + "\n" + ind) : o.join("")) + "]"; + } + else if (o === null) { + json += (name && ":") + "null"; + } + else if (typeof(o) === "object") { + var arr = []; + var m; + for (m in o) if (o.hasOwnProperty(m)) { + arr[arr.length] = this.toJson(o[m], m, ind + "\t"); + } + json += (name ? ":{" : "{") + (arr.length > 1 ? ("\n" + ind + "\t" + arr.join(",\n" + ind + "\t") + "\n" + ind) : arr.join("")) + "}"; + } + else if (typeof(o) === "string") { + var objRegExp = /(^-?\d+\.?\d*$)/; + var FuncTest = /function/i; + o = o.toString(); + if (objRegExp.test(o) || FuncTest.test(o) || o==="false" || o==="true") { + // int or float + json += (name && ":") + o; + } + else { + json += (name && ":") + "\"" + o + "\""; + } + } + else { + json += (name && ":") + o.toString(); + } + return json; + }, + innerXml: function(node) { + var s = ""; + if ("innerHTML" in node) { + s = node.innerHTML; + } + else { + var asXml = function(n) { + var s = "", i; + if (n.nodeType === 1) { + s += "<" + n.nodeName; + for (i = 0; i < n.attributes.length; i += 1) { + s += " " + n.attributes[i].nodeName + "=\"" + (n.attributes[i].nodeValue || "").toString() + "\""; + } + if (n.firstChild) { + s += ">"; + for (var c = n.firstChild; c; c = c.nextSibling) { + s += asXml(c); + } + s += ""; + } + else { + s += "/>"; + } + } + else if (n.nodeType === 3) { + s += n.nodeValue; + } + else if (n.nodeType === 4) { + s += ""; + } + return s; + }; + for (var c = node.firstChild; c; c = c.nextSibling) { + s += asXml(c); + } + } + return s; + }, + escape: function(txt) { + return txt.replace(/[\\]/g, "\\\\").replace(/[\"]/g, '\\"').replace(/[\n]/g, '\\n').replace(/[\r]/g, '\\r'); + }, + removeWhite: function(e) { + e.normalize(); + var n; + for (n = e.firstChild; n; ) { + if (n.nodeType === 3) { + // text node + if (!n.nodeValue.match(/[^ \f\n\r\t\v]/)) { + // pure whitespace text node + var nxt = n.nextSibling; + e.removeChild(n); + n = nxt; + } + else { + n = n.nextSibling; + } + } + else if (n.nodeType === 1) { + // element node + this.removeWhite(n); + n = n.nextSibling; + } + else { + // any other node + n = n.nextSibling; + } + } + return e; + } +}; \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.base.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.base.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.base.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,1586 @@ +;(function ($) { +/* + * jqGrid 3.4.3 - jQuery Grid + * Copyright (c) 2008, Tony Tomov, tony@trirand.com + * Dual licensed under the MIT and GPL licenses + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * Date: 2009-03-12 rev 84 + */ +$.fn.jqGrid = function( p ) { + p = $.extend(true,{ + url: "", + height: 150, + page: 1, + rowNum: 20, + records: 0, + pager: "", + pgbuttons: true, + pginput: true, + colModel: [], + rowList: [], + colNames: [], + sortorder: "asc", + sortname: "", + datatype: "xml", + mtype: "GET", + imgpath: "", + sortascimg: "sort_asc.gif", + sortdescimg: "sort_desc.gif", + firstimg: "first.gif", + previmg: "prev.gif", + nextimg: "next.gif", + lastimg: "last.gif", + altRows: true, + selarrrow: [], + savedRow: [], + shrinkToFit: true, + xmlReader: {}, + jsonReader: {}, + subGrid: false, + subGridModel :[], + lastpage: 0, + lastsort: 0, + selrow: null, + beforeSelectRow: null, + onSelectRow: null, + onSortCol: null, + ondblClickRow: null, + onRightClickRow: null, + onPaging: null, + onSelectAll: null, + loadComplete: null, + gridComplete: null, + loadError: null, + loadBeforeSend: null, + afterInsertRow: null, + beforeRequest: null, + onHeaderClick: null, + viewrecords: false, + loadonce: false, + multiselect: false, + multikey: false, + editurl: null, + search: false, + searchdata: {}, + caption: "", + hidegrid: true, + hiddengrid: false, + postData: {}, + userData: {}, + treeGrid : false, + treeGridModel : 'nested', + treeReader : {}, + treeANode : 0, + ExpandColumn: null, + tree_root_level : 0, + prmNames: {page:"page",rows:"rows", sort: "sidx",order: "sord"}, + sortclass: "grid_sort", + resizeclass: "grid_resize", + forceFit : false, + gridstate : "visible", + cellEdit: false, + cellsubmit: "remote", + nv:0, + loadui: "enable", + toolbar: [false,""], + scroll: false, + multiboxonly : false, + scrollrows : false, + deselectAfterSort: true + }, $.jgrid.defaults, p || {}); + var grid={ + headers:[], + cols:[], + dragStart: function(i,x) { + this.resizing = { idx: i, startX: x}; + this.hDiv.style.cursor = "e-resize"; + }, + dragMove: function(x) { + if(this.resizing) { + var diff = x-this.resizing.startX, + h = this.headers[this.resizing.idx], + newWidth = h.width + diff, hn, nWn; + if(newWidth > 25) { + if(p.forceFit===true ){ + hn = this.headers[this.resizing.idx+p.nv]; + nWn = hn.width - diff; + if(nWn >25) { + h.el.style.width = newWidth+"px"; + h.newWidth = newWidth; + this.cols[this.resizing.idx].style.width = newWidth+"px"; + hn.el.style.width = nWn +"px"; + hn.newWidth = nWn; + this.cols[this.resizing.idx+p.nv].style.width = nWn+"px"; + this.newWidth = this.width; + } + } else { + h.el.style.width = newWidth+"px"; + h.newWidth = newWidth; + this.cols[this.resizing.idx].style.width = newWidth+"px"; + this.newWidth = this.width+diff; + $('table:first',this.bDiv).css("width",this.newWidth +"px"); + $('table:first',this.hDiv).css("width",this.newWidth +"px"); + this.hDiv.scrollLeft = this.bDiv.scrollLeft; + } + } + } + }, + dragEnd: function() { + this.hDiv.style.cursor = "default"; + if(this.resizing) { + var idx = this.resizing.idx; + this.headers[idx].width = this.headers[idx].newWidth || this.headers[idx].width; + this.cols[idx].style.width = this.headers[idx].newWidth || this.headers[idx].width; + // here code to set the width in colmodel + if(p.forceFit===true){ + this.headers[idx+p.nv].width = this.headers[idx+p.nv].newWidth || this.headers[idx+p.nv].width; + this.cols[idx+p.nv].style.width = this.headers[idx+p.nv].newWidth || this.headers[idx+p.nv].width; + } + if(this.newWidth) {this.width = this.newWidth;} + this.resizing = false; + } + }, + scrollGrid: function() { + if(p.scroll === true) { + var scrollTop = this.bDiv.scrollTop; + if (scrollTop != this.scrollTop) { + this.scrollTop = scrollTop; + if ((this.bDiv.scrollHeight-scrollTop-$(this.bDiv).height()) <= 0) { + if(parseInt(p.page,10)+1<=parseInt(p.lastpage,10)) { + p.page = parseInt(p.page,10)+1; + this.populate(); + } + } + } + } + this.hDiv.scrollLeft = this.bDiv.scrollLeft; + } + }; + $.fn.getGridParam = function(pName) { + var $t = this[0]; + if (!$t.grid) {return;} + if (!pName) { return $t.p; } + else {return $t.p[pName] ? $t.p[pName] : null;} + }; + $.fn.setGridParam = function (newParams){ + return this.each(function(){ + if (this.grid && typeof(newParams) === 'object') {$.extend(true,this.p,newParams);} + }); + }; + $.fn.getDataIDs = function () { + var ids=[]; + this.each(function(){ + $(this.rows).slice(1).each(function(i){ + ids[i]=this.id; + }); + }); + return ids; + }; + $.fn.setSortName = function (newsort) { + return this.each(function(){ + var $t = this; + for(var i=0;i< $t.p.colModel.length;i++){ + if($t.p.colModel[i].name===newsort || $t.p.colModel[i].index===newsort){ + $("tr th:eq("+$t.p.lastsort+") div img",$t.grid.hDiv).remove(); + $t.p.lastsort = i; + $t.p.sortname=newsort; + break; + } + } + }); + }; + $.fn.setSelection = function(selection,onsr,sd) { + return this.each(function(){ + var $t = this, stat,pt, ind; + onsr = onsr === false ? false : true; + if(selection===false) {pt = sd;} + else { ind = $($t).getInd($t.rows,selection); pt=$($t.rows[ind]);} + selection = $(pt).attr("id"); + if (!pt.html()) {return;} + if($t.p.selrow && $t.p.scrollrows===true) { + var olr = $($t).getInd($t.rows,$t.p.selrow); + var ner = $($t).getInd($t.rows,selection); + if(ner >=0 ){ + if(ner > olr ) { + scrGrid(ner,'d'); + } else { + scrGrid(ner,'u'); + } + } + } + if(!$t.p.multiselect) { + if($(pt).attr("class") !== "subgrid") { + if( $t.p.selrow ) {$("tr#"+$t.p.selrow.replace(".", "\\."),$t.grid.bDiv).removeClass("selected");} + $t.p.selrow = selection; + $(pt).addClass("selected"); + if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow($t.p.selrow, true); } + } + } else { + $t.p.selrow = selection; + var ia = $.inArray($t.p.selrow,$t.p.selarrrow); + if ( ia === -1 ){ + if($(pt).attr("class") !== "subgrid") { $(pt).addClass("selected");} + stat = true; + $("#jqg_"+$t.p.selrow.replace(".", "\\.") ,$t.rows).attr("checked",stat); + $t.p.selarrrow.push($t.p.selrow); + if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow($t.p.selrow, stat); } + } else { + if($(pt).attr("class") !== "subgrid") { $(pt).removeClass("selected");} + stat = false; + $("#jqg_"+$t.p.selrow.replace(".", "\\.") ,$t.rows).attr("checked",stat); + $t.p.selarrrow.splice(ia,1); + if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow($t.p.selrow, stat); } + var tpsr = $t.p.selarrrow[0]; + $t.p.selrow = (tpsr==undefined) ? null : tpsr; + } + } + function scrGrid(iR,tp){ + var ch = $($t.grid.bDiv)[0].clientHeight, + st = $($t.grid.bDiv)[0].scrollTop, + nROT = $t.rows[iR].offsetTop+$t.rows[iR].clientHeight, + pROT = $t.rows[iR].offsetTop; + if(tp == 'd') { + if(nROT >= ch) { $($t.grid.bDiv)[0].scrollTop = st + nROT-pROT; } + } + if(tp == 'u'){ + if (pROT < st) { $($t.grid.bDiv)[0].scrollTop = st - nROT+pROT; } + } + } + }); + }; + $.fn.resetSelection = function(){ + return this.each(function(){ + var t = this, ind; + if(!t.p.multiselect) { + if(t.p.selrow) { + $("tr#"+t.p.selrow.replace(".", "\\."),t.grid.bDiv).removeClass("selected"); + t.p.selrow = null; + } + } else { + $(t.p.selarrrow).each(function(i,n){ + ind = $(t).getInd(t.rows,n); + $(t.rows[ind]).removeClass("selected"); + $("#jqg_"+n.replace(".", "\\."),t.rows[ind]).attr("checked",false); + }); + $("#cb_jqg",t.grid.hDiv).attr("checked",false); + t.p.selarrrow = []; + } + }); + }; + $.fn.getRowData = function( rowid ) { + var res = {}; + if (rowid){ + this.each(function(){ + var $t = this,nm,ind; + ind = $($t).getInd($t.rows,rowid); + if (!ind) {return res;} + $('td',$t.rows[ind]).each( function(i) { + nm = $t.p.colModel[i].name; + if ( nm !== 'cb' && nm !== 'subgrid') { + if($t.p.treeGrid===true && nm == $t.p.ExpandColumn) { + res[nm] = $.htmlDecode($("span:first",this).html()); + } else { + res[nm] = $.htmlDecode($(this).html()); + } + } + }); + }); + } + return res; + }; + $.fn.delRowData = function(rowid) { + var success = false, rowInd, ia; + if(rowid) { + this.each(function() { + var $t = this; + rowInd = $($t).getInd($t.rows,rowid); + if(!rowInd) {return false;} + else { + $($t.rows[rowInd]).remove(); + $t.p.records--; + $t.updatepager(); + success=true; + if(rowid == $t.p.selrow) {$t.p.selrow=null;} + ia = $.inArray(rowid,$t.p.selarrrow); + if(ia != -1) {$t.p.selarrrow.splice(ia,1);} + } + if(rowInd == 1 && success && ($.browser.opera || $.browser.safari)) { + $($t.rows[1]).each( function( k ) { + $(this).css("width",$t.grid.headers[k].width+"px"); + $t.grid.cols[k] = this; + }); + } + if( $t.p.altRows === true && success) { + $($t.rows).slice(1).each(function(i){ + if(i % 2 ==1) {$(this).addClass('alt');} + else {$(this).removeClass('alt');} + }); + } + }); + } + return success; + }; + $.fn.setRowData = function(rowid, data) { + var nm, success=false; + this.each(function(){ + var t = this, vl, ind, ttd; + if(!t.grid) {return false;} + if( data ) { + ind = $(t).getInd(t.rows,rowid); + if(!ind) {return false;} + success=true; + $(this.p.colModel).each(function(i){ + nm = this.name; + vl = data[nm]; + if( vl !== undefined ) { + if(t.p.treeGrid===true && nm == t.p.ExpandColumn) { + ttd = $("td:eq("+i+") > span:first",t.rows[ind]); + } else { + ttd = $("td:eq("+i+")",t.rows[ind]); + } + t.formatter(ttd, t.rows[ind], vl, i, 'edit'); + success = true; + } + }); + } + }); + return success; + }; + $.fn.addRowData = function(rowid,data,pos,src) { + if(!pos) {pos = "last";} + var success = false, nm, row, td, gi=0, si=0,sind, i; + if(data) { + this.each(function() { + var t = this; + row = document.createElement("tr"); + row.id = rowid || t.p.records+1; + $(row).addClass("jqgrow"); + if(t.p.multiselect) { + td = $(''); + $(td[0],t.grid.bDiv).html(""); + row.appendChild(td[0]); + gi = 1; + } + if(t.p.subGrid ) { try {$(t).addSubGrid(t.grid.bDiv,row,gi);} catch(e){} si=1;} + for(i = gi+si; i < this.p.colModel.length;i++){ + nm = this.p.colModel[i].name; + td = $(''); + t.formatter(td, row, data[nm], i, 'add'); + t.formatCol($(td[0],t.grid.bDiv),i); + row.appendChild(td[0]); + } + switch (pos) { + case 'last': + $(t.rows[t.rows.length-1]).after(row); + break; + case 'first': + $(t.rows[0]).after(row); + break; + case 'after': + sind = $(t).getInd(t.rows,src); + sind >= 0 ? $(t.rows[sind]).after(row): ""; + break; + case 'before': + sind = $(t).getInd(t.rows,src); + sind > 0 ? $(t.rows[sind-1]).after(row): ""; + break; + } + t.p.records++; + if($.browser.safari || $.browser.opera) { + t.scrollLeft = t.scrollLeft; + $("td",t.rows[1]).each( function( k ) { + $(this).css("width",t.grid.headers[k].width+"px"); + t.grid.cols[k] = this; + }); + } + if( t.p.altRows === true ) { + if (pos == "last") { + if (t.rows.length % 2 == 1) {$(row).addClass('alt');} + } else { + $(t.rows).slice(1).each(function(i){ + if(i % 2 ==1) {$(this).addClass('alt');} + else {$(this).removeClass('alt');} + }); + } + } + try {t.p.afterInsertRow(row.id,data); } catch(e){} + t.updatepager(); + success = true; + }); + } + return success; + }; + $.fn.hideCol = function(colname) { + return this.each(function() { + var $t = this,w=0, fndh=false, gtw; + if (!$t.grid ) {return;} + if( typeof colname == 'string') {colname=[colname];} + $(this.p.colModel).each(function(i) { + if ($.inArray(this.name,colname) != -1 && !this.hidden) { + w = parseInt($("tr th:eq("+i+")",$t.grid.hDiv).css("width"),10); + $("tr th:eq("+i+")",$t.grid.hDiv).css({display:"none"}); + $($t.rows).each(function(j){ + $("td:eq("+i+")",$t.rows[j]).css({display:"none"}); + }); + $t.grid.cols[i].style.width = 0; + $t.grid.headers[i].width = 0; + $t.grid.width -= w; + this.hidden=true; + fndh=true; + } + }); + if(fndh===true) { + gtw = Math.min($t.p._width,$t.grid.width); + $("table:first",$t.grid.hDiv).width(gtw); + $("table:first",$t.grid.bDiv).width(gtw); + $($t.grid.hDiv).width(gtw); + $($t.grid.bDiv).width(gtw); + if($t.p.pager && $($t.p.pager).hasClass("scroll") ) { + $($t.p.pager).width(gtw); + } + if($t.p.caption) {$($t.grid.cDiv).width(gtw);} + if($t.p.toolbar[0]) {$($t.grid.uDiv).width(gtw);} + $t.grid.hDiv.scrollLeft = $t.grid.bDiv.scrollLeft; + } + }); + }; + $.fn.showCol = function(colname) { + return this.each(function() { + var $t = this, w = 0, fdns=false, gtw, ofl; + if (!$t.grid ) {return;} + if( typeof colname == 'string') {colname=[colname];} + $($t.p.colModel).each(function(i) { + if ($.inArray(this.name,colname) != -1 && this.hidden) { + w = parseInt($("tr th:eq("+i+")",$t.grid.hDiv).css("width"),10); + $("tr th:eq("+i+")",$t.grid.hDiv).css("display",""); + $($t.rows).each(function(j){ + $("td:eq("+i+")",$t.rows[j]).css("display","").width(w); + }); + this.hidden=false; + $t.grid.cols[i].style.width = w; + $t.grid.headers[i].width = w; + $t.grid.width += w; + fdns=true; + } + }); + if(fdns===true) { + gtw = Math.min($t.p._width,$t.grid.width); + ofl = ($t.grid.width <= $t.p._width) ? "hidden" : "auto"; + $("table:first",$t.grid.hDiv).width(gtw); + $("table:first",$t.grid.bDiv).width(gtw); + $($t.grid.hDiv).width(gtw); + $($t.grid.bDiv).width(gtw).css("overflow-x",ofl); + if($t.p.pager && $($t.p.pager).hasClass("scroll") ) { + $($t.p.pager).width(gtw); + } + if($t.p.caption) {$($t.grid.cDiv).width(gtw);} + if($t.p.toolbar[0]) {$($t.grid.uDiv).width(gtw);} + $t.grid.hDiv.scrollLeft = $t.grid.bDiv.scrollLeft; + } + }); + }; + $.fn.setGridWidth = function(nwidth, shrink) { + return this.each(function(){ + var $t = this, chw=0,w,cw,ofl; + if (!$t.grid ) {return;} + if(typeof shrink != 'boolean') {shrink=true;} + var testdata = getScale(); + if(shrink !== true) {testdata[0] = Math.min($t.p._width,$t.grid.width); testdata[2]=0;} + else {testdata[2]= testdata[1]} + $.each($t.p.colModel,function(i,v){ + if(!this.hidden && this.name != 'cb' && this.name!='subgrid') { + cw = shrink !== true ? $("tr:first th:eq("+i+")",$t.grid.hDiv).css("width") : this.width; + w = Math.floor((IENum(nwidth)-IENum(testdata[2]))/IENum(testdata[0])*IENum(cw)); + chw += w; + $("table thead tr:first th:eq("+i+")",$t.grid.hDiv).css("width",w+"px"); + $("table:first tbody tr:first td:eq("+i+")",$t.grid.bDiv).css("width",w+"px"); + $t.grid.cols[i].style.width = w; + $t.grid.headers[i].width = w; + } + if(this.name=='cb' || this.name == 'subgrid'){chw += IENum(this.width);} + }); + if(chw + testdata[1] <= nwidth || $t.p.forceFit === true){ ofl = "hidden"; tw = nwidth;} + else { ofl= "auto"; tw = chw + testdata[1];} + $("table:first",$t.grid.hDiv).width(tw); + $("table:first",$t.grid.bDiv).width(tw); + $($t.grid.hDiv).width(nwidth); + $($t.grid.bDiv).width(nwidth).css("overflow-x",ofl); + if($t.p.pager && $($t.p.pager).hasClass("scroll") ) { + $($t.p.pager).width(nwidth); + } + if($t.p.caption) {$($t.grid.cDiv).width(nwidth);} + if($t.p.toolbar[0]) {$($t.grid.uDiv).width(nwidth);} + $t.p._width = nwidth; $t.grid.width = tw; + if($.browser.safari || $.browser.opera ) { + $("table tbody tr:eq(1) td",$t.grid.bDiv).each( function( k ) { + $(this).css("width",$t.grid.headers[k].width+"px"); + $t.grid.cols[k] = this; + }); + } + $t.grid.hDiv.scrollLeft = $t.grid.bDiv.scrollLeft; + function IENum(val) { + val = parseInt(val,10); + return isNaN(val) ? 0 : val; + } + function getScale(){ + var testcell = $("table tr:first th:eq(1)", $t.grid.hDiv); + var addpix = IENum($(testcell).css("padding-left")) + + IENum($(testcell).css("padding-right"))+ + IENum($(testcell).css("border-left-width"))+ + IENum($(testcell).css("border-right-width")); + var w =0,ap=0; + $.each($t.p.colModel,function(i,v){ + if(!this.hidden) { + w += parseInt(this.width); + ap += addpix; + } + }); + return [w,ap,0]; + } + }); + }; + $.fn.setGridHeight = function (nh) { + return this.each(function (){ + var ovfl, ovfl2, $t = this; + if(!$t.grid) {return;} + if($t.p.forceFit === true) { ovfl2='hidden'; } else {ovfl2=$($t.grid.bDiv).css("overflow-x");} + ovfl = (isNaN(nh) && $.browser.mozilla && (nh.indexOf("%")!=-1 || nh=="auto")) ? "hidden" : "auto"; + $($t.grid.bDiv).css({height: nh+(isNaN(nh)?"":"px"),"overflow-y":ovfl,"overflow-x": ovfl2}); + $t.p.height = nh; + }); + }; + $.fn.setCaption = function (newcap){ + return this.each(function(){ + this.p.caption=newcap; + $("table:first th",this.grid.cDiv).html(newcap); + $(this.grid.cDiv).show(); + }); + }; + $.fn.setLabel = function(colname, nData, prop, attrp ){ + return this.each(function(){ + var $t = this, pos=-1; + if(!$t.grid) {return;} + if(isNaN(colname)) { + $($t.p.colModel).each(function(i){ + if (this.name == colname) { + pos = i;return false; + } + }); + } else {pos = parseInt(colname,10);} + if(pos>=0) { + var thecol = $("table:first th:eq("+pos+")",$t.grid.hDiv); + if (nData){ + $("div",thecol).html(nData); + } + if (prop) { + if(typeof prop == 'string') {$(thecol).addClass(prop);} else {$(thecol).css(prop);} + } + if(typeof attrp == 'object') {$(thecol).attr(attrp);} + } + }); + }; + $.fn.setCell = function(rowid,colname,nData,cssp,attrp) { + return this.each(function(){ + var $t = this, pos =-1; + if(!$t.grid) {return;} + if(isNaN(colname)) { + $($t.p.colModel).each(function(i){ + if (this.name == colname) { + pos = i;return false; + } + }); + } else {pos = parseInt(colname,10);} + if(pos>=0) { + var ind = $($t).getInd($t.rows,rowid); + if (ind>=0){ + var tcell = $("td:eq("+pos+")",$t.rows[ind]); + if(nData != "") { + $t.formatter(tcell, $t.rows[ind], nData, pos,'edit'); + } + if (cssp){ + if(typeof cssp == 'string') {$(tcell).addClass(cssp);} else {$(tcell).css(cssp);} + } + if(typeof attrp == 'object') {$(tcell).attr(attrp);} + } + } + }); + }; + $.fn.getCell = function(rowid,col) { + var ret = false; + this.each(function(){ + var $t=this, pos=-1; + if(!$t.grid) {return;} + if(isNaN(col)) { + $($t.p.colModel).each(function(i){ + if (this.name == col) { + pos = i;return false; + } + }); + } else {pos = parseInt(col,10);} + if(pos>=0) { + var ind = $($t).getInd($t.rows,rowid); + if(ind>=0) { + ret = $.htmlDecode($("td:eq("+pos+")",$t.rows[ind]).html()); + } + } + }); + return ret; + }; + $.fn.clearGridData = function() { + return this.each(function(){ + var $t = this; + if(!$t.grid) {return;} + $("tbody tr:gt(0)", $t.grid.bDiv).remove(); + $t.p.selrow = null; $t.p.selarrrow= []; $t.p.savedRow = []; + $t.p.records = '0';$t.p.page='0';$t.p.lastpage='0'; + $t.updatepager(); + }); + }; + $.fn.getInd = function(obj,rowid,rc){ + var ret =false; + $(obj).each(function(i){ + if(this.id==rowid) { + ret = rc===true ? this : i; + return false; + } + }); + return ret; + }; + $.htmlDecode = function(value){ + if(value==' ' || value==' ') {value = "";} + return !value ? value : String(value).replace(/&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, '"'); + }; + return this.each( function() { + if(this.grid) {return;} + this.p = p ; + if(this.p.colNames.length === 0) { + for (var i=0;i
    "+this.p.loadtext+"
    ").insertBefore(this); + $(this).attr({cellSpacing:"0",cellPadding:"0",border:"0"}); + var ts = this, + bSR = $.isFunction(this.p.beforeSelectRow) ? this.p.beforeSelectRow :false, + onSelectRow = $.isFunction(this.p.onSelectRow) ? this.p.onSelectRow :false, + ondblClickRow = $.isFunction(this.p.ondblClickRow) ? this.p.ondblClickRow :false, + onSortCol = $.isFunction(this.p.onSortCol) ? this.p.onSortCol : false, + loadComplete = $.isFunction(this.p.loadComplete) ? this.p.loadComplete : false, + loadError = $.isFunction(this.p.loadError) ? this.p.loadError : false, + loadBeforeSend = $.isFunction(this.p.loadBeforeSend) ? this.p.loadBeforeSend : false, + onRightClickRow = $.isFunction(this.p.onRightClickRow) ? this.p.onRightClickRow : false, + afterInsRow = $.isFunction(this.p.afterInsertRow) ? this.p.afterInsertRow : false, + onHdCl = $.isFunction(this.p.onHeaderClick) ? this.p.onHeaderClick : false, + beReq = $.isFunction(this.p.beforeRequest) ? this.p.beforeRequest : false, + onSC = $.isFunction(this.p.onCellSelect) ? this.p.onCellSelect : false, + sortkeys = ["shiftKey","altKey","ctrlKey"]; + if ($.inArray(ts.p.multikey,sortkeys) == -1 ) {ts.p.multikey = false;} + var IntNum = function(val,defval) { + val = parseInt(val,10); + if (isNaN(val)) { return (defval) ? defval : 0;} + else {return val;} + }; + var formatCol = function (elem, pos){ + var ral = ts.p.colModel[pos].align; + if(ral) { $(elem).css("text-align",ral);} + if(ts.p.colModel[pos].hidden) {$(elem).css("display","none");} + }; + var resizeFirstRow = function (t,er){ + $("tbody tr:eq("+er+") td",t).each( function( k ) { + $(this).css("width",grid.headers[k].width+"px"); + grid.cols[k] = this; + }); + }; + var addCell = function(t,row,cell,pos) { + var td; + td = document.createElement("td"); + formatter($(td,t),row,cell,pos,'add'); + row.appendChild(td); + formatCol($(td,t), pos); + }; + var formatter = function (elem, row, cellval , colpos, act){ + var cm = ts.p.colModel[colpos]; + if(cm.formatter) { + var opts= {rowId: row.id, colModel:cm,rowData:row}; + if($.isFunction( cm.formatter ) ) { + cm.formatter(elem,cellval,opts,act); + } else if($.fmatter){ + $(elem).fmatter(cm.formatter, cellval,opts, act); + } else { + $(elem).html(cellval || ' '); + } + }else { + $(elem).html(cellval || ' '); + } + elem[0].title = elem[0].textContent || elem[0].innerText; + }; + var addMulti = function(t,row){ + var cbid,td; + td = document.createElement("td"); + cbid = "jqg_"+row.id; + $(td,t).html(""); + formatCol($(td,t), 0); + row.appendChild(td); + }; + var reader = function (datatype) { + var field, f=[], j=0, i; + for(i =0; i= ts.p.keyIndex) ? $(f[ts.p.keyIndex],trow).text() : $(ts.p.xmlReader.cell+":eq("+ts.p.keyIndex+")",trow).text(); }; + } + $(ts.p.xmlReader.page,xml).each(function() {ts.p.page = this.textContent || this.text ; }); + $(ts.p.xmlReader.total,xml).each(function() {ts.p.lastpage = this.textContent || this.text ; } ); + $(ts.p.xmlReader.records,xml).each(function() {ts.p.records = this.textContent || this.text ; } ); + $(ts.p.xmlReader.userdata,xml).each(function() {ts.p.userData[this.getAttribute("name")]=this.textContent || this.text;}); + $(ts.p.xmlReader.root+" "+ts.p.xmlReader.row,xml).each( function( j ) { + row = document.createElement("tr"); + row.id = getId(this,j+1); + if(ts.p.multiselect) { + addMulti(t,row); + gi = 1; + } + if (ts.p.subGrid) { + try {$(ts).addSubGrid(t,row,gi,this);} catch (e){} + si= 1; + } + if(ts.p.xmlReader.repeatitems===true){ + $(ts.p.xmlReader.cell,this).each( function (i) { + v = this.textContent || this.text; + addCell(t,row,v,i+gi+si); + rd[ts.p.colModel[i+gi+si].name] = v; + }); + } else { + for(var i = 0; i < f.length;i++) { + v = $(f[i],this).text(); + addCell(t, row, v , i+gi+si); + rd[ts.p.colModel[i+gi+si].name] = v; + } + } + if(j%2 == 1) {row.className = cn;} $(row).addClass("jqgrow"); + if( ts.p.treeGrid === true) { + try {$(ts).setTreeNode(rd,row);} catch (e) {} + ts.p.treeANode = 0; + } + $(ts.rows[j+fpos+rcnt]).after(row); + if(afterInsRow) {ts.p.afterInsertRow(row.id,rd,this);} + rd=[]; + }); + if(isSafari || isOpera) {resizeFirstRow(t,1);} + if(!ts.p.treeGrid && !ts.p.scroll) {ts.grid.bDiv.scrollTop = 0;} + endReq(); + updatepager(); + }; + var addJSONData = function(data,t, rcnt) { + if(data) { var fpos = ts.p.treeANode || 0; rcnt = rcnt || 0; if(fpos===0 && rcnt===0) {$("tbody tr:gt(0)", t).remove();} } else { return; } + var v,i,j,row,f=[],cur,gi=0,si=0,drows,idn,rd=[],cn=(ts.p.altRows===true) ? 'alt':''; + ts.p.page = data[ts.p.jsonReader.page]; + ts.p.lastpage= data[ts.p.jsonReader.total]; + ts.p.records= data[ts.p.jsonReader.records]; + ts.p.userData = data[ts.p.jsonReader.userdata] || {}; + if(!ts.p.jsonReader.repeatitems) {f = reader("json");} + if( ts.p.keyIndex===false ) { + idn = ts.p.jsonReader.id; + if(f.length>0 && !isNaN(idn)) {idn=f[idn];} + } else { + idn = f.length>0 ? f[ts.p.keyIndex] : ts.p.keyIndex; + } + drows = data[ts.p.jsonReader.root]; + if (drows) { + for (i=0;i 0) { + try { sv = $.unformat($(row).children('td').eq(col),{colModel:ts.p.colModel[col]},col,true);} + catch (_) { sv = $(row).children('td').eq(col).text(); } + row.sortKey = findSortKey(sv); + rows[index-1] = this; + } + }); + if(ts.p.treeGrid) { + $(ts).SortTree( newDir); + } else { + rows.sort(function(a, b) { + if (a.sortKey < b.sortKey) {return -newDir;} + if (a.sortKey > b.sortKey) {return newDir;} + return 0; + }); + $.each(rows, function(index, row) { + $('tbody',ts.grid.bDiv).append(row); + row.sortKey = null; + }); + } + if(isSafari || isOpera) {resizeFirstRow(ts.grid.bDiv,1);} + if(ts.p.multiselect) { + $("tbody tr:gt(0)", ts.grid.bDiv).removeClass("selected"); + $("[id^=jqg_]",ts.rows).attr("checked",false); + $("#cb_jqg",ts.grid.hDiv).attr("checked",false); + ts.p.selarrrow = []; + } + if( ts.p.altRows === true ) { + $("tbody tr:gt(0)", ts.grid.bDiv).removeClass("alt"); + $("tbody tr:odd", ts.grid.bDiv).addClass("alt"); + } + ts.grid.bDiv.scrollTop = 0; + endReq(); + }; + var parseDate = function(format, date) { + var tsp = {m : 1, d : 1, y : 1970, h : 0, i : 0, s : 0}; + format = format.toLowerCase(); + date = date.split(/[\\\/:_;.\s-]/); + format = format.split(/[\\\/:_;.\s-]/); + for(var i=0;i= 70 && ty <= 99) {tsp.y = 1900+tsp.y;} + else if (ty >=0 && ty <=69) {tsp.y= 2000+tsp.y;} + return new Date(tsp.y, tsp.m, tsp.d, tsp.h, tsp.i, tsp.s,0); + }; + var setPager = function (){ + var inpt = "" : "", + pgl="", pgr="", str; + if(ts.p.viewrecords===true) {pginp += " ";} + if(ts.p.pgbuttons===true) { + pgl = inpt+" id='first'/>  "+inpt+" id='prev'/> "; + pgr = inpt+" id='next' />  "+inpt+" id='last'/>"; + } + $(ts.p.pager).append(pgl+pginp+pgr); + if(ts.p.rowList.length >0){ + str=""; + $(ts.p.pager).append(" "+str+" "); + $(ts.p.pager).find("select").bind('change',function() { + ts.p.rowNum = this.value; + if (typeof ts.p.onPaging =='function') {ts.p.onPaging('records');} + populate(); + ts.p.selrow = null; + }); + } else { $(ts.p.pager).append(" ");} + if(ts.p.pgbuttons===true) { + $(".pgbuttons",ts.p.pager).mouseover(function(e){ + if($(this).attr('disabled') == 'true') { this.style.cursor='auto';} + else {this.style.cursor= "pointer";} + return false; + }).mouseout(function(e) { + this.style.cursor= "default"; + return false; + }); + $("#first, #prev, #next, #last",ts.p.pager).click( function(e) { + var cp = IntNum(ts.p.page), + last = IntNum(ts.p.lastpage), selclick = false, + fp=true, pp=true, np=true,lp=true; + if(last ===0 || last===1) {fp=false;pp=false;np=false;lp=false; } + else if( last>1 && cp >=1) { + if( cp === 1) { fp=false; pp=false; } + else if( cp>1 && cp 1 && cp===0 ) { np=false;lp=false; cp=last-1;} + if( this.id === 'first' && fp ) { ts.p.page=1; selclick=true;} + if( this.id === 'prev' && pp) { ts.p.page=(cp-1); selclick=true;} + if( this.id === 'next' && np) { ts.p.page=(cp+1); selclick=true;} + if( this.id === 'last' && lp) { ts.p.page=last; selclick=true;} + if(selclick) { + if (typeof ts.p.onPaging =='function') {ts.p.onPaging(this.id);} + populate(); + ts.p.selrow = null; + if(ts.p.multiselect) {ts.p.selarrrow =[];$('#cb_jqg',ts.grid.hDiv).attr("checked",false);} + ts.p.savedRow = []; + } + e.stopPropagation(); + return false; + }); + } + if(ts.p.pginput===true) { + $('input.selbox',ts.p.pager).keypress( function(e) { + var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0; + if(key == 13) { + ts.p.page = ($(this).val()>0) ? $(this).val():ts.p.page; + if (typeof ts.p.onPaging =='function') {ts.p.onPaging( 'user');} + populate(); + ts.p.selrow = null; + return false; + } + return this; + }); + } + }; + var sortData = function (index, idxcol,reload){ + var imgs, so, scg, ls, iId; + if(ts.p.savedRow.length > 0) {return;} + if(!reload) { + if( ts.p.lastsort === idxcol ) { + if( ts.p.sortorder === 'asc') { + ts.p.sortorder = 'desc'; + } else if(ts.p.sortorder === 'desc') { ts.p.sortorder='asc';} + } else { ts.p.sortorder='asc';} + ts.p.page = 1; + } + imgs = (ts.p.sortorder==='asc') ? ts.p.sortascimg : ts.p.sortdescimg; + imgs = ""; + var thd= $("thead:first",grid.hDiv).get(0); + ls = ts.p.colModel[ts.p.lastsort].name.replace('.',"\\."); + $("tr th div#jqgh_"+ls+" img",thd).remove(); + $("tr th div#jqgh_"+ls,thd).parent().removeClass(ts.p.sortclass); + iId = index.replace('.',"\\."); + $("tr th div#"+iId,thd).append(imgs).parent().addClass(ts.p.sortclass); + ts.p.lastsort = idxcol; + index = index.substring(5); + ts.p.sortname = ts.p.colModel[idxcol].index || index; + so = ts.p.sortorder; + if(onSortCol) {onSortCol(index,idxcol,so);} + if(ts.p.datatype == "local") { + if(ts.p.deselectAfterSort) {$(ts).resetSelection();} + } else { + ts.p.selrow = null; + if(ts.p.multiselect){$("#cb_jqg",ts.grid.hDiv).attr("checked",false);} + ts.p.selarrrow =[]; + ts.p.savedRow =[]; + } + scg = ts.p.scroll; if(ts.p.scroll===true) {ts.p.scroll=false;} + populate(); + if(ts.p.sortname != index && idxcol) {ts.p.lastsort = idxcol;} + setTimeout(function() {ts.p.scroll=scg;},500); + }; + var setColWidth = function () { + var initwidth = 0; + for(var l=0;l"); + this.p.colModel.unshift({name:'cb',width:27,sortable:false,resizable:false,hidedlg:true,search:false}); + } + var xReader = { + root: "rows", + row: "row", + page: "rows>page", + total: "rows>total", + records : "rows>records", + repeatitems: true, + cell: "cell", + id: "[id]", + userdata: "userdata", + subgrid: {root:"rows", row: "row", repeatitems: true, cell:"cell"} + }; + var jReader = { + root: "rows", + page: "page", + total: "total", + records: "records", + repeatitems: true, + cell: "cell", + id: "id", + userdata: "userdata", + subgrid: {root:"rows", repeatitems: true, cell:"cell"} + }; + if(ts.p.scroll===true){ + ts.p.pgbuttons = false; ts.p.pginput=false; ts.p.pgtext = false; ts.p.rowList=[]; + } + ts.p.xmlReader = $.extend(xReader, ts.p.xmlReader); + ts.p.jsonReader = $.extend(jReader, ts.p.jsonReader); + $.each(ts.p.colModel, function(i){this.width= IntNum(this.width,150);}); + if (ts.p.width) {setColWidth();} + var thead = document.createElement("thead"); + var trow = document.createElement("tr"); + thead.appendChild(trow); + var i=0, th, idn, thdiv; + if(ts.p.shrinkToFit===true && ts.p.forceFit===true) { + for (i=ts.p.colModel.length-1;i>=0;i--){ + if(!ts.p.colModel[i].hidden) { + ts.p.colModel[i].resizable=false; + break; + } + } + } + for(i=0;i"; + $(thdiv).append(imgs); + ts.p.lastsort = i; + $(th).addClass(ts.p.sortclass); + } + thdiv.id = "jqgh_"+idn; + th.appendChild(thdiv); + trow.appendChild(th); + } + if(this.p.multiselect) { + var onSA = true; + if(typeof ts.p.onSelectAll !== 'function') {onSA=false;} + $('#cb_jqg',trow).click(function(){ + var chk; + if (this.checked) { + $("[id^=jqg_]",ts.rows).attr("checked",true); + $(ts.rows).slice(1).each(function(i) { + if(!$(this).hasClass("subgrid")){ + $(this).addClass("selected"); + ts.p.selarrrow[i]= ts.p.selrow = this.id; + } + }); + chk=true; + } + else { + $("[id^=jqg_]",ts.rows).attr("checked",false); + $(ts.rows).slice(1).each(function(i) { + if(!$(this).hasClass("subgrid")){ + $(this).removeClass("selected"); + } + }); + ts.p.selarrrow = []; ts.p.selrow = null; + chk=false; + } + if(onSA) {ts.p.onSelectAll(ts.p.selarrrow,chk);} + }); + } + this.appendChild(thead); + thead = $("thead:first",ts).get(0); + var w, res, sort; + $("tr:first th",thead).each(function ( j ) { + w = ts.p.colModel[j].width; + if(typeof ts.p.colModel[j].resizable === 'undefined') {ts.p.colModel[j].resizable = true;} + res = document.createElement("span"); + $(res).html(" "); + if(ts.p.colModel[j].resizable){ + $(this).addClass(ts.p.resizeclass); + $(res).mousedown(function (e) { + if(ts.p.forceFit===true) {ts.p.nv= nextVisible(j);} + grid.dragStart(j, e.clientX); + e.preventDefault(); + return false; + }); + } else {res="";} + $(this).css("width",w+"px").prepend(res); + if( ts.p.colModel[j].hidden) {$(this).css("display","none");} + grid.headers[j] = { width: w, el: this }; + sort = ts.p.colModel[j].sortable; + if( typeof sort !== 'boolean') {sort = true;} + if(sort) { + $("div",this).css("cursor","pointer") + .click(function(){sortData(this.id,j);return false;}); + } + }); + var isMSIE = $.browser.msie ? true:false, + isMoz = $.browser.mozilla ? true:false, + isOpera = $.browser.opera ? true:false, + isSafari = $.browser.safari ? true : false, + td, ptr, gw=0,hdc=0, tbody = document.createElement("tbody"); + trow = document.createElement("tr"); + trow.id = "_empty"; + tbody.appendChild(trow); + for(i=0;i'+ts.p.loadtext+'') + .addClass("grid_hdiv") + .append(grid.hTable) + .bind("selectstart", function () { return false; }); + if(hg) {$(grid.hDiv).hide(); ts.p.gridstate = 'hidden'} + if(ts.p.pager){ + if(typeof ts.p.pager == "string") {if(ts.p.pager.substr(0,1) !="#") ts.p.pager = "#"+ts.p.pager;} + if( $(ts.p.pager).hasClass("scroll")) { $(ts.p.pager).css({ width: grid.width+"px", overflow: "hidden"}).show(); ts.p._height= parseInt($(ts.p.pager).height(),10); if(hg) {$(ts.p.pager).hide();}} + setPager(); + } + if( ts.p.cellEdit === false) { + $(ts).mouseover(function(e) { + td = (e.target || e.srcElement); + ptr = $(td,ts.rows).parents("tr:first"); + if($(ptr).hasClass("jqgrow")) { + $(ptr).addClass("over"); + } + return false; + }).mouseout(function(e) { + td = (e.target || e.srcElement); + ptr = $(td,ts.rows).parents("tr:first"); + $(ptr).removeClass("over"); + return false; + }); + } + var ri,ci; + + $(ts).before(grid.hDiv).css("width", grid.width+"px").click(function(e) { + td = (e.target || e.srcElement); + if (td.href) { return true; } + var scb = $(td).hasClass("cbox"); + ptr = $(td,ts.rows).parent("tr"); + if($(ptr).length === 0 ){ + ptr = $(td,ts.rows).parents("tr:first"); + td = $(td).parents("td:first")[0]; + } + var cSel = true; + if(bSR) { cSel = bSR(ptr.attr("id"));} + if(cSel === true) { + if(ts.p.cellEdit === true) { + if(ts.p.multiselect && scb){ + $(ts).setSelection(false,true,ptr); + } else { + ri = ptr[0].rowIndex; + ci = td.cellIndex; + try {$(ts).editCell(ri,ci,true,true);} catch (e) {} + } + } else if ( !ts.p.multikey ) { + if(ts.p.multiselect && ts.p.multiboxonly) { + if(scb){$(ts).setSelection(false,true,ptr);} + } else { + $(ts).setSelection(false,true,ptr); + } + } else { + if(e[ts.p.multikey]) { + $(ts).setSelection(false,true,ptr); + } else if(ts.p.multiselect && scb) { + scb = $("[id^=jqg_]",ptr).attr("checked"); + $("[id^=jqg_]",ptr).attr("checked",!scb); + } + } + if(onSC) { + ri = ptr[0].id; + ci = td.cellIndex; + onSC(ri,ci,$(td).html()); + } + } + e.stopPropagation(); + }).bind('reloadGrid', function(e) { + if(ts.p.treeGrid ===true) { ts.p.datatype = ts.p.treedatatype;} + if(ts.p.datatype=="local"){ $(ts).resetSelection();} + else if(!ts.p.treeGrid){ + ts.p.selrow=null; + if(ts.p.multiselect) {ts.p.selarrrow =[];$('#cb_jqg',ts.grid.hDiv).attr("checked",false);} + if(ts.p.cellEdit) {ts.p.savedRow = []; } + } + populate(); + }); + if( ondblClickRow ) { + $(this).dblclick(function(e) { + td = (e.target || e.srcElement); + ptr = $(td,ts.rows).parent("tr"); + if($(ptr).length === 0 ){ + ptr = $(td,ts.rows).parents("tr:first"); + } + ts.p.ondblClickRow($(ptr).attr("id")); + return false; + }); + } + if (onRightClickRow) { + $(this).bind('contextmenu', function(e) { + td = (e.target || e.srcElement); + ptr = $(td,ts).parents("tr:first"); + if($(ptr).length === 0 ){ + ptr = $(td,ts.rows).parents("tr:first"); + } + if(!ts.p.multiselect) { $(ts).setSelection(false,true,ptr); } + ts.p.onRightClickRow($(ptr).attr("id")); + return false; + }); + } + grid.bDiv = document.createElement("div"); + var ofl2 = (isNaN(ts.p.height) && isMoz && (ts.p.height.indexOf("%")!=-1 || ts.p.height=="auto")) ? "hidden" : "auto"; + $(grid.bDiv) + .addClass("grid_bdiv") + .scroll(function (e) {grid.scrollGrid();}) + .css({ height: ts.p.height+(isNaN(ts.p.height)?"":"px"), padding: "0px", margin: "0px", overflow: ofl2,width: (grid.width)+"px"} ).css("overflow-x","hidden") + .append(this); + $("table:first",grid.bDiv).css({width:grid.width+"px"}); + if( isMSIE ) { + if( $("tbody",this).size() === 2 ) { $("tbody:first",this).remove();} + if( ts.p.multikey) {$(grid.bDiv).bind("selectstart",function(){return false;});} + if(ts.p.treeGrid) {$(grid.bDiv).css("position","relative");} + } else { + if( ts.p.multikey) {$(grid.bDiv).bind("mousedown",function(){return false;});} + } + if(hg) {$(grid.bDiv).hide();} + grid.cDiv = document.createElement("div"); + $(grid.cDiv).append(""+ ((ts.p.hidegrid===true) ? "" :"") +"
    "+ts.p.caption+"
    ") + .addClass("GridHeader").width(grid.width); + $(grid.cDiv).insertBefore(grid.hDiv); + if( ts.p.toolbar[0] ) { + grid.uDiv = document.createElement("div"); + if(ts.p.toolbar[1] == "top") {$(grid.uDiv).insertBefore(grid.hDiv);} + else {$(grid.uDiv).insertAfter(grid.hDiv);} + $(grid.uDiv).width(grid.width).addClass("userdata").attr("id","t_"+this.id); + ts.p._height += parseInt($(grid.uDiv).height(),10); + if(hg) {$(grid.uDiv).hide();} + } + if(ts.p.caption) { + ts.p._height += parseInt($(grid.cDiv,ts).height(),10); + var tdt = ts.p.datatype; + if(ts.p.hidegrid===true) { + $(".HeaderButton",grid.cDiv).toggle( function(){ + if(ts.p.pager) {$(ts.p.pager).slideUp();} + if(ts.p.toolbar[0]) {$(grid.uDiv,ts).slideUp();} + $(grid.bDiv).hide(); + $(grid.hDiv).slideUp(); + $("img",this).attr("src",ts.p.imgpath+"down.gif"); + ts.p.gridstate = 'hidden'; + if(onHdCl) {if(!hg) {ts.p.onHeaderClick(ts.p.gridstate);}} + }, + function() { + $(grid.hDiv).slideDown(); + $(grid.bDiv).show(); + if(ts.p.pager) {$(ts.p.pager).slideDown();} + if(ts.p.toolbar[0]) {$(grid.uDiv).slideDown();} + $("img",this).attr("src",ts.p.imgpath+"up.gif"); + if(hg) {ts.p.datatype = tdt;populate();hg=false;} + ts.p.gridstate = 'visible'; + if(onHdCl) {ts.p.onHeaderClick(ts.p.gridstate)} + } + ); + if(hg) { $(".HeaderButton",grid.cDiv).trigger("click"); ts.p.datatype="local";} + } + } else {$(grid.cDiv).hide();} + ts.p._height += parseInt($(grid.hDiv,ts).height(),10); + $(grid.hDiv).mousemove(function (e) {grid.dragMove(e.clientX); return false;}).after(grid.bDiv); + $(document).mouseup(function (e) { + if(grid.resizing) { + grid.dragEnd(); + if(grid.newWidth && ts.p.forceFit===false){ + var gwdt = (grid.width <= ts.p._width) ? grid.width: ts.p._width; + var overfl = (grid.width <= ts.p._width) ? "hidden" : "auto"; + if(ts.p.pager && $(ts.p.pager).hasClass("scroll") ) { + $(ts.p.pager).width(gwdt); + } + if(ts.p.caption) {$(grid.cDiv).width(gwdt);} + if(ts.p.toolbar[0]) {$(grid.uDiv).width(gwdt);} + $(grid.bDiv).width(gwdt).css("overflow-x",overfl); + $(grid.hDiv).width(gwdt); + } + return false; + } + return true; + }); + ts.formatCol = function(a,b) {formatCol(a,b);}; + ts.sortData = function(a,b,c){sortData(a,b,c);}; + ts.updatepager = function(){updatepager();}; + ts.formatter = function (elem, row, cellval , colpos, act){formatter(elem, row, cellval , colpos,act);}; + $.extend(grid,{populate : function(){populate();}}); + this.grid = grid; + ts.addXmlData = function(d) {addXmlData(d,ts.grid.bDiv);}; + ts.addJSONData = function(d) {addJSONData(d,ts.grid.bDiv);}; + populate(); + if (!ts.p.shrinkToFit) { + ts.p.forceFit = false; + $("tr:first th", thead).each(function(j){ + var w = ts.p.colModel[j].owidth; + var diff = w - ts.p.colModel[j].width; + if (diff > 0 && !ts.p.colModel[j].hidden) { + grid.headers[j].width = w; + $(this).add(grid.cols[j]).width(w); + $('table:first',grid.bDiv).add(grid.hTable).width(ts.grid.width); + ts.grid.width += diff; + grid.hDiv.scrollLeft = grid.bDiv.scrollLeft; + } + }); + ofl2 = (grid.width <= ts.p._width) ? "hidden" : "auto"; + $(grid.bDiv).css({"overflow-x":ofl2}); + } + $(window).unload(function () { + $(this).unbind("*"); + this.grid = null; + this.p = null; + }); + }); +}; +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.celledit.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.celledit.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.celledit.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,449 @@ +;(function($){ +/* +** + * jqGrid extension for cellediting Grid Data + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +/** + * all events and options here are aded anonynous and not in the base grid + * since the array is to big. Here is the order of execution. + * From this point we use jQuery isFunction + * formatCell + * beforeEditCell, + * onSelectCell (used only for noneditable cels) + * afterEditCell, + * beforeSaveCell, (called before validation of values if any) + * beforeSubmitCell (if cellsubmit remote (ajax)) + * afterSubmitCell(if cellsubmit remote (ajax)), + * afterSaveCell, + * errorCell, + * Options + * cellsubmit (remote,clientArray) (added in grid options) + * cellurl +* */ +$.fn.extend({ + editCell : function (iRow,iCol, ed, fg){ + return this.each(function (){ + var $t = this, nm, tmp,cc; + if (!$t.grid || $t.p.cellEdit !== true) {return;} + var currentFocus = null; + // I HATE IE + if ($.browser.msie && $.browser.version <=7 && ed===true && fg===true) { + iCol = getAbsoluteIndex($t.rows[iRow],iCol); + } + iCol = parseInt(iCol,10); + // select the row that can be used for other methods + $t.p.selrow = $t.rows[iRow].id; + if (!$t.p.knv) {$($t).GridNav();} + // check to see if we have already edited cell + if ($t.p.savedRow.length>0) { + // prevent second click on that field and enable selects + if (ed===true ) { + if(iRow == $t.p.iRow && iCol == $t.p.iCol){ + return; + } + } + // if so check to see if the content is changed + var vl = $("td:eq("+$t.p.savedRow[0].ic+")>#"+$t.p.savedRow[0].id+"_"+$t.p.savedRow[0].name.replace('.',"\\."),$t.rows[$t.p.savedRow[0].id]).val(); + if ($t.p.savedRow[0].v != vl) { + // save it + $($t).saveCell($t.p.savedRow[0].id,$t.p.savedRow[0].ic) + } else { + // restore it + $($t).restoreCell($t.p.savedRow[0].id,$t.p.savedRow[0].ic); + } + } else { + window.setTimeout(function () { $("#"+$t.p.knv).attr("tabindex","-1").focus();},0); + } + nm = $t.p.colModel[iCol].name; + if (nm=='subgrid') {return;} + if ($t.p.colModel[iCol].editable===true && ed===true) { + cc = $("td:eq("+iCol+")",$t.rows[iRow]); + if(parseInt($t.p.iCol)>=0 && parseInt($t.p.iRow)>=0) { + $("td:eq("+$t.p.iCol+")",$t.rows[$t.p.iRow]).removeClass("edit-cell"); + $($t.rows[$t.p.iRow]).removeClass("selected-row"); + } + $(cc).addClass("edit-cell"); + $($t.rows[iRow]).addClass("selected-row"); + try { + tmp = $.unformat(cc,{colModel:$t.p.colModel[iCol]},iCol); + } catch (_) { + tmp = $.htmlDecode($(cc).html()); + } + var opt = $.extend($t.p.colModel[iCol].editoptions || {} ,{id:iRow+"_"+nm,name:nm}); + if (!$t.p.colModel[iCol].edittype) {$t.p.colModel[iCol].edittype = "text";} + $t.p.savedRow[0] = {id:iRow,ic:iCol,name:nm,v:tmp}; + if($.isFunction($t.p.formatCell)) { + var tmp2 = $t.p.formatCell($t.rows[iRow].id,nm,tmp,iRow,iCol); + if(tmp2) {tmp = tmp2;} + } + var elc = createEl($t.p.colModel[iCol].edittype,opt,tmp,cc); + if ($.isFunction($t.p.beforeEditCell)) { + $t.p.beforeEditCell($t.rows[iRow].id,nm,tmp,iRow,iCol); + } + $(cc).html("").append(elc); + window.setTimeout(function () { $(elc).focus();},0); + $("input, select, textarea",cc).bind("keydown",function(e) { + if (e.keyCode === 27) {$($t).restoreCell(iRow,iCol);} //ESC + if (e.keyCode === 13) {$($t).saveCell(iRow,iCol);}//Enter + if (e.keyCode == 9) { + if (e.shiftKey) {$($t).prevCell(iRow,iCol);} //Shift TAb + else {$($t).nextCell(iRow,iCol);} //Tab + } + e.stopPropagation(); + }); + if ($.isFunction($t.p.afterEditCell)) { + $t.p.afterEditCell($t.rows[iRow].id,nm,tmp,iRow,iCol); + } + } else { + if (parseInt($t.p.iCol)>=0 && parseInt($t.p.iRow)>=0) { + $("td:eq("+$t.p.iCol+")",$t.rows[$t.p.iRow]).removeClass("edit-cell"); + $($t.rows[$t.p.iRow]).removeClass("selected-row"); + } + $("td:eq("+iCol+")",$t.rows[iRow]).addClass("edit-cell"); + $($t.rows[iRow]).addClass("selected-row"); + if ($.isFunction($t.p.onSelectCell)) { + tmp = $("td:eq("+iCol+")",$t.rows[iRow]).html().replace(/\ \;/ig,''); + $t.p.onSelectCell($t.rows[iRow].id,nm,tmp,iRow,iCol); + } + } + $t.p.iCol = iCol; $t.p.iRow = iRow; + // IE 6 bug + function getAbsoluteIndex(t,relIndex) + { + var countnotvisible=0; + var countvisible=0; + for (i=0;irelIndex) return i; + } + return i; + } + }); + }, + saveCell : function (iRow, iCol){ + return this.each(function(){ + var $t= this, nm, fr; + if (!$t.grid || $t.p.cellEdit !== true) {return;} + if ( $t.p.savedRow.length == 1) {fr = 0;} else {fr=null;} + if(fr != null) { + var cc = $("td:eq("+iCol+")",$t.rows[iRow]),v,v2; + nm = $t.p.colModel[iCol].name; + switch ($t.p.colModel[iCol].edittype) { + case "select": + v = $("#"+iRow+"_"+nm.replace('.',"\\.")+">option:selected",$t.rows[iRow]).val(); + v2 = $("#"+iRow+"_"+nm.replace('.',"\\.")+">option:selected",$t.rows[iRow]).text(); + break; + case "checkbox": + var cbv = ["Yes","No"]; + if($t.p.colModel[iCol].editoptions){ + cbv = $t.p.colModel[iCol].editoptions.value.split(":"); + } + v = $("#"+iRow+"_"+nm.replace('.',"\\."),$t.rows[iRow]).attr("checked") ? cbv[0] : cbv[1]; + v2=v; + break; + case "password": + case "text": + case "textarea": + v = htmlEncode($("#"+iRow+"_"+nm.replace('.',"\\."),$t.rows[iRow]).val()); + v2=v; + break; + } + // The common approach is if nothing changed do not do anything + if (v2 != $t.p.savedRow[fr].v){ + if ($.isFunction($t.p.beforeSaveCell)) { + var vv = $t.p.beforeSaveCell($t.rows[iRow].id,nm, v, iRow,iCol); + if (vv) {v = vv;} + } + var cv = checkValues(v,iCol,$t); + if(cv[0] === true) { + var addpost = {}; + if ($.isFunction($t.p.beforeSubmitCell)) { + addpost = $t.p.beforeSubmitCell($t.rows[iRow].id,nm, v, iRow,iCol); + if (!addpost) {addpost={};} + } + if ($t.p.cellsubmit == 'remote') { + if ($t.p.cellurl) { + var postdata = {}; + v = htmlEncode(v); + v2 = htmlEncode(v2); + postdata[nm] = v; + postdata["id"] = $t.rows[iRow].id; + postdata = $.extend(addpost,postdata); + $.ajax({ + url: $t.p.cellurl, + data :postdata, + type: "POST", + complete: function (result, stat) { + if (stat == 'success') { + if ($.isFunction($t.p.afterSubmitCell)) { + var ret = $t.p.afterSubmitCell(result,postdata.id,nm,v,iRow,iCol); + if(ret[0] === true) { + $(cc).empty(); + $($t).setCell($t.rows[iRow].id, iCol, v2); + $(cc).addClass("dirty-cell"); + $($t.rows[iRow]).addClass("edited"); + if ($.isFunction($t.p.afterSaveCell)) { + $t.p.afterSaveCell($t.rows[iRow].id,nm, v, iRow,iCol); + } + $t.p.savedRow = []; + } else { + info_dialog($.jgrid.errors.errcap,ret[1],$.jgrid.edit.bClose, $t.p.imgpath); + $($t).restoreCell(iRow,iCol); + } + } else { + $(cc).empty(); + $($t).setCell($t.rows[iRow].id, iCol, v2); + $(cc).addClass("dirty-cell"); + $($t.rows[iRow]).addClass("edited"); + if ($.isFunction($t.p.afterSaveCell)) { + $t.p.afterSaveCell($t.rows[iRow].id,nm, v, iRow,iCol); + } + $t.p.savedRow = []; + } + } + }, + error:function(res,stat){ + if ($.isFunction($t.p.errorCell)) { + $t.p.errorCell(res,stat); + $($t).restoreCell(iRow,iCol); + } else { + info_dialog($.jgrid.errors.errcap,res.status+" : "+res.statusText+"
    "+stat,$.jgrid.edit.bClose, $t.p.imgpath); + $($t).restoreCell(iRow,iCol); + } + } + }); + } else { + try { + info_dialog($.jgrid.errors.errcap,$.jgrid.errors.nourl,$.jgrid.edit.bClose, $t.p.imgpath); + $($t).restoreCell(iRow,iCol); + } catch (e) {} + } + } + if ($t.p.cellsubmit == 'clientArray') { + v = htmlEncode(v); + v2 = htmlEncode(v2); + $(cc).empty(); + $($t).setCell($t.rows[iRow].id,iCol, v2); + $(cc).addClass("dirty-cell"); + $($t.rows[iRow]).addClass("edited"); + if ($.isFunction($t.p.afterSaveCell)) { + $t.p.afterSaveCell($t.rows[iRow].id,nm, v, iRow,iCol); + } + $t.p.savedRow = []; + } + } else { + try { + window.setTimeout(function(){info_dialog($.jgrid.errors.errcap,v+" "+cv[1],$.jgrid.edit.bClose, $t.p.imgpath)},100); + $($t).restoreCell(iRow,iCol); + } catch (e) {} + } + } else { + $($t).restoreCell(iRow,iCol); + } + } + if ($.browser.opera) { + $("#"+$t.p.knv).attr("tabindex","-1").focus(); + } else { + window.setTimeout(function () { $("#"+$t.p.knv).attr("tabindex","-1").focus();},0); + } + }); + }, + restoreCell : function(iRow, iCol) { + return this.each(function(){ + var $t= this, nm, fr; + if (!$t.grid || $t.p.cellEdit !== true ) {return;} + if ( $t.p.savedRow.length == 1) {fr = 0;} else {fr=null;} + if(fr != null) { + var cc = $("td:eq("+iCol+")",$t.rows[iRow]); + if($.isFunction($.fn['datepicker'])) { + try { + $.datepicker('hide'); + } catch (e) { + try { + $.datepicker.hideDatepicker(); + } catch (e) {} + } + } + $(cc).empty(); + $($t).setCell($t.rows[iRow].id, iCol, $t.p.savedRow[fr].v); + $t.p.savedRow = []; + + } + window.setTimeout(function () { $("#"+$t.p.knv).attr("tabindex","-1").focus();},0); + }); + }, + nextCell : function (iRow,iCol) { + return this.each(function (){ + var $t = this, nCol=false, tmp; + if (!$t.grid || $t.p.cellEdit !== true) {return;} + // try to find next editable cell + for (var i=iCol+1; i<$t.p.colModel.length; i++) { + if ( $t.p.colModel[i].editable ===true) { + nCol = i; break; + } + } + if(nCol !== false) { + $($t).saveCell(iRow,iCol); + $($t).editCell(iRow,nCol,true); + } else { + if ($t.p.savedRow.length >0) { + $($t).saveCell(iRow,iCol); + } + } + }); + }, + prevCell : function (iRow,iCol) { + return this.each(function (){ + var $t = this, nCol=false, tmp; + if (!$t.grid || $t.p.cellEdit !== true) {return;} + // try to find next editable cell + for (var i=iCol-1; i>=0; i--) { + if ( $t.p.colModel[i].editable ===true) { + nCol = i; break; + } + } + if(nCol !== false) { + $($t).saveCell(iRow,iCol); + $($t).editCell(iRow,nCol,true); + } else { + if ($t.p.savedRow.length >0) { + $($t).saveCell(iRow,iCol); + } + } + }); + }, + GridNav : function() { + return this.each(function () { + var $t = this; + if (!$t.grid || $t.p.cellEdit !== true ) {return;} + // trick to process keydown on non input elements + $t.p.knv = $("table:first",$t.grid.bDiv).attr("id") + "_kn"; + var selection = $(""); + $(selection).insertBefore($t.grid.cDiv); + $("#"+$t.p.knv).focus(); + $("#"+$t.p.knv).keydown(function (e){ + switch (e.keyCode) { + case 38: + if ($t.p.iRow-1 >=1 ) { + scrollGrid($t.p.iRow-1,$t.p.iCol,'vu'); + $($t).editCell($t.p.iRow-1,$t.p.iCol,false); + } + break; + case 40 : + if ($t.p.iRow+1 <= $t.rows.length-1) { + scrollGrid($t.p.iRow+1,$t.p.iCol,'vd'); + $($t).editCell($t.p.iRow+1,$t.p.iCol,false); + } + break; + case 37 : + if ($t.p.iCol -1 >= 0) { + var i = findNextVisible($t.p.iCol-1,'lft'); + scrollGrid($t.p.iRow, i,'h'); + $($t).editCell($t.p.iRow, i,false); + } + break; + case 39 : + if ($t.p.iCol +1 <= $t.p.colModel.length-1) { + var i = findNextVisible($t.p.iCol+1,'rgt'); + scrollGrid($t.p.iRow,i,'h'); + $($t).editCell($t.p.iRow,i,false); + } + break; + case 13: + if (parseInt($t.p.iCol,10)>=0 && parseInt($t.p.iRow,10)>=0) { + $($t).editCell($t.p.iRow,$t.p.iCol,true); + } + break; + } + return false; + }); + function scrollGrid(iR, iC, tp){ + if (tp.substr(0,1)=='v') { + var ch = $($t.grid.bDiv)[0].clientHeight, + st = $($t.grid.bDiv)[0].scrollTop, + nROT = $t.rows[iR].offsetTop+$t.rows[iR].clientHeight, + pROT = $t.rows[iR].offsetTop; + if(tp == 'vd') { + if(nROT >= ch) { + $($t.grid.bDiv)[0].scrollTop = $($t.grid.bDiv)[0].scrollTop + $t.rows[iR].clientHeight; + } + } + if(tp == 'vu'){ + if (pROT < st) { + $($t.grid.bDiv)[0].scrollTop = $($t.grid.bDiv)[0].scrollTop - $t.rows[iR].clientHeight; + } + } + } + if(tp=='h') { + var cw = $($t.grid.bDiv)[0].clientWidth, + sl = $($t.grid.bDiv)[0].scrollLeft, + nCOL = $t.rows[iR].cells[iC].offsetLeft+$t.rows[iR].cells[iC].clientWidth, + pCOL = $t.rows[iR].cells[iC].offsetLeft; + if(nCOL >= cw+parseInt(sl)) { + $($t.grid.bDiv)[0].scrollLeft = $($t.grid.bDiv)[0].scrollLeft + $t.rows[iR].cells[iC].clientWidth; + } else if (pCOL < sl) { + $($t.grid.bDiv)[0].scrollLeft = $($t.grid.bDiv)[0].scrollLeft - $t.rows[iR].cells[iC].clientWidth; + } + } + }; + function findNextVisible(iC,act){ + var ind, i; + if(act == 'lft') { + ind = iC+1; + for (i=iC;i>=0;i--){ + if ($t.p.colModel[i].hidden !== true) { + ind = i; + break; + } + } + } + if(act == 'rgt') { + ind = iC-1; + for (i=iC; i<$t.p.colModel.length;i++){ + if ($t.p.colModel[i].hidden !== true) { + ind = i; + break; + } + } + } + return ind; + }; + }); + }, + getChangedCells : function (mthd) { + var ret=[]; + if (!mthd) {mthd='all';} + this.each(function(){ + var $t= this; + if (!$t.grid || $t.p.cellEdit !== true ) {return;} + $($t.rows).slice(1).each(function(j){ + var res = {}; + if ($(this).hasClass("edited")) { + $('td',this).each( function(i) { + nm = $t.p.colModel[i].name; + if ( nm !== 'cb' && nm !== 'subgrid') { + if (mthd=='dirty') { + if ($(this).hasClass('dirty-cell')) { + res[nm] = $.htmlDecode($(this).html()); + } + } else { + res[nm] = $.htmlDecode($(this).html()); + } + } + }); + res["id"] = this.id; + ret.push(res); + } + }) + }); + return ret; + } +/// end cell editing +}); +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.common.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.common.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.common.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,345 @@ +/** + * jqGrid common function + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +// Modal functions +var showModal = function(h) { + h.w.show(); +}; +var closeModal = function(h) { + h.w.hide(); + if(h.o) { h.o.remove(); } +}; +function createModal(aIDs, content, p, insertSelector, posSelector, appendsel) { + var clicon = p.imgpath ? p.imgpath+p.closeicon : p.closeicon; + var mw = document.createElement('div'); + jQuery(mw).addClass("modalwin").attr("id",aIDs.themodal); + var mh = jQuery('').addClass("modalhead"); + var mc = document.createElement('div'); + jQuery(mc).addClass("modalcontent").attr("id",aIDs.modalcontent); + jQuery(mc).append(content); + mw.appendChild(mc); + var loading = document.createElement("div"); + jQuery(loading).addClass("loading").html(p.processData||""); + jQuery(mw).prepend(loading); + jQuery(mw).prepend(mh); + jQuery(mw).addClass("jqmWindow"); + if (p.drag) { + jQuery(mw).append(""); + } + if(appendsel===true) { jQuery('body').append(mw); } //append as first child in body -for alert dialog + else { jQuery(mw).insertBefore(insertSelector); } + if(p.left ==0 && p.top==0) { + var pos = []; + pos = findPos(posSelector) ; + p.left = pos[0] + 4; + p.top = pos[1] + 4; + } + if (p.width == 0 || !p.width) {p.width = 300;} + if(p.height==0 || !p.width) {p.height =200;} + if(!p.zIndex) {p.zIndex = 950;} + jQuery(mw).css({top: p.top+"px",left: p.left+"px",width: p.width+"px",height: p.height+"px", zIndex:p.zIndex}); + return false; +}; + +function viewModal(selector,o){ + o = jQuery.extend({ + toTop: true, + overlay: 10, + modal: false, + onShow: showModal, + onHide: closeModal + }, o || {}); + jQuery(selector).jqm(o).jqmShow(); + return false; +}; +function hideModal(selector) { + jQuery(selector).jqmHide(); +} + +function DnRModal(modwin,handler){ + jQuery(handler).css('cursor','move'); + jQuery(modwin).jqDrag(handler).jqResize(".jqResize"); + return false; +}; + +function info_dialog(caption, content,c_b, pathimg) { + var cnt = "
    "; + cnt += "

    "+content+"

    "; + cnt += ""; + cnt += "
    "; + createModal({ + themodal:'info_dialog', + modalhead:'info_head', + modalcontent:'info_content'}, + cnt, + { width:290, + height:120,drag: false, + caption:""+caption+"", + imgpath: pathimg, + closeicon: 'ico-close.gif', + left:250, + top:170 }, + '','',true + ); + viewModal("#info_dialog",{ + onShow: function(h) { + h.w.show(); + }, + onHide: function(h) { + h.w.hide().remove(); + if(h.o) { h.o.remove(); } + }, + modal :true + }); +}; +//Helper functions +function findPos(obj) { + var curleft = curtop = 0; + if (obj.offsetParent) { + do { + curleft += obj.offsetLeft; + curtop += obj.offsetTop; + } while (obj = obj.offsetParent); + //do not change obj == obj.offsetParent + } + return [curleft,curtop]; +}; +function isArray(obj) { + if (obj.constructor.toString().indexOf("Array") == -1) { + return false; + } else { + return true; + } +}; +// Form Functions +function createEl(eltype,options,vl,elm) { + var elem = ""; + switch (eltype) + { + case "textarea" : + elem = document.createElement("textarea"); + if(!options.cols && elm) {jQuery(elem).css("width","99%");} + jQuery(elem).attr(options); + if(vl == " " || vl == " ") {vl='';} // comes from grid if empty + jQuery(elem).val(vl); + break; + case "checkbox" : //what code for simple checkbox + elem = document.createElement("input"); + elem.type = "checkbox"; + jQuery(elem).attr({id:options.id,name:options.name}); + if( !options.value) { + vl=vl.toLowerCase(); + if(vl.search(/(false|0|no|off|undefined)/i)<0 && vl!=="") { + elem.checked=true; + elem.defaultChecked=true; + elem.value = vl; + } else { + elem.value = "on"; + } + jQuery(elem).attr("offval","off"); + } else { + var cbval = options.value.split(":"); + if(vl == cbval[0]) { + elem.checked=true; + elem.defaultChecked=true; + } + elem.value = cbval[0]; + jQuery(elem).attr("offval",cbval[1]); + } + break; + case "select" : + elem = document.createElement("select"); + var msl = options.multiple==true ? true : false; + if(options.value) { + var ovm = []; + if(msl) {jQuery(elem).attr({multiple:"multiple"}); ovm = vl.split(","); ovm = jQuery.map(ovm,function(n){return jQuery.trim(n)});} + if(typeof options.size === 'undefined') {options.size =1;} + if(typeof options.value == 'string') { + var so = options.value.split(";"),sv, ov; + jQuery(elem).attr({id:options.id,name:options.name,size:Math.min(options.size,so.length)}); + for(var i=0; i-1) {ov.selected ="selected";} + elem.appendChild(ov); + } + } else if (typeof options.value == 'object') { + var oSv = options.value; + var i=0; + for ( var key in oSv) { + i++; + ov = document.createElement("option"); + ov.value = key; ov.innerHTML = jQuery.htmlDecode(oSv[key]); + if (!msl && oSv[key]==vl) {ov.selected ="selected";} + if (msl && jQuery.inArray(jQuery.trim(oSv[key]),ovm)>-1) {ov.selected ="selected";} + elem.appendChild(ov); + } + jQuery(elem).attr({id:options.id,name:options.name,size:Math.min(options.size,i) }); + } + } + break; + case "text" : + elem = document.createElement("input"); + elem.type = "text"; + vl = jQuery.htmlDecode(vl); + elem.value = vl; + if(!options.size && elm) { + jQuery(elem).css({width:"98%"}); + } + jQuery(elem).attr(options); + break; + case "password" : + elem = document.createElement("input"); + elem.type = "password"; + vl = jQuery.htmlDecode(vl); + elem.value = vl; + if(!options.size && elm) { jQuery(elem).css("width","99%"); } + jQuery(elem).attr(options); + break; + case "image" : + elem = document.createElement("input"); + elem.type = "image"; + jQuery(elem).attr(options); + break; + } + return elem; +}; +function checkValues(val, valref,g) { + if(valref >=0) { + var edtrul = g.p.colModel[valref].editrules; + } + if(edtrul) { + if(edtrul.required === true) { + if( val.match(/^s+$/) || val == "" ) return [false,g.p.colNames[valref]+": "+jQuery.jgrid.edit.msg.required,""]; + } + // force required + var rqfield = edtrul.required === false ? false : true; + if(edtrul.number === true) { + if( !(rqfield === false && isEmpty(val)) ) { + if(isNaN(val)) return [false,g.p.colNames[valref]+": "+jQuery.jgrid.edit.msg.number,""]; + } + } + if(edtrul.minValue && !isNaN(edtrul.minValue)) { + if (parseFloat(val) < parseFloat(edtrul.minValue) ) return [false,g.p.colNames[valref]+": "+jQuery.jgrid.edit.msg.minValue+" "+edtrul.minValue,""]; + } + if(edtrul.maxValue && !isNaN(edtrul.maxValue)) { + if (parseFloat(val) > parseFloat(edtrul.maxValue) ) return [false,g.p.colNames[valref]+": "+jQuery.jgrid.edit.msg.maxValue+" "+edtrul.maxValue,""]; + } + if(edtrul.email === true) { + if( !(rqfield === false && isEmpty(val)) ) { + // taken from jquery Validate plugin + var filter = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i; + if(!filter.test(val)) {return [false,g.p.colNames[valref]+": "+jQuery.jgrid.edit.msg.email,""];} + } + } + if(edtrul.integer === true) { + if( !(rqfield === false && isEmpty(val)) ) { + if(isNaN(val)) return [false,g.p.colNames[valref]+": "+jQuery.jgrid.edit.msg.integer,""]; + if ((val % 1 != 0) || (val.indexOf('.') != -1)) return [false,g.p.colNames[valref]+": "+jQuery.jgrid.edit.msg.integer,""]; + } + } + if(edtrul.date === true) { + if( !(rqfield === false && isEmpty(val)) ) { + var dft = g.p.colModel[valref].datefmt || "Y-m-d"; + if(!checkDate (dft, val)) return [false,g.p.colNames[valref]+": "+jQuery.jgrid.edit.msg.date+" - "+dft,""]; + } + } + } + return [true,"",""]; +}; +// Date Validation Javascript +function checkDate (format, date) { + var tsp = {}; + var result = false; + var sep; + format = format.toLowerCase(); + //we search for /,-,. for the date separator + if(format.indexOf("/") != -1) { + sep = "/"; + } else if(format.indexOf("-") != -1) { + sep = "-"; + } else if(format.indexOf(".") != -1) { + sep = "."; + } else { + sep = "/"; + } + format = format.split(sep); + date = date.split(sep); + if (date.length != 3) return false; + var j=-1,yln, dln=-1, mln=-1; + for(var i=0;i12){ + return false; + } + } + if(dln === -1) { + return false; + } else { + strDate = tsp[format[dln]].toString(); + if (strDate.length<1 || tsp[format[dln]]<1 || tsp[format[dln]]>31 || (tsp[format[mln]]==2 && tsp[format[dln]]>daysInFebruary(tsp[format[j]])) || tsp[format[dln]] > daysInMonth[tsp[format[mln]]]){ + return false; + } + } + return true; +} +function daysInFebruary (year){ + // February has 29 days in any year evenly divisible by four, + // EXCEPT for centurial years which are not also divisible by 400. + return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 ); +} +function DaysArray(n) { + for (var i = 1; i <= n; i++) { + this[i] = 31; + if (i==4 || i==6 || i==9 || i==11) {this[i] = 30;} + if (i==2) {this[i] = 29;} + } + return this; +} + +function isEmpty(val) +{ + if (val.match(/^s+$/) || val == "") { + return true; + } else { + return false; + } +} +function htmlEncode (value){ + return !value ? value : String(value).replace(/&/g, "&").replace(/>/g, ">").replace(/0 ? true : false; + gr.p.postData = $.extend(gr.p.postData,sdata); + var saveurl; + if(self.p.url) { + saveurl = $(gr).getGridParam('url'); + $(gr).setGridParam({url:self.p.url}); + } + $(gr).setGridParam({search:sd,page:1}).trigger("reloadGrid"); + if(saveurl) {$(gr).setGridParam({url:saveurl});} + if($.isFunction(self.p.afterSearch)){self.p.afterSearch();} + }; + var clearSearch = function(){ + var sdata={}, v, j=0; + var gr = $(self.p.gridid)[0]; + if($.isFunction(self.p.beforeClear)){self.p.beforeClear();} + $.each(self.p.filterModel,function(i,n){ + v = (this.defval) ? this.defval : ""; + if(!this.stype){this.stype=='text';} + switch (this.stype) { + case 'select' : + if(v) { + var v1; + $("select[name="+this.name+"] option",self).each(function (){ + if ($(this).text() == v) { + this.selected = true; + v1 = $(this).val(); + return false; + } + }); + // post the key and not the text + sdata[this.index] = v1 || ""; + if(self.p.marksearched){ + $("#jqgh_"+this.name,gr.grid.hDiv).addClass("dirty-cell"); + } + j++; + } else { + if(self.p.marksearched){ + $("#jqgh_"+this.name,gr.grid.hDiv).removeClass("dirty-cell"); + } + // remove from postdata + try { + delete gr.p.postData[this.index]; + } catch(e) {} + } + break; + case 'text': + $("input[name="+this.name+"]",self).val(v); + if(v) { + sdata[this.index] = v; + if(self.p.marksearched){ + $("#jqgh_"+this.name,gr.grid.hDiv).addClass("dirty-cell"); + } + j++; + } else { + if(self.p.marksearched){ + $("#jqgh_"+this.name,gr.grid.hDiv).removeClass("dirty-cell"); + } + // remove from postdata + try { + delete gr.p.postData[this.index]; + } catch(e) {} + } + } + }); + var sd = j>0 ? true : false; + gr.p.postData = $.extend(gr.p.postData,sdata); + var saveurl; + if(self.p.url) { + saveurl = $(gr).getGridParam('url'); + $(gr).setGridParam({url:self.p.url}); + } + $(gr).setGridParam({search:sd,page:1}).trigger("reloadGrid"); + if(saveurl) {$(gr).setGridParam({url:saveurl});} + if($.isFunction(self.p.afterClear)){self.p.afterClear();} + }; + var formFill = function(){ + var tr = document.createElement("tr"); + var tr1, sb, cb,tl,td, td1; + if(self.p.formtype=='horizontal'){ + $(tbl).append(tr); + } + $.each(self.p.filterModel,function(i,n){ + tl = document.createElement("td"); + $(tl).append(""); + td = document.createElement("td"); + var $t=this; + if(!this.stype) { this.stype='text';} + switch (this.stype) + { + case "select": + if(this.surl) { + // data returned should have already constructed html select + $(td).load(this.surl,function(){ + if($t.defval) $("select",this).val($t.defval); + $("select",this).attr({name:$t.name, id: "sg_"+$t.name}); + if($t.sopt) $("select",this).attr($t.sopt); + if(self.p.gridToolbar===true && $t.width) { + $("select",this).width($t.width); + } + if(self.p.autosearch===true){ + $("select",this).change(function(e){ + triggerSearch(); + return false; + }); + } + }); + } else { + // sopt to construct the values + if($t.sopt.value) { + var so = $t.sopt.value.split(";"), sv, ov; + var elem = document.createElement("select"); + $(elem).attr({name:$t.name, id: "sg_"+$t.name}).attr($t.sopt); + for(var k=0; k"); + if($t.sopt) $("input",td).attr($t.sopt); + if(self.p.gridToolbar===true && $t.width) { + if($.browser.msie) { + $("input",td).width($t.width-4); + } else { + $("input",td).width($t.width-2); + } + } + if(self.p.autosearch===true){ + $("input",td).keypress(function(e){ + var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0; + if(key == 13){ + triggerSearch(); + return false; + } + return this; + }); + } + break; + } + if(self.p.formtype=='horizontal'){ + if(self.p.grodToolbar===true && self.p.gridNames===false) { + $(tr).append(td); + } else { + $(tr).append(tl).append(td); + } + $(tr).append(td); + } else { + tr1 = document.createElement("tr"); + $(tr1).append(tl).append(td); + $(tbl).append(tr1); + } + }); + td = document.createElement("td"); + if(self.p.enableSearch === true){ + sb = ""; + $(td).append(sb); + $("input#sButton",td).click(function(){ + triggerSearch(); + return false; + }); + } + if(self.p.enableClear === true) { + cb = ""; + $(td).append(cb); + $("input#cButton",td).click(function(){ + clearSearch(); + return false; + }); + } + if(self.p.enableClear === true || self.p.enableSearch === true) { + if(self.p.formtype=='horizontal') { + $(tr).append(td); + } else { + tr1 = document.createElement("tr"); + $(tr1).append(" ").append(td); + $(tbl).append(tr1); + } + } + }; + var frm = $("
    "); + var tbl =$("
    "); + $(frm).append(tbl); + formFill(); + $(this).append(frm); + this.triggerSearch = function () {triggerSearch();}; + this.clearSearch = function () {clearSearch();}; + }); + } +}); +})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.formedit.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.formedit.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.formedit.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,975 @@ +;(function($){ +/** + * jqGrid extension for form editing Grid Data + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +var rp_ge = null; +$.fn.extend({ + searchGrid : function ( p ) { + p = $.extend({ + top : 0, + left: 0, + width: 360, + height: 80, + modal: false, + drag: true, + closeicon: 'ico-close.gif', + dirty: false, + sField:'searchField', + sValue:'searchString', + sOper: 'searchOper', + processData: "", + checkInput :false, + beforeShowSearch: null, + afterShowSearch : null, + onInitializeSearch: null, + closeAfterSearch : false, + // translation + // if you want to change or remove the order change it in sopt + // ['bw','eq','ne','lt','le','gt','ge','ew','cn'] + sopt: null + }, $.jgrid.search, p || {}); + return this.each(function(){ + var $t = this; + if( !$t.grid ) { return; } + if(!p.imgpath) { p.imgpath= $t.p.imgpath; } + var gID = $("table:first",$t.grid.bDiv).attr("id"); + var IDs = { themodal:'srchmod'+gID,modalhead:'srchhead'+gID,modalcontent:'srchcnt'+gID }; + if ( $("#"+IDs.themodal).html() != null ) { + if( $.isFunction('beforeShowSearch') ) { p.beforeShowSearch($("#srchcnt"+gID)); } + viewModal("#"+IDs.themodal,{modal: p.modal}); + if( $.isFunction('afterShowSearch') ) { p.afterShowSearch($("#srchcnt"+gID)); } + } else { + var cM = $t.p.colModel; + var cNames = ""; + var getopt = p.sopt || ['bw','eq','ne','lt','le','gt','ge','ew','cn']; + var sOpt = ""; + // field and buttons + var sField = ""; + var bSearch = ""; + var bReset = ""; + var cnt = $("
    "+cNames+""+sOpt+""+sField+""+bSearch+""+bReset+"
    "); + createModal(IDs,cnt,p,$t.grid.hDiv,$t.grid.hDiv); + if ( $.isFunction('onInitializeSearch') ) { p.onInitializeSearch( $("#srchcnt"+gID) ); }; + if ( $.isFunction('beforeShowSearch') ) { p.beforeShowSearch($("#srchcnt"+gID)); }; + viewModal("#"+IDs.themodal,{modal:p.modal}); + if($.isFunction('afterShowSearch')) { p.afterShowSearch($("#srchcnt"+gID)); } + if(p.drag) { DnRModal("#"+IDs.themodal,"#"+IDs.modalhead+" td.modaltext"); } + $("#sbut","#"+IDs.themodal).click(function(){ + if( $("#sval","#"+IDs.themodal).val() !="" ) { + var es=[true,"",""]; + $("#srcherr >td","#srchcnt"+gID).html("").hide(); + $t.p.searchdata[p.sField] = $("option[selected]","#snames").val(); + $t.p.searchdata[p.sOper] = $("option[selected]","#sopt").val(); + $t.p.searchdata[p.sValue] = $("#sval","#"+IDs.modalcontent).val(); + if(p.checkInput) { + for(var i=0; i< cM.length;i++) { + var sname = (cM[i].index) ? cM[i].index : nm; + if (sname == $t.p.searchdata[p.sField]) { + break; + } + } + es = checkValues($t.p.searchdata[p.sValue],i,$t); + } + if (es[0]===true) { + $t.p.search = true; // initialize the search + // construct array of data which is passed in populate() see jqGrid + if(p.dirty) { $(".no-dirty-cell",$t.p.pager).addClass("dirty-cell"); } + $t.p.page= 1; + $($t).trigger("reloadGrid"); + if(p.closeAfterSearch === true) { + hideModal("#"+IDs.themodal); + } + } else { + $("#srcherr >td","#srchcnt"+gID).html(es[1]).show(); + } + } + }); + $("#sreset","#"+IDs.themodal).click(function(){ + if ($t.p.search) { + $("#srcherr >td","#srchcnt"+gID).html("").hide(); + $t.p.search = false; + $t.p.searchdata = {}; + $t.p.page= 1; + $("#sval","#"+IDs.themodal).val(""); + if(p.dirty) { $(".no-dirty-cell",$t.p.pager).removeClass("dirty-cell"); } + $($t).trigger("reloadGrid"); + } + }); + } + }); + }, + editGridRow : function(rowid, p){ + p = $.extend({ + top : 0, + left: 0, + width: 0, + height: 0, + modal: false, + drag: true, + closeicon: 'ico-close.gif', + imgpath: '', + url: null, + mtype : "POST", + closeAfterAdd : false, + clearAfterAdd : true, + closeAfterEdit : false, + reloadAfterSubmit : true, + onInitializeForm: null, + beforeInitData: null, + beforeShowForm: null, + afterShowForm: null, + beforeSubmit: null, + afterSubmit: null, + onclickSubmit: null, + afterComplete: null, + onclickPgButtons : null, + afterclickPgButtons: null, + editData : {}, + recreateForm : false, + addedrow : "first" + }, $.jgrid.edit, p || {}); + rp_ge = p; + return this.each(function(){ + var $t = this; + if (!$t.grid || !rowid) { return; } + if(!p.imgpath) { p.imgpath= $t.p.imgpath; } + // I hate to rewrite code, but ... + var gID = $("table:first",$t.grid.bDiv).attr("id"); + var IDs = {themodal:'editmod'+gID,modalhead:'edithd'+gID,modalcontent:'editcnt'+gID}; + var onBeforeShow = $.isFunction(rp_ge.beforeShowForm) ? rp_ge.beforeShowForm : false; + var onAfterShow = $.isFunction(rp_ge.afterShowForm) ? rp_ge.afterShowForm : false; + var onBeforeInit = $.isFunction(rp_ge.beforeInitData) ? rp_ge.beforeInitData : false; + var onInitializeForm = $.isFunction(rp_ge.onInitializeForm) ? rp_ge.onInitializeForm : false; + if (rowid=="new") { + rowid = "_empty"; + p.caption=p.addCaption; + } else { + p.caption=p.editCaption; + }; + var frmgr = "FrmGrid_"+gID; + var frmtb = "TblGrid_"+gID; + if(p.recreateForm===true && $("#"+IDs.themodal).html() != null) { + $("#"+IDs.themodal).remove(); + } + if ( $("#"+IDs.themodal).html() != null ) { + $(".modaltext","#"+IDs.modalhead).html(p.caption); + $("#FormError","#"+frmtb).hide(); + if(onBeforeInit) { onBeforeInit($("#"+frmgr)); } + fillData(rowid,$t); + if(rowid=="_empty") { $("#pData, #nData","#"+frmtb).hide(); } else { $("#pData, #nData","#"+frmtb).show(); } + if(onBeforeShow) { onBeforeShow($("#"+frmgr)); } + viewModal("#"+IDs.themodal,{modal:p.modal}); + if(onAfterShow) { onAfterShow($("#"+frmgr)); } + } else { + var frm = $("
    "); + var tbl =$("
    "); + $(frm).append(tbl); + $(tbl).append(""+" "+""); + // set the id. + // use carefull only to change here colproperties. + if(onBeforeInit) { onBeforeInit($("#"+frmgr)); } + var valref = createData(rowid,$t,tbl); + // buttons at footer + var imp = $t.p.imgpath; + var bP =""; + var bN =""; + var bS =""; + var bC =""; + $(tbl).append(""+bP+" "+bN+""+bS+" "+bC+""); + // beforeinitdata after creation of the form + createModal(IDs,frm,p,$t.grid.hDiv,$t.grid.hDiv); + // here initform - only once + if(onInitializeForm) { onInitializeForm($("#"+frmgr)); } + if( p.drag ) { DnRModal("#"+IDs.themodal,"#"+IDs.modalhead+" td.modaltext"); } + if(rowid=="_empty") { $("#pData,#nData","#"+frmtb).hide(); } else { $("#pData,#nData","#"+frmtb).show(); } + if(onBeforeShow) { onBeforeShow($("#"+frmgr)); } + viewModal("#"+IDs.themodal,{modal:p.modal}); + if(onAfterShow) { onAfterShow($("#"+frmgr)); } + $("#sData", "#"+frmtb).click(function(e){ + var postdata = {}, ret=[true,"",""], extpost={}; + $("#FormError","#"+frmtb).hide(); + // all depend on ret array + //ret[0] - succes + //ret[1] - msg if not succes + //ret[2] - the id that will be set if reload after submit false + var j =0; + $(".FormElement", "#"+frmtb).each(function(i){ + var suc = true; + switch ($(this).get(0).type) { + case "checkbox": + if($(this).attr("checked")) { + postdata[this.name]= $(this).val(); + }else { + var ofv = $(this).attr("offval"); + postdata[this.name]= ofv; + extpost[this.name] = ofv; + } + break; + case "select-one": + postdata[this.name]= $("option:selected",this).val(); + extpost[this.name]= $("option:selected",this).text(); + break; + case "select-multiple": + postdata[this.name]= $(this).val(); + var selectedText = []; + $("option:selected",this).each( + function(i,selected){ + selectedText[i] = $(selected).text(); + } + ); + extpost[this.name]= selectedText.join(","); + break; + case "password": + case "text": + case "textarea": + postdata[this.name] = $(this).val(); + ret = checkValues(postdata[this.name],valref[i],$t); + if(ret[0] === false) { + suc=false; + } else { + postdata[this.name] = htmlEncode(postdata[this.name]); + } + break; + } + j++; + if(!suc) { return false; } + }); + if(j==0) { ret[0] = false; ret[1] = $.jgrid.errors.norecords; } + if( $.isFunction( rp_ge.onclickSubmit)) { rp_ge.editData = rp_ge.onclickSubmit(p) || {}; } + if(ret[0]) { + if( $.isFunction(rp_ge.beforeSubmit)) { ret = rp_ge.beforeSubmit(postdata,$("#"+frmgr)); } + } + var gurl = rp_ge.url ? rp_ge.url : $t.p.editurl; + if(ret[0]) { + if(!gurl) { ret[0]=false; ret[1] += " "+$.jgrid.errors.nourl; } + } + if(ret[0] === false) { + $("#FormError>td","#"+frmtb).html(ret[1]); + $("#FormError","#"+frmtb).show(); + } else { + if(!p.processing) { + p.processing = true; + $("div.loading","#"+IDs.themodal).fadeIn("fast"); + $(this).attr("disabled",true); + // we add to pos data array the action - the name is oper + postdata.oper = postdata.id == "_empty" ? "add" : "edit"; + postdata = $.extend(postdata,rp_ge.editData); + $.ajax({ + url:gurl, + type: rp_ge.mtype, + data:postdata, + complete:function(data,Status){ + if(Status != "success") { + ret[0] = false; + ret[1] = Status+" Status: "+data.statusText +" Error code: "+data.status; + } else { + // data is posted successful + // execute aftersubmit with the returned data from server + if( $.isFunction(rp_ge.afterSubmit) ) { + ret = rp_ge.afterSubmit(data,postdata); + } + } + if(ret[0] === false) { + $("#FormError>td","#"+frmtb).html(ret[1]); + $("#FormError","#"+frmtb).show(); + } else { + postdata = $.extend(postdata,extpost); + // the action is add + if(postdata.id=="_empty" ) { + //id processing + // user not set the id ret[2] + if(!ret[2]) { ret[2] = parseInt($($t).getGridParam('records'))+1; } + postdata.id = ret[2]; + if(rp_ge.closeAfterAdd) { + if(rp_ge.reloadAfterSubmit) { $($t).trigger("reloadGrid"); } + else { + $($t).addRowData(ret[2],postdata,p.addedrow); + $($t).setSelection(ret[2]); + } + hideModal("#"+IDs.themodal); + } else if (rp_ge.clearAfterAdd) { + if(rp_ge.reloadAfterSubmit) { $($t).trigger("reloadGrid"); } + else { $($t).addRowData(ret[2],postdata,p.addedrow); } + $(".FormElement", "#"+frmtb).each(function(i){ + switch ($(this).get(0).type) { + case "checkbox": + $(this).attr("checked",0); + break; + case "select-one": + case "select-multiple": + $("option",this).attr("selected",""); + break; + case "password": + case "text": + case "textarea": + if(this.name =='id') { $(this).val("_empty"); } + else { $(this).val(""); } + break; + } + }); + } else { + if(rp_ge.reloadAfterSubmit) { $($t).trigger("reloadGrid"); } + else { $($t).addRowData(ret[2],postdata,p.addedrow); } + } + } else { + // the action is update + if(rp_ge.reloadAfterSubmit) { + $($t).trigger("reloadGrid"); + if( !rp_ge.closeAfterEdit ) { $($t).setSelection(postdata.id); } + } else { + if($t.p.treeGrid === true) { + $($t).setTreeRow(postdata.id,postdata); + } else { + $($t).setRowData(postdata.id,postdata); + } + } + if(rp_ge.closeAfterEdit) { hideModal("#"+IDs.themodal); } + } + if($.isFunction(rp_ge.afterComplete)) { + setTimeout(function(){rp_ge.afterComplete(data,postdata,$("#"+frmgr));},500); + } + } + p.processing=false; + $("#sData", "#"+frmtb).attr("disabled",false); + $("div.loading","#"+IDs.themodal).fadeOut("fast"); + } + }); + } + } + e.stopPropagation(); + }); + $("#cData", "#"+frmtb).click(function(e){ + hideModal("#"+IDs.themodal); + e.stopPropagation(); + }); + $("#nData", "#"+frmtb).click(function(e){ + $("#FormError","#"+frmtb).hide(); + var npos = getCurrPos(); + npos[0] = parseInt(npos[0]); + if(npos[0] != -1 && npos[1][npos[0]+1]) { + if($.isFunction(p.onclickPgButtons)) { + p.onclickPgButtons('next',$("#"+frmgr),npos[1][npos[0]]); + } + fillData(npos[1][npos[0]+1],$t); + $($t).setSelection(npos[1][npos[0]+1]); + if($.isFunction(p.afterclickPgButtons)) { + p.afterclickPgButtons('next',$("#"+frmgr),npos[1][npos[0]+1]); + } + updateNav(npos[0]+1,npos[1].length-1); + }; + return false; + }); + $("#pData", "#"+frmtb).click(function(e){ + $("#FormError","#"+frmtb).hide(); + var ppos = getCurrPos(); + if(ppos[0] != -1 && ppos[1][ppos[0]-1]) { + if($.isFunction(p.onclickPgButtons)) { + p.onclickPgButtons('prev',$("#"+frmgr),ppos[1][ppos[0]]); + } + fillData(ppos[1][ppos[0]-1],$t); + $($t).setSelection(ppos[1][ppos[0]-1]); + if($.isFunction(p.afterclickPgButtons)) { + p.afterclickPgButtons('prev',$("#"+frmgr),ppos[1][ppos[0]-1]); + } + updateNav(ppos[0]-1,ppos[1].length-1); + }; + return false; + }); + }; + var posInit =getCurrPos(); + updateNav(posInit[0],posInit[1].length-1); + function updateNav(cr,totr,rid){ + var imp = $t.p.imgpath; + if (cr==0) { $("#pData","#"+frmtb).attr("src",imp+"off-"+$t.p.previmg); } else { $("#pData","#"+frmtb).attr("src",imp+$t.p.previmg); } + if (cr==totr) { $("#nData","#"+frmtb).attr("src",imp+"off-"+$t.p.nextimg); } else { $("#nData","#"+frmtb).attr("src",imp+$t.p.nextimg); } + }; + function getCurrPos() { + var rowsInGrid = $($t).getDataIDs(); + var selrow = $("#id_g","#"+frmtb).val(); + var pos = $.inArray(selrow,rowsInGrid); + return [pos,rowsInGrid]; + }; + function createData(rowid,obj,tb){ + var nm, hc,trdata, tdl, tde, cnt=0,tmp, dc,elc, retpos=[]; + $('#'+rowid+' td',obj.grid.bDiv).each( function(i) { + nm = obj.p.colModel[i].name; + // hidden fields are included in the form + if(obj.p.colModel[i].editrules && obj.p.colModel[i].editrules.edithidden == true) { + hc = false; + } else { + hc = obj.p.colModel[i].hidden === true ? true : false; + } + dc = hc ? "style='display:none'" : ""; + if ( nm !== 'cb' && nm !== 'subgrid' && obj.p.colModel[i].editable===true) { + if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) { + tmp = $(this).text(); + } else { + try { + tmp = $.unformat(this,{colModel:obj.p.colModel[i]},i); + } catch (_) { + tmp = $.htmlDecode($(this).html()); + } + } + var opt = $.extend(obj.p.colModel[i].editoptions || {} ,{id:nm,name:nm}); + if(!obj.p.colModel[i].edittype) obj.p.colModel[i].edittype = "text"; + elc = createEl(obj.p.colModel[i].edittype,opt,tmp); + $(elc).addClass("FormElement"); + trdata = $("").addClass("FormData").attr("id","tr_"+nm); + tdl = $("").addClass("CaptionTD"); + tde = $("").addClass("DataTD"); + $(tdl).html(obj.p.colNames[i]+": "); + $(tde).append(elc); + trdata.append(tdl); + trdata.append(tde); + if(tb) { $(tb).append(trdata); } + else { $(trdata).insertBefore("#Act_Buttons"); } + retpos[cnt] = i; + cnt++; + }; + }); + if( cnt > 0) { + var idrow = $(""+" "+""); + if(tb) { $(tb).append(idrow); } + else { $(idrow).insertBefore("#Act_Buttons"); } + } + return retpos; + }; + function fillData(rowid,obj){ + var nm, hc,cnt=0,tmp; + $('#'+rowid+' td',obj.grid.bDiv).each( function(i) { + nm = obj.p.colModel[i].name; + // hidden fields are included in the form + if(obj.p.colModel[i].editrules && obj.p.colModel[i].editrules.edithidden === true) { + hc = false; + } else { + hc = obj.p.colModel[i].hidden === true ? true : false; + } + if ( nm !== 'cb' && nm !== 'subgrid' && obj.p.colModel[i].editable===true) { + if(nm == obj.p.ExpandColumn && obj.p.treeGrid === true) { + tmp = $(this).text(); + } else { + try { + tmp = $.unformat(this,{colModel:obj.p.colModel[i]},i); + } catch (_) { + tmp = $.htmlDecode($(this).html()); + } + } + nm= nm.replace('.',"\\."); + switch (obj.p.colModel[i].edittype) { + case "password": + case "text": + tmp = $.htmlDecode(tmp); + $("#"+nm,"#"+frmtb).val(tmp); + break; + case "textarea": + if(tmp == " " || tmp == " ") {tmp='';} + $("#"+nm,"#"+frmtb).val(tmp); + break; + case "select": + $("#"+nm+" option","#"+frmtb).each(function(j){ + if (!obj.p.colModel[i].editoptions.multiple && tmp == $(this).text() ){ + this.selected= true; + } else if (obj.p.colModel[i].editoptions.multiple){ + if( $.inArray($(this).text(), tmp.split(",") ) > -1 ){ + this.selected = true; + }else{ + this.selected = false; + } + } else { + this.selected = false; + } + }); + break; + case "checkbox": + if(tmp==$("#"+nm,"#"+frmtb).val()) { + $("#"+nm,"#"+frmtb).attr("checked",true); + $("#"+nm,"#"+frmtb).attr("defaultChecked",true); //ie + } else { + $("#"+nm,"#"+frmtb).attr("checked",false); + $("#"+nm,"#"+frmtb).attr("defaultChecked",""); //ie + } + break; + } + if (hc) { $("#"+nm,"#"+frmtb).parents("tr:first").hide(); } + cnt++; + } + }); + if(cnt>0) { $("#id_g","#"+frmtb).val(rowid); } + else { $("#id_g","#"+frmtb).val(""); } + return cnt; + }; + }); + }, + delGridRow : function(rowids,p) { + p = $.extend({ + top : 0, + left: 0, + width: 240, + height: 90, + modal: false, + drag: true, + closeicon: 'ico-close.gif', + imgpath: '', + url : '', + mtype : "POST", + reloadAfterSubmit: true, + beforeShowForm: null, + afterShowForm: null, + beforeSubmit: null, + onclickSubmit: null, + afterSubmit: null, + onclickSubmit: null, + delData: {} + }, $.jgrid.del, p ||{}); + return this.each(function(){ + var $t = this; + if (!$t.grid ) { return; } + if(!rowids) { return; } + if(!p.imgpath) { p.imgpath= $t.p.imgpath; } + var onBeforeShow = typeof p.beforeShowForm === 'function' ? true: false; + var onAfterShow = typeof p.afterShowForm === 'function' ? true: false; + if (isArray(rowids)) { rowids = rowids.join(); } + var gID = $("table:first",$t.grid.bDiv).attr("id"); + var IDs = {themodal:'delmod'+gID,modalhead:'delhd'+gID,modalcontent:'delcnt'+gID}; + var dtbl = "DelTbl_"+gID; + if ( $("#"+IDs.themodal).html() != null ) { + $("#DelData>td","#"+dtbl).text(rowids); + $("#DelError","#"+dtbl).hide(); + if(onBeforeShow) { p.beforeShowForm($("#"+dtbl)); } + viewModal("#"+IDs.themodal,{modal:p.modal}); + if(onAfterShow) { p.afterShowForm($("#"+dtbl)); } + } else { + var tbl =$("
    "); + // error data + $(tbl).append(""+" "+""); + $(tbl).append(""+rowids+""); + $(tbl).append(""+p.msg+""); + // buttons at footer + var bS =""; + var bC =""; + $(tbl).append(""+bS+" "+bC+""); + createModal(IDs,tbl,p,$t.grid.hDiv,$t.grid.hDiv); + if( p.drag) { DnRModal("#"+IDs.themodal,"#"+IDs.modalhead+" td.modaltext"); } + $("#dData","#"+dtbl).click(function(e){ + var ret=[true,""]; + var postdata = $("#DelData>td","#"+dtbl).text(); //the pair is name=val1,val2,... + if( typeof p.onclickSubmit === 'function' ) { p.delData = p.onclickSubmit(p) || {}; } + if( typeof p.beforeSubmit === 'function' ) { ret = p.beforeSubmit(postdata); } + var gurl = p.url ? p.url : $t.p.editurl; + if(!gurl) { ret[0]=false;ret[1] += " "+$.jgrid.errors.nourl;} + if(ret[0] === false) { + $("#DelError>td","#"+dtbl).html(ret[1]); + $("#DelError","#"+dtbl).show(); + } else { + if(!p.processing) { + p.processing = true; + $("div.loading","#"+IDs.themodal).fadeIn("fast"); + $(this).attr("disabled",true); + var postd = $.extend({oper:"del", id:postdata},p.delData); + $.ajax({ + url:gurl, + type: p.mtype, + data:postd, + complete:function(data,Status){ + if(Status != "success") { + ret[0] = false; + ret[1] = Status+" Status: "+data.statusText +" Error code: "+data.status; + } else { + // data is posted successful + // execute aftersubmit with the returned data from server + if( typeof p.afterSubmit === 'function' ) { + ret = p.afterSubmit(data,postdata); + } + } + if(ret[0] === false) { + $("#DelError>td","#"+dtbl).html(ret[1]); + $("#DelError","#"+dtbl).show(); + } else { + if(p.reloadAfterSubmit) { + if($t.p.treeGrid) { + $($t).setGridParam({treeANode:0,datatype:$t.p.treedatatype}); + } + $($t).trigger("reloadGrid"); + } else { + var toarr = []; + toarr = postdata.split(","); + if($t.p.treeGrid===true){ + try {$($t).delTreeNode(toarr[0])} catch(e){} + } else { + for(var i=0;i"+o.alerttext+"",{imgpath:$t.p.imgpath,closeicon:o.closeicon,caption:o.alertcap,top:vheight/2-25,left:vwidth/2-100,width:200,height:50},$t.grid.hDiv,$t.grid.hDiv,true); + DnRModal("#"+alertIDs.themodal,"#"+alertIDs.modalhead); + } + var navTbl = $("").height(20); + var trd = document.createElement("tr"); + $(trd).addClass("nav-row"); + var imp = $t.p.imgpath; + var tbd; + if (o.add) { + tbd = document.createElement("td"); + $(tbd).append(" ").css({border:"none",padding:"0px"}); + trd.appendChild(tbd); + tbd = document.createElement("td"); + tbd.title = o.addtitle || ""; + $(tbd).append("
    "+o.addtext+" 
    ") + .css("cursor","pointer") + .addClass("nav-button") + .click(function(){ + if (typeof o.addfunc == 'function') { + o.addfunc(); + } else { + $($t).editGridRow("new",pAdd || {}); + } + return false; + }) + .hover( + function () { + $(this).addClass("nav-hover"); + }, + function () { + $(this).removeClass("nav-hover"); + } + ); + trd.appendChild(tbd); + tbd = null; + } + if (o.edit) { + tbd = document.createElement("td"); + $(tbd).append(" ").css({border:"none",padding:"0px"}); + trd.appendChild(tbd); + tbd = document.createElement("td"); + tbd.title = o.edittitle || ""; + $(tbd).append("
    "+o.edittext+" 
    ") + .css("cursor","pointer") + .addClass("nav-button") + .click(function(){ + var sr = $($t).getGridParam('selrow'); + if (sr) { + if(typeof o.editfunc == 'function') { + o.editfunc(sr); + } else { + $($t).editGridRow(sr,pEdit || {}); + } + } else { + viewModal("#"+alertIDs.themodal); + } + return false; + }) + .hover( function () { + $(this).addClass("nav-hover"); + }, + function () { + $(this).removeClass("nav-hover"); + } + ); + trd.appendChild(tbd); + tbd = null; + } + if (o.del) { + tbd = document.createElement("td"); + $(tbd).append(" ").css({border:"none",padding:"0px"}); + trd.appendChild(tbd); + tbd = document.createElement("td"); + tbd.title = o.deltitle || ""; + $(tbd).append("
    "+o.deltext+" 
    ") + .css("cursor","pointer") + .addClass("nav-button") + .click(function(){ + var dr; + if($t.p.multiselect) { + dr = $($t).getGridParam('selarrrow'); + if(dr.length==0) { dr = null; } + } else { + dr = $($t).getGridParam('selrow'); + } + if (dr) { $($t).delGridRow(dr,pDel || {}); } + else { viewModal("#"+alertIDs.themodal); } + return false; + }) + .hover( + function () { + $(this).addClass("nav-hover"); + }, + function () { + $(this).removeClass("nav-hover"); + } + ); + trd.appendChild(tbd); + tbd = null; + } + if (o.search) { + tbd = document.createElement("td"); + $(tbd).append(" ").css({border:"none",padding:"0px"}); + trd.appendChild(tbd); + tbd = document.createElement("td"); + if( $(elem)[0] == $t.p.pager[0] ) { pSearch = $.extend(pSearch,{dirty:true}); } + tbd.title = o.searchtitle || ""; + $(tbd).append("
    "+o.searchtext+" 
    ") + .css({cursor:"pointer"}) + .addClass("nav-button") + .click(function(){ + $($t).searchGrid(pSearch || {}); + return false; + }) + .hover( + function () { + $(this).addClass("nav-hover"); + }, + function () { + $(this).removeClass("nav-hover"); + } + ); + trd.appendChild(tbd); + tbd = null; + } + if (o.refresh) { + tbd = document.createElement("td"); + $(tbd).append(" ").css({border:"none",padding:"0px"}); + trd.appendChild(tbd); + tbd = document.createElement("td"); + tbd.title = o.refreshtitle || ""; + var dirtycell = ($(elem)[0] == $t.p.pager[0] ) ? true : false; + $(tbd).append("
    "+o.refreshtext+" 
    ") + .css("cursor","pointer") + .addClass("nav-button") + .click(function(){ + $t.p.search = false; + switch (o.refreshstate) { + case 'firstpage': + $t.p.page=1; + $($t).trigger("reloadGrid"); + break; + case 'current': + var sr = $t.p.multiselect===true ? selarrrow : $t.p.selrow; + $($t).setGridParam({gridComplete: function() { + if($t.p.multiselect===true) { + if(sr.length>0) { + for(var i=0;i" : " "; + $(tbd).append("
    "+im+""+p.caption+" 
    ") + .css("cursor","pointer") + .addClass("nav-button") + .click(function(e){ + if (typeof p.onClickButton == 'function') { p.onClickButton(); } + e.stopPropagation(); + return false; + }) + .hover( + function () { + $(this).addClass("nav-hover"); + }, + function () { + $(this).removeClass("nav-hover"); + } + ); + if(p.position != 'first') { + trd.appendChild(tbd); + } else { + $(trd).prepend(tbd); + $(trd).prepend(tbd1); + } + tbd=null;tbd1=null; + } + }); + }, + GridToForm : function( rowid, formid ) { + return this.each(function(){ + var $t = this; + if (!$t.grid) { return; } + var rowdata = $($t).getRowData(rowid); + if (rowdata) { + for(var i in rowdata) { + if ( $("[name="+i+"]",formid).is("input:radio") ) { + $("[name="+i+"]",formid).each( function() { + if( $(this).val() == rowdata[i] ) { + $(this).attr("checked","checked"); + } else { + $(this).attr("checked",""); + } + }); + } else { + // this is very slow on big table and form. + $("[name="+i+"]",formid).val(rowdata[i]); + } + } + } + }); + }, + FormToGrid : function(rowid, formid){ + return this.each(function() { + var $t = this; + if(!$t.grid) { return; } + var fields = $(formid).serializeArray(); + var griddata = {}; + $.each(fields, function(i, field){ + griddata[field.name] = field.value; + }); + $($t).setRowData(rowid,griddata); + }); + } +}); +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.import.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.import.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.import.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,132 @@ +;(function($){ +/* + * jqGrid extension for constructing Grid Data from external file + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ + $.fn.extend({ + jqGridImport : function(o) { + o = $.extend({ + imptype : "xml", // xml, json, xmlstring, jsonstring + impstring: "", + impurl: "", + mtype: "GET", + impData : {}, + xmlGrid :{ + config : "roots>grid", + data: "roots>rows" + }, + jsonGrid :{ + config : "grid", + data: "data" + } + }, o || {}); + return this.each(function(){ + var $t = this; + var XmlConvert = function (xml,o) { + var cnfg = $(o.xmlGrid.config,xml)[0]; + var xmldata = $(o.xmlGrid.data,xml)[0]; + if(xmlJsonClass.xml2json && JSON.parse) { + var jstr = xmlJsonClass.xml2json(cnfg," "); + var jstr = JSON.parse(jstr); + for(var key in jstr) { var jstr1=jstr[key];} + if(xmldata) { + // save the datatype + var svdatatype = jstr.grid.datatype; + jstr.grid.datatype = 'xmlstring'; + jstr.grid.datastr = xml; + $($t).jqGrid( jstr1 ).setGridParam({datatype:svdatatype}); + } else { + $($t).jqGrid( jstr1 ); + } + jstr = null;jstr1=null; + } else { + alert("xml2json or json.parse are not present"); + } + }; + var JsonConvert = function (jsonstr,o){ + if (jsonstr && typeof jsonstr == 'string' && JSON.parse) { + var json = JSON.parse(jsonstr); + var gprm = json[o.jsonGrid.config]; + var jdata = json[o.jsonGrid.data]; + if(jdata) { + var svdatatype = gprm.datatype; + gprm.datatype = 'jsonstring'; + gprm.datastr = jdata; + $($t).jqGrid( gprm ).setGridParam({datatype:svdatatype}); + } else { + $($t).jqGrid( gprm ); + } + } + }; + switch (o.imptype){ + case 'xml': + $.ajax({ + url:o.impurl, + type:o.mtype, + data: o.impData, + dataType:"xml", + complete: function(xml,stat) { + if(stat == 'success') { + XmlConvert(xml.responseXML,o); + xml=null; + } + } + }); + break; + case 'xmlstring' : + // we need to make just the conversion and use the same code as xml + if(o.impstring && typeof o.impstring == 'string') { + var xmld = xmlJsonClass.parseXml(o.impstring); + if(xmld) { + XmlConvert(xmld,o); + xmld = null; + } + } + break; + case 'json': + $.ajax({ + url:o.impurl, + type:o.mtype, + data: o.impData, + dataType:"json", + complete: function(json,stat) { + if(stat == 'success') { + JsonConvert(json.responseText,o ); + json=null; + } + } + }); + break; + case 'jsonstring' : + if(o.impstring && typeof o.impstring == 'string') { + JsonConvert(o.impstring,o ); + } + break; + } + }); + }, + jqGridExport : function(o) { + o = $.extend({ + exptype : "xmlstring" + }, o || {}); + var ret = null; + this.each(function () { + if(!this.grid) { return;} + var gprm = $(this).getGridParam(); + switch (o.exptype) { + case 'xmlstring' : + ret = xmlJsonClass.json2xml(gprm," "); + break; + case 'jsonstring' : + ret = JSON.stringify(gprm); + break; + } + }); + return ret; + } + }); +})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.inlinedit.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.inlinedit.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.inlinedit.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,194 @@ +;(function($){ +/** + * jqGrid extension for manipulating Grid Data + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.fn.extend({ +//Editing + editRow : function(rowid,keys,oneditfunc,succesfunc, url, extraparam, aftersavefunc,errorfunc) { + return this.each(function(){ + var $t = this, nm, tmp, editable, cnt=0, focus=null, svr=[], ind; + if (!$t.grid ) { return; } + var sz, ml,hc; + if( !$t.p.multiselect ) { + ind = $($t).getInd($t.rows,rowid); + if( ind === false ) {return;} + editable = $($t.rows[ind]).attr("editable") || "0"; + if (editable == "0") { + $('td',$t.rows[ind]).each( function(i) { + nm = $t.p.colModel[i].name; + hc = $t.p.colModel[i].hidden===true ? true : false; + try { + tmp = $.unformat(this,{colModel:$t.p.colModel[i]},i); + } catch (_) { + tmp = $.htmlDecode($(this).html()); + } + svr[nm]=tmp; + if ( nm !== 'cb' && nm !== 'subgrid' && $t.p.colModel[i].editable===true && !hc) { + if(focus===null) { focus = i; } + $(this).html(""); + var opt = $.extend($t.p.colModel[i].editoptions || {} ,{id:rowid+"_"+nm,name:nm}); + if(!$t.p.colModel[i].edittype) { $t.p.colModel[i].edittype = "text"; } + var elc = createEl($t.p.colModel[i].edittype,opt,tmp,$(this)); + $(elc).addClass("editable"); + $(this).append(elc); + //Agin IE + if($t.p.colModel[i].edittype == "select" && $t.p.colModel[i].editoptions.multiple===true && $.browser.msie) { + $(elc).width($(elc).width()); + } + cnt++; + } + }); + if(cnt > 0) { + svr['id'] = rowid; $t.p.savedRow.push(svr); + $($t.rows[ind]).attr("editable","1"); + $("td:eq("+focus+") input",$t.rows[ind]).focus(); + if(keys===true) { + $($t.rows[ind]).bind("keydown",function(e) { + if (e.keyCode === 27) { $($t).restoreRow(rowid);} + if (e.keyCode === 13) { + $($t).saveRow(rowid,succesfunc, url, extraparam, aftersavefunc,errorfunc); + return false; + } + e.stopPropagation(); + }); + } + if( $.isFunction(oneditfunc)) { oneditfunc(rowid); } + } + } + } + }); + }, + saveRow : function(rowid, succesfunc, url, extraparam, aftersavefunc,errorfunc) { + return this.each(function(){ + var $t = this, nm, tmp={}, tmp2={}, editable, fr, cv, ms, ind; + if (!$t.grid ) { return; } + ind = $($t).getInd($t.rows,rowid); + if(ind === false) {return;} + editable = $($t.rows[ind]).attr("editable"); + url = url ? url : $t.p.editurl; + if (editable==="1" && url) { + $("td",$t.rows[ind]).each(function(i) { + nm = $t.p.colModel[i].name; + if ( nm !== 'cb' && nm !== 'subgrid' && $t.p.colModel[i].editable===true) { + if( $t.p.colModel[i].hidden===true) { tmp[nm] = $(this).html(); } + else { + switch ($t.p.colModel[i].edittype) { + case "checkbox": + var cbv = ["Yes","No"]; + if($t.p.colModel[i].editoptions ) { + cbv = $t.p.colModel[i].editoptions.value.split(":"); + } + tmp[nm]= $("input",this).attr("checked") ? cbv[0] : cbv[1]; + break; + case 'text': + case 'password': + case 'textarea': + tmp[nm]= htmlEncode($("input, textarea",this).val()); + break; + case 'select': + if(!$t.p.colModel[i].editoptions.multiple) { + tmp[nm] = $("select>option:selected",this).val(); + tmp2[nm] = $("select>option:selected", this).text(); + } else { + var sel = $("select",this); + tmp[nm] = $(sel).val(); + var selectedText = []; + $("select > option:selected",this).each( + function(i,selected){ + selectedText[i] = $(selected).text(); + } + ); + tmp2[nm] = selectedText.join(","); + } + break; + } + cv = checkValues(tmp[nm],i,$t); + if(cv[0] === false) { + cv[1] = tmp[nm] + " " + cv[1]; + return false; + } + } + } + }); + if (cv[0] === false){ + try { + info_dialog($.jgrid.errors.errcap,cv[1],$.jgrid.edit.bClose, $t.p.imgpath); + } catch (e) { + alert(cv[1]); + } + return; + } + if(tmp) { tmp["id"] = rowid; if(extraparam) { tmp = $.extend({},tmp,extraparam);} } + if(!$t.grid.hDiv.loading) { + $t.grid.hDiv.loading = true; + $("div.loading",$t.grid.hDiv).fadeIn("fast"); + if (url == 'clientArray') { + tmp = $.extend({},tmp, tmp2); + $($t).setRowData(rowid,tmp); + $($t.rows[ind]).attr("editable","0"); + for( var k=0;k<$t.p.savedRow.length;k++) { + if( $t.p.savedRow[k].id===rowid) {fr = k; break;} + } + if(fr >= 0) { $t.p.savedRow.splice(fr,1); } + if( $.isFunction(aftersavefunc) ) { aftersavefunc(rowid,res.responseText); } + } else { + $.ajax({url:url, + data: tmp, + type: "POST", + complete: function(res,stat){ + if (stat === "success"){ + var ret; + if( $.isFunction(succesfunc)) { ret = succesfunc(res);} + else ret = true; + if (ret===true) { + tmp = $.extend({},tmp, tmp2); + $($t).setRowData(rowid,tmp); + $($t.rows[ind]).attr("editable","0"); + for( var k=0;k<$t.p.savedRow.length;k++) { + if( $t.p.savedRow[k].id===rowid) {fr = k; break;} + }; + if(fr >= 0) { $t.p.savedRow.splice(fr,1); } + if( $.isFunction(aftersavefunc) ) { aftersavefunc(rowid,res.responseText); } + } else { $($t).restoreRow(rowid); } + } + }, + error:function(res,stat){ + if($.isFunction(errorfunc) ) { + errorfunc(res,stat); + } else { + alert("Error Row: "+rowid+" Result: " +res.status+":"+res.statusText+" Status: "+stat); + } + } + }); + } + $t.grid.hDiv.loading = false; + $("div.loading",$t.grid.hDiv).fadeOut("fast"); + $($t.rows[ind]).unbind("keydown"); + } + } + }); + }, + restoreRow : function(rowid) { + return this.each(function(){ + var $t= this, nm, fr,ind; + if (!$t.grid ) { return; } + ind = $($t).getInd($t.rows,rowid); + if(ind === false) {return;} + for( var k=0;k<$t.p.savedRow.length;k++) { + if( $t.p.savedRow[k].id===rowid) {fr = k; break;} + } + if(fr >= 0) { + $($t).setRowData(rowid,$t.p.savedRow[fr]); + $($t.rows[ind]).attr("editable","0"); + $t.p.savedRow.splice(fr,1); + } + }); + } +//end inline edit +}); +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-bg.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-bg.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-bg.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,113 @@ +;(function($){ +/** + * jqGrid Bulgarian Translation + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "запис(а)", + loadtext: "Зареждам...", + pgtext : "от" +} +$.jgrid.search = { + caption: "Търсене...", + Find: "Намери", + Reset: "Изчисти", + odata : ['равно', 'различно', 'по-малко', 'по-малко или=','по-голямо','по-голямо или =', 'започва с','завършва с','съдържа' ] +}; +$.jgrid.edit = { + addCaption: "Нов Запис", + editCaption: "Редакция Запис", + bSubmit: "Запиши", + bCancel: "Изход", + bClose: "Затвори", + processData: "Обработка...", + msg: { + required:"Полето е задължително", + number:"Въведете валидно число!", + minValue:"стойността трябва да е по-голяма или равна от", + maxValue:"стойността трябва да е по-малка или равна от", + email: "не е валиден ел. адрес", + integer: "Въведете валидно цяло число", + date: "Въведете валидна дата" + } +}; +$.jgrid.del = { + caption: "Изтриване", + msg: "Да изтрия ли избраният запис?", + bSubmit: "Изтрий", + bCancel: "Отказ", + processData: "Обработка..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Редакция избран запис", + addtext:" ", + addtitle: "Добавяне нов запис", + deltext: " ", + deltitle: "Изтриване избран запис", + searchtext: " ", + searchtitle: "Търсене запис(и)", + refreshtext: "", + refreshtitle: "Обнови таблица", + alertcap: "Предупреждение", + alerttext: "Моля, изберете запис" +}; +// set column module +$.jgrid.col ={ + caption: "Колони", + bSubmit: "Запис", + bCancel: "Изход" +}; +$.jgrid.errors = { + errcap : "Грешка", + nourl : "Няма посочен url адрес", + norecords: "Няма запис за обработка", + model : "Модела не съответства на имената!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaultValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:" лв.", defaultValue: 0}, + date : { + dayNames: [ + "Нед", "Пон", "Вт", "Ср", "Чет", "Пет", "Съб", + "Неделя", "Понеделник", "Вторник", "Сряда", "Четвъртък", "Петък", "Събота" + ], + monthNames: [ + "Ян", "Фев", "Март", "Апр", "Май", "Юни", "Юли", "Авг", "Сеп", "Окт", "Ноем", "Дек", + "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември" + ], + AmPm : ["","","",""], + S: function (j) { + if(j==7 || j==8 || j== 27 || j== 28) { + return 'ми'; + } + return ['ви', 'ри', 'ти'][Math.min((j - 1) % 10, 2)]; + }, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-cs.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-cs.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-cs.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,113 @@ +;(function($){ +/** + * jqGrid Czech Translation + * Pavel Jirak pavel.jirak@jipas.cz + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Řádek(ů)", + loadtext: "Načítám...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Vyhledávám...", + Find: "Hledat", + Reset: "Reset", + odata : ['rovno', 'není rovno', 'menší', 'menší nebo rovno', 'větší', 'větší nebo rovno', 'začíná na', 'končí na', 'obsahuje' ] +}; +$.jgrid.edit = { + addCaption: "Přidat záznam", + editCaption: "Editace záznamu", + bSubmit: "Uložit", + bCancel: "Storno", + bClose: "Zavřít", + processData: "Zpracovávám...", + msg: { + required:"Pole je vyžadováno", + number:"Prosím, vložte validní číslo", + minValue:"hodnota musí být větší než nebo rovná ", + maxValue:"hodnota musí být menší než nebo rovná ", + email: "není validní e-mail", + integer: "Prosím, vložte celé číslo", + date: "Prosím, vložte validní datum" + } +}; +$.jgrid.del = { + caption: "Smazat", + msg: "Smazat vybraný(é) záznam(y)?", + bSubmit: "Smazat", + bCancel: "Storno", + processData: "Zpracovávám..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Editovat vybraný řádek", + addtext:" ", + addtitle: "Přidat nový řádek", + deltext: " ", + deltitle: "Smazat vybraný záznam ", + searchtext: " ", + searchtitle: "Najít záznamy", + refreshtext: "", + refreshtitle: "Obnovit tabulku", + alertcap: "Varování", + alerttext: "Prosím, vyberte řádek" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Zobrazit/Skrýt sloupce", + bSubmit: "Uložit", + bCancel: "Storno" +}; +$.jgrid.errors = { + errcap : "Chyba", + nourl : "Není nastavena url", + norecords: "Žádné záznamy ke zpracování", + model : "Length colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Ne", "Po", "Út", "St", "Čt", "Pá", "So", + "Neděle", "Pondělí", "Úterý", "Středa", "Čtvrtek", "Pátek", "Sobota" + ], + monthNames: [ + "Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čvc", "Srp", "Zář", "Říj", "Lis", "Pro", + "Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec" + ], + AmPm : ["do","od","DO","OD"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show', + addParam : '' +}; +// US +// GB +// CA +// AU +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-de.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-de.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-de.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,111 @@ +;(function($){ +/** + * jqGrid German Translation + * Version 1.0.0 (developed for jQuery Grid 3.3.1) + * Olaf Klöppel opensource@blue-hit.de + * http://blue-hit.de/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ + +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Zeile(n)", + loadtext: "Lädt...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Suche...", + Find: "Finden", + Reset: "Zurücksetzen", + odata : ['gleich', 'ungleich', 'kleiner', 'kleiner oder gleich','größer','größer oder gleich', 'beginnt mit','endet mit','beinhaltet' ] +}; +$.jgrid.edit = { + addCaption: "Datensatz hinzufügen", + editCaption: "Datensatz bearbeiten", + bSubmit: "Speichern", + bCancel: "Abbrechen", + bClose: "Schließen", + processData: "Verarbeitung läuft...", + msg: { + required:"Feld ist erforderlich", + number: "Bitte geben Sie eine Zahl ein", + minValue:"Wert muss größer oder gleich sein, als ", + maxValue:"Wert muss kleiner oder gleich sein, als ", + email: "ist keine valide E-Mail Adresse", + integer: "Bitte geben Sie eine Ganzzahl ein", + date: "Please, enter valid date value" + } +}; +$.jgrid.del = { + caption: "Löschen", + msg: "Ausgewählte Datensätze löschen?", + bSubmit: "Löschen", + bCancel: "Abbrechen", + processData: "Verarbeitung läuft..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Ausgewählten Zeile editieren", + addtext:" ", + addtitle: "Neuen Zeile einfügen", + deltext: " ", + deltitle: "Ausgewählte Zeile löschen", + searchtext: " ", + searchtitle: "Datensatz finden", + refreshtext: "", + refreshtitle: "Tabelle neu laden", + alertcap: "Warnung", + alerttext: "Bitte Zeile auswählen" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Spalten anzeigen/verbergen", + bSubmit: "Speichern", + bCancel: "Abbrechen" +}; +$.jgrid.errors = { + errcap : "Fehler", + nourl : "Keine URL angegeben", + norecords: "Keine Datensätze zum verarbeiten", + model : "Length of colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); + Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-dk.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-dk.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-dk.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,109 @@ +;(function($){ +/** + * jqGrid Danish Translation + * Kaare Rasmussen kjs@jasonic.dk + * http://jasonic.dk/blog + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Række(r)", + loadtext: "Indlæser...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Søg...", + Find: "Find", + Reset: "Nulstil", + odata : ['lig med', 'forskellig fra', 'mindre end', 'mindre end eller lig med','større end',' større end eller lig med', 'starter med','slutter med','indeholder' ] +}; +$.jgrid.edit = { + addCaption: "Tilføj", + editCaption: "Ret", + bSubmit: "Send", + bCancel: "Annuller", + bClose: "Luk", + processData: "Behandler...", + msg: { + required:"Felt er nødvendigt", + number:"Indtast venligst et validt tal", + minValue:"værdi skal være større end eller lig med", + maxValue:"værdi skal være mindre end eller lig med", + email: "er ikke en valid email", + integer: "Indtast venligst et validt heltalt", + date: "Indtast venligst en valid datoværdi" + } +}; +$.jgrid.del = { + caption: "Slet", + msg: "Slet valgte række(r)?", + bSubmit: "Slet", + bCancel: "Annuller", + processData: "Behandler..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Rediger valgte række", + addtext:" ", + addtitle: "Tilføj ny række", + deltext: " ", + deltitle: "Slet valgte række", + searchtext: " ", + searchtitle: "Find poster", + refreshtext: "", + refreshtitle: "Indlæs igen", + alertcap: "Advarsel", + alerttext: "Vælg venligst række" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Vis/skjul kolonner", + bSubmit: "Send", + bCancel: "Annuller" +}; +$.jgrid.errors = { + errcap : "Fejl", + nourl : "Ingel url valgt", + norecords: "Ingen poster at behandle", + model : "colNames og colModel har ikke samme længde!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Søn", "Man", "Tirs", "Ons", "Tors", "Fre", "Lør", + "Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec", + "Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December" + ], + AmPm : ["","","",""], + S: function (j) {return '.'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "j/n/Y", + LongDate: "l d. F Y", + FullDateTime: "l d F Y G:i:s", + MonthDay: "d. F", + ShortTime: "G:i", + LongTime: "G:i:s", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +// DK +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-el.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-el.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-el.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,112 @@ +;(function($){ +/** + * jqGrid Greek (el) Translation + * Alex Cicovic + * http://www.alexcicovic.com + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Εγγραφές", + loadtext: "Φόρτωση...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Αναζήτηση...", + Find: "Εύρεση", + Reset: "Επαναφορά", + odata : ['ίσο', 'άνισο', 'μικρότερο από', 'μικρότερο ή ίσο','μεγαλύτερο από','μεγαλύτερο ή ίσο', 'ξεκινά με','τελειώνει με','εμπεριέχει' ] +}; +$.jgrid.edit = { + addCaption: "Εισαγωγή Εγγραφής", + editCaption: "Επεξεργασία Εγγραφής", + bSubmit: "Καταχώρηση", + bCancel: "Άκυρο", + bClose: "Κλείσιμο", + processData: "Υπό επεξεργασία...", + msg: { + required:"Το πεδίο είναι απαραίτητο", + number:"Το πεδίο δέχεται μόνο αριθμούς", + minValue:"Η τιμή πρέπει να είναι μεγαλύτερη ή ίση του ", + maxValue:"Η τιμή πρέπει να είναι μικρότερη ή ίση του ", + email: "Η διεύθυνση e-mail δεν είναι έγκυρη", + integer: "Το πεδίο δέχεται μόνο ακέραιους αριθμούς", + date: "Ή ημερομηνία δεν είναι έγκυρη" + } +}; +$.jgrid.del = { + caption: "Διαγραφή", + msg: "Διαγραφή των επιλεγμένων εγγραφών;", + bSubmit: "Ναι", + bCancel: "Άκυρο", + processData: "Υπό επεξεργασία..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Επεξεργασία επιλεγμένης εγγραφής", + addtext:" ", + addtitle: "Εισαγωγή νέας εγγραφής", + deltext: " ", + deltitle: "Διαγραφή επιλεγμένης εγγραφής", + searchtext: " ", + searchtitle: "Εύρεση Εγγραφών", + refreshtext: "", + refreshtitle: "Ανανέωση Πίνακα", + alertcap: "Προσοχή", + alerttext: "Δεν έχετε επιλέξει εγγραφή" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Εμφάνιση / Απόκρυψη Στηλών", + bSubmit: "ΟΚ", + bCancel: "Άκυρο" +}; +$.jgrid.errors = { + errcap : "Σφάλμα", + nourl : "Δεν έχει δοθεί διεύθυνση χειρισμού για τη συγκεκριμένη ενέργεια", + norecords: "Δεν υπάρχουν εγγραφές προς επεξεργασία", + model : "Άνισος αριθμός πεδίων colNames/colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ", + "Κυριακή", "Δευτέρα", "Τρίτη", "Τετάρτη", "Πέμπτη", "Παρασκευή", "Σάββατο" + ], + monthNames: [ + "Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαι", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ", + "Ιανουάριος", "Φεβρουάριος", "Μάρτιος", "Απρίλιος", "Μάιος", "Ιούνιος", "Ιούλιος", "Αύγουστος", "Σεπτέμβριος", "Οκτώβριος", "Νοέμβριος", "Δεκέμβριος" + ], + AmPm : ["πμ","μμ","ΠΜ","ΜΜ"], + S: function (j) {return j == 1 || j > 1 ? ['η'][Math.min((j - 1) % 10, 3)] : ''}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', // showlink + showAction: 'show' // showlink +}; +// US +// GB +// CA +// AU +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-en.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-en.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-en.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,113 @@ +;(function($){ +/** + * jqGrid English Translation + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Row(s)", + loadtext: "Loading...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Search...", + Find: "Find", + Reset: "Reset", + odata : ['equal', 'not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','ends with','contains' ] +}; +$.jgrid.edit = { + addCaption: "Add Record", + editCaption: "Edit Record", + bSubmit: "Submit", + bCancel: "Cancel", + bClose: "Close", + processData: "Processing...", + msg: { + required:"Field is required", + number:"Please, enter valid number", + minValue:"value must be greater than or equal to ", + maxValue:"value must be less than or equal to", + email: "is not a valid e-mail", + integer: "Please, enter valid integer value", + date: "Please, enter valid date value" + } +}; +$.jgrid.del = { + caption: "Delete", + msg: "Delete selected record(s)?", + bSubmit: "Delete", + bCancel: "Cancel", + processData: "Processing..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Edit selected row", + addtext:" ", + addtitle: "Add new row", + deltext: " ", + deltitle: "Delete selected row", + searchtext: " ", + searchtitle: "Find records", + refreshtext: "", + refreshtitle: "Reload Grid", + alertcap: "Warning", + alerttext: "Please, select row" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Show/Hide Columns", + bSubmit: "Submit", + bCancel: "Cancel" +}; +$.jgrid.errors = { + errcap : "Error", + nourl : "No url is set", + norecords: "No records to process", + model : "Length of colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show', + addParam : '' +}; +// US +// GB +// CA +// AU +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-fa.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-fa.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-fa.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,110 @@ +;(function($){ +/** + * jqGrid Persian Translation + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "رديف", + loadtext: "بارگزاري...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "جستجو...", + Find: "يافته ها", + Reset: "نتايج", + odata : ['مساوي', 'نا مساوي', 'کمتر از', 'کمتر يا مساوي','بزرگتر','بزرگتر يا مساوي', 'شروع با','خاتمه با','شامل' ] +}; +$.jgrid.edit = { + addCaption: "اضافه کردن رکورد", + editCaption: "ويرايش رکورد", + bSubmit: "ثبت", + bCancel: "انصراف", + bClose: "بستن", + processData: "پردازش...", + msg: { + required:"فيلدها بايد ختما پر شوند", + number:"لطفا عدد وعتبر وارد کنيد", + minValue:"مقدار وارد شده بايد بزرگتر يا مساوي با", + maxValue:"مقدار وارد شده بايد کوچکتر يا مساوي", + email: "پست الکترونيک وارد شده معتبر نيست", + integer: "لطفا يک عدد صحيح وارد کنيد", + date: "لطفا يک تاريخ معتبر وارد کنيد" + } +}; +$.jgrid.del = { + caption: "حذف", + msg: "از حذف گزينه هاي انتخاب شده مطمئن هستيد؟", + bSubmit: "حذف", + bCancel: "ابطال", + processData: "پردازش..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "ويرايش رديف هاي انتخاب شده", + addtext:" ", + addtitle: "افزودن رديف جديد", + deltext: " ", + deltitle: "حذف ردبف هاي انتخاب شده", + searchtext: " ", + searchtitle: "جستجوي رديف", + refreshtext: "", + refreshtitle: "بازيابي مجدد صفحه", + alertcap: "اخطار", + alerttext: "لطفا يک رديف انتخاب کنيد" +}; +// setcolumns module +$.jgrid.col ={ + caption: "نمايش/عدم نمايش ستون", + bSubmit: "ثبت", + bCancel: "انصراف" +}; +$.jgrid.errors = { + errcap : "خطا", + nourl : "هيچ آدرسي تنظيم نشده است", + norecords: "هيچ رکوردي براي پردازش موجود نيست", + model : "طول نام ستون ها محالف ستون هاي مدل مي باشد!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "يک", "دو", "سه", "چهار", "پنج", "جمع", "شنب", + "يکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "ژانويه", "فوريه", "مارس", "آوريل", "مه", "ژوئن", "ژوئيه", "اوت", "سپتامبر", "اکتبر", "نوامبر", "December" + ], + AmPm : ["ب.ظ","ب.ظ","ق.ظ","ق.ظ"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'نمايش' +}; +// US +// GB +// CA +// AU +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-fi.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-fi.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-fi.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,109 @@ +;(function($){ +/** + * jqGrid (fi) Finnish Translation + * Jukka Inkeri awot.fi + * http://awot.fi + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Rivejä", + loadtext: "Haetaan...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Etsi...", + Find: "Etsi", + Reset: "Tyhjää", + odata : ['=', '<>', '<', '<=','>','>=', 'alkaa','loppuu','sisätää' ] +}; +$.jgrid.edit = { + addCaption: "Uusi rivi", + editCaption: "Muokkaa rivi", + bSubmit: "OK", + bCancel: "Peru", + bClose: "Sulje", + processData: "Suoritetaan...", + msg: { + required:"pakollinen", + number:"Anna kelvollinen nro", + minValue:"arvo oltava >= ", + maxValue:"arvo oltava <= ", + email: "virheellinen sposti ", + integer: "Anna kelvollinen kokonaisluku", + date: "Anna kelvollinen pvm" + } +}; +$.jgrid.del = { + caption: "Poista", + msg: "Poista valitut rivi(t)?", + bSubmit: "Poista", + bCancel: "Peru", + processData: "Suoritetaan..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Muokkaa valittu rivi", + addtext:" ", + addtitle: "Uusi rivi", + deltext: " ", + deltitle: "Poista valittu rivi", + searchtext: " ", + searchtitle: "Etsi tietoja", + refreshtext: "", + refreshtitle: "Lataa uudelleen", + alertcap: "Varoitus", + alerttext: "Valitse rivi" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Nayta/Piilota sarakkeet", + bSubmit: "OK", + bCancel: "Peru" +}; +$.jgrid.errors = { + errcap : "Virhe", + nourl : "url asettamatta", + norecords: "Ei muokattavia tietoja", + model : "Pituus colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: "", defaulValue: 0}, + number : {decimalSeparator:",", thousandsSeparator: "", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:",", thousandsSeparator: "", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Su", "Ma", "Ti", "Ke", "To", "Pe", "La", + "Sunnuntai", "Maanantai", "Tiista", "Keskiviikko", "Torstai", "Perjantai", "Lauantai" + ], + monthNames: [ + "Tam", "Hel", "Maa", "Huh", "Tou", "Kes", "Hei", "Elo", "Syy", "Lok", "Mar", "Jou", + "Tammikuu", "Helmikuu", "Maaliskuu", "Huhtikuu", "Toukokuu", "Kesäkuu", "Heinäkuu", "Elokuu", "Syyskuu", "Lokakuu", "Marraskuu", "Joulukuu" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "d.m.Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'nayta' +}; +// FI +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-fr.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-fr.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-fr.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,128 @@ +;(function($){ +/** + * jqGrid French Translation + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Ligne(s)", + loadtext: "Chargement...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Recherche...", + Find: "Chercher", + Reset: "Annuler", + odata : ['égal', 'différent', 'inférieur', 'inférieur ou égal','supérieur','supérieur ou égal', 'débute par','termine par','contient'] +}; +$.jgrid.edit = { + addCaption: "Ajouter", + editCaption: "Editer", + bSubmit: "Valider", + bCancel: "Annuler", + bClose: "Fermer", + processData: "Traitement...", + msg: { + required:"Champ obligatoire", + number:"Saisissez un nombre valide", + minValue:"La valeur doit être supérieure ou égal à 0 ", + maxValue:"La valeur doit être inférieure ou égal à 0", + email: "n'est pas un email valide", + integer: "Saisissez un entier valide", + date: "Saisissez une date valide" + } +}; +$.jgrid.del = { + caption: "Supprimer", + msg: "Supprimer les enregistrements sélectionnés ?", + bSubmit: "Supprimer", + bCancel: "Annuler", + processData: "Traitement..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Editer la ligne sélectionnée", + addtext:" ", + addtitle: "Ajouter une ligne", + deltext: " ", + deltitle: "Supprimer la ligne sélectionnée", + searchtext: " ", + searchtitle: "Chercher un enregistrement", + refreshtext: "", + refreshtitle: "Recharger le tableau", + alertcap: "Avertissement", + alerttext: "Veuillez sélectionner une ligne" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Afficher/Masquer les colonnes", + bSubmit: "Valider", + bCancel: "Annuler" +}; +$.jgrid.errors = { + errcap : "Erreur", + nourl : "Aucune url paramétrée", + norecords: "Aucun enregistrement à traiter", + model : "Nombre de titres (colNames) <> Nombre de données (colModel)!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam", + "Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi" + ], + monthNames: [ + "Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Dec", + "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Saptembre", "Octobre", "Novembre", "Décembre" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + /* + // Original version + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + */ + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"d-m-Y H:i:s", + ISO8601Short:"d-m-Y", + ShortDate: "j/n/Y", + LongDate: "l d F Y", + FullDateTime: "l d F Y, G:i:s", + MonthDay: "d F", + ShortTime: "G:i", + LongTime: "G:i:s", + SortableDateTime: "d-m-Y\\TH:i:s", + UniversalSortableDateTime: "d-m-Y H:i:sO", + YearMonth: "F Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-is.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-is.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-is.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,106 @@ +;(function($){ +/** + * jqGrid Icelandic Translation + * jtm@hi.is Univercity of Iceland + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Ra�ir(s)", + loadtext: "Hle�ur...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Leita...", + Find: "Leita", + Reset: "Endursetja", + odata : ['sama og', 'ekki sama og', 'minna en', 'minna en e�a jafnt og','meira en','meira en e�a jafnt og', 'byrjar �','endar �','inniheldur' ] +}; +$.jgrid.edit = { + addCaption: "Add Record", + editCaption: "Edit Record", + bSubmit: "Vista", + bCancel: "H�tta vi�", + bClose: "Loka", + processData: "Vinnur...", + msg: { + required:"Reitur er nau�synlegur", + number:"Vinsamlega settu inn t�lu", + minValue:"gildi ver�ur a� vera meira en e�a jafnt og ", + maxValue:"gildi ver�ur a� vera minna en e�a jafnt og ", + email: "er ekki l�glegt email", + integer: "Vinsamlega settu inn t�lu" + } +}; +$.jgrid.del = { + caption: "Ey�a", + msg: "Ey�a v�ldum f�rslum ?", + bSubmit: "Ey�a", + bCancel: "H�tta vi�", + processData: "Vinnur..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Breyta f�rslu", + addtext:" ", + addtitle: "N� f�rsla", + deltext: " ", + deltitle: "Ey�a f�rslu", + searchtext: " ", + searchtitle: "Leita", + refreshtext: "", + refreshtitle: "Endurhla�a", + alertcap: "Vi�v�run", + alerttext: "Vinsamlega veldu f�rslu" +}; +// setcolumns module +$.jgrid.col ={ + caption: "S�na / fela d�lka", + bSubmit: "Vista", + bCancel: "H�tta vi�" +}; +$.jgrid.errors = { + errcap : "Villa", + nourl : "Vantar sl��", + norecords: "Engar f�rslur valdar", + model : "Length of colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-it.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-it.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-it.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,107 @@ +;(function($){ +/** + * jqGrid Italian Translation + * Vincenzo Solomita vincenzosolomita@gmail.com + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Record", + loadtext: "Caricamento...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Ricerca...", + Find: "Cerca", + Reset: "Pulisci", + odata : ['uguale', 'diverso', 'minore', 'minore o uguale','maggiore','maggiore o uguale', 'inizia con','finisce con','contiene' ] +}; +$.jgrid.edit = { + addCaption: "Aggiungi Record", + editCaption: "Modifica Record", + bSubmit: "Invia", + bCancel: "Annulla", + bClose: "Chiudi", + processData: "In elaborazione...", + msg: { + required:"Campo richiesto", + number:"Per favore, inserisci un valore valido", + minValue:"il valore deve essere maggiore o uguale a ", + maxValue:"il valore deve essere minore o uguale a", + email: "e-mail non corretta", + integer: "Please, enter valid integer value", + date: "Please, enter valid date value" + } +}; +$.jgrid.del = { + caption: "Cancella", + msg: "Cancellare record selezionato/i?", + bSubmit: "Cancella", + bCancel: "Annulla", + processData: "In elaborazione..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Modifica record selezionato", + addtext:" ", + addtitle: "Aggiungi nuovo record", + deltext: " ", + deltitle: "Cancella record selezionato", + searchtext: " ", + searchtitle: "Ricerca record", + refreshtext: "", + refreshtitle: "Aggiorna griglia", + alertcap: "Attenzione", + alerttext: "Per favore, seleziona un record" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Mostra/Nascondi Colonne", + bSubmit: "Invia", + bCancel: "Annulla" +}; +$.jgrid.errors = { + errcap : "Errore", + nourl : "Url non settata", + norecords: "Nessun record da elaborare", + model : "Length of colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-pl.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-pl.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-pl.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,108 @@ +;(function($){ +/** + * jqGrid Polish Translation + * Piotr Roznicki roznicki@o2.pl + * http://www.roznicki.prv.pl + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Wiersz(y)", + loadtext: "Ładowanie...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Wyszukiwanie...", + Find: "Szukaj", + Reset: "Czyść", + odata : ['dokładnie', 'różne od', 'mniejsze od', 'mniejsze lub różne','większe od','większe lub różne', 'zacznij od','zakończ na','zawiera' ] +}; +$.jgrid.edit = { + addCaption: "Dodaj rekord", + editCaption: "Edytuj rekord", + bSubmit: "Zapisz", + bCancel: "Anuluj", + bClose: "Zamknij", + processData: "Przetwarzanie...", + msg: { + required:"Pole jest wymagane", + number:"Proszę wpisać poprawną liczbę", + minValue:"wartość musi być większa lub równa", + maxValue:"wartość musi być mniejsza od", + email: "nie jest adresem e-mail", + integer: "Proszę wpisać poprawną liczbę", + date: "Please, enter valid date value" + } +}; +$.jgrid.del = { + caption: "Usuwanie", + msg: "Usuń wybrany rekord(y)?", + bSubmit: "Usuń", + bCancel: "Anuluj", + processData: "Przetwarzanie..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Edytuj wybrany wiersz", + addtext:" ", + addtitle: "Dodaj nowy wiersz", + deltext: " ", + deltitle: "Usuń wybrany wiersz", + searchtext: " ", + searchtitle: "Wyszukaj rekord", + refreshtext: "", + refreshtitle: "Przeładuj", + alertcap: "Uwaga", + alerttext: "Proszę wybrać wiersz" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Pokaż/Ukryj kolumny", + bSubmit: "Zatwierdź", + bCancel: "Anuluj" +}; +$.jgrid.errors = { + errcap : "Błąd", + nourl : "Brak adresu url", + norecords: "Brak danych", + model : "Length of colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-pt-br.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-pt-br.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-pt-br.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,108 @@ +;(function($){ +/** + * jqGrid Brazilian-Portuguese Translation + * Junior Gobira juniousbr@gmail.com + * http://jnsa.com.br + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Registro(s)", + loadtext: "Carregando...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Procurar...", + Find: "Procurar", + Reset: "Resetar", + odata : ['igual', 'diferente', 'menor', 'menor igual','maior','maior igual', 'come�ando com','terminando com','cont�m' ] +}; +$.jgrid.edit = { + addCaption: "Incluir", + editCaption: "Alterar", + bSubmit: "Enviar", + bCancel: "Cancelar", + bClose: "Fechar", + processData: "Carregando...", + msg: { + required:"Campo � requerido", + number:"Por favor, informe um n�mero v�lido", + minValue:"valor deve ser igual ou maior que ", + maxValue:"valor deve ser menor ou igual a", + email: "este e-mail n�o � v�lido", + integer: "Por favor, informe um valor inteiro", + date: "Please, enter valid date value" + } +}; +$.jgrid.del = { + caption: "Delete", + msg: "Deletar registros selecionado(s)?", + bSubmit: "Delete", + bCancel: "Cancelar", + processData: "Carregando..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Alterar registro selecionado", + addtext:" ", + addtitle: "Incluir novo registro", + deltext: " ", + deltitle: "Deletar registro selecionado", + searchtext: " ", + searchtitle: "Procurar registros", + refreshtext: "", + refreshtitle: "Recarrgando Tabela", + alertcap: "Aviso", + alerttext: "Por favor, selecione um registro" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Mostrar/Esconder Colunas", + bSubmit: "Enviar", + bCancel: "Cancelar" +}; +$.jgrid.errors = { + errcap : "Erro", + nourl : "Nenhuma URL defenida", + norecords: "Sem registros para exibir", + model : "Length of colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-pt.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-pt.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-pt.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,107 @@ +;(function($){ +/** + * jqGrid Portuguese Translation +* Tradu��o da jqGrid em Portugues por Frederico Carvalho, http://www.eyeviewdesign.pt + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Registo(s)", + loadtext: "A carregar...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Busca...", + Find: "Procurar", + Reset: "Limpar", + odata : ['igual', 'n�o igual', 'menor', 'menor ou igual', 'maior', 'maior ou igual', 'come�a com', 'termina com','cont�m' ] +}; +$.jgrid.edit = { + addCaption: "Adicionar Registo", + editCaption: "Modificar Registo", + bSubmit: "Submeter", + bCancel: "Cancelar", + bClose: "Fechar", + processData: "A processar...", + msg: { + required:"Campo obrigat�rio", + number:"Por favor, introduza um numero", + minValue:"O valor deve ser maior ou igual que", + maxValue:"O valor deve ser menor ou igual a", + email: "N�o � um endere�o de email v�lido", + integer: "Por favor, introduza um numero inteiro", + date: "Por favor, introduza uma data v�lida." + } +}; +$.jgrid.del = { + caption: "Eliminar", + msg: "Deseja eliminar o(s) registo(s) seleccionado(s)?", + bSubmit: "Eliminar", + bCancel: "Cancelar", + processData: "A processar..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Modificar registo seleccionado", + addtext:" ", + addtitle: "Adicionar novo registo", + deltext: " ", + deltitle: "Eliminar registo seleccionado", + searchtext: " ", + searchtitle: "Procurar", + refreshtext: "", + refreshtitle: "Actualizar", + alertcap: "Aviso", + alerttext: "Por favor, seleccione um registo" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Mostrar/Ocultar Colunas", + bSubmit: "Enviar", + bCancel: "Cancelar" +}; +$.jgrid.errors = { + errcap : "Erro", + nourl : "N�o especificou um url", + norecords: "N�o existem dados para processar", + model : "Tamanho do colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab", + "Domingo", "Segunda-Feira", "Ter�a-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "S�bado" + ], + monthNames: [ + "Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez", + "Janeiro", "Fevereiro", "Mar�o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['�', '�', '�', '�'][Math.min((j - 1) % 10, 3)] : '�'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-ru.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-ru.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-ru.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,108 @@ +;(function($){ +/** + * jqGrid Russian Translation v1.1 21.01.2009 + * Alexey Kanaev softcore@rambler.ru + * http://softcore.com.ru + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Записей", + loadtext: "Загрузка...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Поиск...", + Find: "Найти", + Reset: "Сброс", + odata : ['равно', 'не равно', 'меньше', 'меньше или равно','больше','больше или равно', 'начинается с','заканчивается на','содержит' ] +}; +$.jgrid.edit = { + addCaption: "Добавить запись", + editCaption: "Редактировать запись", + bSubmit: "Сохранить", + bCancel: "Отмена", + bClose: "Закрыть", + processData: "Обработка...", + msg: { + required:"Поле является обязательным", + number:"Пожалуйста, введите правильное число", + minValue:"значение должно быть больше либо равно", + maxValue:"значение должно быть больше либо равно", + email: "некорректное значение e-mail", + integer: "Пожалуйста введите целое число", + date: "Please, enter valid date value" + } +}; +$.jgrid.del = { + caption: "Удалить", + msg: "Удалить выделенную запись(и)?", + bSubmit: "Удвлить", + bCancel: "Отмена", + processData: "Обработка..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Редактировать выделенную запись", + addtext:" ", + addtitle: "Добавить новую запись", + deltext: " ", + deltitle: "Удалить выделенную запись", + searchtext: " ", + searchtitle: "Найти записи", + refreshtext: "", + refreshtitle: "Обновить таблицу", + alertcap: "Внимание", + alerttext: "Пожалуйста, выделите запись" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Показать/скрыть столбцы", + bSubmit: "Сохранить", + bCancel: "Отмена" +}; +$.jgrid.errors = { + errcap : "Ошибка", + nourl : "URL не установлен", + norecords: "Нет записей для обработки", + model : "Число полей не соответствует числу столбцов таблицы!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб", + "Воскресение", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота" + ], + monthNames: [ + "Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек", + "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd.m.Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n.j.Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y G:i:s", + MonthDay: "F d", + ShortTime: "G:i", + LongTime: "G:i:s", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-sp.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-sp.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-sp.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,107 @@ +;(function($){ +/** + * jqGrid Spanish Translation + * Traduccion jqGrid en Espa�ol por Yamil Bracho + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Fila(s)", + loadtext: "Cargando...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Busqueda...", + Find: "Buscar", + Reset: "Limpiar", + odata : ['igual', 'no igual', 'menor', 'menor o igual', 'mayor', 'mayor o igual', 'comienza con', 'termina con','contiene' ] +}; +$.jgrid.edit = { + addCaption: "Agregar Registro", + editCaption: "Modificar Registro", + bSubmit: "Enviar", + bCancel: "Cancelar", + bClose: "Cerrar", + processData: "Procesando...", + msg: { + required:"Campo es requerido", + number:"Por favor, introduzca un numero", + minValue:"El valor debe ser mayor o igual que ", + maxValue:"El valor debe ser menor o igual a", + email: "no es un direccion de correo valida", + integer: "Por favor, introduzca un entero", + date: "Please, enter valid date value" + } +}; +$.jgrid.del = { + caption: "Eliminar", + msg: "¿ Desea eliminar los registros seleccionados ?", + bSubmit: "Eliminar", + bCancel: "Cancelar", + processData: "Procesando..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Modificar fila seleccionada", + addtext:" ", + addtitle: "Agregar nueva fila", + deltext: " ", + deltitle: "Eliminar fila seleccionada", + searchtext: " ", + searchtitle: "Buscar información", + refreshtext: "", + refreshtitle: "Refrescar Rejilla", + alertcap: "Aviso", + alerttext: "Por favor, seleccione una fila" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Mostrar/Ocultar Columnas", + bSubmit: "Enviar", + bCancel: "Cancelar" +}; +$.jgrid.errors = { + errcap : "Error", + nourl : "No se ha especificado una url", + norecords: "No hay datos para procesar", + model : "Length of colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-sv.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-sv.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-sv.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,110 @@ +;(function($){ +/** + * jqGrid Swedish Translation + * Anders Nyberg anders.nyberg@alecta.com + * http://wwww.alecta.com + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "post(er)", + loadtext: "Laddar...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Sök...", + Find: "Hitta", + Reset: "Återställ", + odata : ['lika', 'ej lika', 'mindre', 'mindre eller lika','större','större eller lika', 'börjar med','slutar med','innehåller' ] +}; +$.jgrid.edit = { + addCaption: "Skapa post", + editCaption: "Ändra post", + bSubmit: "Utför", + bCancel: "Avbryt", + bClose: "Stäng", + processData: "Processar...", + msg: { + required:"Fält är obligatoriskt", + number:"Välj korrekt nummer", + minValue:"värdet måste vara större än eller lika med", + maxValue:"värdet måste vara mindre än eller lika med", + email: "är inte korrekt e-mail adress", + integer: "Var god ange korrekt heltal", + date: "Var god att ange korrekt datum" + } +}; +$.jgrid.del = { + caption: "Ta bort", + msg: "Ta bort vald post(er)?", + bSubmit: "Utför", + bCancel: "Avbryt", + processData: "Processing..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Ändra vald rad", + addtext:" ", + addtitle: "Skapa ny rad", + deltext: " ", + deltitle: "Ta bort vald rad", + searchtext: " ", + searchtitle: "Hitta poster", + refreshtext: "", + refreshtitle: "Ladda om Grid", + alertcap: "Varning", + alerttext: "Var god välj rad" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Visa/Göm kolumner", + bSubmit: "Utför", + bCancel: "Avbryt" +}; +$.jgrid.errors = { + errcap : "Fel", + nourl : "Ingen URL är definierad", + norecords: "Inga poster att processa", + model : "Längden av colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör", + "Söndag", "Måndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec", + "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December" + ], + AmPm : ["fm","em","FM","EM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'Y-m-d', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show', + addParam : '' +}; +// SV +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-tr.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-tr.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.locale-tr.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,108 @@ +;(function($){ +/** + * jqGrid Turkish Translation + * H.İbrahim Yılmaz ibrahim.yilmaz@karmabilisim.net + * http://www.arkeoloji.web.tr + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.jgrid = {}; + +$.jgrid.defaults = { + recordtext: "Satır(lar)", + loadtext: "Yükleniyor...", + pgtext : "/" +}; +$.jgrid.search = { + caption: "Arama...", + Find: "Bul", + Reset: "Temizle", + odata : ['eşittir', 'eşit değildir', 'küçük', 'küçük veya eşit','büyük','büyük veya eşit', 'ile başlayan','ile biten','içeren' ] +}; +$.jgrid.edit = { + addCaption: "Kayıt Ekle", + editCaption: "Kayıt Düzenle", + bSubmit: "Gönder", + bCancel: "İptal", + bClose: "Kapat", + processData: "İşlem yapılıyor...", + msg: { + required:"Alan gerekli", + number:"Lütfen bir numara giriniz", + minValue:"girilen değer daha büyük ya da buna eşit olmalıdır", + maxValue:"girilen değer daha küçük ya da buna eşit olmalıdır", + email: "geçerli bir e-posta adresi değildir", + integer: "Lütfen bir tamsayı giriniz", + date: "Please, enter valid date value" + } +}; +$.jgrid.del = { + caption: "Sil", + msg: "Seçilen kayıtlar silinsin mi?", + bSubmit: "Sil", + bCancel: "İptal", + processData: "İşlem yapılıyor..." +}; +$.jgrid.nav = { + edittext: " ", + edittitle: "Seçili satırı düzenle", + addtext:" ", + addtitle: "Yeni satır ekle", + deltext: " ", + deltitle: "Seçili satırı sil", + searchtext: " ", + searchtitle: "Kayıtları bul", + refreshtext: "", + refreshtitle: "Tabloyu yenile", + alertcap: "Uyarı", + alerttext: "Lütfen bir satır seçiniz" +}; +// setcolumns module +$.jgrid.col ={ + caption: "Sütunları göster/gizle", + bSubmit: "Gönder", + bCancel: "İptal" +}; +$.jgrid.errors = { + errcap : "Hata", + nourl : "Bir url yapılandırılmamış", + norecords: "İşlem yapılacak bir kayıt yok", + model : "Length of colNames <> colModel!" +}; +$.jgrid.formatter = { + integer : {thousandsSeparator: " ", defaulValue: 0}, + number : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0}, + currency : {decimalSeparator:".", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix:"", defaulValue: 0}, + date : { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ], + AmPm : ["am","pm","AM","PM"], + S: function (j) {return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th'}, + srcformat: 'Y-m-d', + newformat: 'd/m/Y', + masks : { + ISO8601Long:"Y-m-d H:i:s", + ISO8601Short:"Y-m-d", + ShortDate: "n/j/Y", + LongDate: "l, F d, Y", + FullDateTime: "l, F d, Y g:i:s A", + MonthDay: "F d", + ShortTime: "g:i A", + LongTime: "g:i:s A", + SortableDateTime: "Y-m-d\\TH:i:s", + UniversalSortableDateTime: "Y-m-d H:i:sO", + YearMonth: "F, Y" + }, + reformatAfterEdit : false + }, + baseLinkUrl: '', + showAction: 'show' +}; +})(jQuery); Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.postext.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.postext.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.postext.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,64 @@ +;(function($){ +/** + * jqGrid extension + * Paul Tiseo ptiseo@wasteconsultants.com + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.fn.extend({ + getPostData : function(){ + var $t = this[0]; + if(!$t.grid) { return; } + return $t.p.postData; + }, + setPostData : function( newdata ) { + var $t = this[0]; + if(!$t.grid) { return; } + // check if newdata is correct type + if ( typeof(newdata) === 'object' ) { + $t.p.postData = newdata; + } + else { + alert("Error: cannot add a non-object postData value. postData unchanged."); + } + }, + appendPostData : function( newdata ) { + var $t = this[0]; + if(!$t.grid) { return; } + // check if newdata is correct type + if ( typeof(newdata) === 'object' ) { + $.extend($t.p.postData, newdata); + } + else { + alert("Error: cannot append a non-object postData value. postData unchanged."); + } + }, + setPostDataItem : function( key, val ) { + var $t = this[0]; + if(!$t.grid) { return; } + $t.p.postData[key] = val; + }, + getPostDataItem : function( key ) { + var $t = this[0]; + if(!$t.grid) { return; } + return $t.p.postData[key]; + }, + removePostDataItem : function( key ) { + var $t = this[0]; + if(!$t.grid) { return; } + delete $t.p.postData[key]; + }, + getUserData : function(){ + var $t = this[0]; + if(!$t.grid) { return; } + return $t.p.userData; + }, + getUserDataItem : function( key ) { + var $t = this[0]; + if(!$t.grid) { return; } + return $t.p.userData[key]; + } +}); +})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.setcolumns.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.setcolumns.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.setcolumns.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,78 @@ +;(function($){ +/** + * jqGrid extension for manipulating columns properties + * Piotr Roznicki roznicki@o2.pl + * http://www.roznicki.prv.pl + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.fn.extend({ + setColumns : function(p) { + p = $.extend({ + top : 0, + left: 0, + width: 200, + height: 195, + modal: false, + drag: true, + closeicon: 'ico-close.gif', + beforeShowForm: null, + afterShowForm: null, + afterSubmitForm: null + }, $.jgrid.col, p ||{}); + return this.each(function(){ + var $t = this; + if (!$t.grid ) { return; } + var onBeforeShow = typeof p.beforeShowForm === 'function' ? true: false; + var onAfterShow = typeof p.afterShowForm === 'function' ? true: false; + var onAfterSubmit = typeof p.afterSubmitForm === 'function' ? true: false; + if(!p.imgpath) { p.imgpath= $t.p.imgpath; } // Added From Tony Tomov + var gID = $("table:first",$t.grid.bDiv).attr("id"); + var IDs = {themodal:'colmod'+gID,modalhead:'colhd'+gID,modalcontent:'colcnt'+gID}; + var dtbl = "ColTbl_"+gID; + if ( $("#"+IDs.themodal).html() != null ) { + if(onBeforeShow) { p.beforeShowForm($("#"+dtbl)); } + viewModal("#"+IDs.themodal,{modal:p.modal}); + if(onAfterShow) { p.afterShowForm($("#"+dtbl)); } + } else { + var tbl =$("
    "); + for(i=0;i" + ""); + } + } + var bS =""; + var bC =""; + $(tbl).append(""+bS+" "+bC+""); + createModal(IDs,tbl,p,$t.grid.hDiv,$t.grid.hDiv); + if( p.drag) { DnRModal("#"+IDs.themodal,"#"+IDs.modalhead+" td.modaltext"); } + $("#dData","#"+dtbl).click(function(e){ + for(i=0;i<$t.p.colModel.length;i++){ + if(!$t.p.colModel[i].hidedlg) { // added from T. Tomov + if($("#col_" + $t.p.colModel[i].name).attr("checked")) { + $($t).showCol($t.p.colModel[i].name); + $("#col_" + $t.p.colModel[i].name).attr("defaultChecked",true); // Added from T. Tomov IE BUG + } else { + $($t).hideCol($t.p.colModel[i].name); + $("#col_" + $t.p.colModel[i].name).attr("defaultChecked",""); // Added from T. Tomov IE BUG + } + } + } + $("#"+IDs.themodal).jqmHide(); + if (onAfterSubmit) { p.afterSubmitForm($("#"+dtbl)); } + return false; + }); + $("#eData", "#"+dtbl).click(function(e){ + $("#"+IDs.themodal).jqmHide(); + return false; + }); + if(onBeforeShow) { p.beforeShowForm($("#"+dtbl)); } + viewModal("#"+IDs.themodal,{modal:p.modal}); + if(onAfterShow) { p.afterShowForm($("#"+dtbl)); } + } + }); + } +}); +})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.subgrid.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.subgrid.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.subgrid.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,253 @@ +;(function($){ +/** + * jqGrid extension for SubGrid Data + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.fn.extend({ +addSubGrid : function(t,row,pos,rowelem) { + return this.each(function(){ + var ts = this; + if (!ts.grid ) { + return; + } + var td, res,_id, pID, nhc, bfsc; + td = document.createElement("td"); + $(td,t).html("").addClass("sgcollapsed") + .click( function(e) { + if($(this).hasClass("sgcollapsed")) { + pID = $("table:first",ts.grid.bDiv).attr("id"); + res = $(this).parent(); + var atd= pos==1?'':''; + _id = $(res).attr("id"); + bfsc =true; + if($.isFunction(ts.p.subGridBeforeExpand)) { + bfsc = ts.p.subGridBeforeExpand(pID+"_"+_id,_id); + } + if(bfsc === false) {return false;} + nhc = 0; + $.each(ts.p.colModel,function(i,v){ + if(this.hidden === true) { + nhc++; + } + }); + var subdata = ""+atd+"
    "; + $(this).parent().after( subdata+ "
    " ); + $(".tablediv",ts).css("width", ts.grid.width-20+"px"); + if( $.isFunction(ts.p.subGridRowExpanded) ) { + ts.p.subGridRowExpanded(pID+"_"+ _id,_id); + } else { + populatesubgrid(res); + } + $(this).html("").removeClass("sgcollapsed").addClass("sgexpanded"); + } else if($(this).hasClass("sgexpanded")) { + bfsc = true; + if( $.isFunction(ts.p.subGridRowColapsed)) { + res = $(this).parent(); + _id = $(res).attr("id"); + bfsc = ts.p.subGridRowColapsed(pID+"_"+_id,_id ); + }; + if(bfsc===false) {return false;} + $(this).parent().next().remove(".subgrid"); + $(this).html("").removeClass("sgexpanded").addClass("sgcollapsed"); + } + return false; + }); + row.appendChild(td); + //------------------------- + var populatesubgrid = function( rd ) { + var res,sid,dp; + sid = $(rd).attr("id"); + dp = {id:sid, nd_: (new Date().getTime())}; + if(!ts.p.subGridModel[0]) { + return false; + } + if(ts.p.subGridModel[0].params) { + for(var j=0; j < ts.p.subGridModel[0].params.length; j++) { + for(var i=0; i"+sgmap.row, sjxml).each( function(){ + trdiv = document.createElement("div"); + trdiv.className="rowdiv"; + if(sgmap.repeatitems === true) { + $(sgmap.cell,this).each( function(i) { + subGridCell(trdiv, this.textContent || this.text || ' ',i); }); + } else { + var f = ts.p.subGridModel[0].mapping; + if (f) { + for (i=0;i + If the first column of the table contains checkboxes or + radiobuttons then the jqGrid is made selectable. +*/ +// Addition - selector can be a class or id +function tableToGrid(selector) { +$(selector).each(function() { + if(this.grid) {return;} //Adedd from Tony Tomov + // This is a small "hack" to make the width of the jqGrid 100% + $(this).width("99%"); + var w = $(this).width(); + + // Text whether we have single or multi select + var inputCheckbox = $('input[type=checkbox]:first', $(this)); + var inputRadio = $('input[type=radio]:first', $(this)); + var selectMultiple = inputCheckbox.length > 0; + var selectSingle = !selectMultiple && inputRadio.length > 0; + var selectable = selectMultiple || selectSingle; + var inputName = inputCheckbox.attr("name") || inputRadio.attr("name"); + + // Build up the columnModel and the data + var colModel = []; + var colNames = []; + $('th', $(this)).each(function() { + if (colModel.length == 0 && selectable) { + colModel.push({ + name: '__selection__', + index: '__selection__', + width: 0, + hidden: true + }); + colNames.push('__selection__'); + } else { + colModel.push({ + name: $(this).html(), + index: $(this).html(), + width: $(this).width() || 150 + }); + colNames.push($(this).html()); + } + }); + var data = []; + var rowIds = []; + var rowChecked = []; + $('tbody > tr', $(this)).each(function() { + var row = {}; + var rowPos = 0; + data.push(row); + $('td', $(this)).each(function() { + if (rowPos == 0 && selectable) { + var input = $('input', $(this)); + var rowId = input.attr("value"); + rowIds.push(rowId || data.length); + if (input.attr("checked")) { + rowChecked.push(rowId); + } + row[colModel[rowPos].name] = input.attr("value"); + } else { + row[colModel[rowPos].name] = $(this).html(); + } + rowPos++; + }); + }); + + // Clear the original HTML table + $(this).empty(); + + // Mark it as jqGrid + $(this).addClass("scroll"); + + $(this).jqGrid({ + datatype: "local", + width: w, + colNames: colNames, + colModel: colModel, + multiselect: selectMultiple + //inputName: inputName, + //inputValueCol: imputName != null ? "__selection__" : null + }); + + // Add data + for (var a = 0; a < data.length; a++) { + var id = null; + if (rowIds.length > 0) { + id = rowIds[a]; + if (id && id.replace) { + // We have to do this since the value of a checkbox + // or radio button can be anything + id = encodeURIComponent(id).replace(/[.\-%]/g, "_"); + } + } + if (id == null) { + id = a + 1; + } + $(this).addRowData(id, data[a]); + } + + // Set the selection + for (var a = 0; a < rowChecked.length; a++) { + $(this).setSelection(rowChecked[a]); + } +}); +}; Index: lams_tool_assessment/web/includes/javascript/jqGrid/grid.treegrid.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/grid.treegrid.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/grid.treegrid.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,407 @@ +;(function($) { +/* +** + * jqGrid extension - Tree Grid + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +$.fn.extend({ + setTreeNode : function(rd, row){ + return this.each(function(){ + var $t = this; + if( !$t.grid || !$t.p.treeGrid ) { return; } + var expCol=0,i=0; + if(!$t.p.expColInd) { + for (var key in $t.p.colModel){ + if($t.p.colModel[key].name == $t.p.ExpandColumn) { + expCol = i; + $t.p.expColInd = expCol; + break; + } + i++; + } + if(!$t.p.expColInd ) {$t.p.expColInd = expCol;} + } else { + expCol = $t.p.expColInd; + } + var expanded = $t.p.treeReader.expanded_field; + var isLeaf = $t.p.treeReader.leaf_field; + var level = $t.p.treeReader.level_field; + row.level = rd[level]; + + if($t.p.treeGridModel == 'nested') { + row.lft = rd[$t.p.treeReader.left_field]; + row.rgt = rd[$t.p.treeReader.right_field]; + if(!rd[isLeaf]) { + // NS Model + rd[isLeaf] = (parseInt(row.rgt,10) === parseInt(row.lft,10)+1) ? 'true' : 'false'; + } + } else { + row.parent_id = rd[$t.p.treeReader.parent_id_field]; + } + + var curExpand = (rd[expanded] && rd[expanded] == "true") ? true : false; + var curLevel = parseInt(row.level,10); + var ident,lftpos; + if($t.p.tree_root_level === 0) { + ident = curLevel+1; + lftpos = curLevel; + } else { + ident = curLevel; + lftpos = curLevel -1; + } + var twrap = document.createElement("div"); + $(twrap).addClass("tree-wrap").width(ident*18); + var treeimg = document.createElement("div"); + $(treeimg).css("left",lftpos*18); + twrap.appendChild(treeimg); + + if(rd[isLeaf] == "true") { + $(treeimg).addClass("tree-leaf"); + row.isLeaf = true; + } else { + if(rd[expanded] == "true") { + $(treeimg).addClass("tree-minus treeclick"); + row.expanded = true; + } else { + $(treeimg).addClass("tree-plus treeclick"); + row.expanded = false; + } + } + if(parseInt(rd[level],10) !== parseInt($t.p.tree_root_level,10)) { + if(!$($t).isVisibleNode(row)){ + $(row).css("display","none"); + } + } + var mhtm = $("td:eq("+expCol+")",row).html(); + var thecell = $("td:eq("+expCol+")",row).html(""+mhtm+"").prepend(twrap); + $(".treeclick",thecell).click(function(e){ + var target = e.target || e.srcElement; + var ind =$(target,$t.rows).parents("tr:first")[0].rowIndex; + if(!$t.rows[ind].isLeaf){ + if($t.rows[ind].expanded){ + $($t).collapseRow($t.rows[ind]); + $($t).collapseNode($t.rows[ind]); + } else { + $($t).expandRow($t.rows[ind]); + $($t).expandNode($t.rows[ind]); + } + } + //e.stopPropagation(); + return false; + }); + //if($t.p.ExpandColClick === true) { + $("span", thecell).css("cursor","pointer").click(function(e){ + var target = e.target || e.srcElement; + var ind =$(target,$t.rows).parents("tr:first")[0].rowIndex; + if(!$t.rows[ind].isLeaf){ + if($t.rows[ind].expanded){ + $($t).collapseRow($t.rows[ind]); + $($t).collapseNode($t.rows[ind]); + } else { + $($t).expandRow($t.rows[ind]); + $($t).expandNode($t.rows[ind]); + } + } + $($t).setSelection($t.rows[ind].id); + return false; + }); + //} + }); + }, + setTreeGrid : function() { + return this.each(function (){ + var $t = this; + if(!$t.p.treeGrid) { return; } + $.extend($t.p,{treedatatype: null}); + if($t.p.treeGridModel == 'nested') { + $t.p.treeReader = $.extend({ + level_field: "level", + left_field:"lft", + right_field: "rgt", + leaf_field: "isLeaf", + expanded_field: "expanded" + },$t.p.treeReader); + } else + if($t.p.treeGridModel == 'adjacency') { + $t.p.treeReader = $.extend({ + level_field: "level", + parent_id_field: "parent", + leaf_field: "isLeaf", + expanded_field: "expanded" + },$t.p.treeReader ); + } + }); + }, + expandRow: function (record){ + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + var childern = $($t).getNodeChildren(record); + //if ($($t).isVisibleNode(record)) { + $(childern).each(function(i){ + $(this).css("display",""); + if(this.expanded) { + $($t).expandRow(this); + } + }); + //} + }); + }, + collapseRow : function (record) { + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + var childern = $($t).getNodeChildren(record); + $(childern).each(function(i){ + $(this).css("display","none"); + $($t).collapseRow(this); + }); + }); + }, + // NS ,adjacency models + getRootNodes : function() { + var result = []; + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + switch ($t.p.treeGridModel) { + case 'nested' : + var level = $t.p.treeReader.level_field; + $($t.rows).each(function(i){ + if(parseInt(this[level],10) === parseInt($t.p.tree_root_level,10)) { + result.push(this); + } + }); + break; + case 'adjacency' : + $($t.rows).each(function(i){ + if(this.parent_id.toLowerCase() == "null") { + result.push(this); + } + }); + break; + } + }); + return result; + }, + getNodeDepth : function(rc) { + var ret = null; + this.each(function(){ + var $t = this; + if(!this.grid || !this.p.treeGrid) { return; } + switch ($t.p.treeGridModel) { + case 'nested' : + ret = parseInt(rc.level,10) - parseInt(this.p.tree_root_level,10); + break; + case 'adjacency' : + ret = $($t).getNodeAncestors(rc); + break; + } + }); + return ret; + }, + getNodeParent : function(rc) { + var result = null; + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + switch ($t.p.treeGridModel) { + case 'nested' : + var lft = parseInt(rc.lft,10), rgt = parseInt(rc.rgt,10), level = parseInt(rc.level,10); + $(this.rows).each(function(){ + if(parseInt(this.level,10) === level-1 && parseInt(this.lft) < lft && parseInt(this.rgt) > rgt) { + result = this; + return false; + } + }); + break; + case 'adjacency' : + $(this.rows).each(function(){ + if(this.id === rc.parent_id ) { + result = this; + return false; + } + }); + break; + } + }); + return result; + }, + getNodeChildren : function(rc) { + var result = []; + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + switch ($t.p.treeGridModel) { + case 'nested' : + var lft = parseInt(rc.lft,10), rgt = parseInt(rc.rgt,10), level = parseInt(rc.level,10); + var ind = rc.rowIndex; + $(this.rows).slice(1).each(function(i){ + if(parseInt(this.level,10) === level+1 && parseInt(this.lft,10) > lft && parseInt(this.rgt,10) < rgt) { + result.push(this); + } + }); + break; + case 'adjacency' : + $(this.rows).slice(1).each(function(i){ + if(this.parent_id == rc.id) { + result.push(this); + } + }); + break; + } + }); + return result; + }, + // End NS, adjacency Model + getNodeAncestors : function(rc) { + var ancestors = []; + this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + var parent = $(this).getNodeParent(rc); + while (parent) { + ancestors.push(parent); + parent = $(this).getNodeParent(parent); + } + }); + return ancestors; + }, + isVisibleNode : function(rc) { + var result = true; + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + var ancestors = $($t).getNodeAncestors(rc); + $(ancestors).each(function(){ + result = result && this.expanded; + if(!result) {return false;} + }); + }); + return result; + }, + isNodeLoaded : function(rc) { + var result; + this.each(function(){ + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + if(rc.loaded !== undefined) { + result = rc.loaded; + } else if( rc.isLeaf || $($t).getNodeChildren(rc).length > 0){ + result = true; + } else { + result = false; + } + }); + return result; + }, + expandNode : function(rc) { + return this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + if(!rc.expanded) { + if( $(this).isNodeLoaded(rc) ) { + rc.expanded = true; + $("div.treeclick",rc).removeClass("tree-plus").addClass("tree-minus"); + } else { + rc.expanded = true; + $("div.treeclick",rc).removeClass("tree-plus").addClass("tree-minus"); + this.p.treeANode = rc.rowIndex; + this.p.datatype = this.p.treedatatype; + if(this.p.treeGridModel == 'nested') { + $(this).setGridParam({postData:{nodeid:rc.id,n_left:rc.lft,n_right:rc.rgt,n_level:rc.level}}); + } else { + $(this).setGridParam({postData:{nodeid:rc.id,parentid:rc.parent_id,n_level:rc.level}}); + } + $(this).trigger("reloadGrid"); + if(this.p.treeGridModel == 'nested') { + $(this).setGridParam({postData:{nodeid:'',n_left:'',n_right:'',n_level:''}}); + } else { + $(this).setGridParam({postData:{nodeid:'',parentid:'',n_level:''}}); + } + } + } + }); + }, + collapseNode : function(rc) { + return this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + if(rc.expanded) { + rc.expanded = false; + $("div.treeclick",rc).removeClass("tree-minus").addClass("tree-plus"); + } + }); + }, + SortTree : function( newDir) { + return this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + var i, len, + rec, records = [], + roots = $(this).getRootNodes(); + // Sorting roots + roots.sort(function(a, b) { + if (a.sortKey < b.sortKey) {return -newDir;} + if (a.sortKey > b.sortKey) {return newDir;} + return 0; + }); + // Sorting children + for (i = 0, len = roots.length; i < len; i++) { + rec = roots[i]; + records.push(rec); + $(this).collectChildrenSortTree(records, rec, newDir); + } + var $t = this; + $.each(records, function(index, row) { + $('tbody',$t.grid.bDiv).append(row); + row.sortKey = null; + }); + }); + }, + collectChildrenSortTree : function(records, rec, newDir) { + return this.each(function(){ + if(!this.grid || !this.p.treeGrid) { return; } + var i, len, + child, + children = $(this).getNodeChildren(rec); + children.sort(function(a, b) { + if (a.sortKey < b.sortKey) {return -newDir;} + if (a.sortKey > b.sortKey) {return newDir;} + return 0; + }); + for (i = 0, len = children.length; i < len; i++) { + child = children[i]; + records.push(child); + $(this).collectChildrenSortTree(records, child,newDir); + } + }); + }, + // experimental + setTreeRow : function(rowid, data) { + var nm, success=false; + this.each(function(){ + var t = this; + if(!t.grid || !t.p.treeGrid) { return; } + success = $(t).setRowData(rowid,data); + }); + return success; + }, + delTreeNode : function (rowid) { + return this.each(function () { + var $t = this; + if(!$t.grid || !$t.p.treeGrid) { return; } + var rc = $($t).getInd($t.rows,rowid,true); + if (rc) { + var dr = $($t).getNodeChildren(rc); + if(dr.length>0){ + for (var i=0;i, http://www.iceburg.net + * Licensed under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + * $Version: 2007.08.19 +r2 + */ + +(function($){ +$.fn.jqDrag=function(h){return i(this,h,'d');}; +$.fn.jqResize=function(h){return i(this,h,'r');}; +$.jqDnR={ + dnr:{}, + e:0, + drag:function(v){ + if(M.k == 'd')E.css({left:M.X+v.pageX-M.pX,top:M.Y+v.pageY-M.pY}); + else E.css({width:Math.max(v.pageX-M.pX+M.W,0),height:Math.max(v.pageY-M.pY+M.H,0)}); + return false; + }, + stop:function(){ + //E.css('opacity',M.o); + $().unbind('mousemove',J.drag).unbind('mouseup',J.stop); + } +}; +var J=$.jqDnR,M=J.dnr,E=J.e, +i=function(e,h,k){ + return e.each(function(){ + h=(h)?$(h,e):e; + h.bind('mousedown',{e:e,k:k},function(v){ + var d=v.data,p={};E=d.e; + // attempt utilization of dimensions plugin to fix IE issues + if(E.css('position') != 'relative'){try{E.position(p);}catch(e){}} + M={ + X:p.left||f('left')||0, + Y:p.top||f('top')||0, + W:f('width')||E[0].scrollWidth||0, + H:f('height')||E[0].scrollHeight||0, + pX:v.pageX, + pY:v.pageY, + k:d.k + //o:E.css('opacity') + }; + //E.css({opacity:0.8}); + $().mousemove($.jqDnR.drag).mouseup($.jqDnR.stop); + return false; + }); + }); +}, +f=function(k){return parseInt(E.css(k))||false;}; +})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/jqModal.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/jqModal.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/jqModal.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,69 @@ +/* + * jqModal - Minimalist Modaling with jQuery + * (http://dev.iceburg.net/jquery/jqModal/) + * + * Copyright (c) 2007,2008 Brice Burgess + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * $Version: 03/01/2009 +r14 + */ +(function($) { +$.fn.jqm=function(o){ +var p={ +overlay: 50, +overlayClass: 'jqmOverlay', +closeClass: 'jqmClose', +trigger: '.jqModal', +ajax: F, +ajaxText: '', +target: F, +modal: F, +toTop: F, +onShow: F, +onHide: F, +onLoad: F +}; +return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s; +H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s}; +if(p.trigger)$(this).jqmAddTrigger(p.trigger); +});}; + +$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');}; +$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');}; +$.fn.jqmShow=function(t){return this.each(function(){t=t||window.event;$.jqm.open(this._jqm,t);});}; +$.fn.jqmHide=function(t){return this.each(function(){t=t||window.event;$.jqm.close(this._jqm,t)});}; + +$.jqm = { +hash:{}, +open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('
    ').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z); + if(c.modal) {if(!A[0])L('bind');A.push(s);} + else if(c.overlay > 0)h.w.jqmAddClose(o); + else o=F; + + h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F; + if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}} + + if(c.ajax) {var r=c.target||h.w,u=c.ajax,r=(typeof r == 'string')?$(r,h.w):$(r),u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u; + r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});} + else if(cc)h.w.jqmAddClose($(cc,h.w)); + + if(c.toTop&&h.o)h.w.before('').insertAfter(h.o); + (c.onShow)?c.onShow(h):h.w.show();e(h);return F; +}, +close:function(s){var h=H[s];if(!h.a)return F;h.a=F; + if(A[0]){A.pop();if(!A[0])L('unbind');} + if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove(); + if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return F; +}, +params:{}}; +var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version == "6.0"),F=false, +i=$('').css({opacity:0}), +e=function(h){if(ie6)if(h.o)h.o.html('

    ').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);}, +f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}}, +L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);}, +m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r;}, +hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function() { + if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});}; +})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/jquery.fmatter.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/jquery.fmatter.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/jquery.fmatter.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,421 @@ +/* +** + * formatter for values but most of the values if for jqGrid + * Some of this was inspired and based on how YUI does the table datagrid but in jQuery fashion + * we are trying to keep it as light as possible + * Joshua Burnett josh@9ci.com + * http://www.greenbill.com + * + * Changes from Tony Tomov tony@trirand.com + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * +**/ + +;(function($) { + $.fmatter = {}; + //opts can be id:row id for the row, rowdata:the data for the row, colmodel:the column model for this column + //example {id:1234,} + $.fn.fmatter = function(formatType, cellval, opts, act) { + //debug(this); + //debug(cellval); + // build main options before element iteration + opts = $.extend({}, $.jgrid.formatter, opts); + return this.each(function() { + //debug("in the each"); + $this = $(this); + //for the metaplugin if it exists + var o = $.meta ? $.extend({}, opts, $this.data()) : opts; + //debug("firing formatter"); + fireFormatter($this,formatType,cellval, opts, act); + }); + }; + $.fmatter.util = { + // Taken from YAHOO utils + NumberFormat : function(nData,opts) { + if(!isNumber(nData)) { + nData *= 1; + } + if(isNumber(nData)) { + var bNegative = (nData < 0); + var sOutput = nData + ""; + var sDecimalSeparator = (opts.decimalSeparator) ? opts.decimalSeparator : "."; + var nDotIndex; + if(isNumber(opts.decimalPlaces)) { + // Round to the correct decimal place + var nDecimalPlaces = opts.decimalPlaces; + var nDecimal = Math.pow(10, nDecimalPlaces); + sOutput = Math.round(nData*nDecimal)/nDecimal + ""; + nDotIndex = sOutput.lastIndexOf("."); + if(nDecimalPlaces > 0) { + // Add the decimal separator + if(nDotIndex < 0) { + sOutput += sDecimalSeparator; + nDotIndex = sOutput.length-1; + } + // Replace the "." + else if(sDecimalSeparator !== "."){ + sOutput = sOutput.replace(".",sDecimalSeparator); + } + // Add missing zeros + while((sOutput.length - 1 - nDotIndex) < nDecimalPlaces) { + sOutput += "0"; + } + } + } + if(opts.thousandsSeparator) { + var sThousandsSeparator = opts.thousandsSeparator; + nDotIndex = sOutput.lastIndexOf(sDecimalSeparator); + nDotIndex = (nDotIndex > -1) ? nDotIndex : sOutput.length; + var sNewOutput = sOutput.substring(nDotIndex); + var nCount = -1; + for (var i=nDotIndex; i>0; i--) { + nCount++; + if ((nCount%3 === 0) && (i !== nDotIndex) && (!bNegative || (i > 1))) { + sNewOutput = sThousandsSeparator + sNewOutput; + } + sNewOutput = sOutput.charAt(i-1) + sNewOutput; + } + sOutput = sNewOutput; + } + // Prepend prefix + sOutput = (opts.prefix) ? opts.prefix + sOutput : sOutput; + // Append suffix + sOutput = (opts.suffix) ? sOutput + opts.suffix : sOutput; + return sOutput; + + } else { + return nData; + } + }, + // Tony Tomov + // PHP implementation. Sorry not all options are supported. + // Feel free to add them if you want + DateFormat : function (format, date, newformat, opts) { + var token = /\\.|[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]/g, + timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, + timezoneClip = timezoneClip = /[^-+\dA-Z]/g, + pad = function (value, length) { + value = String(value); + length = parseInt(length) || 2; + while (value.length < length) value = '0' + value; + return value; + }, + ts = {m : 1, d : 1, y : 1970, h : 0, i : 0, s : 0}, + timestamp=0, + dateFormat=["i18n"]; + // Internationalization strings + dateFormat["i18n"] = { + dayNames: opts.dayNames, + monthNames: opts.monthNames + }; + format = format.toLowerCase(); + date = date.split(/[\\\/:_;.tT\s-]/); + format = format.split(/[\\\/:_;.tT\s-]/); + // !!!!!!!!!!!!!!!!!!!!!! + // Here additional code to parse for month names + // !!!!!!!!!!!!!!!!!!!!!! + for(var i=0;i= 70 && ty <= 99) ts.y = 1900+ts.y; + else if (ty >=0 && ty <=69) ts.y= 2000+ts.y; + timestamp = new Date(ts.y, ts.m, ts.d, ts.h, ts.i, ts.s,0); + if( opts.masks.newformat ) { + newformat = opts.masks.newformat; + } else if ( !newformat ) { + newformat = 'Y-m-d'; + } + var + G = timestamp.getHours(), + i = timestamp.getMinutes(), + j = timestamp.getDate(), + n = timestamp.getMonth() + 1, + o = timestamp.getTimezoneOffset(), + s = timestamp.getSeconds(), + u = timestamp.getMilliseconds(), + w = timestamp.getDay(), + Y = timestamp.getFullYear(), + N = (w + 6) % 7 + 1, + z = (new Date(Y, n - 1, j) - new Date(Y, 0, 1)) / 86400000, + flags = { + // Day + d: pad(j), + D: dateFormat.i18n.dayNames[w], + j: j, + l: dateFormat.i18n.dayNames[w + 7], + N: N, + S: opts.S(j), + //j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th', + w: w, + z: z, + // Week + W: N < 5 ? Math.floor((z + N - 1) / 7) + 1 : Math.floor((z + N - 1) / 7) || ((new Date(Y - 1, 0, 1).getDay() + 6) % 7 < 4 ? 53 : 52), + // Month + F: dateFormat.i18n.monthNames[n - 1 + 12], + m: pad(n), + M: dateFormat.i18n.monthNames[n - 1], + n: n, + t: '?', + // Year + L: '?', + o: '?', + Y: Y, + y: String(Y).substring(2), + // Time + a: G < 12 ? opts.AmPm[0] : opts.AmPm[1], + A: G < 12 ? opts.AmPm[2] : opts.AmPm[3], + B: '?', + g: G % 12 || 12, + G: G, + h: pad(G % 12 || 12), + H: pad(G), + i: pad(i), + s: pad(s), + u: u, + // Timezone + e: '?', + I: '?', + O: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), + P: '?', + T: (String(timestamp).match(timezone) || [""]).pop().replace(timezoneClip, ""), + Z: '?', + // Full Date/Time + c: '?', + r: '?', + U: Math.floor(timestamp / 1000) + }; + return newformat.replace(token, function ($0) { + return $0 in flags ? flags[$0] : $0.substring(1); + }); + } + }; + $.fn.fmatter.defaultFormat = function(el, cellval, opts) { + $(el).html((isValue(cellval) && cellval!=="" ) ? cellval : " "); + }; + $.fn.fmatter.email = function(el, cellval, opts) { + if(!isEmpty(cellval)) { + $(el).html("" + cellval + ""); + }else { + $.fn.fmatter.defaultFormat(el, cellval); + } + }; + $.fn.fmatter.checkbox =function(el,cval,opts) { + cval=cval+""; cval=cval.toLowerCase(); + var bchk = cval.search(/(false|0|no|off)/i)<0 ? " checked=\"checked\"" : ""; + $(el).html(""); + }, + $.fn.fmatter.link = function(el,cellval,opts) { + if(!isEmpty(cellval)) { + $(el).html("" + cellval + ""); + }else { + $(el).html(isValue(cellval) ? cellval : ""); + } + }; + $.fn.fmatter.showlink = function(el,cellval,opts) { + var op = {baseLinkUrl: opts.baseLinkUrl,showAction:opts.showAction, addParam: opts.addParam }; + if(!isUndefined(opts.colModel.formatoptions)) { + op = $.extend({},op,opts.colModel.formatoptions); + } + idUrl = op.baseLinkUrl+op.showAction + '?id='+opts.rowId+op.addParam; + if(isString(cellval)) { //add this one even if its blank string + $(el).html("" + cellval + ""); + }else { + $.fn.fmatter.defaultFormat(el, cellval); + } + }; + $.fn.fmatter.integer = function(el,cellval,opts) { + var op = $.extend({},opts.integer); + if(!isUndefined(opts.colModel.formatoptions)) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(isEmpty(cellval)) { + cellval = op.defaultValue || 0; + } + $(el).html($.fmatter.util.NumberFormat(cellval,op)); + }; + $.fn.fmatter.number = function (el,cellval, opts) { + var op = $.extend({},opts.number); + if(!isUndefined(opts.colModel.formatoptions)) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(isEmpty(cellval)) { + cellval = op.defaultValue || 0; + } + $(el).html($.fmatter.util.NumberFormat(cellval,op)); + }; + $.fn.fmatter.currency = function (el,cellval, opts) { + var op = $.extend({},opts.currency); + if(!isUndefined(opts.colModel.formatoptions)) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(isEmpty(cellval)) { + cellval = op.defaultValue || 0; + } + $(el).html($.fmatter.util.NumberFormat(cellval,op)); + }; + $.fn.fmatter.date = function (el, cellval, opts, act) { + var op = $.extend({},opts.date); + if(!isUndefined(opts.colModel.formatoptions)) { + op = $.extend({},op,opts.colModel.formatoptions); + } + if(!op.reformatAfterEdit && act=='edit'){ + $.fn.fmatter.defaultFormat(el,cellval); + } else if(!isEmpty(cellval)) { + var ndf = $.fmatter.util.DateFormat(op.srcformat,cellval,op.newformat,op); + $(el).html(ndf); + } else { + $.fn.fmatter.defaultFormat(el,cellval); + } + }; + $.fn.fmatter.select = function (el, cellval,opts, act) { + // jqGrid specific + if(act=='edit') { + $.fn.fmatter.defaultFormat(el,cellval); + } else if (!isEmpty(cellval)) { + var oSelect = false; + if(!isUndefined(opts.colModel.editoptions)){ + oSelect= opts.colModel.editoptions.value; + } + if (oSelect) { + var ret = []; + var msl = opts.colModel.editoptions.multiple === true ? true : false; + var scell = []; + if(msl) { scell = cellval.split(","); scell = $.map(scell,function(n){return $.trim(n);})} + if (isString(oSelect)) { + // mybe here we can use some caching with care ???? + var so = oSelect.split(";"), j=0; + for(var i=0; i-1) { + ret[j] = sv[1]; + j++; + } + } else if($.trim(sv[0])==$.trim(cellval)) { + ret[0] = sv[1]; + break; + } + } + } else if(isObject(oSelect)) { + // this is quicker + if(msl) { + ret = jQuery.map(scel, function(n, i){ + return oSelect[n]; + }); + } + ret[0] = oSelect[cellval] || ""; + } + $(el).html(ret.join(", ")); + } else { + $.fn.fmatter.defaultFormat(el,cellval); + } + } + }; + $.unformat = function (cellval,options,pos,cnt) { + // specific for jqGrid only + var ret, formatType = options.colModel.formatter, op =options.colModel.formatoptions || {}; + if(formatType !== 'undefined' && isString(formatType) ) { + var opts = $.jgrid.formatter || {}, stripTag; + switch(formatType) { + case 'link' : + case 'showlink' : + case 'email' : + ret= $(cellval).text(); + break; + case 'integer' : + op = $.extend({},opts.integer,op); + stripTag = eval("/"+op.thousandsSeparator+"/g"); + ret = $(cellval).text().replace(stripTag,''); + break; + case 'number' : + op = $.extend({},opts.number,op); + stripTag = eval("/"+op.thousandsSeparator+"/g"); + ret = $(cellval).text().replace(op.decimalSeparator,'.').replace(stripTag,""); + break; + case 'currency': + op = $.extend({},opts.currency,op); + stripTag = eval("/"+op.thousandsSeparator+"/g"); + ret = $(cellval).text().replace(op.decimalSeparator,'.').replace(op.prefix,'').replace(op.suffix,'').replace(stripTag,''); + break; + case 'checkbox' : + var cbv = (options.colModel.editoptions) ? options.colModel.editoptions.value.split(":") : ["Yes","No"]; + ret = $('input',cellval).attr("checked") ? cbv[0] : cbv[1]; + break; + } + } + //else { + // Here aditional code to run custom unformater + //} + return ret ? ret : cnt===true ? $(cellval).text() : $.htmlDecode($(cellval).html()); + }; + function fireFormatter(el,formatType,cellval, opts, act) { + //debug("in formatter with " +formatType); + formatType = formatType.toLowerCase(); + switch (formatType) { + case 'link': $.fn.fmatter.link(el, cellval, opts); break; + case 'showlink': $.fn.fmatter.showlink(el, cellval, opts); break; + case 'email': $.fn.fmatter.email(el, cellval, opts); break; + case 'currency': $.fn.fmatter.currency(el, cellval, opts); break; + case 'date': $.fn.fmatter.date(el, cellval, opts, act); break; + case 'number': $.fn.fmatter.number(el, cellval, opts) ; break; + case 'integer': $.fn.fmatter.integer(el, cellval, opts) ; break; + case 'checkbox': $.fn.fmatter.checkbox(el, cellval, opts); break; + case 'select': $.fn.fmatter.select(el, cellval, opts,act); break; + //case 'textbox': s.transparent = false; break; + } + }; + //private methods and data + function debug($obj) { + if (window.console && window.console.log) window.console.log($obj); + }; + /** + * A convenience method for detecting a legitimate non-null value. + * Returns false for null/undefined/NaN, true for other values, + * including 0/false/'' + * --taken from the yui.lang + */ + isValue= function(o) { + return (isObject(o) || isString(o) || isNumber(o) || isBoolean(o)); + }; + isBoolean= function(o) { + return typeof o === 'boolean'; + }; + isNull= function(o) { + return o === null; + }; + isNumber= function(o) { + return typeof o === 'number' && isFinite(o); + }; + isString= function(o) { + return typeof o === 'string'; + }; + /** + * check if its empty trim it and replace \  and \  with '' and check if its empty ==="" + * if its is not a string but has a value then it returns false, Returns true for null/undefined/NaN + essentailly this provdes a way to see if it has any value to format for things like links + */ + isEmpty= function(o) { + if(!isString(o) && isValue(o)) { + return false; + }else if (!isValue(o)){ + return true; + } + o = $.trim(o).replace(/\ \;/ig,'').replace(/\ \;/ig,''); + return o===""; + + }; + isUndefined= function(o) { + return typeof o === 'undefined'; + }; + isObject= function(o) { + return (o && (typeof o === 'object' || isFunction(o))) || false; + }; + isFunction= function(o) { + return typeof o === 'function'; + }; + +})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/jquery.tablednd.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/jquery.tablednd.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/jquery.tablednd.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,383 @@ +/** + * TableDnD plug-in for JQuery, allows you to drag and drop table rows + * You can set up various options to control how the system will work + * Copyright (c) Denis Howlett + * Licensed like jQuery, see http://docs.jquery.com/License. + * + * Configuration options: + * + * onDragStyle + * This is the style that is assigned to the row during drag. There are limitations to the styles that can be + * associated with a row (such as you can't assign a border--well you can, but it won't be + * displayed). (So instead consider using onDragClass.) The CSS style to apply is specified as + * a map (as used in the jQuery css(...) function). + * onDropStyle + * This is the style that is assigned to the row when it is dropped. As for onDragStyle, there are limitations + * to what you can do. Also this replaces the original style, so again consider using onDragClass which + * is simply added and then removed on drop. + * onDragClass + * This class is added for the duration of the drag and then removed when the row is dropped. It is more + * flexible than using onDragStyle since it can be inherited by the row cells and other content. The default + * is class is tDnD_whileDrag. So to use the default, simply customise this CSS class in your + * stylesheet. + * onDrop + * Pass a function that will be called when the row is dropped. The function takes 2 parameters: the table + * and the row that was dropped. You can work out the new order of the rows by using + * table.rows. + * onDragStart + * Pass a function that will be called when the user starts dragging. The function takes 2 parameters: the + * table and the row which the user has started to drag. + * onAllowDrop + * Pass a function that will be called as a row is over another row. If the function returns true, allow + * dropping on that row, otherwise not. The function takes 2 parameters: the dragged row and the row under + * the cursor. It returns a boolean: true allows the drop, false doesn't allow it. + * scrollAmount + * This is the number of pixels to scroll if the user moves the mouse cursor to the top or bottom of the + * window. The page should automatically scroll up or down as appropriate (tested in IE6, IE7, Safari, FF2, + * FF3 beta + * dragHandle + * This is the name of a class that you assign to one or more cells in each row that is draggable. If you + * specify this class, then you are responsible for setting cursor: move in the CSS and only these cells + * will have the drag behaviour. If you do not specify a dragHandle, then you get the old behaviour where + * the whole row is draggable. + * + * Other ways to control behaviour: + * + * Add class="nodrop" to any rows for which you don't want to allow dropping, and class="nodrag" to any rows + * that you don't want to be draggable. + * + * Inside the onDrop method you can also call $.tableDnD.serialize() this returns a string of the form + * []=&[]= so that you can send this back to the server. The table must have + * an ID as must all the rows. + * + * Other methods: + * + * $("...").tableDnDUpdate() + * Will update all the matching tables, that is it will reapply the mousedown method to the rows (or handle cells). + * This is useful if you have updated the table rows using Ajax and you want to make the table draggable again. + * The table maintains the original configuration (so you don't have to specify it again). + * + * $("...").tableDnDSerialize() + * Will serialize and return the serialized string as above, but for each of the matching tables--so it can be + * called from anywhere and isn't dependent on the currentTable being set up correctly before calling + * + * Known problems: + * - Auto-scoll has some problems with IE7 (it scrolls even when it shouldn't), work-around: set scrollAmount to 0 + * + * Version 0.2: 2008-02-20 First public version + * Version 0.3: 2008-02-07 Added onDragStart option + * Made the scroll amount configurable (default is 5 as before) + * Version 0.4: 2008-03-15 Changed the noDrag/noDrop attributes to nodrag/nodrop classes + * Added onAllowDrop to control dropping + * Fixed a bug which meant that you couldn't set the scroll amount in both directions + * Added serialize method + * Version 0.5: 2008-05-16 Changed so that if you specify a dragHandle class it doesn't make the whole row + * draggable + * Improved the serialize method to use a default (and settable) regular expression. + * Added tableDnDupate() and tableDnDSerialize() to be called when you are outside the table + */ +jQuery.tableDnD = { + /** Keep hold of the current table being dragged */ + currentTable : null, + /** Keep hold of the current drag object if any */ + dragObject: null, + /** The current mouse offset */ + mouseOffset: null, + /** Remember the old value of Y so that we don't do too much processing */ + oldY: 0, + + /** Actually build the structure */ + build: function(options) { + // Set up the defaults if any + + this.each(function() { + // This is bound to each matching table, set up the defaults and override with user options + this.tableDnDConfig = jQuery.extend({ + onDragStyle: null, + onDropStyle: null, + // Add in the default class for whileDragging + onDragClass: "tDnD_whileDrag", + onDrop: null, + onDragStart: null, + scrollAmount: 5, + serializeRegexp: /[^\-]*$/, // The regular expression to use to trim row IDs + serializeParamName: null, // If you want to specify another parameter name instead of the table ID + dragHandle: null // If you give the name of a class here, then only Cells with this class will be draggable + }, options || {}); + // Now make the rows draggable + jQuery.tableDnD.makeDraggable(this); + }); + + // Now we need to capture the mouse up and mouse move event + // We can use bind so that we don't interfere with other event handlers + jQuery(document) + .bind('mousemove', jQuery.tableDnD.mousemove) + .bind('mouseup', jQuery.tableDnD.mouseup); + + // Don't break the chain + return this; + }, + + /** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */ + makeDraggable: function(table) { + var config = table.tableDnDConfig; + if (table.tableDnDConfig.dragHandle) { + // We only need to add the event to the specified cells + var cells = jQuery("td."+table.tableDnDConfig.dragHandle, table); + cells.each(function() { + // The cell is bound to "this" + jQuery(this).mousedown(function(ev) { + jQuery.tableDnD.dragObject = this.parentNode; + jQuery.tableDnD.currentTable = table; + jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev); + if (config.onDragStart) { + // Call the onDrop method if there is one + config.onDragStart(table, this); + } + return false; + }); + }) + } else { + // For backwards compatibility, we add the event to the whole row + var rows = jQuery("tr", table); // get all the rows as a wrapped set + rows.each(function() { + // Iterate through each row, the row is bound to "this" + var row = jQuery(this); + if (! row.hasClass("nodrag")) { + row.mousedown(function(ev) { + if (ev.target.tagName == "TD") { + jQuery.tableDnD.dragObject = this; + jQuery.tableDnD.currentTable = table; + jQuery.tableDnD.mouseOffset = jQuery.tableDnD.getMouseOffset(this, ev); + if (config.onDragStart) { + // Call the onDrop method if there is one + config.onDragStart(table, this); + } + return false; + } + }).css("cursor", "move"); // Store the tableDnD object + } + }); + } + }, + + updateTables: function() { + this.each(function() { + // this is now bound to each matching table + if (this.tableDnDConfig) { + jQuery.tableDnD.makeDraggable(this); + } + }) + }, + + /** Get the mouse coordinates from the event (allowing for browser differences) */ + mouseCoords: function(ev){ + if(ev.pageX || ev.pageY){ + return {x:ev.pageX, y:ev.pageY}; + } + return { + x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, + y:ev.clientY + document.body.scrollTop - document.body.clientTop + }; + }, + + /** Given a target element and a mouse event, get the mouse offset from that element. + To do this we need the element's position and the mouse position */ + getMouseOffset: function(target, ev) { + ev = ev || window.event; + + var docPos = this.getPosition(target); + var mousePos = this.mouseCoords(ev); + return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y}; + }, + + /** Get the position of an element by going up the DOM tree and adding up all the offsets */ + getPosition: function(e){ + var left = 0; + var top = 0; + /** Safari fix -- thanks to Luis Chato for this! */ + if (e.offsetHeight == 0) { + /** Safari 2 doesn't correctly grab the offsetTop of a table row + this is detailed here: + http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari/ + the solution is likewise noted there, grab the offset of a table cell in the row - the firstChild. + note that firefox will return a text node as a first child, so designing a more thorough + solution may need to take that into account, for now this seems to work in firefox, safari, ie */ + e = e.firstChild; // a table cell + } + if (e && e.offsetParent) { + while (e.offsetParent){ + left += e.offsetLeft; + top += e.offsetTop; + e = e.offsetParent; + } + + left += e.offsetLeft; + top += e.offsetTop; + } + + return {x:left, y:top}; + }, + + mousemove: function(ev) { + if (jQuery.tableDnD.dragObject == null) { + return; + } + + var dragObj = jQuery(jQuery.tableDnD.dragObject); + var config = jQuery.tableDnD.currentTable.tableDnDConfig; + var mousePos = jQuery.tableDnD.mouseCoords(ev); + var y = mousePos.y - jQuery.tableDnD.mouseOffset.y; + //auto scroll the window + var yOffset = window.pageYOffset; + if (document.all) { + // Windows version + //yOffset=document.body.scrollTop; + if (typeof document.compatMode != 'undefined' && + document.compatMode != 'BackCompat') { + yOffset = document.documentElement.scrollTop; + } + else if (typeof document.body != 'undefined') { + yOffset=document.body.scrollTop; + } + + } + + if (mousePos.y-yOffset < config.scrollAmount) { + window.scrollBy(0, -config.scrollAmount); + } else { + var windowHeight = window.innerHeight ? window.innerHeight + : document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight; + if (windowHeight-(mousePos.y-yOffset) < config.scrollAmount) { + window.scrollBy(0, config.scrollAmount); + } + } + + + if (y != jQuery.tableDnD.oldY) { + // work out if we're going up or down... + var movingDown = y > jQuery.tableDnD.oldY; + // update the old value + jQuery.tableDnD.oldY = y; + // update the style to show we're dragging + if (config.onDragClass) { + dragObj.addClass(config.onDragClass); + } else { + dragObj.css(config.onDragStyle); + } + // If we're over a row then move the dragged row to there so that the user sees the + // effect dynamically + var currentRow = jQuery.tableDnD.findDropTargetRow(dragObj, y); + if (currentRow) { + // TODO worry about what happens when there are multiple TBODIES + if (movingDown && jQuery.tableDnD.dragObject != currentRow) { + jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow.nextSibling); + } else if (! movingDown && jQuery.tableDnD.dragObject != currentRow) { + jQuery.tableDnD.dragObject.parentNode.insertBefore(jQuery.tableDnD.dragObject, currentRow); + } + } + } + + return false; + }, + + /** We're only worried about the y position really, because we can only move rows up and down */ + findDropTargetRow: function(draggedRow, y) { + var rows = jQuery.tableDnD.currentTable.rows; + for (var i=0; i rowY - rowHeight) && (y < (rowY + rowHeight))) { + // that's the row we're over + // If it's the same as the current row, ignore it + if (row == draggedRow) {return null;} + var config = jQuery.tableDnD.currentTable.tableDnDConfig; + if (config.onAllowDrop) { + if (config.onAllowDrop(draggedRow, row)) { + return row; + } else { + return null; + } + } else { + // If a row has nodrop class, then don't allow dropping (inspired by John Tarr and Famic) + var nodrop = jQuery(row).hasClass("nodrop"); + if (! nodrop) { + return row; + } else { + return null; + } + } + return row; + } + } + return null; + }, + + mouseup: function(e) { + if (jQuery.tableDnD.currentTable && jQuery.tableDnD.dragObject) { + var droppedRow = jQuery.tableDnD.dragObject; + var config = jQuery.tableDnD.currentTable.tableDnDConfig; + // If we have a dragObject, then we need to release it, + // The row will already have been moved to the right place so we just reset stuff + if (config.onDragClass) { + jQuery(droppedRow).removeClass(config.onDragClass); + } else { + jQuery(droppedRow).css(config.onDropStyle); + } + jQuery.tableDnD.dragObject = null; + if (config.onDrop) { + // Call the onDrop method if there is one + config.onDrop(jQuery.tableDnD.currentTable, droppedRow); + } + jQuery.tableDnD.currentTable = null; // let go of the table too + } + }, + + serialize: function() { + if (jQuery.tableDnD.currentTable) { + return jQuery.tableDnD.serializeTable(jQuery.tableDnD.currentTable); + } else { + return "Error: No Table id set, you need to set an id on your table and every row"; + } + }, + + serializeTable: function(table) { + var result = ""; + var tableId = table.id; + var rows = table.rows; + for (var i=0; i 0) result += "&"; + var rowId = rows[i].id; + if (rowId && rowId && table.tableDnDConfig && table.tableDnDConfig.serializeRegexp) { + rowId = rowId.match(table.tableDnDConfig.serializeRegexp)[0]; + } + + result += tableId + '[]=' + rowId; + } + return result; + }, + + serializeTables: function() { + var result = ""; + this.each(function() { + // this is now bound to each matching table + result += jQuery.tableDnD.serializeTable(this); + }); + return result; + } + +} + +jQuery.fn.extend( + { + tableDnD : jQuery.tableDnD.build, + tableDnDUpdate : jQuery.tableDnD.updateTables, + tableDnDSerialize: jQuery.tableDnD.serializeTables + } +); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/json2.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/json2.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/json2.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,104 @@ +/* +org: 'http://www.JSON.org', + copyright: '(c)2005 JSON.org', + license: 'http://www.crockford.com/JSON/license.html', + + Some modifications and additions from Tony Tomov + Added parse function to prevent JSON Hijacking + Read below +*/ +var JSON = { + stringify: function stringify(arg) { + var c, i, l, s = '', v; + switch (typeof arg) { + case 'object': + if (arg) { + if (arg.constructor == Array) { + for (i = 0; i < arg.length; ++i) { + v = stringify(arg[i]); + if (s) { + s += ','; + } + s += v; + } + return '[' + s + ']'; + } else if (typeof arg.toString != 'undefined') { + for (i in arg) { + v = stringify(arg[i]); + if (typeof v != 'function') { + if (s) { + s += ','; + } + s += stringify(i) + ':' + v; + } + } + return '{' + s + '}'; + } + } + return 'null'; + case 'number': + return isFinite(arg) ? String(arg) : 'null'; + case 'string': + l = arg.length; + s = '"'; + for (i = 0; i < l; i += 1) { + c = arg.charAt(i); + if (c >= ' ') { + if (c == '\\' || c == '"') { + s += '\\'; + } + s += c; + } else { + switch (c) { + case '\b': + s += '\\b'; + break; + case '\f': + s += '\\f'; + break; + case '\n': + s += '\\n'; + break; + case '\r': + s += '\\r'; + break; + case '\t': + s += '\\t'; + break; + default: + c = c.charCodeAt(); + s += '\\u00' + Math.floor(c / 16).toString(16) + + (c % 16).toString(16); + } + } + } + return s + '"'; + case 'boolean': + return String(arg); + case 'function' : + // Added for use of jqGrid T. Tomov + return arg.toString(); + default: + return 'null'; + } + }, + // Read this if you want to protect your json return string + // http://safari.oreilly.com/9780596514839/recipe-1107 + // + // 1.The while(1); construct, located at the beginning of JSON text, + // 2.Comments at the beginning and end of the text. + // JSON data providers are encouraged to use one or both of these methods + // to prevent data execution. Such JSON response may then look like this: + // while(1);/*{[ + // {"name":"safe value 1"}, + // {"name":"safe value 2"}, + // ... + // ]}*/ + parse : function(jsonString) { + // filter out while statement + var js = jsonString; + if (js.substr(0,9) == "while(1);") { js = js.substr(9); } + if (js.substr(0,2) == "/*") { js = js.substr(2,js.length-4); } + return eval('('+js+')'); + } +} Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/JsonXml-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/JsonXml-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/JsonXml-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,8 @@ +/* + The below work is licensed under Creative Commons GNU LGPL License. + Original work: + License: http://creativecommons.org/licenses/LGPL/2.1/ + Author: Stefan Goessner/2006 + Web: http://goessner.net/ +*/ +var xmlJsonClass={xml2json:function(a,b){if(a.nodeType===9){a=a.documentElement}var f=this.removeWhite(a);var d=this.toObj(f);var g=this.toJson(d,a.nodeName,"\t");return"{\n"+b+(b?g.replace(/\t/g,b):g.replace(/\t|\n/g,""))+"\n}"},json2xml:function(k,o){var m=function(a,b,f){var d="";var g,h;if(a instanceof Array){if(a.length===0){d+=f+"<"+b+">__EMPTY_ARRAY_\n"}else{for(g=0,h=a.length;g":"/>";if(c){for(i in a)if(a.hasOwnProperty(i)){if(i==="#text"){d+=a[i]}else if(i==="#cdata"){d+=""}else if(i.charAt(0)!=="@"){d+=m(a[i],i,f+"\t")}}d+=(d.charAt(d.length-1)==="\n"?f:"")+""}}else if(typeof(a)==="function"){d+=f+"<"+b+">"}else{if(a.toString()==="\"\""||a.toString().length===0){d+=f+"<"+b+">__EMPTY_STRING_"}else{d+=f+"<"+b+">"+a.toString()+""}}return d};var n="";var l;for(l in k)if(k.hasOwnProperty(l)){n+=m(k[l],l,"")}return o?n.replace(/\t/g,o):n.replace(/\t|\n/g,"")},parseXml:function(a){var b;try{var f=new DOMParser();b=f.parseFromString(a,"text/xml")}catch(e){b=new ActiveXObject("Microsoft.XMLDOM");b.async=false;b["loadXML"](a)}return(b&&b.documentElement&&b.documentElement.tagName!='parsererror')?b:null},toObj:function(a){var b={};var f=/function/i;if(a.nodeType===1){if(a.attributes.length){var d;for(d=0;d1){b=this.escape(this.innerXml(a))}else{for(c=a.firstChild;c;c=c.nextSibling){if(f.test(a.firstChild.nodeValue)){b=a.firstChild.nodeValue;break}else{b["#cdata"]=this.escape(c.nodeValue)}}}}}if(!a.attributes.length&&!a.firstChild){b=null}}else if(a.nodeType===9){b=this.toObj(a.documentElement)}else{alert("unhandled node type: "+a.nodeType)}return b},toJson:function(a,b,f){var d=b?("\""+b+"\""):"";if(a==="[]"){d+=(b?":[]":"[]")}else if(a instanceof Array){var g,h;for(h=0,g=a.length;h1?("\n"+f+"\t"+a.join(",\n"+f+"\t")+"\n"+f):a.join(""))+"]"}else if(a===null){d+=(b&&":")+"null"}else if(typeof(a)==="object"){var j=[];var c;for(c in a)if(a.hasOwnProperty(c)){j[j.length]=this.toJson(a[c],c,f+"\t")}d+=(b?":{":"{")+(j.length>1?("\n"+f+"\t"+j.join(",\n"+f+"\t")+"\n"+f):j.join(""))+"}"}else if(typeof(a)==="string"){var i=/(^-?\d+\.?\d*$)/;var k=/function/i;a=a.toString();if(i.test(a)||k.test(a)||a==="false"||a==="true"){d+=(b&&":")+a}else{d+=(b&&":")+"\""+a+"\""}}else{d+=(b&&":")+a.toString()}return d},innerXml:function(g){var h="";if("innerHTML"in g){h=g.innerHTML}else{var j=function(a){var b="",f;if(a.nodeType===1){b+="<"+a.nodeName;for(f=0;f";for(var d=a.firstChild;d;d=d.nextSibling){b+=j(d)}b+=""}else{b+="/>"}}else if(a.nodeType===3){b+=a.nodeValue}else if(a.nodeType===4){b+=""}return b};for(var c=g.firstChild;c;c=c.nextSibling){h+=j(c)}}return h},escape:function(a){return a.replace(/[\\]/g,"\\\\").replace(/[\"]/g,'\\"').replace(/[\n]/g,'\\n').replace(/[\r]/g,'\\r')},removeWhite:function(a){a.normalize();var b;for(b=a.firstChild;b;){if(b.nodeType===3){if(!b.nodeValue.match(/[^ \f\n\r\t\v]/)){var f=b.nextSibling;a.removeChild(b);b=f}else{b=b.nextSibling}}else if(b.nodeType===1){this.removeWhite(b);b=b.nextSibling}else{b=b.nextSibling}}return a}}; \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.base-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.base-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.base-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,9 @@ +/* + * jqGrid 3.4.3 - jQuery Grid + * Copyright (c) 2008, Tony Tomov, tony@trirand.com + * Dual licensed under the MIT and GPL licenses + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * Date: 2009-03-12 rev 84 + */ +;(function(b){b.fn.jqGrid=function(x){x=b.extend(true,{url:"",height:150,page:1,rowNum:20,records:0,pager:"",pgbuttons:true,pginput:true,colModel:[],rowList:[],colNames:[],sortorder:"asc",sortname:"",datatype:"xml",mtype:"GET",imgpath:"",sortascimg:"sort_asc.gif",sortdescimg:"sort_desc.gif",firstimg:"first.gif",previmg:"prev.gif",nextimg:"next.gif",lastimg:"last.gif",altRows:true,selarrrow:[],savedRow:[],shrinkToFit:true,xmlReader:{},jsonReader:{},subGrid:false,subGridModel:[],lastpage:0,lastsort:0,selrow:null,beforeSelectRow:null,onSelectRow:null,onSortCol:null,ondblClickRow:null,onRightClickRow:null,onPaging:null,onSelectAll:null,loadComplete:null,gridComplete:null,loadError:null,loadBeforeSend:null,afterInsertRow:null,beforeRequest:null,onHeaderClick:null,viewrecords:false,loadonce:false,multiselect:false,multikey:false,editurl:null,search:false,searchdata:{},caption:"",hidegrid:true,hiddengrid:false,postData:{},userData:{},treeGrid:false,treeGridModel:'nested',treeReader:{},treeANode:0,ExpandColumn:null,tree_root_level:0,prmNames:{page:"page",rows:"rows",sort:"sidx",order:"sord"},sortclass:"grid_sort",resizeclass:"grid_resize",forceFit:false,gridstate:"visible",cellEdit:false,cellsubmit:"remote",nv:0,loadui:"enable",toolbar:[false,""],scroll:false,multiboxonly:false,scrollrows:false,deselectAfterSort:true},b.jgrid.defaults,x||{});var k={headers:[],cols:[],dragStart:function(d,c){this.resizing={idx:d,startX:c};this.hDiv.style.cursor="e-resize"},dragMove:function(d){if(this.resizing){var c=d-this.resizing.startX,f=this.headers[this.resizing.idx],h=f.width+c,i,j;if(h>25){if(x.forceFit===true){i=this.headers[this.resizing.idx+x.nv];j=i.width-c;if(j>25){f.el.style.width=h+"px";f.newWidth=h;this.cols[this.resizing.idx].style.width=h+"px";i.el.style.width=j+"px";i.newWidth=j;this.cols[this.resizing.idx+x.nv].style.width=j+"px";this.newWidth=this.width}}else{f.el.style.width=h+"px";f.newWidth=h;this.cols[this.resizing.idx].style.width=h+"px";this.newWidth=this.width+c;b('table:first',this.bDiv).css("width",this.newWidth+"px");b('table:first',this.hDiv).css("width",this.newWidth+"px");this.hDiv.scrollLeft=this.bDiv.scrollLeft}}}},dragEnd:function(){this.hDiv.style.cursor="default";if(this.resizing){var d=this.resizing.idx;this.headers[d].width=this.headers[d].newWidth||this.headers[d].width;this.cols[d].style.width=this.headers[d].newWidth||this.headers[d].width;if(x.forceFit===true){this.headers[d+x.nv].width=this.headers[d+x.nv].newWidth||this.headers[d+x.nv].width;this.cols[d+x.nv].style.width=this.headers[d+x.nv].newWidth||this.headers[d+x.nv].width}if(this.newWidth){this.width=this.newWidth}this.resizing=false}},scrollGrid:function(){if(x.scroll===true){var d=this.bDiv.scrollTop;if(d!=this.scrollTop){this.scrollTop=d;if((this.bDiv.scrollHeight-d-b(this.bDiv).height())<=0){if(parseInt(x.page,10)+1<=parseInt(x.lastpage,10)){x.page=parseInt(x.page,10)+1;this.populate()}}}}this.hDiv.scrollLeft=this.bDiv.scrollLeft}};b.fn.getGridParam=function(d){var c=this[0];if(!c.grid){return}if(!d){return c.p}else{return c.p[d]?c.p[d]:null}};b.fn.setGridParam=function(d){return this.each(function(){if(this.grid&&typeof(d)==='object'){b.extend(true,this.p,d)}})};b.fn.getDataIDs=function(){var c=[];this.each(function(){b(this.rows).slice(1).each(function(d){c[d]=this.id})});return c};b.fn.setSortName=function(f){return this.each(function(){var d=this;for(var c=0;c=0){if(r>t){u(r,'d')}else{u(r,'u')}}}if(!g.p.multiselect){if(b(l).attr("class")!=="subgrid"){if(g.p.selrow){b("tr#"+g.p.selrow.replace(".","\\."),g.grid.bDiv).removeClass("selected")}g.p.selrow=w;b(l).addClass("selected");if(g.p.onSelectRow&&z){g.p.onSelectRow(g.p.selrow,true)}}}else{g.p.selrow=w;var o=b.inArray(g.p.selrow,g.p.selarrrow);if(o===-1){if(b(l).attr("class")!=="subgrid"){b(l).addClass("selected")}m=true;b("#jqg_"+g.p.selrow.replace(".","\\."),g.rows).attr("checked",m);g.p.selarrrow.push(g.p.selrow);if(g.p.onSelectRow&&z){g.p.onSelectRow(g.p.selrow,m)}}else{if(b(l).attr("class")!=="subgrid"){b(l).removeClass("selected")}m=false;b("#jqg_"+g.p.selrow.replace(".","\\."),g.rows).attr("checked",m);g.p.selarrrow.splice(o,1);if(g.p.onSelectRow&&z){g.p.onSelectRow(g.p.selrow,m)}var p=g.p.selarrrow[0];g.p.selrow=(p==undefined)?null:p}}function u(d,c){var f=b(g.grid.bDiv)[0].clientHeight,h=b(g.grid.bDiv)[0].scrollTop,i=g.rows[d].offsetTop+g.rows[d].clientHeight,j=g.rows[d].offsetTop;if(c=='d'){if(i>=f){b(g.grid.bDiv)[0].scrollTop=h+i-j}}if(c=='u'){if(j span:first",c.rows[h])}else{i=b("td:eq("+d+")",c.rows[h])}c.formatter(i,c.rows[h],f,d,'edit');l=true}})}});return l};b.fn.addRowData=function(f,h,i,j){if(!i){i="last"}var g=false,m,l,n,t=0,r=0,o,p;if(h){this.each(function(){var c=this;l=document.createElement("tr");l.id=f||c.p.records+1;b(l).addClass("jqgrow");if(c.p.multiselect){n=b('');b(n[0],c.grid.bDiv).html("");l.appendChild(n[0]);t=1}if(c.p.subGrid){try{b(c).addSubGrid(c.grid.bDiv,l,t)}catch(e){}r=1}for(p=t+r;p');c.formatter(n,l,h[m],p,'add');c.formatCol(b(n[0],c.grid.bDiv),p);l.appendChild(n[0])}switch(i){case'last':b(c.rows[c.rows.length-1]).after(l);break;case'first':b(c.rows[0]).after(l);break;case'after':o=b(c).getInd(c.rows,j);o>=0?b(c.rows[o]).after(l):"";break;case'before':o=b(c).getInd(c.rows,j);o>0?b(c.rows[o-1]).after(l):"";break}c.p.records++;if(b.browser.safari||b.browser.opera){c.scrollLeft=c.scrollLeft;b("td",c.rows[1]).each(function(d){b(this).css("width",c.grid.headers[d].width+"px");c.grid.cols[d]=this})}if(c.p.altRows===true){if(i=="last"){if(c.rows.length%2==1){b(l).addClass('alt')}}else{b(c.rows).slice(1).each(function(d){if(d%2==1){b(this).addClass('alt')}else{b(this).removeClass('alt')}})}}try{c.p.afterInsertRow(l.id,h)}catch(e){}c.updatepager();g=true})}return g};b.fn.hideCol=function(g){return this.each(function(){var f=this,h=0,i=false,j;if(!f.grid){return}if(typeof g=='string'){g=[g]}b(this.p.colModel).each(function(c){if(b.inArray(this.name,g)!=-1&&!this.hidden){h=parseInt(b("tr th:eq("+c+")",f.grid.hDiv).css("width"),10);b("tr th:eq("+c+")",f.grid.hDiv).css({display:"none"});b(f.rows).each(function(d){b("td:eq("+c+")",f.rows[d]).css({display:"none"})});f.grid.cols[c].style.width=0;f.grid.headers[c].width=0;f.grid.width-=h;this.hidden=true;i=true}});if(i===true){j=Math.min(f.p._width,f.grid.width);b("table:first",f.grid.hDiv).width(j);b("table:first",f.grid.bDiv).width(j);b(f.grid.hDiv).width(j);b(f.grid.bDiv).width(j);if(f.p.pager&&b(f.p.pager).hasClass("scroll")){b(f.p.pager).width(j)}if(f.p.caption){b(f.grid.cDiv).width(j)}if(f.p.toolbar[0]){b(f.grid.uDiv).width(j)}f.grid.hDiv.scrollLeft=f.grid.bDiv.scrollLeft}})};b.fn.showCol=function(m){return this.each(function(){var f=this,h=0,i=false,j,g;if(!f.grid){return}if(typeof m=='string'){m=[m]}b(f.p.colModel).each(function(c){if(b.inArray(this.name,m)!=-1&&this.hidden){h=parseInt(b("tr th:eq("+c+")",f.grid.hDiv).css("width"),10);b("tr th:eq("+c+")",f.grid.hDiv).css("display","");b(f.rows).each(function(d){b("td:eq("+c+")",f.rows[d]).css("display","").width(h)});this.hidden=false;f.grid.cols[c].style.width=h;f.grid.headers[c].width=h;f.grid.width+=h;i=true}});if(i===true){j=Math.min(f.p._width,f.grid.width);g=(f.grid.width<=f.p._width)?"hidden":"auto";b("table:first",f.grid.hDiv).width(j);b("table:first",f.grid.bDiv).width(j);b(f.grid.hDiv).width(j);b(f.grid.bDiv).width(j).css("overflow-x",g);if(f.p.pager&&b(f.p.pager).hasClass("scroll")){b(f.p.pager).width(j)}if(f.p.caption){b(f.grid.cDiv).width(j)}if(f.p.toolbar[0]){b(f.grid.uDiv).width(j)}f.grid.hDiv.scrollLeft=f.grid.bDiv.scrollLeft}})};b.fn.setGridWidth=function(u,w){return this.each(function(){var g=this,m=0,l,n,t;if(!g.grid){return}if(typeof w!='boolean'){w=true}var r=p();if(w!==true){r[0]=Math.min(g.p._width,g.grid.width);r[2]=0}else{r[2]=r[1]}b.each(g.p.colModel,function(d,c){if(!this.hidden&&this.name!='cb'&&this.name!='subgrid'){n=w!==true?b("tr:first th:eq("+d+")",g.grid.hDiv).css("width"):this.width;l=Math.floor((o(u)-o(r[2]))/o(r[0])*o(n));m+=l;b("table thead tr:first th:eq("+d+")",g.grid.hDiv).css("width",l+"px");b("table:first tbody tr:first td:eq("+d+")",g.grid.bDiv).css("width",l+"px");g.grid.cols[d].style.width=l;g.grid.headers[d].width=l}if(this.name=='cb'||this.name=='subgrid'){m+=o(this.width)}});if(m+r[1]<=u||g.p.forceFit===true){t="hidden";tw=u}else{t="auto";tw=m+r[1]}b("table:first",g.grid.hDiv).width(tw);b("table:first",g.grid.bDiv).width(tw);b(g.grid.hDiv).width(u);b(g.grid.bDiv).width(u).css("overflow-x",t);if(g.p.pager&&b(g.p.pager).hasClass("scroll")){b(g.p.pager).width(u)}if(g.p.caption){b(g.grid.cDiv).width(u)}if(g.p.toolbar[0]){b(g.grid.uDiv).width(u)}g.p._width=u;g.grid.width=tw;if(b.browser.safari||b.browser.opera){b("table tbody tr:eq(1) td",g.grid.bDiv).each(function(d){b(this).css("width",g.grid.headers[d].width+"px");g.grid.cols[d]=this})}g.grid.hDiv.scrollLeft=g.grid.bDiv.scrollLeft;function o(d){d=parseInt(d,10);return isNaN(d)?0:d}function p(){var f=b("table tr:first th:eq(1)",g.grid.hDiv);var h=o(b(f).css("padding-left"))+o(b(f).css("padding-right"))+o(b(f).css("border-left-width"))+o(b(f).css("border-right-width"));var i=0,j=0;b.each(g.p.colModel,function(d,c){if(!this.hidden){i+=parseInt(this.width);j+=h}});return[i,j,0]}})};b.fn.setGridHeight=function(h){return this.each(function(){var d,c,f=this;if(!f.grid){return}if(f.p.forceFit===true){c='hidden'}else{c=b(f.grid.bDiv).css("overflow-x")}d=(isNaN(h)&&b.browser.mozilla&&(h.indexOf("%")!=-1||h=="auto"))?"hidden":"auto";b(f.grid.bDiv).css({height:h+(isNaN(h)?"":"px"),"overflow-y":d,"overflow-x":c});f.p.height=h})};b.fn.setCaption=function(d){return this.each(function(){this.p.caption=d;b("table:first th",this.grid.cDiv).html(d);b(this.grid.cDiv).show()})};b.fn.setLabel=function(i,j,g,m){return this.each(function(){var c=this,f=-1;if(!c.grid){return}if(isNaN(i)){b(c.p.colModel).each(function(d){if(this.name==i){f=d;return false}})}else{f=parseInt(i,10)}if(f>=0){var h=b("table:first th:eq("+f+")",c.grid.hDiv);if(j){b("div",h).html(j)}if(g){if(typeof g=='string'){b(h).addClass(g)}else{b(h).css(g)}}if(typeof m=='object'){b(h).attr(m)}}})};b.fn.setCell=function(j,g,m,l,n){return this.each(function(){var c=this,f=-1;if(!c.grid){return}if(isNaN(g)){b(c.p.colModel).each(function(d){if(this.name==g){f=d;return false}})}else{f=parseInt(g,10)}if(f>=0){var h=b(c).getInd(c.rows,j);if(h>=0){var i=b("td:eq("+f+")",c.rows[h]);if(m!=""){c.formatter(i,c.rows[h],m,f,'edit')}if(l){if(typeof l=='string'){b(i).addClass(l)}else{b(i).css(l)}}if(typeof n=='object'){b(i).attr(n)}}}})};b.fn.getCell=function(i,j){var g=false;this.each(function(){var c=this,f=-1;if(!c.grid){return}if(isNaN(j)){b(c.p.colModel).each(function(d){if(this.name==j){f=d;return false}})}else{f=parseInt(j,10)}if(f>=0){var h=b(c).getInd(c.rows,i);if(h>=0){g=b.htmlDecode(b("td:eq("+f+")",c.rows[h]).html())}}});return g};b.fn.clearGridData=function(){return this.each(function(){var d=this;if(!d.grid){return}b("tbody tr:gt(0)",d.grid.bDiv).remove();d.p.selrow=null;d.p.selarrrow=[];d.p.savedRow=[];d.p.records='0';d.p.page='0';d.p.lastpage='0';d.updatepager()})};b.fn.getInd=function(c,f,h){var i=false;b(c).each(function(d){if(this.id==f){i=h===true?this:d;return false}});return i};b.htmlDecode=function(d){if(d==' '||d==' '){d=""}return!d?d:String(d).replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,'"')};return this.each(function(){if(this.grid){return}this.p=x;if(this.p.colNames.length===0){for(var q=0;q

    "+this.p.loadtext+"
    ").insertBefore(this);b(this).attr({cellSpacing:"0",cellPadding:"0",border:"0"});var a=this,ba=b.isFunction(this.p.beforeSelectRow)?this.p.beforeSelectRow:false,bD=b.isFunction(this.p.onSelectRow)?this.p.onSelectRow:false,bo=b.isFunction(this.p.ondblClickRow)?this.p.ondblClickRow:false,bb=b.isFunction(this.p.onSortCol)?this.p.onSortCol:false,B=b.isFunction(this.p.loadComplete)?this.p.loadComplete:false,J=b.isFunction(this.p.loadError)?this.p.loadError:false,K=b.isFunction(this.p.loadBeforeSend)?this.p.loadBeforeSend:false,bp=b.isFunction(this.p.onRightClickRow)?this.p.onRightClickRow:false,bc=b.isFunction(this.p.afterInsertRow)?this.p.afterInsertRow:false,bd=b.isFunction(this.p.onHeaderClick)?this.p.onHeaderClick:false,bq=b.isFunction(this.p.beforeRequest)?this.p.beforeRequest:false,be=b.isFunction(this.p.onCellSelect)?this.p.onCellSelect:false,br=["shiftKey","altKey","ctrlKey"];if(b.inArray(a.p.multikey,br)==-1){a.p.multikey=false}var y=function(d,c){d=parseInt(d,10);if(isNaN(d)){return(c)?c:0}else{return d}};var T=function(d,c){var f=a.p.colModel[c].align;if(f){b(d).css("text-align",f)}if(a.p.colModel[c].hidden){b(d).css("display","none")}};var U=function(c,f){b("tbody tr:eq("+f+") td",c).each(function(d){b(this).css("width",k.headers[d].width+"px");k.cols[d]=this})};var L=function(d,c,f,h){var i;i=document.createElement("td");bf(b(i,d),c,f,h,'add');c.appendChild(i);T(b(i,d),h)};var bf=function(d,c,f,h,i){var j=a.p.colModel[h];if(j.formatter){var g={rowId:c.id,colModel:j,rowData:c};if(b.isFunction(j.formatter)){j.formatter(d,f,g,i)}else if(b.fmatter){b(d).fmatter(j.formatter,f,g,i)}else{b(d).html(f||' ')}}else{b(d).html(f||' ')}d[0].title=d[0].textContent||d[0].innerText};var bg=function(d,c){var f,h;h=document.createElement("td");f="jqg_"+c.id;b(h,d).html("");T(b(h,d),0);c.appendChild(h)};var bh=function(d){var c,f=[],h=0,i;for(i=0;i=a.p.keyIndex)?b(u[a.p.keyIndex],d).text():b(a.p.xmlReader.cell+":eq("+a.p.keyIndex+")",d).text()}}b(a.p.xmlReader.page,h).each(function(){a.p.page=this.textContent||this.text});b(a.p.xmlReader.total,h).each(function(){a.p.lastpage=this.textContent||this.text});b(a.p.xmlReader.records,h).each(function(){a.p.records=this.textContent||this.text});b(a.p.xmlReader.userdata,h).each(function(){a.p.userData[this.getAttribute("name")]=this.textContent||this.text});b(a.p.xmlReader.root+" "+a.p.xmlReader.row,h).each(function(c){l=document.createElement("tr");l.id=p(this,c+1);if(a.p.multiselect){bg(i,l);n=1}if(a.p.subGrid){try{b(a).addSubGrid(i,l,n,this)}catch(e){}t=1}if(a.p.xmlReader.repeatitems===true){b(a.p.xmlReader.cell,this).each(function(d){m=this.textContent||this.text;L(i,l,m,d+n+t);w[a.p.colModel[d+n+t].name]=m})}else{for(var f=0;f0&&!isNaN(p)){p=l[p]}}else{p=l.length>0?l[a.p.keyIndex]:a.p.keyIndex}o=d[a.p.jsonReader.root];if(o){for(j=0;j0){try{g=b.unformat(b(c).children('td').eq(i),{colModel:a.p.colModel[i]},i,true)}catch(_){g=b(c).children('td').eq(i).text()}c.sortKey=m(g);h[d-1]=this}});if(a.p.treeGrid){b(a).SortTree(l)}else{h.sort(function(d,c){if(d.sortKeyc.sortKey){return l}return 0});b.each(h,function(d,c){b('tbody',a.grid.bDiv).append(c);c.sortKey=null})}if(N||O){U(a.grid.bDiv,1)}if(a.p.multiselect){b("tbody tr:gt(0)",a.grid.bDiv).removeClass("selected");b("[id^=jqg_]",a.rows).attr("checked",false);b("#cb_jqg",a.grid.hDiv).attr("checked",false);a.p.selarrrow=[]}if(a.p.altRows===true){b("tbody tr:gt(0)",a.grid.bDiv).removeClass("alt");b("tbody tr:odd",a.grid.bDiv).addClass("alt")}a.grid.bDiv.scrollTop=0;F()};var bv=function(d,c){var f={m:1,d:1,y:1970,h:0,i:0,s:0};d=d.toLowerCase();c=c.split(/[\\\/:_;.\s-]/);d=d.split(/[\\\/:_;.\s-]/);for(var h=0;h=70&&i<=99){f.y=1900+f.y}else if(i>=0&&i<=69){f.y=2000+f.y}return new Date(f.y,f.m,f.d,f.h,f.i,f.s,0)};var bw=function(){var l="":"",t="",r="",o;if(a.p.viewrecords===true){n+=" "}if(a.p.pgbuttons===true){t=l+" id='first'/>  "+l+" id='prev'/> ";r=l+" id='next' />  "+l+" id='last'/>"}b(a.p.pager).append(t+n+r);if(a.p.rowList.length>0){o="";b(a.p.pager).append(" "+o+" ");b(a.p.pager).find("select").bind('change',function(){a.p.rowNum=this.value;if(typeof a.p.onPaging=='function'){a.p.onPaging('records')}C();a.p.selrow=null})}else{b(a.p.pager).append(" ")}if(a.p.pgbuttons===true){b(".pgbuttons",a.p.pager).mouseover(function(d){if(b(this).attr('disabled')=='true'){this.style.cursor='auto'}else{this.style.cursor="pointer"}return false}).mouseout(function(d){this.style.cursor="default";return false});b("#first, #prev, #next, #last",a.p.pager).click(function(d){var c=y(a.p.page),f=y(a.p.lastpage),h=false,i=true,j=true,g=true,m=true;if(f===0||f===1){i=false;j=false;g=false;m=false}else if(f>1&&c>=1){if(c===1){i=false;j=false}else if(c>1&&c1&&c===0){g=false;m=false;c=f-1}if(this.id==='first'&&i){a.p.page=1;h=true}if(this.id==='prev'&&j){a.p.page=(c-1);h=true}if(this.id==='next'&&g){a.p.page=(c+1);h=true}if(this.id==='last'&&m){a.p.page=f;h=true}if(h){if(typeof a.p.onPaging=='function'){a.p.onPaging(this.id)}C();a.p.selrow=null;if(a.p.multiselect){a.p.selarrrow=[];b('#cb_jqg',a.grid.hDiv).attr("checked",false)}a.p.savedRow=[]}d.stopPropagation();return false})}if(a.p.pginput===true){b('input.selbox',a.p.pager).keypress(function(d){var c=d.charCode?d.charCode:d.keyCode?d.keyCode:0;if(c==13){a.p.page=(b(this).val()>0)?b(this).val():a.p.page;if(typeof a.p.onPaging=='function'){a.p.onPaging('user')}C();a.p.selrow=null;return false}return this})}};var bi=function(d,c,f){var h,i,j,g,m;if(a.p.savedRow.length>0){return}if(!f){if(a.p.lastsort===c){if(a.p.sortorder==='asc'){a.p.sortorder='desc'}else if(a.p.sortorder==='desc'){a.p.sortorder='asc'}}else{a.p.sortorder='asc'}a.p.page=1}h=(a.p.sortorder==='asc')?a.p.sortascimg:a.p.sortdescimg;h="";var l=b("thead:first",k.hDiv).get(0);g=a.p.colModel[a.p.lastsort].name.replace('.',"\\.");b("tr th div#jqgh_"+g+" img",l).remove();b("tr th div#jqgh_"+g,l).parent().removeClass(a.p.sortclass);m=d.replace('.',"\\.");b("tr th div#"+m,l).append(h).parent().addClass(a.p.sortclass);a.p.lastsort=c;d=d.substring(5);a.p.sortname=a.p.colModel[c].index||d;i=a.p.sortorder;if(bb){bb(d,c,i)}if(a.p.datatype=="local"){if(a.p.deselectAfterSort){b(a).resetSelection()}}else{a.p.selrow=null;if(a.p.multiselect){b("#cb_jqg",a.grid.hDiv).attr("checked",false)}a.p.selarrrow=[];a.p.savedRow=[]}j=a.p.scroll;if(a.p.scroll===true){a.p.scroll=false}C();if(a.p.sortname!=d&&c){a.p.lastsort=c}setTimeout(function(){a.p.scroll=j},500)};var bx=function(){var d=0;for(var c=0;c");this.p.colModel.unshift({name:'cb',width:27,sortable:false,resizable:false,hidedlg:true,search:false})}var bz={root:"rows",row:"row",page:"rows>page",total:"rows>total",records:"rows>records",repeatitems:true,cell:"cell",id:"[id]",userdata:"userdata",subgrid:{root:"rows",row:"row",repeatitems:true,cell:"cell"}};var bA={root:"rows",page:"page",total:"total",records:"records",repeatitems:true,cell:"cell",id:"id",userdata:"userdata",subgrid:{root:"rows",repeatitems:true,cell:"cell"}};if(a.p.scroll===true){a.p.pgbuttons=false;a.p.pginput=false;a.p.pgtext=false;a.p.rowList=[]}a.p.xmlReader=b.extend(bz,a.p.xmlReader);a.p.jsonReader=b.extend(bA,a.p.jsonReader);b.each(a.p.colModel,function(d){this.width=y(this.width,150)});if(a.p.width){bx()}var G=document.createElement("thead");var A=document.createElement("tr");G.appendChild(A);var q=0,P,X,H;if(a.p.shrinkToFit===true&&a.p.forceFit===true){for(q=a.p.colModel.length-1;q>=0;q--){if(!a.p.colModel[q].hidden){a.p.colModel[q].resizable=false;break}}}for(q=0;q";b(H).append(Y);a.p.lastsort=q;b(P).addClass(a.p.sortclass)}H.id="jqgh_"+X;P.appendChild(H);A.appendChild(P)}if(this.p.multiselect){var bj=true;if(typeof a.p.onSelectAll!=='function'){bj=false}b('#cb_jqg',A).click(function(){var c;if(this.checked){b("[id^=jqg_]",a.rows).attr("checked",true);b(a.rows).slice(1).each(function(d){if(!b(this).hasClass("subgrid")){b(this).addClass("selected");a.p.selarrrow[d]=a.p.selrow=this.id}});c=true}else{b("[id^=jqg_]",a.rows).attr("checked",false);b(a.rows).slice(1).each(function(d){if(!b(this).hasClass("subgrid")){b(this).removeClass("selected")}});a.p.selarrrow=[];a.p.selrow=null;c=false}if(bj){a.p.onSelectAll(a.p.selarrrow,c)}})}this.appendChild(G);G=b("thead:first",a).get(0);var D,I,Q;b("tr:first th",G).each(function(c){D=a.p.colModel[c].width;if(typeof a.p.colModel[c].resizable==='undefined'){a.p.colModel[c].resizable=true}I=document.createElement("span");b(I).html(" ");if(a.p.colModel[c].resizable){b(this).addClass(a.p.resizeclass);b(I).mousedown(function(d){if(a.p.forceFit===true){a.p.nv=by(c)}k.dragStart(c,d.clientX);d.preventDefault();return false})}else{I=""}b(this).css("width",D+"px").prepend(I);if(a.p.colModel[c].hidden){b(this).css("display","none")}k.headers[c]={width:D,el:this};Q=a.p.colModel[c].sortable;if(typeof Q!=='boolean'){Q=true}if(Q){b("div",this).css("cursor","pointer").click(function(){bi(this.id,c);return false})}});var bB=b.browser.msie?true:false,bk=b.browser.mozilla?true:false,O=b.browser.opera?true:false,N=b.browser.safari?true:false,v,s,bl=0,bm=0,bn=document.createElement("tbody");A=document.createElement("tr");A.id="_empty";bn.appendChild(A);for(q=0;q'+a.p.loadtext+'').addClass("grid_hdiv").append(k.hTable).bind("selectstart",function(){return false});if(E){b(k.hDiv).hide();a.p.gridstate='hidden'}if(a.p.pager){if(typeof a.p.pager=="string"){if(a.p.pager.substr(0,1)!="#")a.p.pager="#"+a.p.pager}if(b(a.p.pager).hasClass("scroll")){b(a.p.pager).css({width:k.width+"px",overflow:"hidden"}).show();a.p._height=parseInt(b(a.p.pager).height(),10);if(E){b(a.p.pager).hide()}}bw()}if(a.p.cellEdit===false){b(a).mouseover(function(d){v=(d.target||d.srcElement);s=b(v,a.rows).parents("tr:first");if(b(s).hasClass("jqgrow")){b(s).addClass("over")}return false}).mouseout(function(d){v=(d.target||d.srcElement);s=b(v,a.rows).parents("tr:first");b(s).removeClass("over");return false})}var R,S;b(a).before(k.hDiv).css("width",k.width+"px").click(function(d){v=(d.target||d.srcElement);if(v.href){return true}var c=b(v).hasClass("cbox");s=b(v,a.rows).parent("tr");if(b(s).length===0){s=b(v,a.rows).parents("tr:first");v=b(v).parents("td:first")[0]}var f=true;if(ba){f=ba(s.attr("id"))}if(f===true){if(a.p.cellEdit===true){if(a.p.multiselect&&c){b(a).setSelection(false,true,s)}else{R=s[0].rowIndex;S=v.cellIndex;try{b(a).editCell(R,S,true,true)}catch(d){}}}else if(!a.p.multikey){if(a.p.multiselect&&a.p.multiboxonly){if(c){b(a).setSelection(false,true,s)}}else{b(a).setSelection(false,true,s)}}else{if(d[a.p.multikey]){b(a).setSelection(false,true,s)}else if(a.p.multiselect&&c){c=b("[id^=jqg_]",s).attr("checked");b("[id^=jqg_]",s).attr("checked",!c)}}if(be){R=s[0].id;S=v.cellIndex;be(R,S,b(v).html())}}d.stopPropagation()}).bind('reloadGrid',function(d){if(a.p.treeGrid===true){a.p.datatype=a.p.treedatatype}if(a.p.datatype=="local"){b(a).resetSelection()}else if(!a.p.treeGrid){a.p.selrow=null;if(a.p.multiselect){a.p.selarrrow=[];b('#cb_jqg',a.grid.hDiv).attr("checked",false)}if(a.p.cellEdit){a.p.savedRow=[]}}C()});if(bo){b(this).dblclick(function(d){v=(d.target||d.srcElement);s=b(v,a.rows).parent("tr");if(b(s).length===0){s=b(v,a.rows).parents("tr:first")}a.p.ondblClickRow(b(s).attr("id"));return false})}if(bp){b(this).bind('contextmenu',function(d){v=(d.target||d.srcElement);s=b(v,a).parents("tr:first");if(b(s).length===0){s=b(v,a.rows).parents("tr:first")}if(!a.p.multiselect){b(a).setSelection(false,true,s)}a.p.onRightClickRow(b(s).attr("id"));return false})}k.bDiv=document.createElement("div");var Z=(isNaN(a.p.height)&&bk&&(a.p.height.indexOf("%")!=-1||a.p.height=="auto"))?"hidden":"auto";b(k.bDiv).addClass("grid_bdiv").scroll(function(d){k.scrollGrid()}).css({height:a.p.height+(isNaN(a.p.height)?"":"px"),padding:"0px",margin:"0px",overflow:Z,width:(k.width)+"px"}).css("overflow-x","hidden").append(this);b("table:first",k.bDiv).css({width:k.width+"px"});if(bB){if(b("tbody",this).size()===2){b("tbody:first",this).remove()}if(a.p.multikey){b(k.bDiv).bind("selectstart",function(){return false})}if(a.p.treeGrid){b(k.bDiv).css("position","relative")}}else{if(a.p.multikey){b(k.bDiv).bind("mousedown",function(){return false})}}if(E){b(k.bDiv).hide()}k.cDiv=document.createElement("div");b(k.cDiv).append(""+((a.p.hidegrid===true)?"":"")+"
    "+a.p.caption+"
    ").addClass("GridHeader").width(k.width);b(k.cDiv).insertBefore(k.hDiv);if(a.p.toolbar[0]){k.uDiv=document.createElement("div");if(a.p.toolbar[1]=="top"){b(k.uDiv).insertBefore(k.hDiv)}else{b(k.uDiv).insertAfter(k.hDiv)}b(k.uDiv).width(k.width).addClass("userdata").attr("id","t_"+this.id);a.p._height+=parseInt(b(k.uDiv).height(),10);if(E){b(k.uDiv).hide()}}if(a.p.caption){a.p._height+=parseInt(b(k.cDiv,a).height(),10);var bC=a.p.datatype;if(a.p.hidegrid===true){b(".HeaderButton",k.cDiv).toggle(function(){if(a.p.pager){b(a.p.pager).slideUp()}if(a.p.toolbar[0]){b(k.uDiv,a).slideUp()}b(k.bDiv).hide();b(k.hDiv).slideUp();b("img",this).attr("src",a.p.imgpath+"down.gif");a.p.gridstate='hidden';if(bd){if(!E){a.p.onHeaderClick(a.p.gridstate)}}},function(){b(k.hDiv).slideDown();b(k.bDiv).show();if(a.p.pager){b(a.p.pager).slideDown()}if(a.p.toolbar[0]){b(k.uDiv).slideDown()}b("img",this).attr("src",a.p.imgpath+"up.gif");if(E){a.p.datatype=bC;C();E=false}a.p.gridstate='visible';if(bd){a.p.onHeaderClick(a.p.gridstate)}});if(E){b(".HeaderButton",k.cDiv).trigger("click");a.p.datatype="local"}}}else{b(k.cDiv).hide()}a.p._height+=parseInt(b(k.hDiv,a).height(),10);b(k.hDiv).mousemove(function(d){k.dragMove(d.clientX);return false}).after(k.bDiv);b(document).mouseup(function(d){if(k.resizing){k.dragEnd();if(k.newWidth&&a.p.forceFit===false){var c=(k.width<=a.p._width)?k.width:a.p._width;var f=(k.width<=a.p._width)?"hidden":"auto";if(a.p.pager&&b(a.p.pager).hasClass("scroll")){b(a.p.pager).width(c)}if(a.p.caption){b(k.cDiv).width(c)}if(a.p.toolbar[0]){b(k.uDiv).width(c)}b(k.bDiv).width(c).css("overflow-x",f);b(k.hDiv).width(c)}return false}return true});a.formatCol=function(d,c){T(d,c)};a.sortData=function(d,c,f){bi(d,c,f)};a.updatepager=function(){V()};a.formatter=function(d,c,f,h,i){bf(d,c,f,h,i)};b.extend(k,{populate:function(){C()}});this.grid=k;a.addXmlData=function(d){M(d,a.grid.bDiv)};a.addJSONData=function(d){W(d,a.grid.bDiv)};C();if(!a.p.shrinkToFit){a.p.forceFit=false;b("tr:first th",G).each(function(d){var c=a.p.colModel[d].owidth;var f=c-a.p.colModel[d].width;if(f>0&&!a.p.colModel[d].hidden){k.headers[d].width=c;b(this).add(k.cols[d]).width(c);b('table:first',k.bDiv).add(k.hTable).width(a.grid.width);a.grid.width+=f;k.hDiv.scrollLeft=k.bDiv.scrollLeft}});Z=(k.width<=a.p._width)?"hidden":"auto";b(k.bDiv).css({"overflow-x":Z})}b(window).unload(function(){b(this).unbind("*");this.grid=null;this.p=null})})}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.celledit-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.celledit-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.celledit-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,7 @@ +/* +** + * jqGrid extension for cellediting Grid Data + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + */ +;(function(a){a.fn.extend({editCell:function(g,n,u,v){return this.each(function(){var c=this,p,j,o;if(!c.grid||c.p.cellEdit!==true){return}var s=null;if(a.browser.msie&&a.browser.version<=7&&u===true&&v===true){n=h(c.rows[g],n)}n=parseInt(n,10);c.p.selrow=c.rows[g].id;if(!c.p.knv){a(c).GridNav()}if(c.p.savedRow.length>0){if(u===true){if(g==c.p.iRow&&n==c.p.iCol){return}}var t=a("td:eq("+c.p.savedRow[0].ic+")>#"+c.p.savedRow[0].id+"_"+c.p.savedRow[0].name.replace('.',"\\."),c.rows[c.p.savedRow[0].id]).val();if(c.p.savedRow[0].v!=t){a(c).saveCell(c.p.savedRow[0].id,c.p.savedRow[0].ic)}else{a(c).restoreCell(c.p.savedRow[0].id,c.p.savedRow[0].ic)}}else{window.setTimeout(function(){a("#"+c.p.knv).attr("tabindex","-1").focus()},0)}p=c.p.colModel[n].name;if(p=='subgrid'){return}if(c.p.colModel[n].editable===true&&u===true){o=a("td:eq("+n+")",c.rows[g]);if(parseInt(c.p.iCol)>=0&&parseInt(c.p.iRow)>=0){a("td:eq("+c.p.iCol+")",c.rows[c.p.iRow]).removeClass("edit-cell");a(c.rows[c.p.iRow]).removeClass("selected-row")}a(o).addClass("edit-cell");a(c.rows[g]).addClass("selected-row");try{j=a.unformat(o,{colModel:c.p.colModel[n]},n)}catch(_){j=a.htmlDecode(a(o).html())}var d=a.extend(c.p.colModel[n].editoptions||{},{id:g+"_"+p,name:p});if(!c.p.colModel[n].edittype){c.p.colModel[n].edittype="text"}c.p.savedRow[0]={id:g,ic:n,name:p,v:j};if(a.isFunction(c.p.formatCell)){var r=c.p.formatCell(c.rows[g].id,p,j,g,n);if(r){j=r}}var q=createEl(c.p.colModel[n].edittype,d,j,o);if(a.isFunction(c.p.beforeEditCell)){c.p.beforeEditCell(c.rows[g].id,p,j,g,n)}a(o).html("").append(q);window.setTimeout(function(){a(q).focus()},0);a("input, select, textarea",o).bind("keydown",function(f){if(f.keyCode===27){a(c).restoreCell(g,n)}if(f.keyCode===13){a(c).saveCell(g,n)}if(f.keyCode==9){if(f.shiftKey){a(c).prevCell(g,n)}else{a(c).nextCell(g,n)}}f.stopPropagation()});if(a.isFunction(c.p.afterEditCell)){c.p.afterEditCell(c.rows[g].id,p,j,g,n)}}else{if(parseInt(c.p.iCol)>=0&&parseInt(c.p.iRow)>=0){a("td:eq("+c.p.iCol+")",c.rows[c.p.iRow]).removeClass("edit-cell");a(c.rows[c.p.iRow]).removeClass("selected-row")}a("td:eq("+n+")",c.rows[g]).addClass("edit-cell");a(c.rows[g]).addClass("selected-row");if(a.isFunction(c.p.onSelectCell)){j=a("td:eq("+n+")",c.rows[g]).html().replace(/\ \;/ig,'');c.p.onSelectCell(c.rows[g].id,p,j,g,n)}}c.p.iCol=n;c.p.iRow=g;function h(f,k){var m=0;var b=0;for(i=0;ik)return i}return i}})},saveCell:function(h,g){return this.each(function(){var b=this,l,c;if(!b.grid||b.p.cellEdit!==true){return}if(b.p.savedRow.length==1){c=0}else{c=null}if(c!=null){var p=a("td:eq("+g+")",b.rows[h]),j,o;l=b.p.colModel[g].name;switch(b.p.colModel[g].edittype){case"select":j=a("#"+h+"_"+l.replace('.',"\\.")+">option:selected",b.rows[h]).val();o=a("#"+h+"_"+l.replace('.',"\\.")+">option:selected",b.rows[h]).text();break;case"checkbox":var s=["Yes","No"];if(b.p.colModel[g].editoptions){s=b.p.colModel[g].editoptions.value.split(":")}j=a("#"+h+"_"+l.replace('.',"\\."),b.rows[h]).attr("checked")?s[0]:s[1];o=j;break;case"password":case"text":case"textarea":j=htmlEncode(a("#"+h+"_"+l.replace('.',"\\."),b.rows[h]).val());o=j;break}if(o!=b.p.savedRow[c].v){if(a.isFunction(b.p.beforeSaveCell)){var t=b.p.beforeSaveCell(b.rows[h].id,l,j,h,g);if(t){j=t}}var d=checkValues(j,g,b);if(d[0]===true){var r={};if(a.isFunction(b.p.beforeSubmitCell)){r=b.p.beforeSubmitCell(b.rows[h].id,l,j,h,g);if(!r){r={}}}if(b.p.cellsubmit=='remote'){if(b.p.cellurl){var q={};j=htmlEncode(j);o=htmlEncode(o);q[l]=j;q["id"]=b.rows[h].id;q=a.extend(r,q);a.ajax({url:b.p.cellurl,data:q,type:"POST",complete:function(f,k){if(k=='success'){if(a.isFunction(b.p.afterSubmitCell)){var m=b.p.afterSubmitCell(f,q.id,l,j,h,g);if(m[0]===true){a(p).empty();a(b).setCell(b.rows[h].id,g,o);a(p).addClass("dirty-cell");a(b.rows[h]).addClass("edited");if(a.isFunction(b.p.afterSaveCell)){b.p.afterSaveCell(b.rows[h].id,l,j,h,g)}b.p.savedRow=[]}else{info_dialog(a.jgrid.errors.errcap,m[1],a.jgrid.edit.bClose,b.p.imgpath);a(b).restoreCell(h,g)}}else{a(p).empty();a(b).setCell(b.rows[h].id,g,o);a(p).addClass("dirty-cell");a(b.rows[h]).addClass("edited");if(a.isFunction(b.p.afterSaveCell)){b.p.afterSaveCell(b.rows[h].id,l,j,h,g)}b.p.savedRow=[]}}},error:function(f,k){if(a.isFunction(b.p.errorCell)){b.p.errorCell(f,k);a(b).restoreCell(h,g)}else{info_dialog(a.jgrid.errors.errcap,f.status+" : "+f.statusText+"
    "+k,a.jgrid.edit.bClose,b.p.imgpath);a(b).restoreCell(h,g)}}})}else{try{info_dialog(a.jgrid.errors.errcap,a.jgrid.errors.nourl,a.jgrid.edit.bClose,b.p.imgpath);a(b).restoreCell(h,g)}catch(e){}}}if(b.p.cellsubmit=='clientArray'){j=htmlEncode(j);o=htmlEncode(o);a(p).empty();a(b).setCell(b.rows[h].id,g,o);a(p).addClass("dirty-cell");a(b.rows[h]).addClass("edited");if(a.isFunction(b.p.afterSaveCell)){b.p.afterSaveCell(b.rows[h].id,l,j,h,g)}b.p.savedRow=[]}}else{try{window.setTimeout(function(){info_dialog(a.jgrid.errors.errcap,j+" "+d[1],a.jgrid.edit.bClose,b.p.imgpath)},100);a(b).restoreCell(h,g)}catch(e){}}}else{a(b).restoreCell(h,g)}}if(a.browser.opera){a("#"+b.p.knv).attr("tabindex","-1").focus()}else{window.setTimeout(function(){a("#"+b.p.knv).attr("tabindex","-1").focus()},0)}})},restoreCell:function(l,c){return this.each(function(){var f=this,k,m;if(!f.grid||f.p.cellEdit!==true){return}if(f.p.savedRow.length==1){m=0}else{m=null}if(m!=null){var b=a("td:eq("+c+")",f.rows[l]);if(a.isFunction(a.fn['datepicker'])){try{a.datepicker('hide')}catch(e){try{a.datepicker.hideDatepicker()}catch(e){}}}a(b).empty();a(f).setCell(f.rows[l].id,c,f.p.savedRow[m].v);f.p.savedRow=[]}window.setTimeout(function(){a("#"+f.p.knv).attr("tabindex","-1").focus()},0)})},nextCell:function(l,c){return this.each(function(){var f=this,k=false,m;if(!f.grid||f.p.cellEdit!==true){return}for(var b=c+1;b0){a(f).saveCell(l,c)}}})},prevCell:function(l,c){return this.each(function(){var f=this,k=false,m;if(!f.grid||f.p.cellEdit!==true){return}for(var b=c-1;b>=0;b--){if(f.p.colModel[b].editable===true){k=b;break}}if(k!==false){a(f).saveCell(l,c);a(f).editCell(l,k,true)}else{if(f.p.savedRow.length>0){a(f).saveCell(l,c)}}})},GridNav:function(){return this.each(function(){var d=this;if(!d.grid||d.p.cellEdit!==true){return}d.p.knv=a("table:first",d.grid.bDiv).attr("id")+"_kn";var r=a("");a(r).insertBefore(d.grid.cDiv);a("#"+d.p.knv).focus();a("#"+d.p.knv).keydown(function(f){switch(f.keyCode){case 38:if(d.p.iRow-1>=1){q(d.p.iRow-1,d.p.iCol,'vu');a(d).editCell(d.p.iRow-1,d.p.iCol,false)}break;case 40:if(d.p.iRow+1<=d.rows.length-1){q(d.p.iRow+1,d.p.iCol,'vd');a(d).editCell(d.p.iRow+1,d.p.iCol,false)}break;case 37:if(d.p.iCol-1>=0){var k=h(d.p.iCol-1,'lft');q(d.p.iRow,k,'h');a(d).editCell(d.p.iRow,k,false)}break;case 39:if(d.p.iCol+1<=d.p.colModel.length-1){var k=h(d.p.iCol+1,'rgt');q(d.p.iRow,k,'h');a(d).editCell(d.p.iRow,k,false)}break;case 13:if(parseInt(d.p.iCol,10)>=0&&parseInt(d.p.iRow,10)>=0){a(d).editCell(d.p.iRow,d.p.iCol,true)}break}return false});function q(f,k,m){if(m.substr(0,1)=='v'){var b=a(d.grid.bDiv)[0].clientHeight,l=a(d.grid.bDiv)[0].scrollTop,c=d.rows[f].offsetTop+d.rows[f].clientHeight,p=d.rows[f].offsetTop;if(m=='vd'){if(c>=b){a(d.grid.bDiv)[0].scrollTop=a(d.grid.bDiv)[0].scrollTop+d.rows[f].clientHeight}}if(m=='vu'){if(p=j+parseInt(o)){a(d.grid.bDiv)[0].scrollLeft=a(d.grid.bDiv)[0].scrollLeft+d.rows[f].cells[k].clientWidth}else if(t=0;b--){if(d.p.colModel[b].hidden!==true){m=b;break}}}if(k=='rgt'){m=f-1;for(b=f;b
    '+b.caption+' '+(g!=''?'':'X')+'
    ').addClass("modalhead");var j=document.createElement('div');jQuery(j).addClass("modalcontent").attr("id",a.modalcontent);jQuery(j).append(d);f.appendChild(j);var m=document.createElement("div");jQuery(m).addClass("loading").html(b.processData||"");jQuery(f).prepend(m);jQuery(f).prepend(k);jQuery(f).addClass("jqmWindow");if(b.drag){jQuery(f).append("")}if(c===true){jQuery('body').append(f)}else{jQuery(f).insertBefore(e)}if(b.left==0&&b.top==0){var i=[];i=findPos(h);b.left=i[0]+4;b.top=i[1]+4}if(b.width==0||!b.width){b.width=300}if(b.height==0||!b.width){b.height=200}if(!b.zIndex){b.zIndex=950}jQuery(f).css({top:b.top+"px",left:b.left+"px",width:b.width+"px",height:b.height+"px",zIndex:b.zIndex});return false};function viewModal(a,d){d=jQuery.extend({toTop:true,overlay:10,modal:false,onShow:showModal,onHide:closeModal},d||{});jQuery(a).jqm(d).jqmShow();return false};function hideModal(a){jQuery(a).jqmHide()}function DnRModal(a,d){jQuery(d).css('cursor','move');jQuery(a).jqDrag(d).jqResize(".jqResize");return false};function info_dialog(d,b,e,h){var c="
    ";c+="

    "+b+"

    ";c+="";c+="
    ";createModal({themodal:'info_dialog',modalhead:'info_head',modalcontent:'info_content'},c,{width:290,height:120,drag:false,caption:""+d+"",imgpath:h,closeicon:'ico-close.gif',left:250,top:170},'','',true);viewModal("#info_dialog",{onShow:function(a){a.w.show()},onHide:function(a){a.w.hide().remove();if(a.o){a.o.remove()}},modal:true})};function findPos(a){var d=curtop=0;if(a.offsetParent){do{d+=a.offsetLeft;curtop+=a.offsetTop}while(a=a.offsetParent)}return[d,curtop]};function isArray(a){if(a.constructor.toString().indexOf("Array")==-1){return false}else{return true}};function createEl(d,b,e,h){var c="";switch(d){case"textarea":c=document.createElement("textarea");if(!b.cols&&h){jQuery(c).css("width","99%")}jQuery(c).attr(b);if(e==" "||e==" "){e=''}jQuery(c).val(e);break;case"checkbox":c=document.createElement("input");c.type="checkbox";jQuery(c).attr({id:b.id,name:b.name});if(!b.value){e=e.toLowerCase();if(e.search(/(false|0|no|off|undefined)/i)<0&&e!==""){c.checked=true;c.defaultChecked=true;c.value=e}else{c.value="on"}jQuery(c).attr("offval","off")}else{var g=b.value.split(":");if(e==g[0]){c.checked=true;c.defaultChecked=true}c.value=g[0];jQuery(c).attr("offval",g[1])}break;case"select":c=document.createElement("select");var f=b.multiple==true?true:false;if(b.value){var k=[];if(f){jQuery(c).attr({multiple:"multiple"});k=e.split(",");k=jQuery.map(k,function(a){return jQuery.trim(a)})}if(typeof b.size==='undefined'){b.size=1}if(typeof b.value=='string'){var j=b.value.split(";"),m,i;jQuery(c).attr({id:b.id,name:b.name,size:Math.min(b.size,j.length)});for(var l=0;l-1){i.selected="selected"}c.appendChild(i)}}else if(typeof b.value=='object'){var n=b.value;var l=0;for(var o in n){l++;i=document.createElement("option");i.value=o;i.innerHTML=jQuery.htmlDecode(n[o]);if(!f&&n[o]==e){i.selected="selected"}if(f&&jQuery.inArray(jQuery.trim(n[o]),k)>-1){i.selected="selected"}c.appendChild(i)}jQuery(c).attr({id:b.id,name:b.name,size:Math.min(b.size,l)})}}break;case"text":c=document.createElement("input");c.type="text";e=jQuery.htmlDecode(e);c.value=e;if(!b.size&&h){jQuery(c).css({width:"98%"})}jQuery(c).attr(b);break;case"password":c=document.createElement("input");c.type="password";e=jQuery.htmlDecode(e);c.value=e;if(!b.size&&h){jQuery(c).css("width","99%")}jQuery(c).attr(b);break;case"image":c=document.createElement("input");c.type="image";jQuery(c).attr(b);break}return c};function checkValues(a,d,b){if(d>=0){var e=b.p.colModel[d].editrules}if(e){if(e.required===true){if(a.match(/^s+$/)||a=="")return[false,b.p.colNames[d]+": "+jQuery.jgrid.edit.msg.required,""]}var h=e.required===false?false:true;if(e.number===true){if(!(h===false&&isEmpty(a))){if(isNaN(a))return[false,b.p.colNames[d]+": "+jQuery.jgrid.edit.msg.number,""]}}if(e.minValue&&!isNaN(e.minValue)){if(parseFloat(a)parseFloat(e.maxValue))return[false,b.p.colNames[d]+": "+jQuery.jgrid.edit.msg.maxValue+" "+e.maxValue,""]}if(e.email===true){if(!(h===false&&isEmpty(a))){var c=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i;if(!c.test(a)){return[false,b.p.colNames[d]+": "+jQuery.jgrid.edit.msg.email,""]}}}if(e.integer===true){if(!(h===false&&isEmpty(a))){if(isNaN(a))return[false,b.p.colNames[d]+": "+jQuery.jgrid.edit.msg.integer,""];if((a%1!=0)||(a.indexOf('.')!=-1))return[false,b.p.colNames[d]+": "+jQuery.jgrid.edit.msg.integer,""]}}if(e.date===true){if(!(h===false&&isEmpty(a))){var g=b.p.colModel[d].datefmt||"Y-m-d";if(!checkDate(g,a))return[false,b.p.colNames[d]+": "+jQuery.jgrid.edit.msg.date+" - "+g,""]}}}return[true,"",""]};function checkDate(a,d){var b={};var e=false;var h;a=a.toLowerCase();if(a.indexOf("/")!=-1){h="/"}else if(a.indexOf("-")!=-1){h="-"}else if(a.indexOf(".")!=-1){h="."}else{h="/"}a=a.split(h);d=d.split(h);if(d.length!=3)return false;var c=-1,g,f=-1,k=-1;for(var j=0;j12){return false}}if(f===-1){return false}else{l=b[a[f]].toString();if(l.length<1||b[a[f]]<1||b[a[f]]>31||(b[a[k]]==2&&b[a[f]]>daysInFebruary(b[a[c]]))||b[a[f]]>i[b[a[k]]]){return false}}return true}function daysInFebruary(a){return(((a%4==0)&&((!(a%100==0))||(a%400==0)))?29:28)}function DaysArray(a){for(var d=1;d<=a;d++){this[d]=31;if(d==4||d==6||d==9||d==11){this[d]=30}if(d==2){this[d]=29}}return this}function isEmpty(a){if(a.match(/^s+$/)||a==""){return true}else{return false}}function htmlEncode(a){return!a?a:String(a).replace(/&/g,"&").replace(/>/g,">").replace(/0?true:false;g.p.postData=a.extend(g.p.postData,d);var l;if(b.p.url){l=a(g).getGridParam('url');a(g).setGridParam({url:b.p.url})}a(g).setGridParam({search:j,page:1}).trigger("reloadGrid");if(l){a(g).setGridParam({url:l})}if(a.isFunction(b.p.afterSearch)){b.p.afterSearch()}};var x=function(){var i={},c,g=0;var j=a(b.p.gridid)[0];if(a.isFunction(b.p.beforeClear)){b.p.beforeClear()}a.each(b.p.filterModel,function(f,h){c=(this.defval)?this.defval:"";if(!this.stype){this.stype=='text'}switch(this.stype){case'select':if(c){var d;a("select[name="+this.name+"] option",b).each(function(){if(a(this).text()==c){this.selected=true;d=a(this).val();return false}});i[this.index]=d||"";if(b.p.marksearched){a("#jqgh_"+this.name,j.grid.hDiv).addClass("dirty-cell")}g++}else{if(b.p.marksearched){a("#jqgh_"+this.name,j.grid.hDiv).removeClass("dirty-cell")}try{delete j.p.postData[this.index]}catch(e){}}break;case'text':a("input[name="+this.name+"]",b).val(c);if(c){i[this.index]=c;if(b.p.marksearched){a("#jqgh_"+this.name,j.grid.hDiv).addClass("dirty-cell")}g++}else{if(b.p.marksearched){a("#jqgh_"+this.name,j.grid.hDiv).removeClass("dirty-cell")}try{delete j.p.postData[this.index]}catch(e){}}}});var l=g>0?true:false;j.p.postData=a.extend(j.p.postData,i);var m;if(b.p.url){m=a(j).getGridParam('url');a(j).setGridParam({url:b.p.url})}a(j).setGridParam({search:l,page:1}).trigger("reloadGrid");if(m){a(j).setGridParam({url:m})}if(a.isFunction(b.p.afterClear)){b.p.afterClear()}};var C=function(){var q=document.createElement("tr");var n,y,z,t,k,E;if(b.p.formtype=='horizontal'){a(u).append(q)}a.each(b.p.filterModel,function(d,i){t=document.createElement("td");a(t).append("");k=document.createElement("td");var c=this;if(!this.stype){this.stype='text'}switch(this.stype){case"select":if(this.surl){a(k).load(this.surl,function(){if(c.defval)a("select",this).val(c.defval);a("select",this).attr({name:c.name,id:"sg_"+c.name});if(c.sopt)a("select",this).attr(c.sopt);if(b.p.gridToolbar===true&&c.width){a("select",this).width(c.width)}if(b.p.autosearch===true){a("select",this).change(function(f){p();return false})}})}else{if(c.sopt.value){var g=c.sopt.value.split(";"),j,l;var m=document.createElement("select");a(m).attr({name:c.name,id:"sg_"+c.name}).attr(c.sopt);for(var w=0;w");if(c.sopt)a("input",k).attr(c.sopt);if(b.p.gridToolbar===true&&c.width){if(a.browser.msie){a("input",k).width(c.width-4)}else{a("input",k).width(c.width-2)}}if(b.p.autosearch===true){a("input",k).keypress(function(f){var h=f.charCode?f.charCode:f.keyCode?f.keyCode:0;if(h==13){p();return false}return this})}break}if(b.p.formtype=='horizontal'){if(b.p.grodToolbar===true&&b.p.gridNames===false){a(q).append(k)}else{a(q).append(t).append(k)}a(q).append(k)}else{n=document.createElement("tr");a(n).append(t).append(k);a(u).append(n)}});k=document.createElement("td");if(b.p.enableSearch===true){y="";a(k).append(y);a("input#sButton",k).click(function(){p();return false})}if(b.p.enableClear===true){z="";a(k).append(z);a("input#cButton",k).click(function(){x();return false})}if(b.p.enableClear===true||b.p.enableSearch===true){if(b.p.formtype=='horizontal'){a(q).append(k)}else{n=document.createElement("tr");a(n).append(" ").append(k);a(u).append(n)}}};var A=a("
    ");var u=a("
    ");a(A).append(u);C();a(this).append(A);this.triggerSearch=function(){p()};this.clearSearch=function(){x()}})}})})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.formedit-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.formedit-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.formedit-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/* + * jqGrid extension for form editing Grid Data + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + */ +;(function(a){var t=null;a.fn.extend({searchGrid:function(e){e=a.extend({top:0,left:0,width:360,height:80,modal:false,drag:true,closeicon:'ico-close.gif',dirty:false,sField:'searchField',sValue:'searchString',sOper:'searchOper',processData:"",checkInput:false,beforeShowSearch:null,afterShowSearch:null,onInitializeSearch:null,closeAfterSearch:false,sopt:null},a.jgrid.search,e||{});return this.each(function(){var b=this;if(!b.grid){return}if(!e.imgpath){e.imgpath=b.p.imgpath}var d=a("table:first",b.grid.bDiv).attr("id");var k={themodal:'srchmod'+d,modalhead:'srchhead'+d,modalcontent:'srchcnt'+d};if(a("#"+k.themodal).html()!=null){if(a.isFunction('beforeShowSearch')){e.beforeShowSearch(a("#srchcnt"+d))}viewModal("#"+k.themodal,{modal:e.modal});if(a.isFunction('afterShowSearch')){e.afterShowSearch(a("#srchcnt"+d))}}else{var m=b.p.colModel;var f="";var g=e.sopt||['bw','eq','ne','lt','le','gt','ge','ew','cn'];var q="";var y="";var l="";var x="";var u=a("
    "+f+""+q+""+y+""+l+""+x+"
    ");createModal(k,u,e,b.grid.hDiv,b.grid.hDiv);if(a.isFunction('onInitializeSearch')){e.onInitializeSearch(a("#srchcnt"+d))};if(a.isFunction('beforeShowSearch')){e.beforeShowSearch(a("#srchcnt"+d))};viewModal("#"+k.themodal,{modal:e.modal});if(a.isFunction('afterShowSearch')){e.afterShowSearch(a("#srchcnt"+d))}if(e.drag){DnRModal("#"+k.themodal,"#"+k.modalhead+" td.modaltext")}a("#sbut","#"+k.themodal).click(function(){if(a("#sval","#"+k.themodal).val()!=""){var h=[true,"",""];a("#srcherr >td","#srchcnt"+d).html("").hide();b.p.searchdata[e.sField]=a("option[selected]","#snames").val();b.p.searchdata[e.sOper]=a("option[selected]","#sopt").val();b.p.searchdata[e.sValue]=a("#sval","#"+k.modalcontent).val();if(e.checkInput){for(var c=0;ctd","#srchcnt"+d).html(h[1]).show()}}});a("#sreset","#"+k.themodal).click(function(){if(b.p.search){a("#srcherr >td","#srchcnt"+d).html("").hide();b.p.search=false;b.p.searchdata={};b.p.page=1;a("#sval","#"+k.themodal).val("");if(e.dirty){a(".no-dirty-cell",b.p.pager).removeClass("dirty-cell")}a(b).trigger("reloadGrid")}})}})},editGridRow:function(z,s){s=a.extend({top:0,left:0,width:0,height:0,modal:false,drag:true,closeicon:'ico-close.gif',imgpath:'',url:null,mtype:"POST",closeAfterAdd:false,clearAfterAdd:true,closeAfterEdit:false,reloadAfterSubmit:true,onInitializeForm:null,beforeInitData:null,beforeShowForm:null,afterShowForm:null,beforeSubmit:null,afterSubmit:null,onclickSubmit:null,afterComplete:null,onclickPgButtons:null,afterclickPgButtons:null,editData:{},recreateForm:false,addedrow:"first"},a.jgrid.edit,s||{});t=s;return this.each(function(){var l=this;if(!l.grid||!z){return}if(!s.imgpath){s.imgpath=l.p.imgpath}var x=a("table:first",l.grid.bDiv).attr("id");var u={themodal:'editmod'+x,modalhead:'edithd'+x,modalcontent:'editcnt'+x};var e=a.isFunction(t.beforeShowForm)?t.beforeShowForm:false;var A=a.isFunction(t.afterShowForm)?t.afterShowForm:false;var B=a.isFunction(t.beforeInitData)?t.beforeInitData:false;var G=a.isFunction(t.onInitializeForm)?t.onInitializeForm:false;if(z=="new"){z="_empty";s.caption=s.addCaption}else{s.caption=s.editCaption};var v="FrmGrid_"+x;var n="TblGrid_"+x;if(s.recreateForm===true&&a("#"+u.themodal).html()!=null){a("#"+u.themodal).remove()}if(a("#"+u.themodal).html()!=null){a(".modaltext","#"+u.modalhead).html(s.caption);a("#FormError","#"+n).hide();if(B){B(a("#"+v))}D(z,l);if(z=="_empty"){a("#pData, #nData","#"+n).hide()}else{a("#pData, #nData","#"+n).show()}if(e){e(a("#"+v))}viewModal("#"+u.themodal,{modal:s.modal});if(A){A(a("#"+v))}}else{var H=a("
    ");var C=a("
    ");a(H).append(C);a(C).append(" ");if(B){B(a("#"+v))}var K=L(z,l,C);var I=l.p.imgpath;var M="";var N="";var O="";var P="";a(C).append(""+M+" "+N+""+O+" "+P+"");createModal(u,H,s,l.grid.hDiv,l.grid.hDiv);if(G){G(a("#"+v))}if(s.drag){DnRModal("#"+u.themodal,"#"+u.modalhead+" td.modaltext")}if(z=="_empty"){a("#pData,#nData","#"+n).hide()}else{a("#pData,#nData","#"+n).show()}if(e){e(a("#"+v))}viewModal("#"+u.themodal,{modal:s.modal});if(A){A(a("#"+v))}a("#sData","#"+n).click(function(m){var f={},j=[true,"",""],o={};a("#FormError","#"+n).hide();var i=0;a(".FormElement","#"+n).each(function(r){var b=true;switch(a(this).get(0).type){case"checkbox":if(a(this).attr("checked")){f[this.name]=a(this).val()}else{var d=a(this).attr("offval");f[this.name]=d;o[this.name]=d}break;case"select-one":f[this.name]=a("option:selected",this).val();o[this.name]=a("option:selected",this).text();break;case"select-multiple":f[this.name]=a(this).val();var k=[];a("option:selected",this).each(function(h,c){k[h]=a(c).text()});o[this.name]=k.join(",");break;case"password":case"text":case"textarea":f[this.name]=a(this).val();j=checkValues(f[this.name],K[r],l);if(j[0]===false){b=false}else{f[this.name]=htmlEncode(f[this.name])}break}i++;if(!b){return false}});if(i==0){j[0]=false;j[1]=a.jgrid.errors.norecords}if(a.isFunction(t.onclickSubmit)){t.editData=t.onclickSubmit(s)||{}}if(j[0]){if(a.isFunction(t.beforeSubmit)){j=t.beforeSubmit(f,a("#"+v))}}var p=t.url?t.url:l.p.editurl;if(j[0]){if(!p){j[0]=false;j[1]+=" "+a.jgrid.errors.nourl}}if(j[0]===false){a("#FormError>td","#"+n).html(j[1]);a("#FormError","#"+n).show()}else{if(!s.processing){s.processing=true;a("div.loading","#"+u.themodal).fadeIn("fast");a(this).attr("disabled",true);f.oper=f.id=="_empty"?"add":"edit";f=a.extend(f,t.editData);a.ajax({url:p,type:t.mtype,data:f,complete:function(c,r){if(r!="success"){j[0]=false;j[1]=r+" Status: "+c.statusText+" Error code: "+c.status}else{if(a.isFunction(t.afterSubmit)){j=t.afterSubmit(c,f)}}if(j[0]===false){a("#FormError>td","#"+n).html(j[1]);a("#FormError","#"+n).show()}else{f=a.extend(f,o);if(f.id=="_empty"){if(!j[2]){j[2]=parseInt(a(l).getGridParam('records'))+1}f.id=j[2];if(t.closeAfterAdd){if(t.reloadAfterSubmit){a(l).trigger("reloadGrid")}else{a(l).addRowData(j[2],f,s.addedrow);a(l).setSelection(j[2])}hideModal("#"+u.themodal)}else if(t.clearAfterAdd){if(t.reloadAfterSubmit){a(l).trigger("reloadGrid")}else{a(l).addRowData(j[2],f,s.addedrow)}a(".FormElement","#"+n).each(function(h){switch(a(this).get(0).type){case"checkbox":a(this).attr("checked",0);break;case"select-one":case"select-multiple":a("option",this).attr("selected","");break;case"password":case"text":case"textarea":if(this.name=='id'){a(this).val("_empty")}else{a(this).val("")}break}})}else{if(t.reloadAfterSubmit){a(l).trigger("reloadGrid")}else{a(l).addRowData(j[2],f,s.addedrow)}}}else{if(t.reloadAfterSubmit){a(l).trigger("reloadGrid");if(!t.closeAfterEdit){a(l).setSelection(f.id)}}else{if(l.p.treeGrid===true){a(l).setTreeRow(f.id,f)}else{a(l).setRowData(f.id,f)}}if(t.closeAfterEdit){hideModal("#"+u.themodal)}}if(a.isFunction(t.afterComplete)){setTimeout(function(){t.afterComplete(c,f,a("#"+v))},500)}}s.processing=false;a("#sData","#"+n).attr("disabled",false);a("div.loading","#"+u.themodal).fadeOut("fast")}})}}m.stopPropagation()});a("#cData","#"+n).click(function(h){hideModal("#"+u.themodal);h.stopPropagation()});a("#nData","#"+n).click(function(h){a("#FormError","#"+n).hide();var c=E();c[0]=parseInt(c[0]);if(c[0]!=-1&&c[1][c[0]+1]){if(a.isFunction(s.onclickPgButtons)){s.onclickPgButtons('next',a("#"+v),c[1][c[0]])}D(c[1][c[0]+1],l);a(l).setSelection(c[1][c[0]+1]);if(a.isFunction(s.afterclickPgButtons)){s.afterclickPgButtons('next',a("#"+v),c[1][c[0]+1])}F(c[0]+1,c[1].length-1)};return false});a("#pData","#"+n).click(function(h){a("#FormError","#"+n).hide();var c=E();if(c[0]!=-1&&c[1][c[0]-1]){if(a.isFunction(s.onclickPgButtons)){s.onclickPgButtons('prev',a("#"+v),c[1][c[0]])}D(c[1][c[0]-1],l);a(l).setSelection(c[1][c[0]-1]);if(a.isFunction(s.afterclickPgButtons)){s.afterclickPgButtons('prev',a("#"+v),c[1][c[0]-1])}F(c[0]-1,c[1].length-1)};return false})};var J=E();F(J[0],J[1].length-1);function F(h,c,r){var b=l.p.imgpath;if(h==0){a("#pData","#"+n).attr("src",b+"off-"+l.p.previmg)}else{a("#pData","#"+n).attr("src",b+l.p.previmg)}if(h==c){a("#nData","#"+n).attr("src",b+"off-"+l.p.nextimg)}else{a("#nData","#"+n).attr("src",b+l.p.nextimg)}};function E(){var h=a(l).getDataIDs();var c=a("#id_g","#"+n).val();var r=a.inArray(c,h);return[r,h]};function L(r,b,d){var k,m,f,j,o,i=0,p,w,g,q=[];a('#'+r+' td',b.grid.bDiv).each(function(h){k=b.p.colModel[h].name;if(b.p.colModel[h].editrules&&b.p.colModel[h].editrules.edithidden==true){m=false}else{m=b.p.colModel[h].hidden===true?true:false}w=m?"style='display:none'":"";if(k!=='cb'&&k!=='subgrid'&&b.p.colModel[h].editable===true){if(k==b.p.ExpandColumn&&b.p.treeGrid===true){p=a(this).text()}else{try{p=a.unformat(this,{colModel:b.p.colModel[h]},h)}catch(_){p=a.htmlDecode(a(this).html())}}var c=a.extend(b.p.colModel[h].editoptions||{},{id:k,name:k});if(!b.p.colModel[h].edittype)b.p.colModel[h].edittype="text";g=createEl(b.p.colModel[h].edittype,c,p);a(g).addClass("FormElement");f=a("").addClass("FormData").attr("id","tr_"+k);j=a("").addClass("CaptionTD");o=a("").addClass("DataTD");a(j).html(b.p.colNames[h]+": ");a(o).append(g);f.append(j);f.append(o);if(d){a(d).append(f)}else{a(f).insertBefore("#Act_Buttons")}q[i]=h;i++}});if(i>0){var y=a(" ");if(d){a(d).append(y)}else{a(y).insertBefore("#Act_Buttons")}}return q};function D(r,b){var d,k,m=0,f;a('#'+r+' td',b.grid.bDiv).each(function(c){d=b.p.colModel[c].name;if(b.p.colModel[c].editrules&&b.p.colModel[c].editrules.edithidden===true){k=false}else{k=b.p.colModel[c].hidden===true?true:false}if(d!=='cb'&&d!=='subgrid'&&b.p.colModel[c].editable===true){if(d==b.p.ExpandColumn&&b.p.treeGrid===true){f=a(this).text()}else{try{f=a.unformat(this,{colModel:b.p.colModel[c]},c)}catch(_){f=a.htmlDecode(a(this).html())}}d=d.replace('.',"\\.");switch(b.p.colModel[c].edittype){case"password":case"text":f=a.htmlDecode(f);a("#"+d,"#"+n).val(f);break;case"textarea":if(f==" "||f==" "){f=''}a("#"+d,"#"+n).val(f);break;case"select":a("#"+d+" option","#"+n).each(function(h){if(!b.p.colModel[c].editoptions.multiple&&f==a(this).text()){this.selected=true}else if(b.p.colModel[c].editoptions.multiple){if(a.inArray(a(this).text(),f.split(","))>-1){this.selected=true}else{this.selected=false}}else{this.selected=false}});break;case"checkbox":if(f==a("#"+d,"#"+n).val()){a("#"+d,"#"+n).attr("checked",true);a("#"+d,"#"+n).attr("defaultChecked",true)}else{a("#"+d,"#"+n).attr("checked",false);a("#"+d,"#"+n).attr("defaultChecked","")}break}if(k){a("#"+d,"#"+n).parents("tr:first").hide()}m++}});if(m>0){a("#id_g","#"+n).val(r)}else{a("#id_g","#"+n).val("")}return m}})},delGridRow:function(u,e){e=a.extend({top:0,left:0,width:240,height:90,modal:false,drag:true,closeicon:'ico-close.gif',imgpath:'',url:'',mtype:"POST",reloadAfterSubmit:true,beforeShowForm:null,afterShowForm:null,beforeSubmit:null,onclickSubmit:null,afterSubmit:null,onclickSubmit:null,delData:{}},a.jgrid.del,e||{});return this.each(function(){var o=this;if(!o.grid){return}if(!u){return}if(!e.imgpath){e.imgpath=o.p.imgpath}var i=typeof e.beforeShowForm==='function'?true:false;var p=typeof e.afterShowForm==='function'?true:false;if(isArray(u)){u=u.join()}var w=a("table:first",o.grid.bDiv).attr("id");var g={themodal:'delmod'+w,modalhead:'delhd'+w,modalcontent:'delcnt'+w};var q="DelTbl_"+w;if(a("#"+g.themodal).html()!=null){a("#DelData>td","#"+q).text(u);a("#DelError","#"+q).hide();if(i){e.beforeShowForm(a("#"+q))}viewModal("#"+g.themodal,{modal:e.modal});if(p){e.afterShowForm(a("#"+q))}}else{var y=a("
    ");a(y).append(" ");a(y).append(""+u+"");a(y).append(""+e.msg+"");var l="";var x="";a(y).append(""+l+" "+x+"");createModal(g,y,e,o.grid.hDiv,o.grid.hDiv);if(e.drag){DnRModal("#"+g.themodal,"#"+g.modalhead+" td.modaltext")}a("#dData","#"+q).click(function(d){var k=[true,""];var m=a("#DelData>td","#"+q).text();if(typeof e.onclickSubmit==='function'){e.delData=e.onclickSubmit(e)||{}}if(typeof e.beforeSubmit==='function'){k=e.beforeSubmit(m)}var f=e.url?e.url:o.p.editurl;if(!f){k[0]=false;k[1]+=" "+a.jgrid.errors.nourl}if(k[0]===false){a("#DelError>td","#"+q).html(k[1]);a("#DelError","#"+q).show()}else{if(!e.processing){e.processing=true;a("div.loading","#"+g.themodal).fadeIn("fast");a(this).attr("disabled",true);var j=a.extend({oper:"del",id:m},e.delData);a.ajax({url:f,type:e.mtype,data:j,complete:function(h,c){if(c!="success"){k[0]=false;k[1]=c+" Status: "+h.statusText+" Error code: "+h.status}else{if(typeof e.afterSubmit==='function'){k=e.afterSubmit(h,m)}}if(k[0]===false){a("#DelError>td","#"+q).html(k[1]);a("#DelError","#"+q).show()}else{if(e.reloadAfterSubmit){if(o.p.treeGrid){a(o).setGridParam({treeANode:0,datatype:o.p.treedatatype})}a(o).trigger("reloadGrid")}else{var r=[];r=m.split(",");if(o.p.treeGrid===true){try{a(o).delTreeNode(r[0])}catch(d){}}else{for(var b=0;b"+g.alerttext+"",{imgpath:d.p.imgpath,closeicon:g.closeicon,caption:g.alertcap,top:m/2-25,left:k/2-100,width:200,height:50},d.grid.hDiv,d.grid.hDiv,true);DnRModal("#"+b.themodal,"#"+b.modalhead)}var f=a("").height(20);var j=document.createElement("tr");a(j).addClass("nav-row");var o=d.p.imgpath;var i;if(g.add){i=document.createElement("td");a(i).append(" ").css({border:"none",padding:"0px"});j.appendChild(i);i=document.createElement("td");i.title=g.addtitle||"";a(i).append("
    "+g.addtext+" 
    ").css("cursor","pointer").addClass("nav-button").click(function(){if(typeof g.addfunc=='function'){g.addfunc()}else{a(d).editGridRow("new",y||{})}return false}).hover(function(){a(this).addClass("nav-hover")},function(){a(this).removeClass("nav-hover")});j.appendChild(i);i=null}if(g.edit){i=document.createElement("td");a(i).append(" ").css({border:"none",padding:"0px"});j.appendChild(i);i=document.createElement("td");i.title=g.edittitle||"";a(i).append("
    "+g.edittext+" 
    ").css("cursor","pointer").addClass("nav-button").click(function(){var h=a(d).getGridParam('selrow');if(h){if(typeof g.editfunc=='function'){g.editfunc(h)}else{a(d).editGridRow(h,q||{})}}else{viewModal("#"+b.themodal)}return false}).hover(function(){a(this).addClass("nav-hover")},function(){a(this).removeClass("nav-hover")});j.appendChild(i);i=null}if(g.del){i=document.createElement("td");a(i).append(" ").css({border:"none",padding:"0px"});j.appendChild(i);i=document.createElement("td");i.title=g.deltitle||"";a(i).append("
    "+g.deltext+" 
    ").css("cursor","pointer").addClass("nav-button").click(function(){var h;if(d.p.multiselect){h=a(d).getGridParam('selarrrow');if(h.length==0){h=null}}else{h=a(d).getGridParam('selrow')}if(h){a(d).delGridRow(h,l||{})}else{viewModal("#"+b.themodal)}return false}).hover(function(){a(this).addClass("nav-hover")},function(){a(this).removeClass("nav-hover")});j.appendChild(i);i=null}if(g.search){i=document.createElement("td");a(i).append(" ").css({border:"none",padding:"0px"});j.appendChild(i);i=document.createElement("td");if(a(w)[0]==d.p.pager[0]){x=a.extend(x,{dirty:true})}i.title=g.searchtitle||"";a(i).append("
    "+g.searchtext+" 
    ").css({cursor:"pointer"}).addClass("nav-button").click(function(){a(d).searchGrid(x||{});return false}).hover(function(){a(this).addClass("nav-hover")},function(){a(this).removeClass("nav-hover")});j.appendChild(i);i=null}if(g.refresh){i=document.createElement("td");a(i).append(" ").css({border:"none",padding:"0px"});j.appendChild(i);i=document.createElement("td");i.title=g.refreshtitle||"";var p=(a(w)[0]==d.p.pager[0])?true:false;a(i).append("
    "+g.refreshtext+" 
    ").css("cursor","pointer").addClass("nav-button").click(function(){d.p.search=false;switch(g.refreshstate){case'firstpage':d.p.page=1;a(d).trigger("reloadGrid");break;case'current':var c=d.p.multiselect===true?selarrrow:d.p.selrow;a(d).setGridParam({gridComplete:function(){if(d.p.multiselect===true){if(c.length>0){for(var h=0;h":" ";a(tbd).append("
    "+k+""+f.caption+" 
    ").css("cursor","pointer").addClass("nav-button").click(function(h){if(typeof f.onClickButton=='function'){f.onClickButton()}h.stopPropagation();return false}).hover(function(){a(this).addClass("nav-hover")},function(){a(this).removeClass("nav-hover")});if(f.position!='first'){d.appendChild(tbd)}else{a(d).prepend(tbd);a(d).prepend(b)}tbd=null;b=null}})},GridToForm:function(b,d){return this.each(function(){var h=this;if(!h.grid){return}var c=a(h).getRowData(b);if(c){for(var r in c){if(a("[name="+r+"]",d).is("input:radio")){a("[name="+r+"]",d).each(function(){if(a(this).val()==c[r]){a(this).attr("checked","checked")}else{a(this).attr("checked","")}})}else{a("[name="+r+"]",d).val(c[r])}}}})},FormToGrid:function(k,m){return this.each(function(){var r=this;if(!r.grid){return}var b=a(m).serializeArray();var d={};a.each(b,function(h,c){d[c.name]=c.value});a(r).setRowData(k,d)})}})})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.import-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.import-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.import-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/* + * jqGrid extension for constructing Grid Data from external file + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + */ +;(function(d){d.fn.extend({jqGridImport:function(a){a=d.extend({imptype:"xml",impstring:"",impurl:"",mtype:"GET",impData:{},xmlGrid:{config:"roots>grid",data:"roots>rows"},jsonGrid:{config:"grid",data:"data"}},a||{});return this.each(function(){var h=this;var k=function(b,c){var f=d(c.xmlGrid.config,b)[0];var g=d(c.xmlGrid.data,b)[0];if(xmlJsonClass.xml2json&&JSON.parse){var e=xmlJsonClass.xml2json(f," ");var e=JSON.parse(e);for(var i in e){var jstr1=e[i]}if(g){var m=e.grid.datatype;e.grid.datatype='xmlstring';e.grid.datastr=b;d(h).jqGrid(jstr1).setGridParam({datatype:m})}else{d(h).jqGrid(jstr1)}e=null;jstr1=null}else{alert("xml2json or json.parse are not present")}};var l=function(b,c){if(b&&typeof b=='string'&&JSON.parse){var f=JSON.parse(b);var g=f[c.jsonGrid.config];var e=f[c.jsonGrid.data];if(e){var i=g.datatype;g.datatype='jsonstring';g.datastr=e;d(h).jqGrid(g).setGridParam({datatype:i})}else{d(h).jqGrid(g)}}};switch(a.imptype){case'xml':d.ajax({url:a.impurl,type:a.mtype,data:a.impData,dataType:"xml",complete:function(b,c){if(c=='success'){k(b.responseXML,a);b=null}}});break;case'xmlstring':if(a.impstring&&typeof a.impstring=='string'){var j=xmlJsonClass.parseXml(a.impstring);if(j){k(j,a);j=null}}break;case'json':d.ajax({url:a.impurl,type:a.mtype,data:a.impData,dataType:"json",complete:function(b,c){if(c=='success'){l(b.responseText,a);b=null}}});break;case'jsonstring':if(a.impstring&&typeof a.impstring=='string'){l(a.impstring,a)}break}})},jqGridExport:function(c){c=d.extend({exptype:"xmlstring"},c||{});var f=null;this.each(function(){if(!this.grid){return}var b=d(this).getGridParam();switch(c.exptype){case'xmlstring':f=xmlJsonClass.json2xml(b," ");break;case'jsonstring':f=JSON.stringify(b);break}});return f}})})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.inlinedit-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.inlinedit-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.inlinedit-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/* + * jqGrid extension for manipulating Grid Data + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + */ +;(function(a){a.fn.extend({editRow:function(i,s,j,u,o,v,t,w){return this.each(function(){var b=this,k,l,c,h=0,f=null,p=[],m;if(!b.grid){return}var r,q,x;if(!b.p.multiselect){m=a(b).getInd(b.rows,i);if(m===false){return}c=a(b.rows[m]).attr("editable")||"0";if(c=="0"){a('td',b.rows[m]).each(function(d){k=b.p.colModel[d].name;x=b.p.colModel[d].hidden===true?true:false;try{l=a.unformat(this,{colModel:b.p.colModel[d]},d)}catch(_){l=a.htmlDecode(a(this).html())}p[k]=l;if(k!=='cb'&&k!=='subgrid'&&b.p.colModel[d].editable===true&&!x){if(f===null){f=d}a(this).html("");var n=a.extend(b.p.colModel[d].editoptions||{},{id:i+"_"+k,name:k});if(!b.p.colModel[d].edittype){b.p.colModel[d].edittype="text"}var g=createEl(b.p.colModel[d].edittype,n,l,a(this));a(g).addClass("editable");a(this).append(g);if(b.p.colModel[d].edittype=="select"&&b.p.colModel[d].editoptions.multiple===true&&a.browser.msie){a(g).width(a(g).width())}h++}});if(h>0){p['id']=i;b.p.savedRow.push(p);a(b.rows[m]).attr("editable","1");a("td:eq("+f+") input",b.rows[m]).focus();if(s===true){a(b.rows[m]).bind("keydown",function(d){if(d.keyCode===27){a(b).restoreRow(i)}if(d.keyCode===13){a(b).saveRow(i,u,o,v,t,w);return false}d.stopPropagation()})}if(a.isFunction(j)){j(i)}}}}})},saveRow:function(j,u,o,v,t,w){return this.each(function(){var c=this,h,f={},p={},m,r,q,x,i;if(!c.grid){return}i=a(c).getInd(c.rows,j);if(i===false){return}m=a(c.rows[i]).attr("editable");o=o?o:c.p.editurl;if(m==="1"&&o){a("td",c.rows[i]).each(function(g){h=c.p.colModel[g].name;if(h!=='cb'&&h!=='subgrid'&&c.p.colModel[g].editable===true){if(c.p.colModel[g].hidden===true){f[h]=a(this).html()}else{switch(c.p.colModel[g].edittype){case"checkbox":var b=["Yes","No"];if(c.p.colModel[g].editoptions){b=c.p.colModel[g].editoptions.value.split(":")}f[h]=a("input",this).attr("checked")?b[0]:b[1];break;case'text':case'password':case'textarea':f[h]=htmlEncode(a("input, textarea",this).val());break;case'select':if(!c.p.colModel[g].editoptions.multiple){f[h]=a("select>option:selected",this).val();p[h]=a("select>option:selected",this).text()}else{var k=a("select",this);f[h]=a(k).val();var l=[];a("select > option:selected",this).each(function(d,n){l[d]=a(n).text()});p[h]=l.join(",")}break}q=checkValues(f[h],g,c);if(q[0]===false){q[1]=f[h]+" "+q[1];return false}}}});if(q[0]===false){try{info_dialog(a.jgrid.errors.errcap,q[1],a.jgrid.edit.bClose,c.p.imgpath)}catch(e){alert(q[1])}return}if(f){f["id"]=j;if(v){f=a.extend({},f,v)}}if(!c.grid.hDiv.loading){c.grid.hDiv.loading=true;a("div.loading",c.grid.hDiv).fadeIn("fast");if(o=='clientArray'){f=a.extend({},f,p);a(c).setRowData(j,f);a(c.rows[i]).attr("editable","0");for(var s=0;s=0){c.p.savedRow.splice(r,1)}if(a.isFunction(t)){t(j,res.responseText)}}else{a.ajax({url:o,data:f,type:"POST",complete:function(d,n){if(n==="success"){var g;if(a.isFunction(u)){g=u(d)}else g=true;if(g===true){f=a.extend({},f,p);a(c).setRowData(j,f);a(c.rows[i]).attr("editable","0");for(var b=0;b=0){c.p.savedRow.splice(r,1)}if(a.isFunction(t)){t(j,d.responseText)}}else{a(c).restoreRow(j)}}},error:function(d,n){if(a.isFunction(w)){w(d,n)}else{alert("Error Row: "+j+" Result: "+d.status+":"+d.statusText+" Status: "+n)}}})}c.grid.hDiv.loading=false;a("div.loading",c.grid.hDiv).fadeOut("fast");a(c.rows[i]).unbind("keydown")}}})},restoreRow:function(l){return this.each(function(){var d=this,n,g,b;if(!d.grid){return}b=a(d).getInd(d.rows,l);if(b===false){return}for(var k=0;k=0){a(d).setRowData(l,d.p.savedRow[g]);a(d.rows[b]).attr("editable","0");d.p.savedRow.splice(g,1)}})}})})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-bg-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-bg-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-bg-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,5 @@ +/* + * jqGrid Bulgarian Translation + * Tony Tomov tony@trirand.com + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"запис(а)",loadtext:"Зареждам...",pgtext:"от"}a.jgrid.search={caption:"Търсене...",Find:"Намери",Reset:"Изчисти",odata:['равно','различно','по-малко','по-малко или=','по-голямо','по-голямо или =','започва с','завършва с','съдържа']};a.jgrid.edit={addCaption:"Нов Запис",editCaption:"Редакция Запис",bSubmit:"Запиши",bCancel:"Изход",bClose:"Затвори",processData:"Обработка...",msg:{required:"Полето е задължително",number:"Въведете валидно число!",minValue:"стойността трябва да е по-голяма или равна от",maxValue:"стойността трябва да е по-малка или равна от",email:"не е валиден ел. адрес",integer:"Въведете валидно цяло число",date:"Въведете валидна дата"}};a.jgrid.del={caption:"Изтриване",msg:"Да изтрия ли избраният запис?",bSubmit:"Изтрий",bCancel:"Отказ",processData:"Обработка..."};a.jgrid.nav={edittext:" ",edittitle:"Редакция избран запис",addtext:" ",addtitle:"Добавяне нов запис",deltext:" ",deltitle:"Изтриване избран запис",searchtext:" ",searchtitle:"Търсене запис(и)",refreshtext:"",refreshtitle:"Обнови таблица",alertcap:"Предупреждение",alerttext:"Моля, изберете запис"};a.jgrid.col={caption:"Колони",bSubmit:"Запис",bCancel:"Изход"};a.jgrid.errors={errcap:"Грешка",nourl:"Няма посочен url адрес",norecords:"Няма запис за обработка",model:"Модела не съответства на имената!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaultValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:" лв.",defaultValue:0},date:{dayNames:["Нед","Пон","Вт","Ср","Чет","Пет","Съб","Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],monthNames:["Ян","Фев","Март","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ноем","Дек","Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],AmPm:["","","",""],S:function(b){if(b==7||b==8||b==27||b==28){return'ми'}return['ви','ри','ти'][Math.min((b-1)%10,2)]},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-cs-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-cs-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-cs-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,9 @@ +/** + * jqGrid Czech Translation + * Pavel Jirak pavel.jirak@jipas.cz + * http://trirand.com/blog/ + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Řádek(ů)",loadtext:"Načítám...",pgtext:"/"};a.jgrid.search={caption:"Vyhledávám...",Find:"Hledat",Reset:"Reset",odata:['rovno','není rovno','menší','menší nebo rovno','větší','větší nebo rovno','začíná na','končí na','obsahuje']};a.jgrid.edit={addCaption:"Přidat záznam",editCaption:"Editace záznamu",bSubmit:"Uložit",bCancel:"Storno",bClose:"Zavřít",processData:"Zpracovávám...",msg:{required:"Pole je vyžadováno",number:"Prosím, vložte validní číslo",minValue:"hodnota musí být větší než nebo rovná ",maxValue:"hodnota musí být menší než nebo rovná ",email:"není validní e-mail",integer:"Prosím, vložte celé číslo",date:"Prosím, vložte validní datum"}};a.jgrid.del={caption:"Smazat",msg:"Smazat vybraný(é) záznam(y)?",bSubmit:"Smazat",bCancel:"Storno",processData:"Zpracovávám..."};a.jgrid.nav={edittext:" ",edittitle:"Editovat vybraný řádek",addtext:" ",addtitle:"Přidat nový řádek",deltext:" ",deltitle:"Smazat vybraný záznam ",searchtext:" ",searchtitle:"Najít záznamy",refreshtext:"",refreshtitle:"Obnovit tabulku",alertcap:"Varování",alerttext:"Prosím, vyberte řádek"};a.jgrid.col={caption:"Zobrazit/Skrýt sloupce",bSubmit:"Uložit",bCancel:"Storno"};a.jgrid.errors={errcap:"Chyba",nourl:"Není nastavena url",norecords:"Žádné záznamy ke zpracování",model:"Length colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Ne","Po","Út","St","Čt","Pá","So","Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],monthNames:["Led","Úno","Bře","Dub","Kvě","Čer","Čvc","Srp","Zář","Říj","Lis","Pro","Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],AmPm:["do","od","DO","OD"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show',addParam:''}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-de-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-de-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-de-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/* + * jqGrid German Translation + * Version 1.0.0 (developed for jQuery Grid 3.3.1) + * Olaf Klöppel opensource@blue-hit.de + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Zeile(n)",loadtext:"Lädt...",pgtext:"/"};a.jgrid.search={caption:"Suche...",Find:"Finden",Reset:"Zurücksetzen",odata:['gleich','ungleich','kleiner','kleiner oder gleich','größer','größer oder gleich','beginnt mit','endet mit','beinhaltet']};a.jgrid.edit={addCaption:"Datensatz hinzufügen",editCaption:"Datensatz bearbeiten",bSubmit:"Speichern",bCancel:"Abbrechen",bClose:"Schließen",processData:"Verarbeitung läuft...",msg:{required:"Feld ist erforderlich",number:"Bitte geben Sie eine Zahl ein",minValue:"Wert muss größer oder gleich sein, als ",maxValue:"Wert muss kleiner oder gleich sein, als ",email:"ist keine valide E-Mail Adresse",integer:"Bitte geben Sie eine Ganzzahl ein",date:"Please, enter valid date value"}};a.jgrid.del={caption:"Löschen",msg:"Ausgewählte Datensätze löschen?",bSubmit:"Löschen",bCancel:"Abbrechen",processData:"Verarbeitung läuft..."};a.jgrid.nav={edittext:" ",edittitle:"Ausgewählten Zeile editieren",addtext:" ",addtitle:"Neuen Zeile einfügen",deltext:" ",deltitle:"Ausgewählte Zeile löschen",searchtext:" ",searchtitle:"Datensatz finden",refreshtext:"",refreshtitle:"Tabelle neu laden",alertcap:"Warnung",alerttext:"Bitte Zeile auswählen"};a.jgrid.col={caption:"Spalten anzeigen/verbergen",bSubmit:"Speichern",bCancel:"Abbrechen"};a.jgrid.errors={errcap:"Fehler",nourl:"Keine URL angegeben",norecords:"Keine Datensätze zum verarbeiten",model:"Length of colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-dk-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-dk-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-dk-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/* + * jqGrid Danish Translation + * Kaare Rasmussen kjs@jasonic.dk + * http://jasonic.dk/blog + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Række(r)",loadtext:"Indlæser...",pgtext:"/"};a.jgrid.search={caption:"Søg...",Find:"Find",Reset:"Nulstil",odata:['lig med','forskellig fra','mindre end','mindre end eller lig med','større end',' større end eller lig med','starter med','slutter med','indeholder']};a.jgrid.edit={addCaption:"Tilføj",editCaption:"Ret",bSubmit:"Send",bCancel:"Annuller",bClose:"Luk",processData:"Behandler...",msg:{required:"Felt er nødvendigt",number:"Indtast venligst et validt tal",minValue:"værdi skal være større end eller lig med",maxValue:"værdi skal være mindre end eller lig med",email:"er ikke en valid email",integer:"Indtast venligst et validt heltalt",date:"Indtast venligst en valid datoværdi"}};a.jgrid.del={caption:"Slet",msg:"Slet valgte række(r)?",bSubmit:"Slet",bCancel:"Annuller",processData:"Behandler..."};a.jgrid.nav={edittext:" ",edittitle:"Rediger valgte række",addtext:" ",addtitle:"Tilføj ny række",deltext:" ",deltitle:"Slet valgte række",searchtext:" ",searchtitle:"Find poster",refreshtext:"",refreshtitle:"Indlæs igen",alertcap:"Advarsel",alerttext:"Vælg venligst række"};a.jgrid.col={caption:"Vis/skjul kolonner",bSubmit:"Send",bCancel:"Annuller"};a.jgrid.errors={errcap:"Fejl",nourl:"Ingel url valgt",norecords:"Ingen poster at behandle",model:"colNames og colModel har ikke samme længde!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Søn","Man","Tirs","Ons","Tors","Fre","Lør","Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],monthNames:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec","Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],AmPm:["","","",""],S:function(b){return'.'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"j/n/Y",LongDate:"l d. F Y",FullDateTime:"l d F Y G:i:s",MonthDay:"d. F",ShortTime:"G:i",LongTime:"G:i:s",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-el-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-el-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-el-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/* + * jqGrid Greek (el) Translation + * Alex Cicovic + * http://www.alexcicovic.com + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Εγγραφές",loadtext:"Φόρτωση...",pgtext:"/"};a.jgrid.search={caption:"Αναζήτηση...",Find:"Εύρεση",Reset:"Επαναφορά",odata:['ίσο','άνισο','μικρότερο από','μικρότερο ή ίσο','μεγαλύτερο από','μεγαλύτερο ή ίσο','ξεκινά με','τελειώνει με','εμπεριέχει']};a.jgrid.edit={addCaption:"Εισαγωγή Εγγραφής",editCaption:"Επεξεργασία Εγγραφής",bSubmit:"Καταχώρηση",bCancel:"Άκυρο",bClose:"Κλείσιμο",processData:"Υπό επεξεργασία...",msg:{required:"Το πεδίο είναι απαραίτητο",number:"Το πεδίο δέχεται μόνο αριθμούς",minValue:"Η τιμή πρέπει να είναι μεγαλύτερη ή ίση του ",maxValue:"Η τιμή πρέπει να είναι μικρότερη ή ίση του ",email:"Η διεύθυνση e-mail δεν είναι έγκυρη",integer:"Το πεδίο δέχεται μόνο ακέραιους αριθμούς",date:"Ή ημερομηνία δεν είναι έγκυρη"}};a.jgrid.del={caption:"Διαγραφή",msg:"Διαγραφή των επιλεγμένων εγγραφών;",bSubmit:"Ναι",bCancel:"Άκυρο",processData:"Υπό επεξεργασία..."};a.jgrid.nav={edittext:" ",edittitle:"Επεξεργασία επιλεγμένης εγγραφής",addtext:" ",addtitle:"Εισαγωγή νέας εγγραφής",deltext:" ",deltitle:"Διαγραφή επιλεγμένης εγγραφής",searchtext:" ",searchtitle:"Εύρεση Εγγραφών",refreshtext:"",refreshtitle:"Ανανέωση Πίνακα",alertcap:"Προσοχή",alerttext:"Δεν έχετε επιλέξει εγγραφή"};a.jgrid.col={caption:"Εμφάνιση / Απόκρυψη Στηλών",bSubmit:"ΟΚ",bCancel:"Άκυρο"};a.jgrid.errors={errcap:"Σφάλμα",nourl:"Δεν έχει δοθεί διεύθυνση χειρισμού για τη συγκεκριμένη ενέργεια",norecords:"Δεν υπάρχουν εγγραφές προς επεξεργασία",model:"Άνισος αριθμός πεδίων colNames/colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ","Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],monthNames:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ","Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],AmPm:["πμ","μμ","ΠΜ","ΜΜ"],S:function(b){return b==1||b>1?['η'][Math.min((b-1)%10,3)]:''},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-en-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-en-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-en-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/* + * jqGrid English Translation + * Tony Tomov tony@trirand.com + * http://trirand.com/blog/ + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Row(s)",loadtext:"Loading...",pgtext:"/"};a.jgrid.search={caption:"Search...",Find:"Find",Reset:"Reset",odata:['equal','not equal','less','less or equal','greater','greater or equal','begins with','ends with','contains']};a.jgrid.edit={addCaption:"Add Record",editCaption:"Edit Record",bSubmit:"Submit",bCancel:"Cancel",bClose:"Close",processData:"Processing...",msg:{required:"Field is required",number:"Please, enter valid number",minValue:"value must be greater than or equal to ",maxValue:"value must be less than or equal to",email:"is not a valid e-mail",integer:"Please, enter valid integer value",date:"Please, enter valid date value"}};a.jgrid.del={caption:"Delete",msg:"Delete selected record(s)?",bSubmit:"Delete",bCancel:"Cancel",processData:"Processing..."};a.jgrid.nav={edittext:" ",edittitle:"Edit selected row",addtext:" ",addtitle:"Add new row",deltext:" ",deltitle:"Delete selected row",searchtext:" ",searchtitle:"Find records",refreshtext:"",refreshtitle:"Reload Grid",alertcap:"Warning",alerttext:"Please, select row"};a.jgrid.col={caption:"Show/Hide Columns",bSubmit:"Submit",bCancel:"Cancel"};a.jgrid.errors={errcap:"Error",nourl:"No url is set",norecords:"No records to process",model:"Length of colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-fa-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-fa-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-fa-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,7 @@ +/** + * jqGrid Persian Translation + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"رديف",loadtext:"بارگزاري...",pgtext:"/"};a.jgrid.search={caption:"جستجو...",Find:"يافته ها",Reset:"نتايج",odata:['مساوي','نا مساوي','کمتر از','کمتر يا مساوي','بزرگتر','بزرگتر يا مساوي','شروع با','خاتمه با','شامل']};a.jgrid.edit={addCaption:"اضافه کردن رکورد",editCaption:"ويرايش رکورد",bSubmit:"ثبت",bCancel:"انصراف",bClose:"بستن",processData:"پردازش...",msg:{required:"فيلدها بايد ختما پر شوند",number:"لطفا عدد وعتبر وارد کنيد",minValue:"مقدار وارد شده بايد بزرگتر يا مساوي با",maxValue:"مقدار وارد شده بايد کوچکتر يا مساوي",email:"پست الکترونيک وارد شده معتبر نيست",integer:"لطفا يک عدد صحيح وارد کنيد",date:"لطفا يک تاريخ معتبر وارد کنيد"}};a.jgrid.del={caption:"حذف",msg:"از حذف گزينه هاي انتخاب شده مطمئن هستيد؟",bSubmit:"حذف",bCancel:"ابطال",processData:"پردازش..."};a.jgrid.nav={edittext:" ",edittitle:"ويرايش رديف هاي انتخاب شده",addtext:" ",addtitle:"افزودن رديف جديد",deltext:" ",deltitle:"حذف ردبف هاي انتخاب شده",searchtext:" ",searchtitle:"جستجوي رديف",refreshtext:"",refreshtitle:"بازيابي مجدد صفحه",alertcap:"اخطار",alerttext:"لطفا يک رديف انتخاب کنيد"};a.jgrid.col={caption:"نمايش/عدم نمايش ستون",bSubmit:"ثبت",bCancel:"انصراف"};a.jgrid.errors={errcap:"خطا",nourl:"هيچ آدرسي تنظيم نشده است",norecords:"هيچ رکوردي براي پردازش موجود نيست",model:"طول نام ستون ها محالف ستون هاي مدل مي باشد!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["يک","دو","سه","چهار","پنج","جمع","شنب","يکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","ژانويه","فوريه","مارس","آوريل","مه","ژوئن","ژوئيه","اوت","سپتامبر","اکتبر","نوامبر","December"],AmPm:["ب.ظ","ب.ظ","ق.ظ","ق.ظ"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'نمايش'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-fi-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-fi-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-fi-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/* + * jqGrid (fi) Finnish Translation + * Jukka Inkeri awot.fi + * http://awot.fi + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Rivejä",loadtext:"Haetaan...",pgtext:"/"};a.jgrid.search={caption:"Etsi...",Find:"Etsi",Reset:"Tyhjää",odata:['=','<>','<','<=','>','>=','alkaa','loppuu','sisätää']};a.jgrid.edit={addCaption:"Uusi rivi",editCaption:"Muokkaa rivi",bSubmit:"OK",bCancel:"Peru",bClose:"Sulje",processData:"Suoritetaan...",msg:{required:"pakollinen",number:"Anna kelvollinen nro",minValue:"arvo oltava >= ",maxValue:"arvo oltava <= ",email:"virheellinen sposti ",integer:"Anna kelvollinen kokonaisluku",date:"Anna kelvollinen pvm"}};a.jgrid.del={caption:"Poista",msg:"Poista valitut rivi(t)?",bSubmit:"Poista",bCancel:"Peru",processData:"Suoritetaan..."};a.jgrid.nav={edittext:" ",edittitle:"Muokkaa valittu rivi",addtext:" ",addtitle:"Uusi rivi",deltext:" ",deltitle:"Poista valittu rivi",searchtext:" ",searchtitle:"Etsi tietoja",refreshtext:"",refreshtitle:"Lataa uudelleen",alertcap:"Varoitus",alerttext:"Valitse rivi"};a.jgrid.col={caption:"Nayta/Piilota sarakkeet",bSubmit:"OK",bCancel:"Peru"};a.jgrid.errors={errcap:"Virhe",nourl:"url asettamatta",norecords:"Ei muokattavia tietoja",model:"Pituus colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:"",defaulValue:0},number:{decimalSeparator:",",thousandsSeparator:"",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:",",thousandsSeparator:"",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Su","Ma","Ti","Ke","To","Pe","La","Sunnuntai","Maanantai","Tiista","Keskiviikko","Torstai","Perjantai","Lauantai"],monthNames:["Tam","Hel","Maa","Huh","Tou","Kes","Hei","Elo","Syy","Lok","Mar","Jou","Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"d.m.Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'nayta'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-fr-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-fr-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-fr-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/** + * jqGrid French Translation + * Samuel Jobard + * + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Ligne(s)",loadtext:"Chargement...",pgtext:"/"};a.jgrid.search={caption:"Recherche...",Find:"Chercher",Reset:"Annuler",odata:['égal','différent','inférieur','inférieur ou égal','supérieur','supérieur ou égal','débute par','termine par','contient']};a.jgrid.edit={addCaption:"Ajouter",editCaption:"Editer",bSubmit:"Valider",bCancel:"Annuler",bClose:"Fermer",processData:"Traitement...",msg:{required:"Champ obligatoire",number:"Saisissez un nombre valide",minValue:"La valeur doit être supérieure ou égal à 0 ",maxValue:"La valeur doit être inférieure ou égal à 0",email:"n'est pas un email valide",integer:"Saisissez un entier valide",date:"Saisissez une date valide"}};a.jgrid.del={caption:"Supprimer",msg:"Supprimer les enregistrements sélectionnés ?",bSubmit:"Supprimer",bCancel:"Annuler",processData:"Traitement..."};a.jgrid.nav={edittext:" ",edittitle:"Editer la ligne sélectionnée",addtext:" ",addtitle:"Ajouter une ligne",deltext:" ",deltitle:"Supprimer la ligne sélectionnée",searchtext:" ",searchtitle:"Chercher un enregistrement",refreshtext:"",refreshtitle:"Recharger le tableau",alertcap:"Avertissement",alerttext:"Veuillez sélectionner une ligne"};a.jgrid.col={caption:"Afficher/Masquer les colonnes",bSubmit:"Valider",bCancel:"Annuler"};a.jgrid.errors={errcap:"Erreur",nourl:"Aucune url paramétrée",norecords:"Aucun enregistrement à traiter",model:"Nombre de titres (colNames) <> Nombre de données (colModel)!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam","Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],monthNames:["Jan","Fev","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Dec","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Saptembre","Octobre","Novembre","Décembre"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"d-m-Y H:i:s",ISO8601Short:"d-m-Y",ShortDate:"j/n/Y",LongDate:"l d F Y",FullDateTime:"l d F Y, G:i:s",MonthDay:"d F",ShortTime:"G:i",LongTime:"G:i:s",SortableDateTime:"d-m-Y\\TH:i:s",UniversalSortableDateTime:"d-m-Y H:i:sO",YearMonth:"F Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-is-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-is-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-is-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,5 @@ +/** + * jqGrid Icelandic Translation + * jtm@hi.is Univercity of Iceland + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Raðir(s)",loadtext:"Hleður...",pgtext:"/"};a.jgrid.search={caption:"Leita...",Find:"Leita",Reset:"Endursetja",odata:['sama og','ekki sama og','minna en','minna en eða jafnt og','meira en','meira en eða jafnt og','byrjar á','endar á','inniheldur']};a.jgrid.edit={addCaption:"Add Record",editCaption:"Edit Record",bSubmit:"Vista",bCancel:"Hætta við",bClose:"Loka",processData:"Vinnur...",msg:{required:"Reitur er nauðsynlegur",number:"Vinsamlega settu inn tölu",minValue:"gildi verður að vera meira en eða jafnt og ",maxValue:"gildi verður að vera minna en eða jafnt og ",email:"er ekki löglegt email",integer:"Vinsamlega settu inn tölu"}};a.jgrid.del={caption:"Eyða",msg:"Eyða völdum færslum ?",bSubmit:"Eyða",bCancel:"Hætta við",processData:"Vinnur..."};a.jgrid.nav={edittext:" ",edittitle:"Breyta færslu",addtext:" ",addtitle:"Ný færsla",deltext:" ",deltitle:"Eyða færslu",searchtext:" ",searchtitle:"Leita",refreshtext:"",refreshtitle:"Endurhlaða",alertcap:"Viðvörun",alerttext:"Vinsamlega veldu færslu"};a.jgrid.col={caption:"Sýna / fela dálka",bSubmit:"Vista",bCancel:"Hætta við"};a.jgrid.errors={errcap:"Villa",nourl:"Vantar slóð",norecords:"Engar færslur valdar",model:"Length of colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-it-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-it-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-it-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,5 @@ +/** + * jqGrid Italian Translation + * Vincenzo Solomita vincenzosolomita@gmail.com + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Record",loadtext:"Caricamento...",pgtext:"/"};a.jgrid.search={caption:"Ricerca...",Find:"Cerca",Reset:"Pulisci",odata:['uguale','diverso','minore','minore o uguale','maggiore','maggiore o uguale','inizia con','finisce con','contiene']};a.jgrid.edit={addCaption:"Aggiungi Record",editCaption:"Modifica Record",bSubmit:"Invia",bCancel:"Annulla",bClose:"Chiudi",processData:"In elaborazione...",msg:{required:"Campo richiesto",number:"Per favore, inserisci un valore valido",minValue:"il valore deve essere maggiore o uguale a ",maxValue:"il valore deve essere minore o uguale a",email:"e-mail non corretta",integer:"Please, enter valid integer value",date:"Please, enter valid date value"}};a.jgrid.del={caption:"Cancella",msg:"Cancellare record selezionato/i?",bSubmit:"Cancella",bCancel:"Annulla",processData:"In elaborazione..."};a.jgrid.nav={edittext:" ",edittitle:"Modifica record selezionato",addtext:" ",addtitle:"Aggiungi nuovo record",deltext:" ",deltitle:"Cancella record selezionato",searchtext:" ",searchtitle:"Ricerca record",refreshtext:"",refreshtitle:"Aggiorna griglia",alertcap:"Attenzione",alerttext:"Per favore, seleziona un record"};a.jgrid.col={caption:"Mostra/Nascondi Colonne",bSubmit:"Invia",bCancel:"Annulla"};a.jgrid.errors={errcap:"Errore",nourl:"Url non settata",norecords:"Nessun record da elaborare",model:"Length of colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-pl-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-pl-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-pl-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,8 @@ +/** + * jqGrid Portuguese Translation +* Tradução da jqGrid em Portugues por Frederico Carvalho, http://www.eyeviewdesign.pt + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html +**/ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Registo(s)",loadtext:"A carregar...",pgtext:"/"};a.jgrid.search={caption:"Busca...",Find:"Procurar",Reset:"Limpar",odata:['igual','não igual','menor','menor ou igual','maior','maior ou igual','começa com','termina com','contém']};a.jgrid.edit={addCaption:"Adicionar Registo",editCaption:"Modificar Registo",bSubmit:"Submeter",bCancel:"Cancelar",bClose:"Fechar",processData:"A processar...",msg:{required:"Campo obrigatório",number:"Por favor, introduza um numero",minValue:"O valor deve ser maior ou igual que",maxValue:"O valor deve ser menor ou igual a",email:"Não é um endereço de email válido",integer:"Por favor, introduza um numero inteiro",date:"Por favor, introduza uma data válida."}};a.jgrid.del={caption:"Eliminar",msg:"Deseja eliminar o(s) registo(s) seleccionado(s)?",bSubmit:"Eliminar",bCancel:"Cancelar",processData:"A processar..."};a.jgrid.nav={edittext:" ",edittitle:"Modificar registo seleccionado",addtext:" ",addtitle:"Adicionar novo registo",deltext:" ",deltitle:"Eliminar registo seleccionado",searchtext:" ",searchtitle:"Procurar",refreshtext:"",refreshtitle:"Actualizar",alertcap:"Aviso",alerttext:"Por favor, seleccione um registo"};a.jgrid.col={caption:"Mostrar/Ocultar Colunas",bSubmit:"Enviar",bCancel:"Cancelar"};a.jgrid.errors={errcap:"Erro",nourl:"Não especificou um url",norecords:"Não existem dados para processar",model:"Tamanho do colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Dom","Seg","Ter","Qua","Qui","Sex","Sab","Domingo","Segunda-Feira","Terça-Feira","Quarta-Feira","Quinta-Feira","Sexta-Feira","Sábado"],monthNames:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez","Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['º','º','º','º'][Math.min((b-1)%10,3)]:'º'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-pt-br-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-pt-br-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-pt-br-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,5 @@ +/** + * jqGrid Brazilian-Portuguese Translation + * Junior Gobira juniousbr@gmail.com + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Registro(s)",loadtext:"Carregando...",pgtext:"/"};a.jgrid.search={caption:"Procurar...",Find:"Procurar",Reset:"Resetar",odata:['igual','diferente','menor','menor igual','maior','maior igual','começando com','terminando com','contém']};a.jgrid.edit={addCaption:"Incluir",editCaption:"Alterar",bSubmit:"Enviar",bCancel:"Cancelar",bClose:"Fechar",processData:"Carregando...",msg:{required:"Campo é requerido",number:"Por favor, informe um número válido",minValue:"valor deve ser igual ou maior que ",maxValue:"valor deve ser menor ou igual a",email:"este e-mail não é válido",integer:"Por favor, informe um valor inteiro",date:"Please, enter valid date value"}};a.jgrid.del={caption:"Delete",msg:"Deletar registros selecionado(s)?",bSubmit:"Delete",bCancel:"Cancelar",processData:"Carregando..."};a.jgrid.nav={edittext:" ",edittitle:"Alterar registro selecionado",addtext:" ",addtitle:"Incluir novo registro",deltext:" ",deltitle:"Deletar registro selecionado",searchtext:" ",searchtitle:"Procurar registros",refreshtext:"",refreshtitle:"Recarrgando Tabela",alertcap:"Aviso",alerttext:"Por favor, selecione um registro"};a.jgrid.col={caption:"Mostrar/Esconder Colunas",bSubmit:"Enviar",bCancel:"Cancelar"};a.jgrid.errors={errcap:"Erro",nourl:"Nenhuma URL defenida",norecords:"Sem registros para exibir",model:"Length of colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-pt-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-pt-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-pt-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,5 @@ +/* + * jqGrid Portuguese Translation + * Traduccion jqGrid en Espa�ol por Yamil Bracho + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Bicha(s)",loadtext:"Carregando...",pgtext:"/"};a.jgrid.search={caption:"Busca...",Find:"Procurar",Reset:"Limpar",odata:['igual','não igual','menor','menor ou igual','maior','maior ou igual','omeça com','termina com','contém']};a.jgrid.edit={addCaption:"Agregar Registro",editCaption:"Modificar Registo",bSubmit:"Enviar",bCancel:"Cancelar",bClose:"Fechar",processData:"Processando...",msg:{required:"Campo é requerido",number:"Faz favor, introduza um numero",minValue:"O valor deve ser maior ou igual que",maxValue:"O valor deve ser menor ou igual a",email:"não é um direccion de correio valida",integer:"Faz favor, introduza um inteiro",date:"Please, enter valid date value"}};a.jgrid.del={caption:"Eliminar",msg:"¿ Deseja eliminar os registos seleccionados?",bSubmit:"Eliminar",bCancel:"Cancelar",processData:"Processando..."};a.jgrid.nav={edittext:" ",edittitle:"Modificar bicha seleccionada",addtext:" ",addtitle:"Agregar nova bicha",deltext:" ",deltitle:"Eliminar bicha seleccionada",searchtext:" ",searchtitle:"Procurar informacion",refreshtext:"",refreshtitle:"Refrescar Rejilla",alertcap:"Aviso",alerttext:"Faz favor, seleccione uma bicha"};a.jgrid.col={caption:"Mostrar/Ocultar Colunas",bSubmit:"Enviar",bCancel:"Cancelar"};a.jgrid.errors={errcap:"Erro",nourl:"Não se especificou uma url",norecords:"Não há dados para processar",model:"Length of colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-ru-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-ru-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-ru-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,5 @@ +/* + * jqGrid Russian Translation v1.1 21.01.2009 + * Alexey Kanaev softcore@rambler.ru + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Записей",loadtext:"Загрузка...",pgtext:"/"};a.jgrid.search={caption:"Поиск...",Find:"Найти",Reset:"Сброс",odata:['равно','не равно','меньше','меньше или равно','больше','больше или равно','начинается с','заканчивается на','содержит']};a.jgrid.edit={addCaption:"Добавить запись",editCaption:"Редактировать запись",bSubmit:"Сохранить",bCancel:"Отмена",bClose:"Закрыть",processData:"Обработка...",msg:{required:"Поле является обязательным",number:"Пожалуйста, введите правильное число",minValue:"значение должно быть больше либо равно",maxValue:"значение должно быть больше либо равно",email:"некорректное значение e-mail",integer:"Пожалуйста введите целое число",date:"Please, enter valid date value"}};a.jgrid.del={caption:"Удалить",msg:"Удалить выделенную запись(и)?",bSubmit:"Удвлить",bCancel:"Отмена",processData:"Обработка..."};a.jgrid.nav={edittext:" ",edittitle:"Редактировать выделенную запись",addtext:" ",addtitle:"Добавить новую запись",deltext:" ",deltitle:"Удалить выделенную запись",searchtext:" ",searchtitle:"Найти записи",refreshtext:"",refreshtitle:"Обновить таблицу",alertcap:"Внимание",alerttext:"Пожалуйста, выделите запись"};a.jgrid.col={caption:"Показать/скрыть столбцы",bSubmit:"Сохранить",bCancel:"Отмена"};a.jgrid.errors={errcap:"Ошибка",nourl:"URL не установлен",norecords:"Нет записей для обработки",model:"Число полей не соответствует числу столбцов таблицы!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:",",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Вс","Пн","Вт","Ср","Чт","Пт","Сб","Воскресение","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],monthNames:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек","Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d.m.Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n.j.Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y G:i:s",MonthDay:"F d",ShortTime:"G:i",LongTime:"G:i:s",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-sp-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-sp-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-sp-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,5 @@ +/* + * jqGrid Spanish Translation + * Traduccion jqGrid en Espa�ol por Yamil Bracho + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Fila(s)",loadtext:"Cargando...",pgtext:"/"};a.jgrid.search={caption:"Busqueda...",Find:"Buscar",Reset:"Limpiar",odata:['igual','no igual','menor','menor o igual','mayor','mayor o igual','comienza con','termina con','contiene']};a.jgrid.edit={addCaption:"Agregar Registro",editCaption:"Modificar Registro",bSubmit:"Enviar",bCancel:"Cancelar",bClose:"Cerrar",processData:"Procesando...",msg:{required:"Campo es requerido",number:"Por favor, introduzca un numero",minValue:"El valor debe ser mayor o igual que ",maxValue:"El valor debe ser menor o igual a",email:"no es un direccion de correo valida",integer:"Por favor, introduzca un entero",date:"Please, enter valid date value"}};a.jgrid.del={caption:"Eliminar",msg:"¿ Desea eliminar los registros seleccionados ?",bSubmit:"Eliminar",bCancel:"Cancelar",processData:"Procesando..."};a.jgrid.nav={edittext:" ",edittitle:"Modificar fila seleccionada",addtext:" ",addtitle:"Agregar nueva fila",deltext:" ",deltitle:"Eliminar fila seleccionada",searchtext:" ",searchtitle:"Buscar información",refreshtext:"",refreshtitle:"Refrescar Rejilla",alertcap:"Aviso",alerttext:"Por favor, seleccione una fila"};a.jgrid.col={caption:"Mostrar/Ocultar Columnas",bSubmit:"Enviar",bCancel:"Cancelar"};a.jgrid.errors={errcap:"Error",nourl:"No se ha especificado una url",norecords:"No hay datos para procesar",model:"Length of colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-sv-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-sv-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-sv-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,9 @@ +/** +* jqGrid Swedish Translation +* Anders Nyberg anders.nyberg@alecta.com +* http://wwww.alecta.com +* Dual licensed under the MIT and GPL licenses: +* http://www.opensource.org/licenses/mit-license.php +* http://www.gnu.org/licenses/gpl.html +**/ +; (function($) { $.jgrid = {}; $.jgrid.defaults = { recordtext: "Post(er)", loadtext: "Laddar...", pgtext: "/" }; $.jgrid.search = { caption: "S�k...", Find: "Hitta", Reset: "�terst�ll", odata: ['lika', 'ej lika', 'mindre', 'mindre eller lika', 'st�rre', 'st�rre eller lika', 'b�rjar med', 'slutar med', 'inneh�ller'] }; $.jgrid.edit = { addCaption: "Skapa post", editCaption: "�ndra post", bSubmit: "Utf�r", bCancel: "Avbryt", bClose: "St�ng", processData: "Processar...", msg: { required: "F�lt �r obligatoriskt", number: "V�lj korrekt nummer", minValue: "v�rdet m�ste vara st�rre �n eller lika med", maxValue: "v�rdet m�ste vara mindre �n eller lika med", email: "�r inte korrekt e-mail adress", integer: "Var god ange korrekt heltal", date: "Var god att ange korrekt datum"} }; $.jgrid.del = { caption: "Ta bort", msg: "Ta bort vald post(er)?", bSubmit: "Ta bort", bCancel: "Avbryt", processData: "Processing..." }; $.jgrid.nav = { edittext: " ", edittitle: "�ndra vald rad", addtext: " ", addtitle: "Skapa ny rad", deltext: " ", deltitle: "Ta bort vald rad", searchtext: " ", searchtitle: "Hitta poster", refreshtext: "", refreshtitle: "Ladda om Grid", alertcap: "Varning", alerttext: "Var god v�lj rad" }; $.jgrid.col = { caption: "Visa/G�m kolumner", bSubmit: "Utf�r", bCancel: "Avbryt" }; $.jgrid.errors = { errcap: "Fel", nourl: "Ingen URL �r definierad", norecords: "Inga poster att processa", model: "L�ngden av colNames <> colModel!" }; $.jgrid.formatter = { integer: { thousandsSeparator: " ", defaulValue: 0 }, number: { decimalSeparator: ",", thousandsSeparator: " ", decimalPlaces: 2, defaulValue: 0 }, currency: { decimalSeparator: ",", thousandsSeparator: " ", decimalPlaces: 2, prefix: "", suffix: "", defaulValue: 0 }, date: { dayNames: ["S�n", "M�n", "Tis", "Ons", "Tor", "Fre", "L�r", "S�ndag", "M�ndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "L�rdag"], monthNames: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec", "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"], AmPm: ["fm", "em", "FM", "EM"], S: function(j) { return j < 11 || j > 13 ? ['st', 'nd', 'rd', 'th'][Math.min((j - 1) % 10, 3)] : 'th' }, srcformat: 'Y-m-d', newformat: 'd/m/Y', masks: { ISO8601Long: "Y-m-d H:i:s", ISO8601Short: "Y-m-d", ShortDate: "n/j/Y", LongDate: "l, F d, Y", FullDateTime: "l, F d, Y g:i:s A", MonthDay: "F d", ShortTime: "g:i A", LongTime: "g:i:s A", SortableDateTime: "Y-m-d\\TH:i:s", UniversalSortableDateTime: "Y-m-d H:i:sO", YearMonth: "F, Y" }, reformatAfterEdit: false }, baseLinkUrl: '', showAction: 'show', addParam: '' }; })(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-tr-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-tr-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.locale-tr-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,5 @@ +/* + * jqGrid Turkish Translation + * H.İbrahim Yılmaz ibrahim.yilmaz@karmabilisim.net + */ +;(function(a){a.jgrid={};a.jgrid.defaults={recordtext:"Satır(lar)",loadtext:"Yükleniyor...",pgtext:"/"};a.jgrid.search={caption:"Arama...",Find:"Bul",Reset:"Temizle",odata:['eşittir','eşit değildir','küçük','küçük veya eşit','büyük','büyük veya eşit','ile başlayan','ile biten','içeren']};a.jgrid.edit={addCaption:"Kayıt Ekle",editCaption:"Kayıt Düzenle",bSubmit:"Gönder",bCancel:"İptal",bClose:"Kapat",processData:"İşlem yapılıyor...",msg:{required:"Alan gerekli",number:"Lütfen bir numara giriniz",minValue:"girilen değer daha büyük ya da buna eşit olmalıdır",maxValue:"girilen değer daha küçük ya da buna eşit olmalıdır",email:"geçerli bir e-posta adresi değildir",integer:"Lütfen bir tamsayı giriniz",date:"Please, enter valid date value"}};a.jgrid.del={caption:"Sil",msg:"Seçilen kayıtlar silinsin mi?",bSubmit:"Sil",bCancel:"İptal",processData:"İşlem yapılıyor..."};a.jgrid.nav={edittext:" ",edittitle:"Seçili satırı düzenle",addtext:" ",addtitle:"Yeni satır ekle",deltext:" ",deltitle:"Seçili satırı sil",searchtext:" ",searchtitle:"Kayıtları bul",refreshtext:"",refreshtitle:"Tabloyu yenile",alertcap:"Uyarı",alerttext:"Lütfen bir satır seçiniz"};a.jgrid.col={caption:"Sütunları göster/gizle",bSubmit:"Gönder",bCancel:"İptal"};a.jgrid.errors={errcap:"Hata",nourl:"Bir url yapılandırılmamış",norecords:"İşlem yapılacak bir kayıt yok",model:"Length of colNames <> colModel!"};a.jgrid.formatter={integer:{thousandsSeparator:" ",defaulValue:0},number:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,defaulValue:0},currency:{decimalSeparator:".",thousandsSeparator:" ",decimalPlaces:2,prefix:"",suffix:"",defaulValue:0},date:{dayNames:["Sun","Mon","Tue","Wed","Thr","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],AmPm:["am","pm","AM","PM"],S:function(b){return b<11||b>13?['st','nd','rd','th'][Math.min((b-1)%10,3)]:'th'},srcformat:'Y-m-d',newformat:'d/m/Y',masks:{ISO8601Long:"Y-m-d H:i:s",ISO8601Short:"Y-m-d",ShortDate:"n/j/Y",LongDate:"l, F d, Y",FullDateTime:"l, F d, Y g:i:s A",MonthDay:"F d",ShortTime:"g:i A",LongTime:"g:i:s A",SortableDateTime:"Y-m-d\\TH:i:s",UniversalSortableDateTime:"Y-m-d H:i:sO",YearMonth:"F, Y"},reformatAfterEdit:false},baseLinkUrl:'',showAction:'show'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.postext-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.postext-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.postext-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/** + * jqGrid extension + * Paul Tiseo ptiseo@wasteconsultants.com + * + */ +;(function(c){c.fn.extend({getPostData:function(){var a=this[0];if(!a.grid){return}return a.p.postData},setPostData:function(a){var b=this[0];if(!b.grid){return}if(typeof(a)==='object'){b.p.postData=a}else{alert("Error: cannot add a non-object postData value. postData unchanged.")}},appendPostData:function(a){var b=this[0];if(!b.grid){return}if(typeof(a)==='object'){c.extend(b.p.postData,a)}else{alert("Error: cannot append a non-object postData value. postData unchanged.")}},setPostDataItem:function(a,b){var d=this[0];if(!d.grid){return}d.p.postData[a]=b},getPostDataItem:function(a){var b=this[0];if(!b.grid){return}return b.p.postData[a]},removePostDataItem:function(a){var b=this[0];if(!b.grid){return}delete b.p.postData[a]},getUserData:function(){var a=this[0];if(!a.grid){return}return a.p.userData},getUserDataItem:function(a){var b=this[0];if(!b.grid){return}return b.p.userData[a]}})})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.setcolumns-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.setcolumns-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/grid.setcolumns-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,5 @@ +/** + * jqGrid extension for manipulating columns properties + * Piotr Roznicki roznicki@o2.pl + */ +;(function(a){a.fn.extend({setColumns:function(b){b=a.extend({top:0,left:0,width:200,height:195,modal:false,drag:true,closeicon:'ico-close.gif',beforeShowForm:null,afterShowForm:null,afterSubmitForm:null},a.jgrid.col,b||{});return this.each(function(){var c=this;if(!c.grid){return}var h=typeof b.beforeShowForm==='function'?true:false;var j=typeof b.afterShowForm==='function'?true:false;var k=typeof b.afterSubmitForm==='function'?true:false;if(!b.imgpath){b.imgpath=c.p.imgpath}var f=a("table:first",c.grid.bDiv).attr("id");var d={themodal:'colmod'+f,modalhead:'colhd'+f,modalcontent:'colcnt'+f};var e="ColTbl_"+f;if(a("#"+d.themodal).html()!=null){if(h){b.beforeShowForm(a("#"+e))}viewModal("#"+d.themodal,{modal:b.modal});if(j){b.afterShowForm(a("#"+e))}}else{var g=a("
    ");for(i=0;i")}}var l="";var m="";a(g).append(""+l+" "+m+"");createModal(d,g,b,c.grid.hDiv,c.grid.hDiv);if(b.drag){DnRModal("#"+d.themodal,"#"+d.modalhead+" td.modaltext")}a("#dData","#"+e).click(function(n){for(i=0;i").addClass("sgcollapsed").click(function(c){if(b(this).hasClass("sgcollapsed")){p=b("table:first",a.grid.bDiv).attr("id");o=b(this).parent();var e=z==1?'':'';l=b(o).attr("id");n=true;if(b.isFunction(a.p.subGridBeforeExpand)){n=a.p.subGridBeforeExpand(p+"_"+l,l)}if(n===false){return false}t=0;b.each(a.p.colModel,function(d,f){if(this.hidden===true){t++}});var h=""+e+"
    ";b(this).parent().after(h+"
    ");b(".tablediv",a).css("width",a.grid.width-20+"px");if(b.isFunction(a.p.subGridRowExpanded)){a.p.subGridRowExpanded(p+"_"+l,l)}else{A(o)}b(this).html("").removeClass("sgcollapsed").addClass("sgexpanded")}else if(b(this).hasClass("sgexpanded")){n=true;if(b.isFunction(a.p.subGridRowColapsed)){o=b(this).parent();l=b(o).attr("id");n=a.p.subGridRowColapsed(p+"_"+l,l)};if(n===false){return false}b(this).parent().next().remove(".subgrid");b(this).html("").removeClass("sgexpanded").addClass("sgcollapsed")}return false});y.appendChild(s);var A=function(f){var c,e,h;e=b(f).attr("id");h={id:e,nd_:(new Date().getTime())};if(!a.p.subGridModel[0]){return false}if(a.p.subGridModel[0].params){for(var g=0;g"+j.row,c).each(function(){h=document.createElement("div");h.className="rowdiv";if(j.repeatitems===true){b(j.cell,this).each(function(d){q(h,this.textContent||this.text||' ',d)})}else{var f=a.p.subGridModel[0].mapping;if(f){for(i=0;i +*/ +function tableToGrid(p){$(p).each(function(){if(this.grid){return}$(this).width("99%");var q=$(this).width();var l=$('input[type=checkbox]:first',$(this));var m=$('input[type=radio]:first',$(this));var f=l.length>0;var r=!f&&m.length>0;var n=f||r;var s=l.attr("name")||m.attr("name");var c=[];var g=[];$('th',$(this)).each(function(){if(c.length==0&&n){c.push({name:'__selection__',index:'__selection__',width:0,hidden:true});g.push('__selection__')}else{c.push({name:$(this).html(),index:$(this).html(),width:$(this).width()||150});g.push($(this).html())}});var d=[];var h=[];var i=[];$('tbody > tr',$(this)).each(function(){var j={};var e=0;d.push(j);$('td',$(this)).each(function(){if(e==0&&n){var k=$('input',$(this));var o=k.attr("value");h.push(o||d.length);if(k.attr("checked")){i.push(o)}j[c[e].name]=k.attr("value")}else{j[c[e].name]=$(this).html()}e++})});$(this).empty();$(this).addClass("scroll");$(this).jqGrid({datatype:"local",width:q,colNames:g,colModel:c,multiselect:f});for(var a=0;a0){b=h[a];if(b&&b.replace){b=encodeURIComponent(b).replace(/[.\-%]/g,"_")}}if(b==null){b=a+1}$(this).addRowData(b,d[a])}for(var a=0;a"+t+"").prepend(q);c(".treeclick",s).click(function(a){var d=a.target||a.srcElement;var e=c(d,b.rows).parents("tr:first")[0].rowIndex;if(!b.rows[e].isLeaf){if(b.rows[e].expanded){c(b).collapseRow(b.rows[e]);c(b).collapseNode(b.rows[e])}else{c(b).expandRow(b.rows[e]);c(b).expandNode(b.rows[e])}}return false});c("span",s).css("cursor","pointer").click(function(a){var d=a.target||a.srcElement;var e=c(d,b.rows).parents("tr:first")[0].rowIndex;if(!b.rows[e].isLeaf){if(b.rows[e].expanded){c(b).collapseRow(b.rows[e]);c(b).collapseNode(b.rows[e])}else{c(b).expandRow(b.rows[e]);c(b).expandNode(b.rows[e])}}c(b).setSelection(b.rows[e].id);return false})})},setTreeGrid:function(){return this.each(function(){var a=this;if(!a.p.treeGrid){return}c.extend(a.p,{treedatatype:null});if(a.p.treeGridModel=='nested'){a.p.treeReader=c.extend({level_field:"level",left_field:"lft",right_field:"rgt",leaf_field:"isLeaf",expanded_field:"expanded"},a.p.treeReader)}else if(a.p.treeGridModel=='adjacency'){a.p.treeReader=c.extend({level_field:"level",parent_id_field:"parent",leaf_field:"isLeaf",expanded_field:"expanded"},a.p.treeReader)}})},expandRow:function(b){this.each(function(){var d=this;if(!d.grid||!d.p.treeGrid){return}var e=c(d).getNodeChildren(b);c(e).each(function(a){c(this).css("display","");if(this.expanded){c(d).expandRow(this)}})})},collapseRow:function(b){this.each(function(){var d=this;if(!d.grid||!d.p.treeGrid){return}var e=c(d).getNodeChildren(b);c(e).each(function(a){c(this).css("display","none");c(d).collapseRow(this)})})},getRootNodes:function(){var b=[];this.each(function(){var d=this;if(!d.grid||!d.p.treeGrid){return}switch(d.p.treeGridModel){case'nested':var e=d.p.treeReader.level_field;c(d.rows).each(function(a){if(parseInt(this[e],10)===parseInt(d.p.tree_root_level,10)){b.push(this)}});break;case'adjacency':c(d.rows).each(function(a){if(this.parent_id.toLowerCase()=="null"){b.push(this)}});break}});return b},getNodeDepth:function(d){var e=null;this.each(function(){var a=this;if(!this.grid||!this.p.treeGrid){return}switch(a.p.treeGridModel){case'nested':e=parseInt(d.level,10)-parseInt(this.p.tree_root_level,10);break;case'adjacency':e=c(a).getNodeAncestors(d);break}});return e},getNodeParent:function(f){var g=null;this.each(function(){var a=this;if(!a.grid||!a.p.treeGrid){return}switch(a.p.treeGridModel){case'nested':var d=parseInt(f.lft,10),e=parseInt(f.rgt,10),b=parseInt(f.level,10);c(this.rows).each(function(){if(parseInt(this.level,10)===b-1&&parseInt(this.lft)e){g=this;return false}});break;case'adjacency':c(this.rows).each(function(){if(this.id===f.parent_id){g=this;return false}});break}});return g},getNodeChildren:function(i){var k=[];this.each(function(){var d=this;if(!d.grid||!d.p.treeGrid){return}switch(d.p.treeGridModel){case'nested':var e=parseInt(i.lft,10),b=parseInt(i.rgt,10),f=parseInt(i.level,10);var g=i.rowIndex;c(this.rows).slice(1).each(function(a){if(parseInt(this.level,10)===f+1&&parseInt(this.lft,10)>e&&parseInt(this.rgt,10)0){e=true}else{e=false}});return e},expandNode:function(a){return this.each(function(){if(!this.grid||!this.p.treeGrid){return}if(!a.expanded){if(c(this).isNodeLoaded(a)){a.expanded=true;c("div.treeclick",a).removeClass("tree-plus").addClass("tree-minus")}else{a.expanded=true;c("div.treeclick",a).removeClass("tree-plus").addClass("tree-minus");this.p.treeANode=a.rowIndex;this.p.datatype=this.p.treedatatype;if(this.p.treeGridModel=='nested'){c(this).setGridParam({postData:{nodeid:a.id,n_left:a.lft,n_right:a.rgt,n_level:a.level}})}else{c(this).setGridParam({postData:{nodeid:a.id,parentid:a.parent_id,n_level:a.level}})}c(this).trigger("reloadGrid");if(this.p.treeGridModel=='nested'){c(this).setGridParam({postData:{nodeid:'',n_left:'',n_right:'',n_level:''}})}else{c(this).setGridParam({postData:{nodeid:'',parentid:'',n_level:''}})}}}})},collapseNode:function(a){return this.each(function(){if(!this.grid||!this.p.treeGrid){return}if(a.expanded){a.expanded=false;c("div.treeclick",a).removeClass("tree-minus").addClass("tree-plus")}})},SortTree:function(l){return this.each(function(){if(!this.grid||!this.p.treeGrid){return}var e,b,f,g=[],i=c(this).getRootNodes();i.sort(function(a,d){if(a.sortKeyd.sortKey){return l}return 0});for(e=0,b=i.length;ed.sortKey){return l}return 0});for(e=0,b=g.length;e0){for(var b=0;b0){if(g<0){c+=f;g=c.length-1}else if(f!=="."){c=c.replace(".",f)}while((c.length-1-g)-1)?g:c.length;var i=c.substring(g);var k=-1;for(var j=g;j>0;j--){k++;if((k%3===0)&&(j!==g)&&(!e||(j>1))){i=l+i}i=c.charAt(j-1)+i}c=i}c=(d.prefix)?d.prefix+c:c;c=(d.suffix)?c+d.suffix:c;return c}else{return a}},DateFormat:function(e,c,f,g){var h=/\\.|[dDjlNSwzWFmMntLoYyaABgGhHisueIOPTZcrU]/g,m=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,l=l=/[^-+\dA-Z]/g,i=function(a,d){a=String(a);d=parseInt(d)||2;while(a.length=70&&s<=99)k.y=1900+k.y;else if(s>=0&&s<=69)k.y=2000+k.y;j=new Date(k.y,k.m,k.d,k.h,k.i,k.s,0);if(g.masks.newformat){f=g.masks.newformat}else if(!f){f='Y-m-d'}var p=j.getHours(),o=j.getMinutes(),t=j.getDate(),q=j.getMonth()+1,w=j.getTimezoneOffset(),A=j.getSeconds(),B=j.getMilliseconds(),u=j.getDay(),r=j.getFullYear(),v=(u+6)%7+1,x=(new Date(r,q-1,t)-new Date(r,0,1))/86400000,y={d:i(t),D:n.i18n.dayNames[u],j:t,l:n.i18n.dayNames[u+7],N:v,S:g.S(t),w:u,z:x,W:v<5?Math.floor((x+v-1)/7)+1:Math.floor((x+v-1)/7)||((new Date(r-1,0,1).getDay()+6)%7<4?53:52),F:n.i18n.monthNames[q-1+12],m:i(q),M:n.i18n.monthNames[q-1],n:q,t:'?',L:'?',o:'?',Y:r,y:String(r).substring(2),a:p<12?g.AmPm[0]:g.AmPm[1],A:p<12?g.AmPm[2]:g.AmPm[3],B:'?',g:p%12||12,G:p,h:i(p%12||12),H:i(p),i:i(o),s:i(A),u:B,e:'?',I:'?',O:(w>0?"-":"+")+i(Math.floor(Math.abs(w)/60)*100+Math.abs(w)%60,4),P:'?',T:(String(j).match(m)||[""]).pop().replace(l,""),Z:'?',c:'?',r:'?',U:Math.floor(j/1000)};return f.replace(h,function(a){return a in y?y[a]:a.substring(1)})}};b.fn.fmatter.defaultFormat=function(a,d,e){b(a).html((isValue(d)&&d!=="")?d:" ")};b.fn.fmatter.email=function(a,d,e){if(!isEmpty(d)){b(a).html(""+d+"")}else{b.fn.fmatter.defaultFormat(a,d)}};b.fn.fmatter.checkbox=function(a,d,e){d=d+"";d=d.toLowerCase();var c=d.search(/(false|0|no|off)/i)<0?" checked=\"checked\"":"";b(a).html("")},b.fn.fmatter.link=function(a,d,e){if(!isEmpty(d)){b(a).html(""+d+"")}else{b(a).html(isValue(d)?d:"")}};b.fn.fmatter.showlink=function(a,d,e){var c={baseLinkUrl:e.baseLinkUrl,showAction:e.showAction,addParam:e.addParam};if(!isUndefined(e.colModel.formatoptions)){c=b.extend({},c,e.colModel.formatoptions)}idUrl=c.baseLinkUrl+c.showAction+'?id='+e.rowId+c.addParam;if(isString(d)){b(a).html(""+d+"")}else{b.fn.fmatter.defaultFormat(a,d)}};b.fn.fmatter.integer=function(a,d,e){var c=b.extend({},e.integer);if(!isUndefined(e.colModel.formatoptions)){c=b.extend({},c,e.colModel.formatoptions)}if(isEmpty(d)){d=c.defaultValue||0}b(a).html(b.fmatter.util.NumberFormat(d,c))};b.fn.fmatter.number=function(a,d,e){var c=b.extend({},e.number);if(!isUndefined(e.colModel.formatoptions)){c=b.extend({},c,e.colModel.formatoptions)}if(isEmpty(d)){d=c.defaultValue||0}b(a).html(b.fmatter.util.NumberFormat(d,c))};b.fn.fmatter.currency=function(a,d,e){var c=b.extend({},e.currency);if(!isUndefined(e.colModel.formatoptions)){c=b.extend({},c,e.colModel.formatoptions)}if(isEmpty(d)){d=c.defaultValue||0}b(a).html(b.fmatter.util.NumberFormat(d,c))};b.fn.fmatter.date=function(a,d,e,c){var f=b.extend({},e.date);if(!isUndefined(e.colModel.formatoptions)){f=b.extend({},f,e.colModel.formatoptions)}if(!f.reformatAfterEdit&&c=='edit'){b.fn.fmatter.defaultFormat(a,d)}else if(!isEmpty(d)){var g=b.fmatter.util.DateFormat(f.srcformat,d,f.newformat,f);b(a).html(g)}else{b.fn.fmatter.defaultFormat(a,d)}};b.fn.fmatter.select=function(e,c,f,g){if(g=='edit'){b.fn.fmatter.defaultFormat(e,c)}else if(!isEmpty(c)){var h=false;if(!isUndefined(f.colModel.editoptions)){h=f.colModel.editoptions.value}if(h){var m=[];var l=f.colModel.editoptions.multiple===true?true:false;var i=[];if(l){i=c.split(",");i=b.map(i,function(a){return b.trim(a)})}if(isString(h)){var k=h.split(";"),j=0;for(var n=0;n-1){m[j]=sv[1];j++}}else if(b.trim(sv[0])==b.trim(c)){m[0]=sv[1];break}}}else if(isObject(h)){if(l){m=jQuery.map(scel,function(a,d){return h[a]})}m[0]=h[c]||""}b(e).html(m.join(", "))}else{b.fn.fmatter.defaultFormat(e,c)}}};b.unformat=function(a,d,e,c){var f,g=d.colModel.formatter,h=d.colModel.formatoptions||{};if(g!=='undefined'&&isString(g)){var m=b.jgrid.formatter||{},l;switch(g){case'link':case'showlink':case'email':f=b(a).text();break;case'integer':h=b.extend({},m.integer,h);l=eval("/"+h.thousandsSeparator+"/g");f=b(a).text().replace(l,'');break;case'number':h=b.extend({},m.number,h);l=eval("/"+h.thousandsSeparator+"/g");f=b(a).text().replace(h.decimalSeparator,'.').replace(l,"");break;case'currency':h=b.extend({},m.currency,h);l=eval("/"+h.thousandsSeparator+"/g");f=b(a).text().replace(h.decimalSeparator,'.').replace(h.prefix,'').replace(h.suffix,'').replace(l,'');break;case'checkbox':var i=(d.colModel.editoptions)?d.colModel.editoptions.value.split(":"):["Yes","No"];f=b('input',a).attr("checked")?i[0]:i[1];break}}return f?f:c===true?b(a).text():b.htmlDecode(b(a).html())};function z(a,d,e,c,f){d=d.toLowerCase();switch(d){case'link':b.fn.fmatter.link(a,e,c);break;case'showlink':b.fn.fmatter.showlink(a,e,c);break;case'email':b.fn.fmatter.email(a,e,c);break;case'currency':b.fn.fmatter.currency(a,e,c);break;case'date':b.fn.fmatter.date(a,e,c,f);break;case'number':b.fn.fmatter.number(a,e,c);break;case'integer':b.fn.fmatter.integer(a,e,c);break;case'checkbox':b.fn.fmatter.checkbox(a,e,c);break;case'select':b.fn.fmatter.select(a,e,c,f);break}};function C(a){if(window.console&&window.console.log)window.console.log(a)};isValue=function(a){return(isObject(a)||isString(a)||isNumber(a)||isBoolean(a))};isBoolean=function(a){return typeof a==='boolean'};isNull=function(a){return a===null};isNumber=function(a){return typeof a==='number'&&isFinite(a)};isString=function(a){return typeof a==='string'};isEmpty=function(a){if(!isString(a)&&isValue(a)){return false}else if(!isValue(a)){return true}a=b.trim(a).replace(/\ \;/ig,'').replace(/\ \;/ig,'');return a===""};isUndefined=function(a){return typeof a==='undefined'};isObject=function(a){return(a&&(typeof a==='object'||isFunction(a)))||false};isFunction=function(a){return typeof a==='function'}})(jQuery); \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jqGrid/min/json2-min.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jqGrid/min/json2-min.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jqGrid/min/json2-min.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,6 @@ +/* +org: 'http://www.JSON.org', + copyright: '(c)2005 JSON.org', + license: 'http://www.crockford.com/JSON/license.html', +*/ +var JSON={stringify:function stringify(c){var a,d,f,b='',e;switch(typeof c){case'object':if(c){if(c.constructor==Array){for(d=0;d=' '){if(a=='\\'||a=='"'){b+='\\'}b+=a}else{switch(a){case'\b':b+='\\b';break;case'\f':b+='\\f';break;case'\n':b+='\\n';break;case'\r':b+='\\r';break;case'\t':b+='\\t';break;default:a=a.charCodeAt();b+='\\u00'+Math.floor(a/16).toString(16)+(a%16).toString(16)}}}return b+'"';case'boolean':return String(c);case'function':return c.toString();default:return'null'}},parse:function(c){var a=c;if(a.substr(0,9)=="while(1);"){a=a.substr(9)}if(a.substr(0,2)=="/*"){a=a.substr(2,a.length-4)}return eval('('+a+')')}} \ No newline at end of file Index: lams_tool_assessment/web/includes/javascript/jquery.jqGrid.js =================================================================== diff -u --- lams_tool_assessment/web/includes/javascript/jquery.jqGrid.js (revision 0) +++ lams_tool_assessment/web/includes/javascript/jquery.jqGrid.js (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,66 @@ +function jqGridInclude() +{ + var pathtojsfiles = pathToJsFolder + "jqGrid/"; + // set include to false if you do not want some modules to be included + var combineIntoOne = false; + var combinedInclude = new Array(); + var combinedIncludeURL = "combine.php?type=javascript&files="; + var minver = true; + var modules = [ + { include: true, incfile:'grid.locale-en.js',minfile: 'min/grid.locale-en-min.js'}, // jqGrid translation + { include: true, incfile:'grid.base.js',minfile: 'min/grid.base-min.js'}, // jqGrid base + { include: true, incfile:'grid.common.js',minfile: 'min/grid.common-min.js' }, // jqGrid common for editing + { include: true, incfile:'grid.formedit.js',minfile: 'min/grid.formedit-min.js' }, // jqGrid Form editing + { include: true, incfile:'grid.inlinedit.js',minfile: 'min/grid.inlinedit-min.js' }, // jqGrid inline editing + { include: true, incfile:'grid.celledit.js',minfile: 'min/grid.celledit-min.js' }, // jqGrid cell editing + { include: true, incfile:'grid.subgrid.js',minfile: 'min/grid.subgrid-min.js'}, //jqGrid subgrid + { include: true, incfile:'grid.treegrid.js',minfile: 'min/grid.treegrid-min.js'}, //jqGrid treegrid + { include: true, incfile:'grid.custom.js',minfile: 'min/grid.custom-min.js'}, //jqGrid custom + { include: true, incfile:'grid.postext.js',minfile: 'min/grid.postext-min.js'}, //jqGrid postext + { include: true, incfile:'grid.tbltogrid.js',minfile: 'min/grid.tbltogrid-min.js'}, //jqGrid table to grid + { include: true, incfile:'grid.setcolumns.js',minfile: 'min/grid.setcolumns-min.js'}, //jqGrid setcolumns + { include: true, incfile:'grid.import.js',minfile: 'min/grid.import-min.js'}, //jqGrid import + { include: true, incfile:'jquery.fmatter.js',minfile: 'min/jquery.fmatter-min.js'}, //jqGrid formater + { include: true, incfile:'json2.js',minfile: 'min/json2-min.js'}, //json utils + { include: true, incfile:'JsonXml.js',minfile: 'min/JsonXml-min.js'} //xmljson utils + ]; + var filename; + for(var i=0;i0) ) { + var fileList = implode(",",combinedInclude); + IncludeJavaScript(combinedIncludeURL+fileList); + } + function implode( glue, pieces ) { + // http://kevin.vanzonneveld.net + //original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + //example 1: implode(' ', ['Kevin', 'van', 'Zonneveld']); + //returns 1: 'Kevin van Zonneveld' + return ( ( pieces instanceof Array ) ? pieces.join ( glue ) : pieces ); + }; + + function IncludeJavaScript(jsFile) + { + var oHead = document.getElementsByTagName('head')[0]; + var oScript = document.createElement('script'); + oScript.type = 'text/javascript;charset=utf-8'; + oScript.src = jsFile; + oHead.appendChild(oScript); + }; +}; +jqGridInclude(); \ No newline at end of file Index: lams_tool_assessment/web/pages/monitoring/monitoring.jsp =================================================================== diff -u -rc56857991e269aa7f5bd250a05b52c767a9957ad -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision c56857991e269aa7f5bd250a05b52c767a9957ad) +++ lams_tool_assessment/web/pages/monitoring/monitoring.jsp (.../monitoring.jsp) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -6,52 +6,60 @@ - <%@ include file="/common/tabbedheader.jsp" %> - + + + + + + + } + + function doSelectTab(tabId) { + // end optional tab controller stuff + selectTab(tabId); + } + - -
    -

    - -

    - -
    - - - - - -
    - - -
    + +
    +

    + +

    + +
    + + + + + + +
    + + +
    Index: lams_tool_assessment/web/pages/monitoring/parts/advanceoptions.jsp =================================================================== diff -u --- lams_tool_assessment/web/pages/monitoring/parts/advanceoptions.jsp (revision 0) +++ lams_tool_assessment/web/pages/monitoring/parts/advanceoptions.jsp (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,157 @@ + + +

    + + + + + +

    +
    + + \ No newline at end of file Index: lams_tool_assessment/web/pages/monitoring/parts/userresponse.jsp =================================================================== diff -u --- lams_tool_assessment/web/pages/monitoring/parts/userresponse.jsp (revision 0) +++ lams_tool_assessment/web/pages/monitoring/parts/userresponse.jsp (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,62 @@ + + + + + + responseStr += ${questionOption.optionString}+"
    "; +
    +
    +
    +
    + + responseStr +=''; + + responseStr +=''; + responseStr +=''; + responseStr +=''; + responseStr +=''; + + responseStr +='
    '; + responseStr +='${questionOption.question}'; + responseStr +=''; + responseStr +='-'; + + + + + responseStr +='${questionOption2.optionString}'; + + + + + responseStr +='
    '; +
    + + responseStr +='${questionResult.answerString}'; + + + responseStr +='${questionResult.answerString}'; + + + + responseStr +='${questionResult.answerBoolean}'; + + + + responseStr +='${questionResult.answerString}'; + + + + + + + + responseStr +=${questionOption.optionString}+"
    "; +
    +
    +
    +
    +
    +
    + +
    \ No newline at end of file Index: lams_tool_assessment/web/pages/monitoring/parts/usersummary.jsp =================================================================== diff -u --- lams_tool_assessment/web/pages/monitoring/parts/usersummary.jsp (revision 0) +++ lams_tool_assessment/web/pages/monitoring/parts/usersummary.jsp (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -0,0 +1,167 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + <%@ include file="/common/header.jsp"%> + + + + + + + + + + + + + + + +
    + +

    + +

    +

    + <%@ include file="/common/messages.jsp"%> + + + + + + + + + + + + + + + + + + + + + +
    + + + ${userSummary.user.firstName} ${userSummary.user.lastName} +
    + + + ${userSummary.numberOfAttempts} +
    + + + + +
    + + + ${userSummary.lastAttemptGrade} +
    +

    + + +
    + + + + + + + + + +
    + + + ${userSummaryItem.question.title} +
    + + + ${userSummaryItem.question.question} +
    + +
    +
    +
    + + + + + + + + +
    + + + + + + +
    Index: lams_tool_assessment/web/pages/monitoring/statistic.jsp =================================================================== diff -u -rc56857991e269aa7f5bd250a05b52c767a9957ad -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/web/pages/monitoring/statistic.jsp (.../statistic.jsp) (revision c56857991e269aa7f5bd250a05b52c767a9957ad) +++ lams_tool_assessment/web/pages/monitoring/statistic.jsp (.../statistic.jsp) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -9,10 +9,10 @@ + <%-- - <%-- display group name on first row--%> @@ -88,4 +88,5 @@ + --%> Index: lams_tool_assessment/web/pages/monitoring/summary.jsp =================================================================== diff -u -rc56857991e269aa7f5bd250a05b52c767a9957ad -rd4022a5f15973e49528bcc3872b6ef4038dc4181 --- lams_tool_assessment/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision c56857991e269aa7f5bd250a05b52c767a9957ad) +++ lams_tool_assessment/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision d4022a5f15973e49528bcc3872b6ef4038dc4181) @@ -1,292 +1,166 @@ <%@ include file="/common/taglibs.jsp"%> - + -

    - + + + +<%@ include file="parts/advanceoptions.jsp"%> + + + +
    + +
    +
    + - - - - - - - ${sessionMap.assessment.miniViewAssessmentNumber} - - + - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ${sessionMap.assessment.reflectInstructions} - - - - - - +
    +
    + +
    - - - - -
    - -
    -
    - - - - - - <%-- display group name on first row--%> - - - - - - - - - - - - <%-- End group title display --%> - - - - - - - - - - - - - - - + - <%-- Reflection list --%> - - - - - - - - - - - - - - - - - - - - - - + + + + - -
    - ${item.sessionName} - - - - - -
    - - - - - - - - - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - ${item.itemTitle} - - - ${item.username} - - - - - - - - ${item.viewNumber} - - - 0 - - - - - - - - - - - -
    -

    -
    - - - - - -
    - ${user.fullName} - - ${user.loginName} - - - - - - - -
    + +
    +
    + ${summary.sessionName} +
    + +
    +
    +
    + + + Fisheye: Tag d4022a5f15973e49528bcc3872b6ef4038dc4181 refers to a dead (removed) revision in file `lams_tool_assessment/web/pages/monitoring/userlist.jsp'. Fisheye: No comparison available. Pass `N' to diff?