Предоставление пользователям возможности писать CSS в DB для пользовательских макетов - PullRequest
4 голосов
/ 08 декабря 2010

В настоящее время я создаю веб-приложение (поверх Ruby on Rails), которое позволит пользователям стилизовать свои собственные области (персональные страницы блогов), и мне было интересно, каковы наилучшие способы сделать это?

Я думаю, что Liquid для шаблонов было бы хорошо, но как бы вы справились со стилем? Моя цель состояла в том, чтобы связать поле БД с каждым блогом, именуемым «стиль», в котором будет храниться пользовательская таблица стилей. Это лучший подход?

Я пробовал это до сих пор с помощью вспомогательного метода sanitize_css, но он просто удаляет теги "#stylebox", то есть ничего не отображается.

Есть идеи?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 08 декабря 2010

В настоящее время я также работаю над почти таким же требованием, как и вы.Я также пытаюсь создать CMS для пользователей, чтобы добавлять страницы, стилизовать их и т. Д.

Мой подход следующим образом

у каждого пользователя будет свой поддомен.(Я использую before_filter, чтобы получить поддомен текущего пользователя и загрузить его / ее веб-сайт)

Что касается стиля, я предпочитаю иметь таблицу стилей в качестве физического файла.Учитывая, что ваш метод будет иметь большую гибкость при редактировании таблицы стилей, мне не нравится идея иметь код таблицы стилей поверх моей страницы.Во-первых, я разрешаю пользователям загружать свои таблицы стилей (используя скрепку)

Поэтому, когда сайт загружается, я получу пути css из БД и загружу таблицу стилей из пути.

Позже я планирую прочитать файл и загрузить его в текстовую область, чтобы пользователи могли редактировать свои таблицы стилей и при сохранении переопределять существующий файл;

Для макетов я также использую жидкость

ура

Самера

0 голосов
/ 09 декабря 2010

Если вы собираетесь разрешить пользователям полностью контролировать свой CSS, то я бы, вероятно, вообще отказался от базы данных и использовал бы подход структурированной файловой системы.Вы можете создать поддомен или папку для каждого пользователя, который содержит main.css.Это также позволяет вам масштабироваться по мере роста возможностей вашего пользователя (изображения и т. Д.)

С учетом сказанного, как упоминал Робби, вы можете рассмотреть возможность ограничения того, какие стили пользователь может и не может контролировать.В противном случае вы, вероятно, быстро найдете, что вещи выходят из-под контроля.Для этого подхода вы, вероятно, захотите использовать базу данных для хранения значений свойств элементов, которые могут быть изменены.

0 голосов
/ 09 декабря 2010

Я бы честно разрешил изменять элементы на вашей странице, а затем сохранить каждое из этих правил стиля как поле (или объединить их в одно гигантское поле) в базе данных.Принудите некоторую проверку, чтобы убедиться, что они не используют забавные бизнесы (если они кодируют только для определенных div, им не нужно использовать какие-либо фигурные скобки.)

Затем сгенерируйтеCSS на лету.

Причина?Если вы когда-нибудь захотите показывать объявления на своем сайте и разрешите им просто загрузить весь свой CSS, они могут легко отключить показ объявлений.

Я думаю, что "безопаснее" контролироватьчто им разрешено в теме;уверен, что более продвинутые пользователи будут отмечены.Но вы действительно хотите стать следующим MySpace?; -)

0 голосов
/ 08 декабря 2010

если кода слишком много, сериализуйте данные и сохраните их в виде текста в дБ Это было бы намного лучше, я думаю

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