Концептуальная помощь, необходимая для создания форм, связанных с родительским узлом


Я хотел бы узнать ваше мнение при создании решения для следующих требований приложения. Общая цель приложения - управлять учащимися, преподавателями и курсами так же, как программным обеспечением для школьного администрирования.

Некоторые типы контента будут иметь связанные формы (исходный формат - PDF), которые частично заполняются пользователем и частично приложением. После заполнения необходимых данных формы должны быть доступны для печати (PDF) и сохранено для последующего редактирования и повторной печати. Заполненная форма всегда должна оставаться связанной с определенным родительским узлом. Означает, что если пользователь просматривает или редактирует содержимое определенного узла, ему необходимо видеть связанные формы и иметь возможность нажимать на них, чтобы заполнять данные или редактировать или распечатывать заполненную форму снова и снова.

Небольшой пример.

Тип содержимого: студент (узел)

- related form: attendance 
- related form: enrollment       

Свойства связанных форм:

- original forms are available as PDF files
- some fields are filled in programmatically, taking data from the currently viewed student node
- other fields are filled in manually by the user
- filled in forms need to be printable (PDF) or send as mail attachment
- filled in forms need to be stored for future printing / editing 
- forms always need to be related with their parent student node

Мое целевое решение заключается в следующем, используя как пример формы "посещаемость":

  1. программно создайте и подтвердите форму "посещаемость"
  2. сохраните заполненную форму в виде файла PDF в файловой системе
  3. добавьте PDF-файл в качестве вложения в соответствующий узел студента
  4. добавьте кнопку редактирования рядом с вложением, которая приведет пользователя к заполненной форме (для повторного редактирования и печати)

Может ли это решение сработать? У кого-нибудь есть идеи или подсказки для лучшего решения? Любые комментарии очень оцененный.

Author: jbiechele, 2012-02-06

1 answers

Я бы решил это немного по-другому:

  1. Программно создайте и подтвердите форму "посещаемость" - звучит неплохо.
  2. Я бы создал отдельную таблицу базы данных и хранил там данные заполненной формы. Он должен иметь поля идентификатора узла (и пользователя), чтобы определить, к какому узлу (пользователю) он относится. Поле идентификатора узла или комбинация полей идентификатора узла и пользователя должны быть уникальными, чтобы вы всегда могли получить правильные данные о посещаемости для конкретного узла/пользователя. По желанию он может иметь уникальный, автоматически добавляемый идентификатор посещаемости в качестве первичного ключа, если в противном случае потребуется более одного поля (проще создавать уникальные пути для каждого посещения). Затем я бы также добавил либо отдельные поля для каждого поля формы, либо одно поле для всех данных (сериализованных) в зависимости от потребностей.
  3. Вместо этого добавьте ссылку на программно созданный путь (пример: посещаемость/1/pdf, где 1 будет уникальным идентификатором посещаемости). Когда пользователь переходит на страницу, создайте pdf-файл из посещаемости данные, которые они могут загружать/просматривать.
  4. Добавьте ссылку на страницу формы редактирования посещаемости (пример пути: посещаемость/1/редактировать).

Еще одна вещь, которую следует отметить, - это правильно получить разрешения (просмотр/редактирование), если есть необходимость в ограничениях.

В случае, если моя идея решения не слишком хорошо соответствует всем конкретным требованиям, я бы просто сказал, что вы должны хранить данные в базе данных, а не в файлах.

 1
Author: Madis, 2012-02-06 23:36:26