[Logo] Форум DL
  [DL]  На главную страницу 
Индекс форума ->Общего плана ->Предложения по новым курсам DL 1, 2, 3, ... 6, 7, 8, 9, 10, 11, 12, 13
Автор Сообщение
Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Замечания по примеру "Передача флажков"
http://dl.gsu.by/web-samples/jsp-course/checkbox.jsp

- теории вообще нет
- не понятно как работает этот код
- в теории нужно подробнее пояснять всё, что используется и как работает в этом примере
- используется forCheckbox.jsp, надо его показать
- надо также показать как обрабатывать флажки

Исходный JSP код

<form action = "forCheckbox.jsp" method = "POST" target = "_blank">
             <input type = "checkbox" name = "maths" checked = "checked" /> Maths
             <input type = "checkbox" name = "physics"  /> Physics
             <input type = "checkbox" name = "chemistry" checked = "checked" /> Chemistry
             <input type = "submit" value = "Select Subject" />
</form>

Сгенерированный HTML-код

<ul>
    <li><p><b>Maths Flag:</b> <%= request.getParameter("maths")%></p></li>
    <li><p><b>Physics Flag:</b><%= request.getParameter("physics")%></p></li>
    <li><p><b>Chemistry Flag:</b><%= request.getParameter("chemistry")%></p></li>
</ul>

Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Замечания по примеру "Чтение всех параметров формы"
http://dl.gsu.by/web-samples/jsp-course/readingAllParam.jsp

- теории вообще нет
- не понятно как работает этот код
- в теории нужно подробнее пояснять всё, что используется и как работает в этом примере
- используется forReadingAllParam.jsp, надо его показать
- надо также показать как обрабатывать принятые параметры

Исходный JSP код

<form action = "forReadingAllParam.jsp" method = "POST">
        <input type = "checkbox" name = "maths" checked = "checked" /> Maths
        <input type = "checkbox" name = "physics"  /> Physics 
        <input type = "checkbox" name = "chemistry" checked = "checked" /> Chemistry
        <input type = "submit" value = "Select Subject" />
</form>


Сгенерированный HTML-код

<table width = "100%" border = "1" align = "center">
   <tr bgcolor = "#949494"> 
       <th>Param Name</th> 
       <th>Param Value(s)</th> 
   </tr>
<%
Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
    String paramName = (String)paramNames.nextElement();
    out.print("<tr><td>" + paramName + "</td>\n");
    String paramValue = request.getParameter(paramName);
    out.println("<td> " + paramValue + "</td></tr>\n");
}
%>
</table>

Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Замечания по примеру "Передача флажков"
http://dl.gsu.by/web-samples/jsp-course/forCookies.jsp

- теории вообще нет
- не понятно как работает этот код
- в теории нужно подробнее пояснять всё, что используется и как работает в этом примере
- используется cookiesForNames.jsp, надо его показать
- надо также показать как обрабатывать добавленные в куки параметры

Исходный JSP код

<form action = "cookiesForNames.jsp" method = "POST">
       First Name: <input type = "text" name = "first_name"><br />
       Last Name:  <input type = "text" name = "last_name" />
                   <input type = "submit" value = "Submit" />
</form>
Сгенерированный HTML-код

<%
  // Create cookies for first and last names.
  Cookie firstName = new Cookie("first_name", request.getParameter("first_name"));
  Cookie lastName = new Cookie("last_name", request.getParameter("last_name"));

  // Set expiry date after 24 Hrs for both the cookies.
  firstName.setMaxAge(60*60*24);
  lastName.setMaxAge(60*60*24);

  // Add both the cookies in the response header.
  response.addCookie( firstName );
  response.addCookie( lastName );
%>
<ul>
    <li><p><b>First Name:</b> <%= request.getParameter("first_name")%></p></li>
    <li><p><b>Last  Name:</b> <%= request.getParameter("last_name")%> </p></li>
</ul>

Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Замечания по примеру "Чтение cookies"
http://dl.gsu.by/web-samples/jsp-course/readingCookies.jsp

- теории вообще нет
- не понятно как работает этот код
- в теории нужно подробнее пояснять всё, что используется и как работает в этом примере
- используется request.getCookies(), надо пояснить
- приветси пример полезной обработки куки

Исходный JSP код
<%
  Cookie cookie = null;
  Cookie[] cookies = null;

  cookies = request.getCookies();

  if( cookies != null ) 
     {
       out.println("<h2> Found Cookies Name and Value</h2>");

       for (int i = 0; i < cookies.length; i++) {
          cookie = cookies[i];
          out.print("Name : " + cookie.getName( ) + ",  ");
          out.print("Value: " + cookie.getValue( )+" <br/>");
       }
     } else out.println("<h2>No cookies founds</h2>");
%>

Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Сделать одну ссылку на сообщение в Confluence

А там разместить ссылки на все эти материалы

- Введение в JSP для новичков
- Примеры разработки JSP страниц
- Синтаксис JSP
- Вопросы и ответы на тему JSP
- Установка Tomcat и интеграция с Intellij Idea
- JSP Tutorial
- Проект с примерами на github.com
- Среда разработки для пользователей
Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Комплекс заданий на обучение разработке Java-сервлетов в системе дистанционного обучения DL.GSU.BY

Введение
1. Инструментальные средства
2. Теоретические основы разработки сервлетов
3. Технология создания сервлетов
4. Примеры сервлетов
Заключение


Роман Хиженок

Введение

1. Инструментальные средства
1.1 Установка Java
1.2 Установка и настройка сервера Tomcat
1.3 Установка среды разработки IntelliJ IDEA
2. Теоретические основы разработки сервлетов
2.1 lifecycle
2.2 Обработка HTTP – запроса, формирование HTTP – ответа
2.3 Параметры, атрибуты, заголовки и cookies (для чего нужны, чем отличаются, как с ними работать)
2.4 Различные области видимости - application/session/request
2.5 Listener и Filter - что такое, для чего используется, API

3. Технология создания сервлетов
3.1 Обзор сервлетов
3.2 Запуск контейнера сервлетов и размещение проекта
3.3 Взаимодействие сервлета и JSP
3.4 Управление запросами GET и POST
3.5 Работа с броузерами

4. Примеры сервлетов

Как рабочий вариант – годится, начинай писать, только сразу оформляй по стандарту оформления дипломов

И такое название не годится
2.1 lifecycle
По-русски надо

И ещё нужно добавить раздел про DL
Где что на DL лежит, куда и что нужно помещать
Причём для обоих DL
- в виртуальной машине (DLVM)
- боевой (DL.GSU.BY)
Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
http://dl.gsu.by/web-samples/servlet-course/index.jsp

Общие хотелки

Надо внятно объяснить, в каких случаях лучше использовать сервлет, чем вносить это в JSP.


Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Вопросы/замечания по примеру "Сервлет для приветствия"
http://dl.gsu.by/web-samples/servletcourse/helloWorld.jsp [pre]

А где сам helloWorld.jsp?
Как его увидеть?

chooseColor.jsp

Надо объяснить назначение каждой из этих строк
Без второй работать будет?
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


Объяснение этих строк Роман Осадчий должен дать – у него скопировать можно
<script type="text/javascript" src="../resources/javascript/task.js"></script>
<link rel="stylesheet" type="text/css" href="../resources/css/style.css">
<script src="https://unpkg.com/kotlin-playground@1" data-selector=".kotlin-code"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>


Объяснить, эта строка зачем?
<c:set var="context" value="pageContext.request.contextPath"/>
И как это работает
<c:choose>
<c:whentest="{empty greeting}"> <span style="color: red;"> Введите свое имя и цвет на <strong> английском языке </strong>, пожалуйста! </span> </c:when>
<c:otherwise> <strong style="color: color">{greeting} </strong> </c:otherwise>
</c:choose>


И как это работает, привести рисунок и пояснение кто кого когда вызывает
<form method="post"
action="context/servletcourse/chooseColor.jsp"
style="padding:10px;border:1pxsolidblack;width:175px;">
<label for="color">Введителюбойцвет:</label><br/> <input id="color" name="color"/><br/>
<label for="name">Введите свое имя:</label><br/>
<input id="name" name="name"/><br/><br/>
<input type="submit" value="Отправить">
</form>

И как это работает

<script>( document ).ready(function() {
codeLoad("context/sources/by/gsu/servlets/ChooseColorServlet.java",("#javaCode"));
codeLoad("context/sources/servlet?course/chooseColor.jsp",("#jspCode"));
});

ChooseColorServlet.java)

package by.gsu.servlets;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ChooseColorServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String color = request.getParameter("color");
        String name = request.getParameter("name");

        String greeting = null;
        if (name != null) {
            greeting = "Hello, " + name + "!";
        }

        if (color == null) {
            color = "black";
        }

        request.setAttribute("greeting", greeting);
        request.setAttribute("color", color.toLowerCase());

        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/servlet-course/chooseColor.jsp");
        dispatcher.forward(request,response);
    }
}


Надо объяснить все строчки в теории
import точно все нужны, или можно удалить какие-то?

И описать подробно и понятно как взаимодействуют JSP и сервлет.

Как создаются сервлеты, куда их нужно выкладывать.



Вадим Копиченко:

Расположение кода в трёх разных местах (jsp, классы и web.xml) диктуется спецификацией сервлетов 
Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Вопросы/замечания по примеру "Подсчет длины параметров из URL"
http://dl.gsu.by/web-samples/servletcourse/allParameters.jsp

Надо описать (в Confluence, а не в коде JSP)
1. Схему взаимодействия пользователь - allParameters.jsp - UrlParametersServlet.java
2. Как создавать сервлет
3. Каждую из важных строк JSP и сервлета

allParameters.jsp

<c:choose>
   <c:when test="{pageContext.request.serverName}" />
           <c:set var = "port" value="{context}/servletcourse/allParameters.jsp?i=Roman&mother=Anna&father=Misha
      </c:when>
   <c:otherwise>
        <ul>
            <c:forEach var="item" items="{item.key} - ${item.value}
               </li>
            </c:forEach>
        </ul>
  </c:otherwise>
</c:choose>
...
<button class="button-source">
  <a href="${context}/sources/by/gsu/servlets/UrlParametersServlet.java"  target="_blank">Показать в отдельной вкладке</a>
</button>
...
<div class="kotlin-code" data-highlight-only folded-button="true">
      <pre>  <code class="hljs language-text" id="jspCode"> </code> </pre>
</div>
...
<button class="button-source">
  <a href="${context}/sources/servlet-course/allParameters.jsp"  target="_blank">Показать в отдельной вкладке</a>
</button>
...
<script>
  $( document ).ready(function() {
       codeLoad("${context}/sources/by/gsu/servlets/UrlParametersServlet.java", $("#javaCode"));
       codeLoad("${context}/sources/servlet-course/allParameters.jsp", $("#jspCode"));
                      });
</script>


UrlParametersServlet.java

package by.gsu.servlets;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class UrlParametersServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        Map<String, Integer> result = new HashMap<>();
        Map<String, String[]> params = request.getParameterMap();
        for (Map.Entry<String, String[]> entry : params.entrySet()) {
            result.put(entry.getValue()[0], entry.getValue()[0].length());
        }
        request.setAttribute("result", result);
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/servlet-course/allParameters.jsp");
        dispatcher.forward(request,response);
    }
}

Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Отправка формы
Выбираем цвет приветствия

Это разновидности самого первого сервлета ...
Но хоть доопиши то, чем они отличаются

Надо также подробно описать и другие сервлеты
Кликер
Изучаем элементы - манипуляции со строкой
Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
http://dl.gsu.by/task.jsp?nid=1122344&cid=620 - без автовыдачи - из AjaxTree(New) – показывает, как надо
http://dl.gsu.by/differentialStudy.jsp?dSid=721 - DS2 - не показывает task.cfg совсем
http://dl.gsu.by/task.jsp?nid=1122914&cid=620 - DS - задание автовыдачи BY/GO – показывает без памяти
http://dl.gsu.by/admin/taskviewer.asp?nid=1386465 - не показывает task.cfg совсем

Есть три проблемки
- добавить вывод всего task.cfg в DS2
- добавить вывод памяти в DS
- добавить вывод всего task.cfg и заголовок задачи в http://dl.gsu.by/admin/taskviewer.asp?nid=1386465

Добавить вывод всего task.cfg в DS2

Кажется, достаточно в файле DifferentialStudy.js закомментировать строку

GAL.showHTML(frameCentral,this.currentTask.HTML);


И добавить строки

frameCenral.document.body.innerHTML = "";
frameCentral.document.location.href = "taskview.jsp?cid="+this.currentTask.courseId+"&nid="+this.position.current+”&showcfg=1”;


поскольку task.jsp для правильного отображения программистских задач без автовыдачи вызывает
http://dl.gsu.by/taskview.jsp?nid=1122344&cid=620&showcfg=1

Исправленный DifferentialStudy.js
Подробнее о проведённом анализе
Как проверять изменения на DLVM (Осадчий Роман, ПМ-41, июнь 2018, диплом)


Моё предположение верно, если после замены DifferentialStudy.js на исправленный
по ссылке http://dl.gsu.by/differentialStudy.jsp?dSid=721
откроется условие задачи с показом task.cfg

Добавить вывод памяти в DS
в task.jsp для вывода условия и нижнего фрейма отсылки вызывается taskengform.asp
http://dl.gsu.by/taskengform.asp?tid=162727&nid=1122914&cid=620&uid=100105
а из него
http://dl.gsu.by/viewtask.asp?nid=1122914&cid=620&lnid=1122342&nttos=&snum=1&tpt=1
получается память надо там добавлять

во viewtask.asp есть такие строки
      if (word = "MEM_LIMIT") then
'        memT = trim(right(text,len(text) - posr))
'        if memT= "" then memT = "65 536"

Здесь надо раскомментировать две последние строки (удалить символ ')

Затем такие строки

<tr bgcolor=white><td width=150><b><font size=-1> 
Время на тест:</font></b></td><td width=100><font size=-1> <% = timT %>
сек</font></td></tr>
<tr bgcolor=white><td><b><font size=-1> 
Ввод:</font></b></td><td><font size=-1> 
<% = inpT %></font></td></tr>
<tr bgcolor=white><td><b><font size=-1> 
Вывод:</font></b></td><td><font size=-1> 
<% = outT %></font></td></tr>


Надо добавить после них

<tr bgcolor=white><td><b><font size=-1> 
Память:</font></b></td><td><font size=-1> 
<% = memT %> байт</font></td></tr>


Хорошо бы ещё научиться разделить MemT на 1024*1024 - чтобы перевести ограничение по памяти в Мбт и вывести Мбт вместо байт

Добавить вывод всего task.cfg в http://dl.gsu.by/admin/taskviewer.asp?nid=1386465
- скопировать вывод task.cfg из viewtask.asp
а заодно научиться открывать все типы задач
Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Прикрутить сервлет Романа отображения исходников для поиска и просмотра кодов DL
(на боевой DL и виртуальной DL)

Например
http://dl.gsu.by/task.jsp?nid=1122344&cid=620 - без автовыдачи - из AjaxTree(New) – показывает, как надо
http://dl.gsu.by/task.jsp?nid=1122914&cid=620 - DS - задание автовыдачи BY/GO – показывает без памяти
http://dl.gsu.by/differentialStudy.jsp?dSid=721 - DS2 - не показывает task.cfg совсем

Есть ДВЕ проблемки
- добавить вывод памяти в DS
- добавить вывод всего task.cfg в DS2

типа добавить под dl/admin просмотр исходников
вставляешь имя
task.jsp
или
differentialStudy.jsp
и сервлет находит и показывает этот код (и полный путь к нему)

task.jsp
taskview.jsp

differentialStudy.jsp
Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Как taskview.jsp показывает task.cfg

<%@ include file='paramparse.jsp' %>

int showcfg = getParam("showcfg", request);

if (showcfg == 1 && new Course(courseId, user).ShowTaskCfg) 
  { //Выводим информацию из task.cfg
            
    TaskCfg TCFG = new TaskCfg(node.getTaskID());
    double TimeLimit = TCFG.getTimeLimit();
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMinimumFractionDigits(0);
    nf.setMaximumFractionDigits(2);

    <table cellpadding=0 cellspacing=1 bgcolor=black align=right>
      <tr><td colspan=2 bgcolor=white><font size=-1> task.cfg</font> </td> </tr>
      <tr bgcolor=white>
          <td width=150> <b><font size=-1> <dl:res key="time limit"/></font></b></td>
          <td width=100> <font size=-1> <%= TimeLimit %><dl:res key="sec"/></font></td></tr>

      <% if (!TCFG.isINTERACTIVE()) { %>     ...

      <tr bgcolor=white>
        <td width=150> <b><font size=-1> <dl:res key="memory limit"/></font></b> </td>
        <td width=100> <font size=-1> <%= nf.format(TCFG.getMemLimit()/(1024*1024))+" Mb" %></font></td>
      </tr>
    </table>

Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Как DifferentialStudy.jsp показывает условия задач?
(куда и нужно вставить код из taskview.jsp)

<%@taglib prefix="dl" uri="/WEB-INF/tld/dl.tld"%>

function doLoadFrameAbstract(name, text) {
    var fr = name(name);if(isVar(fr) && fr.length > 0) {
        var doc = fr[0].contentDocument;
        if (!isVar$(doc)) {
            doc = fr[0].Document;
        } 
        doc.body.innerHTML = text;
    }
}
</script>

<body   
   onload="initDiffStudy" 

<table width="100%"  ... >
   <tr><td width="30%" ...>  <iframe name="dsFrameLeftList" ... </iframe>  </td>
       <td width="30%" ">    <iframe name="dsFrameLeft" onload="initLeftFrame()"></iframe>  </td>
       <td width="30%"       <iframe name="dsFrameDebts" </iframe> </td>
       <td> <table width="100%" height="100%" border="1px" cellpadding="0px" cellspacing="0px">
               <tr><td height="35px"     <iframe name="dsFrameTop" </iframe></td></tr>
               <tr><td>                  <iframe name="dsFrameCentral"></iframe> </td></tr>
               <tr><td height="53px"     <iframe name="dsFrameBottom" </iframe></td></tr>
             </table>
       </td>
   </tr>
</table>

Михаил Долинский (Online)

Темы: 1984
Сообщений: 47219

Мой профиль
Диплом Осадчего http://dl.gsu.by/images/_i4f/_diploms/osadchy.docx
Дока по DLVM http://dl.gsu.by/NForum/posts/topicshow/2787.dl?postid=68831#68831

Цель – научиться писать код (исправлять ошибки) для DL
1.	Выкачать DLVM, запустить у себя на машине
2.	Выкачать софт 
- IntelliJ IDEA - выкачать/запустить
- JDK - скачать и настроить 
        - Tortoise SVN - выкачать/запустить, интегрировать с  IntelliJ IDEA
3.  Выкачать исходники - научиться исправлять/отлаживать
        - скачать актуальные исходники DL
        - подключить проект с исходниками DL к Intellij Idea
        -сделать так, чтобы DLVM подхватила ваши изменения
       - возможности отладки 
4. Перенос исправлений на боевую DL
        - сделать заявку в Jira
        - сделать патч для Code review
        - сделать Commit после Code review
        - попросить сделать Deploy  


План разведки

1. Найти на виртуальной машине DifferentialStudy.jsp
2. Добавить "Здесь был Вася"
3. Увидеть на виртуальной машине эту надпись в условиях задачи.
4. Итерационно добавить и завести в DifferentialStudy.jsp кусок кода taskview, показывающий task.cfg


Кусок из taskview.jsp

Если отсылать нельзя, показываем только заголовок задачи и условия
    if (!perm.submitAllowed) { %>
        <frameset rows="20,*" framespacing="0"  frameborder="1" border="true">
            <frame name="taskheader" src="taskheader.jsp?nid=<%=nodeId%>&cid=<%=courseId%>" marginwidth="10" marginheight="0" scrolling="no" frameborder="0">
            <frame name="taskview" src="taskview.jsp?nid=<%=nodeId%>&cid=<%=courseId%>" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">
        </frameset>
<%  }

Для задач по программированию, если можно отсылать решения (заголовок, условия,редактор, footer для отсылки)
    } else { // программирование и т.п. - upload
    %>
    <frameset rows="10%,*,50" framespacing="0"  frameborder="1" border="true">
      <frame name="taskheader" src="taskheader.jsp?nid=<%=nodeId%>&cid=<%=courseId%>&showcfg=1" marginwidth="10" marginheight="0" scrolling="no" frameborder="0">
      <frame name="taskview" src="taskview.jsp?nid=<%=nodeId%>&cid=<%=courseId%>&showcfg=1" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">	 
	<%if(submitAllowed==1){%>
        <% String showEditor = request.getParameter("showeditor") == null ? "" : "&showeditor"; %>
      <frame name="taskfooter" src="taskfooter.jsp?nid=<%=nodeId%>&cid=<%=courseId%><%=showEditor%>" marginwidth="10" marginheight="0" scrolling="no" frameborder="0">
	<%}%>
    </frameset>    

Итого – условия показывает taskview.jsp

http://dl.gsu.by/images/_i4f/java/taskview.jsp.txt

? Может для решения проблемы достаточно в DS2

добавить куда надо строку
<frame name="taskview" src="taskview.jsp?nid=<%=nodeId%>&cid=<%=courseId%>&showcfg=1" marginwidth="10" marginheight="10" scrolling="auto" frameborder="0">

Вырезки из differentialStudy.jsp http://dl.gsu.by/images/_i4f/java/differentialStudy.jsp.txt


<!-- JavaScript -->
<script type="text/javascript" src="/javascript/differentialStudy.js"></script>

differentialStudy.js содержит

getCurrentHTML: function() {
        if (this.position.current == this.currentTask.nodeId &&
            this.position.current != -1) {
            if (this.currentTask.waitAnswer) {
                setTimeout("DS.getCurrentHTML()",1000);
            } else {
                   GAL.showHTML(frameCentral,this.currentTask.HTML);
                   if (isVar(DS.waitStop))DS.waitStop();if(isVar(frameLeft._uSel)) { frameLeft._uSel(this.position.current); }
                this.currentTask.nodeId = -1;
            }
        } else if (this.position.current != -1) {
            this.currentTask.nodeId = this.position.current;
            
            this.currentTask.nextFunction = function () { DS.getCurrentHTML(); };
            this.currentTask.startLoad();
            
            frameTop.document.body.innerHTML = "";
            frameBottom.document.body.innerHTML = "";
            frameTop.document.location.href = "taskheader_ds.jsp?cid="+this.currentTask.courseId+"&nid="+this.position.current+"&dsid="+DS.ID;
            frameBottom.document.location.href = "taskfooter_ds.jsp?cid="+this.currentTask.courseId+"&nid="+this.position.current+"&dsid="+DS.ID;
        } else {
            frameBottom.document.location.href = "taskfooter_ds.jsp?cid="+this.currentTask.courseId+"&nid="+this.position.current+"&dsid="+DS.ID;
        }
    }

в GAL.showHTML и нужно добавить вывод task.cfg
 
Индекс форума ->Общего плана ->Предложения по новым курсам DL 1, 2, 3, ... 6, 7, 8, 9, 10, 11, 12, 13
Time:0,045