示例#1
0
  /**
   * Updates a mark's comment, position or bonus
   *
   * @param newcomment the new comment
   * @param newposx the new X coordinate in the page
   * @param newposy the new Y coordinate in the page
   * @param newbonus the new bonus
   */
  public void update(
      final String newcomment,
      int newposx,
      int newposy,
      final int newlevel,
      final float newbonus,
      final String newregrademarkercomment,
      final int newregradeaccepted,
      int widthPage,
      int heightPage) {

    final Mark mark = this;

    int regradeid = 0;
    if (mark instanceof RubricMark) regradeid = ((RubricMark) mark).getRegradeid();

    // This shouldn't happen so log it for debugging
    if (this.id == 0) {
      logger.severe("Fatal error! A comment with id 0!");
      return;
    }

    EMarkingWeb.markingInterface.addLoading(true);
    this.setLoading();

    final String feedbackToAjax;
    if (feedback.size() > 0) {
      feedbackToAjax = getFeedbackToAjax();
    } else {
      feedbackToAjax = "";
    }
    // Call the ajax request to update the data
    AjaxRequest.ajaxRequest(
        "action=updcomment&cid="
            + this.id
            + "&posx="
            + newposx
            + "&posy="
            + newposy
            + "&bonus="
            + newbonus
            + "&format="
            + this.format
            + "&levelid="
            + newlevel
            + "&regradeid="
            + regradeid
            + "&regradeaccepted="
            + newregradeaccepted
            + "&regrademarkercomment="
            + newregrademarkercomment
            + "&markerid="
            + EMarkingConfiguration.getMarkerId()
            + "&width="
            + this.width
            + "&height="
            + this.height
            + "&comment="
            + URL.encode(newcomment)
            + "&windowswidth="
            + widthPage
            + "&windowsheight="
            + heightPage
            + feedbackToAjax,
        new AsyncCallback<AjaxData>() {

          @Override
          public void onFailure(Throwable caught) {
            logger.severe("Error updating mark to Moodle!");
            logger.severe(caught.getMessage());
            Window.alert(caught.getMessage());
            EMarkingWeb.markingInterface.finishLoading();
          }

          @Override
          public void onSuccess(AjaxData result) {
            Map<String, String> value = AjaxRequest.getValueFromResult(result);

            if (!result.getError().equals("")) {
              Window.alert(result.getError());
              setMarkHTML();
              removeStyleName(Resources.INSTANCE.css().updating());
              EMarkingWeb.markingInterface.finishLoading();
              return;
            }

            // Parse json values from Moodle
            long timemodified = Long.parseLong(value.get("timemodified"));
            float newgrade = Float.parseFloat(value.get("newgrade"));
            mark.setPreviousText(mark.getRawtext());
            mark.setRawtext(newcomment);

            if (mark instanceof RubricMark) {
              RubricMark rmark = (RubricMark) mark;
              // Update submission data
              int previousLevelid = rmark.getLevelId();
              float previousBonus = rmark.getBonus();
              rmark.setLevelId(newlevel);
              rmark.setBonus(newbonus);
              rmark.setRegradeaccepted(newregradeaccepted);
              rmark.setRegrademarkercomment(newregrademarkercomment);
              if (rmark.getLevelId() != previousLevelid || rmark.getBonus() != previousBonus) {
                rmark.setMarkername(
                    MarkingInterface.submissionData.getMarkerfirstname()
                        + " "
                        + MarkingInterface.submissionData.getMarkerlastname());
                rmark.setMarkerid(MarkingInterface.submissionData.getMarkerid());
                Mark.showIcons(rmark);
              }
              EMarkingWeb.markingInterface
                  .getRubricInterface()
                  .getRubricPanel()
                  .addMarkToRubric(rmark);
              EMarkingWeb.markingInterface
                  .getRubricInterface()
                  .getRubricPanel()
                  .finishloadingRubricCriterion(newlevel);
            }

            // Update the marking interface with the final grade and time
            EMarkingWeb.markingInterface.setFinalgrade(newgrade, timemodified);
            setMarkHTML();

            EMarkingWeb.markingInterface
                .getRubricInterface()
                .getToolsPanel()
                .getPreviousComments()
                .addMarkAsCommentToInterface(mark, true);

            removeStyleName(Resources.INSTANCE.css().updating());

            EMarkingWeb.markingInterface.finishLoading();
          }
        });
  }