- hitting "create new page" button would lead to this screen
- page is regular browser-requested page, which will feature a few modal dialogs
- page title is "Create new page"
- next section allows user to define page name, as per screenshot, which is saved as a route
- choosing "change" opens modal that could be used to change page/route name, but it would be better/simpler if input field did this
- next section lets user choose page layout, which is inherited from site layout, and overridable
- next section lets user choose content type, I thought this could be a combobox expanded to 10 rows, single select obviously
- ideally we need to support whether page is a single instance of the CT, or a list
- potentially list page could have options, like 'paginate pages', etc
- in terms of UI, combo box of CTs could be on left, radio choice on right <single / list >, 'single' pre-selected
- next section is called "Location", and defines where in page hierarchy page will exist
- choosing "change location" opens modal, that shows page hierarchy, choosing a node will put current page under that node
See google sites that does mostly the same thing.
Suggested schema
-- --------------------------------------------------------
--
-- Table structure for table `page`
--
CREATE TABLE `page` (
`page_id` int(11) NOT NULL,
`parent_id` int(11) default NULL,
`order_id` int(11) NOT NULL default '0',
`level_id` int(11) NOT NULL default '0',
`layout_id` int(11) NOT NULL,
`content_type_id` int(11) NOT NULL,
`appears_in_nav` tinyint(1) NOT NULL default '1',
`are_comments_allowed` tinyint(4) NOT NULL,
`is_title_displayed` tinyint(4) NOT NULL,
PRIMARY KEY (`page_id`),
KEY `parent_id` (`parent_id`),
KEY `is_active` (`appears_in_nav`),
KEY `parent_id_2` (`parent_id`,`appears_in_nav`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `page_trans`
--
CREATE TABLE `page_trans` (
`page_trans_id` int(11) NOT NULL,
`site_id` int(11) NOT NULL,
`language_id` varchar(5) NOT NULL,
`title` varchar(255) default NULL,
`meta_desc` text,
`meta_kw` text NOT NULL,
PRIMARY KEY (`page_trans_id`,`language_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `route`
--
CREATE TABLE `route` (
`route_id` int(11) NOT NULL,
`site_id` int(11) NOT NULL,
`route` text character set latin1 NOT NULL,
`page_id` int(11) NOT NULL,
`content_id` int(11) NOT NULL,
PRIMARY KEY (`route_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;