Хранилище документов (PHP) - PullRequest
0 голосов
/ 14 июня 2011

Этот пост больше для того, чтобы получать советы и идеи, а не решать проблемы.Это немного сложно объяснить, но я буду стараться изо всех сил.

У меня есть хранилище документов, которое состоит из уникального каталога с PDF, эти документы должны отображаться для конечного пользователя в «виртуальных» папкахтак как они должны быть видны во многих из них.То, что я называю виртуальными папками, представляет собой обычную иерархию каталогов в файловой системе, но окончательные документы должны быть взяты из репозитория PDF, упомянутого ранее.

Примеры:

repo/{dozens of PDF}
rootfolder/sub-folder1/sub-folder11/contracts1.php
          /sub-folder2/contracts1.php
          /sub_folder3/sub-folder31/contracts2.php
          /sub_folder4/sub-folder41/sub-folder42/sub-folder43/contracts3.php
          /sub-folder5/contracts5.php

Это был проектмой босс хотел быть готовым очень быстро, поэтому в данный момент я использую php-file-tree , который генерирует хороший древовидный способ навигации по папкам, конечный файл в каждой папкебудучи php-файлом со списком PDF.Он прекрасно работает, но для каждого изменения мне нужно редактировать эти php-файлы, и в будущем эту задачу должен выполнить кто-то другой (офисный пользователь, не имеющий знаний в области редактирования HTML / PHP).

Что бы вы мне, ребята, порекомендовали?

2 важных момента:

  1. PDF-файлы должны находиться в одном месте, в одном каталоге

  2. конечный пользователь должен видеть древовидную страницу

Спасибо.

fabien

Ответы [ 2 ]

0 голосов
/ 14 июня 2011

Я бы сделал дерево каталогов действительно виртуальным , т. Е. Вместо того, чтобы создавать его в файловой системе, я бы создал его в БД.Список файлов также будет в БД (т.е. имена файлов в БД, файлы - в файловой системе).Другая таблица БД будет использоваться для связи файлов с каталогами.

create table file (
    id integer primary key,
    name varchar(64) not null
) engine = InnoDB;

create table directory (
    id integer primary key,
    parent_id integer,
    name varchar(64) not null
) engine = InnoDB;

create table file_in_directory (
    file_id integer not null,
    directory_id integer not null,
    primary key (file_id, directory_id)
) engine = InnoDB;

insert into directory (id, parent_id, name) values
    (1, null, 'rootfolder'),
    (2, 1, 'sub-folder1'),
    (3, 1, 'sub-folder2'),
    (4, 1, 'sub-folder3'),
    (5, 1, 'sub-folder4'),
    (6, 1, 'sub-folder5'),
    (7, 2, 'sub-folder11'),
    (8, 4, 'sub-folder31'),
    (9, 5, 'sub-folder41'),
    (10, 9, 'sub-folder42'),
    (11, 10, 'sub-folder43');

insert into file (id, name) values
    (1, 'contracts1.php'),
    (2, 'contracts2.php'),
    (3, 'contracts3.php'),
    (4, 'contracts5.php');

insert into file_in_directory (file_id, directory_id) values
    (1, 7), -- rootfolder/sub-folder1/sub-folder11/contracts1.php
    (1, 3), -- rootfolder/sub-folder2/contracts1.php
    (2, 8), -- rootfolder/sub_folder3/sub-folder31/contracts2.php
    (3, 11), -- rootfolder/sub_folder4/sub-folder41/sub-folder42/sub-folder43/contracts3.php
    (4, 6); -- rootfolder/sub-folder5/contracts5.php
0 голосов
/ 14 июня 2011

Отказ от ответственности: Это, вероятно, немного много, но, может быть, все равно полезно* с Ext.tree.Panel (с одним деревом, являющимся вашим источником pdf, а вторым - с виртуальными каталогами)

сохранить окончательное дерево в базе данных илиxml-файл

создание мини-интерфейса администратора для офисного пользователя

создание представления для конечного пользователя, отображающего только дерево виртуальных каталогов сих PDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...