Вебтекст с использованием Celesta

Материал из Course Orchestra
Перейти к: навигация, поиск
Внимание! Вы просматриваете документацию к Celesta 6.x. Документация по Celesta 7.x доступна на courseorchestra.github.io/celesta.

1. Справочник Celesta

1.1 Введение и основные понятия
1.2 Запуск и авто-обновление
1.3 Базовая настройка
1.4 Системные таблицы
1.5 CelestaSQL
1.6 CelestaDoc
1.7 Контексты сессии и вызова
1.8 Курсоры
1.9 BLOB-поля
1.10 Option-поля
1.11 Защита от потерянных обновлений
1.12 Метаданные Celesta
1.13 CelestaUnit

2. Celesta и базы данных

2.1 Особенности работы Celesta с поддерживаемыми типами СУБД
2.2 Проектирование базы данных Celesta в DBSchema

3. Создание решений с использованием Celesta для ShowCase

3.1 Программа обучения Celesta
3.2 Подготовка рабочего места для работы с Celesta
3.2.1 Для разработчиков платформы
3.2.2 Для разработчиков решений
3.3 Системные гранулы Celesta
3.3.1 common
3.3.1.1 Экспорт/импорт данных
3.3.1.2 Навигатор
3.3.1.3 Серии номеров
3.3.1.4 Иерархия Дьюи
3.3.1.5 Системные функции
3.3.1.6 Реестр настроек
3.3.1.7 Mailsender
3.3.1.8 Common.filter
3.3.2 common.api
3.3.4 security
3.3.3 lyra
3.4 Стандартные гранулы Celesta
3.4.1 dirusing
3.4.2 workflow
3.4.3 File repository
3.5 Отрисовка элементов Showcase при помощи Celesta
3.5.1 Конвертер XML-JSON
3.5.2 Навигатор (Navigator)
3.5.3 Информационная панель (Datapanel)
3.5.4 Серверное действие (Server activity)
3.5.5 Вебтекст (WebText)
3.5.6 Грид (Grid)
3.5.6.1 Панель инструментов (ToolBar)
3.5.7 XForms
3.5.7.1 Селекторы
3.5.7.2 Submission
3.5.7.3 Загрузка/Выгрузка файлов (Upload/Download)

5. Решение проблем

5.1 Проблемы с кодировкой jython-файлов

Функция-celesta, определяющая вебтекст имеет шесть параметров: первый параметр - это контекст Celesta. Остальные параметры (main, add, filterinfo, session, elementId) по умолчанию полагаются равными None.

В процедуре, отвечающей за прорисовку webtext, определяется два параметра типа xml: data - html-код, отрисовывающий элемент на панели; settings - перечень свойств, которыми обладают отрисованные элементы. В скрипте data и settings задаются в соответствии с обычными правилами (см. Вебтекст (webtext) в Showcase а так же Учебник по Showcase: Webtext на примере кнопки Добавить). Для удобства работы сначала они задаются в json и далее конвертируются в xml при помощи XML-JSON конвертера.

Поскольку нужно вернуть две строки (с данными и свойствами), возвращается объект JythonDTO.

Код процедуры может выглядеть,например следующим образом:

try:
    from ru.curs.showcase.core.jython import JythonDTO
except:
    from ru.curs.celesta.showcase import JythonDTO
from ru.curs.celesta.showcase.utils import XMLJSONConverter

#вебтекст в этом случае определяет кнопку, по которой происходит действие "перерисовать навигатор"

def webtextData(context, main=None, add=None, filterinfo=None, session=None, elementId=None):  
    webtextdata = {"table":
     {"tr":
      { "@class":"newbutton highbutton",
        "span":
          {"@class":"blue xforms-trigger",
            "span":
               {"@class":"value",
	        "button": 
                  {"@style":"width: 135px; text-align: center",	
                   "@onclick":'gwtWebTextFunc("inspectionHistoryButtons", "1")',
		   "span":{"@class":"xforms-label",
			    "span":"Перерисовать навигатор"}}
		    }
	     }
          }
        }
     } 
       

     webtextsettings = {"properties":{"event":[]}}
     webtextsettings["properties"]["event"].append({"@name": "single_click",
                                                     "@linkId": "1",
						      "action":
                                                          {"main_context": "то, что передается в main_context",
							   "navigator":{"@element":"elementID",
                                                                        "@refresh": "true"}
                                                       }
                                                   })
                       
    settings = XMLJSONConverter.jsonToXml(json.dumps(webtextsettings))
    data = XMLJSONConverter.jsonToXml(json.dumps(webtextData))
    return JythonDTO(data, settings)