diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f6e0dcfc511fd..112744b894a2e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -54,3 +54,18 @@ plugins/system/webauthn/* @nikosdion media/plg_system_webauthn/* @nikosdion language/administrator/en-GB/en-GB.plg_system_webauthn.ini @nikosdion language/administrator/en-GB/en-GB.plg_system_webauthn.sys.ini @nikosdion + +# Workflow +administrator/components/com_workflow/* @bembelimen @hleithner +administrator/language/en-GB/com_workflow.ini @bembelimen @hleithner +administrator/language/en-GB/com_workflow.sys.ini @bembelimen @hleithner +administrator/language/en-GB/plg_workflow_publishing.ini @bembelimen @hleithner +administrator/language/en-GB/plg_workflow_publishing.sys.ini @bembelimen @hleithner +libraries/src/Form/Field/TransitionField.php @bembelimen @hleithner +libraries/src/Form/Field/Workflow* @bembelimen @hleithner +libraries/src/HTML/Helpers/Workflow* @bembelimen @hleithner +libraries/src/MVC/Model/Workflow* @bembelimen @hleithner +libraries/src/MVC/Model/Workflow* @bembelimen @hleithner +libraries/src/Workflow/* @bembelimen @hleithner +build/media_source/com_workflow/* @bembelimen @hleithner +plugins/workflow/* @bembelimen @hleithner diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index e1dc20147133c..f02edfed1efb8 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -6560,7 +6560,7 @@ private function contactItems(Table $tableItem): array } $parentId = $tableItem->id; - $componentId = ExtensionHelper::getExtensionRecord('com_fields')->extension_id; + $componentId = ExtensionHelper::getExtensionRecord('com_fields', 'component')->extension_id; // Add Contact Fields Menu Items. $menuItems = [ @@ -6576,7 +6576,7 @@ private function contactItems(Table $tableItem): array 'parent_id' => $parentId, 'level' => 2, 'component_id' => $componentId, - 'checked_out' => 0, + 'checked_out' => null, 'checked_out_time' => null, 'browserNav' => 0, 'access' => 0, @@ -6601,7 +6601,7 @@ private function contactItems(Table $tableItem): array 'parent_id' => $parentId, 'level' => 2, 'component_id' => $componentId, - 'checked_out' => 0, + 'checked_out' => null, 'checked_out_time' => null, 'browserNav' => 0, 'access' => 0, @@ -6626,7 +6626,7 @@ private function contactItems(Table $tableItem): array 'parent_id' => $parentId, 'level' => 2, 'component_id' => $componentId, - 'checked_out' => 0, + 'checked_out' => null, 'checked_out_time' => null, 'browserNav' => 0, 'access' => 0, @@ -6670,7 +6670,7 @@ private function finderItems(Table $tableItem): array } $parentId = $tableItem->id; - $componentId = ExtensionHelper::getExtensionRecord('com_finder')->extension_id; + $componentId = ExtensionHelper::getExtensionRecord('com_finder', 'component')->extension_id; // Add Finder Fields Menu Items. $menuItems = [ @@ -6686,7 +6686,7 @@ private function finderItems(Table $tableItem): array 'parent_id' => $parentId, 'level' => 2, 'component_id' => $componentId, - 'checked_out' => 0, + 'checked_out' => null, 'checked_out_time' => null, 'browserNav' => 0, 'access' => 0, @@ -6711,7 +6711,7 @@ private function finderItems(Table $tableItem): array 'parent_id' => $parentId, 'level' => 2, 'component_id' => $componentId, - 'checked_out' => 0, + 'checked_out' => null, 'checked_out_time' => null, 'browserNav' => 0, 'access' => 0, @@ -6736,7 +6736,7 @@ private function finderItems(Table $tableItem): array 'parent_id' => $parentId, 'level' => 2, 'component_id' => $componentId, - 'checked_out' => 0, + 'checked_out' => null, 'checked_out_time' => null, 'browserNav' => 0, 'access' => 0, @@ -6761,7 +6761,7 @@ private function finderItems(Table $tableItem): array 'parent_id' => $parentId, 'level' => 2, 'component_id' => $componentId, - 'checked_out' => 0, + 'checked_out' => null, 'checked_out_time' => null, 'browserNav' => 0, 'access' => 0, @@ -6786,7 +6786,7 @@ private function finderItems(Table $tableItem): array 'parent_id' => $parentId, 'level' => 2, 'component_id' => $componentId, - 'checked_out' => 0, + 'checked_out' => null, 'checked_out_time' => null, 'browserNav' => 0, 'access' => 0, diff --git a/administrator/components/com_admin/sql/updates/mysql/4.0.0-2018-05-15.sql b/administrator/components/com_admin/sql/updates/mysql/4.0.0-2018-05-15.sql index 7bbedc437e6d4..b0c2b3115e08c 100644 --- a/administrator/components/com_admin/sql/updates/mysql/4.0.0-2018-05-15.sql +++ b/administrator/components/com_admin/sql/updates/mysql/4.0.0-2018-05-15.sql @@ -10,7 +10,6 @@ CREATE TABLE IF NOT EXISTS `#__workflows` ( `description` text NOT NULL, `extension` varchar(50) NOT NULL, `default` tinyint(1) NOT NULL DEFAULT 0, - `core` tinyint(1) NOT NULL DEFAULT 0, `ordering` int(11) NOT NULL DEFAULT 0, `created` datetime NOT NULL, `created_by` int(10) NOT NULL DEFAULT 0, @@ -34,8 +33,8 @@ CREATE TABLE IF NOT EXISTS `#__workflows` ( -- Dumping data for table `#__workflows` -- -INSERT INTO `#__workflows` (`id`, `asset_id`, `published`, `title`, `description`, `extension`, `default`, `core`,`ordering`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`) VALUES -(1, 0, 1, 'COM_WORKFLOW_DEFAULT_WORKFLOW', '', 'com_content', 1, 1, 1, CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, 0); +INSERT INTO `#__workflows` (`id`, `asset_id`, `published`, `title`, `description`, `extension`, `default`, `ordering`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`) VALUES +(1, 0, 1, 'COM_WORKFLOW_BASIC_WORKFLOW', '', 'com_content.article', 1, 1, CURRENT_TIMESTAMP(), 0, CURRENT_TIMESTAMP(), 0, NULL, 0); -- -- Table structure for table `#__workflow_associations` @@ -64,7 +63,6 @@ CREATE TABLE IF NOT EXISTS `#__workflow_stages` ( `published` tinyint(1) NOT NULL DEFAULT 0, `title` varchar(255) NOT NULL, `description` text NOT NULL, - `condition` int(10) DEFAULT 0, `default` tinyint(1) NOT NULL DEFAULT 0, `checked_out_time` datetime, `checked_out` int(10) NOT NULL DEFAULT 0, @@ -80,11 +78,8 @@ CREATE TABLE IF NOT EXISTS `#__workflow_stages` ( -- Dumping data for table `#__workflow_stages` -- -INSERT INTO `#__workflow_stages` (`id`, `asset_id`, `ordering`, `workflow_id`, `published`, `title`, `description`, `condition`, `default`, `checked_out_time`, `checked_out`) VALUES -(1, 0, 1, 1, 1, 'JUNPUBLISHED', '', 0, 1, NULL, 0), -(2, 0, 2, 1, 1, 'JPUBLISHED', '', 1, 0, NULL, 0), -(3, 0, 3, 1, 1, 'JTRASHED', '', -2, 0, NULL, 0), -(4, 0, 4, 1, 1, 'JARCHIVED', '', 2, 0, NULL, 0); +INSERT INTO `#__workflow_stages` (`id`, `asset_id`, `ordering`, `workflow_id`, `published`, `title`, `description`, `default`, `checked_out_time`, `checked_out`) VALUES +(1, 0, 1, 1, 1, 'COM_WORKFLOW_BASIC_STAGE', '', 1, NULL, 0); -- -- Table structure for table `#__workflow_transitions` @@ -100,6 +95,7 @@ CREATE TABLE IF NOT EXISTS `#__workflow_transitions` ( `description` text NOT NULL, `from_stage_id` int(10) NOT NULL, `to_stage_id` int(10) NOT NULL, + `options` text NOT NULL, `checked_out_time` datetime, `checked_out` int(10) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), @@ -115,21 +111,31 @@ CREATE TABLE IF NOT EXISTS `#__workflow_transitions` ( -- Dumping data for table `#__workflow_transitions` -- -INSERT INTO `#__workflow_transitions` (`id`, `asset_id`, `published`, `ordering`, `workflow_id`, `title`, `description`, `from_stage_id`, `to_stage_id`, `checked_out_time`, `checked_out`) VALUES -(1, 0, 1, 1, 1, 'Unpublish', '', -1, 1, NULL, 0), -(2, 0, 1, 2, 1, 'Publish', '', -1, 2, NULL, 0), -(3, 0, 1, 3, 1, 'Trash', '', -1, 3, NULL, 0), -(4, 0, 1, 4, 1, 'Archive', '', -1, 4, NULL, 0); +INSERT INTO `#__workflow_transitions` (`id`, `asset_id`, `published`, `ordering`, `workflow_id`, `title`, `description`, `from_stage_id`, `to_stage_id`, `options`, `checked_out_time`, `checked_out`) VALUES +(1, 0, 1, 1, 1, 'Unpublish', '', -1, 1, '{"publishing":"0"}', NULL, 0), +(2, 0, 1, 2, 1, 'Publish', '', -1, 1, '{"publishing":"1"}', NULL, 0), +(3, 0, 1, 3, 1, 'Trash', '', -1, 1, '{"publishing":"-2"}', NULL, 0), +(4, 0, 1, 4, 1, 'Archive', '', -1, 1, '{"publishing":"2"}', NULL, 0), +(5, 0, 1, 5, 1, 'Feature', '', -1, 1, '{"featuring":"1"}', NULL, 0), +(6, 0, 1, 6, 1, 'Unfeature', '', -1, 1, '{"featuring":"0"}', NULL, 0), +(7, 0, 1, 7, 1, 'Publish & Feature', '', -1, 1, '{"publishing":"1","featuring":"1"}', NULL, 0); -- -- Creating extension entry -- +-- Note that the old pseudo null dates have to be used for the `checked_out_time` +-- column because the conversion to real null dates will be done with a later +-- update SQL script. +-- INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0); +(0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 1, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(0, 'plg_workflow_publishing', 'plugin', 'publishing', 'workflow', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(0, 'plg_workflow_featuring', 'plugin', 'featuring', 'workflow', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0), +(0, 'plg_workflow_notification', 'plugin', 'notification', 'workflow', 0, 1, 1, 0, '', '{}', 0, '0000-00-00 00:00:00', 0, 0); -- -- Creating Associations for existing content -- INSERT INTO `#__workflow_associations` (`item_id`, `stage_id`, `extension`) -SELECT `id`, CASE WHEN `state` = -2 THEN 3 WHEN `state` = 0 THEN 1 WHEN `state` = 2 THEN 4 ELSE 2 END, 'com_content' FROM `#__content`; +SELECT `id`, 1, 'com_content.article' FROM `#__content`; diff --git a/administrator/components/com_admin/sql/updates/mysql/4.0.0-2020-05-29.sql b/administrator/components/com_admin/sql/updates/mysql/4.0.0-2020-05-29.sql new file mode 100644 index 0000000000000..51ab88b3a6ae4 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/4.0.0-2020-05-29.sql @@ -0,0 +1,39 @@ +ALTER TABLE `#__extensions` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__menu` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__modules` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__tags` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__update_sites` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__user_notes` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__workflows` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__workflow_stages` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__workflow_transitions` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__banners` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__banner_clients` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__contact_details` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__content` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__finder_filters` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__newsfeeds` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__categories` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__fields` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__fields_groups` MODIFY `checked_out` INT(10) UNSIGNED; +ALTER TABLE `#__ucm_content` MODIFY `core_checked_out_user_id` INT(10) UNSIGNED; + +UPDATE `#__extensions` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__menu` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__modules` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__tags` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__update_sites` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__user_notes` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__workflows` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__workflow_stages` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__workflow_transitions` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__banners` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__banner_clients` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__contact_details` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__content` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__finder_filters` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__newsfeeds` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__categories` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__fields` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__fields_groups` SET `checked_out` = null WHERE `checked_out` = 0; +UPDATE `#__ucm_content` SET `core_checked_out_user_id` = null WHERE `checked_out` = 0; diff --git a/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2018-05-15.sql b/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2018-05-15.sql index a41ff39e4f764..ec7f6c3508ae3 100644 --- a/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2018-05-15.sql +++ b/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2018-05-15.sql @@ -10,7 +10,6 @@ CREATE TABLE IF NOT EXISTS "#__workflows" ( "description" text NOT NULL, "extension" varchar(50) NOT NULL, "default" smallint NOT NULL DEFAULT 0, - "core" smallint NOT NULL DEFAULT 0, "ordering" bigint NOT NULL DEFAULT 0, "created" timestamp without time zone NOT NULL, "created_by" bigint DEFAULT 0 NOT NULL, @@ -31,8 +30,8 @@ CREATE INDEX "#__workflows_idx_modified" ON "#__workflows" ("modified"); CREATE INDEX "#__workflows_idx_modified_by" ON "#__workflows" ("modified_by"); CREATE INDEX "#__workflows_idx_checked_out" ON "#__workflows" ("checked_out"); -INSERT INTO "#__workflows" ("id", "asset_id", "published", "title", "description", "extension", "default", "core", "ordering", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out") VALUES -(1, 0, 1, 'COM_WORKFLOW_DEFAULT_WORKFLOW', '', 'com_content', 1, 1, 1, CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, 0); +INSERT INTO "#__workflows" ("id", "asset_id", "published", "title", "description", "extension", "default", "ordering", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out") VALUES +(1, 0, 1, 'COM_WORKFLOW_BASIC_WORKFLOW', '', 'com_content.article', 1, 1, CURRENT_TIMESTAMP, 0, CURRENT_TIMESTAMP, 0, NULL, 0); -- -- Table structure for table "#__workflow_associations" @@ -64,7 +63,6 @@ CREATE TABLE IF NOT EXISTS "#__workflow_stages" ( "published" smallint NOT NULL DEFAULT 0, "title" varchar(255) NOT NULL, "description" text NOT NULL, - "condition" bigint DEFAULT 0 NOT NULL, "default" smallint NOT NULL DEFAULT 0, "checked_out_time" timestamp without time zone, "checked_out" bigint DEFAULT 0 NOT NULL, @@ -80,11 +78,8 @@ CREATE INDEX "#__workflow_stages_idx_checked_out" ON "#__workflow_stages" ("chec -- Dumping data for table "#__workflow_stages" -- -INSERT INTO "#__workflow_stages" ("id", "asset_id", "ordering", "workflow_id", "published", "title", "description", "condition", "default", "checked_out_time", "checked_out") VALUES -(1, 0, 1, 1, 1, 'JUNPUBLISHED', '', 0, 1, NULL, 0), -(2, 0, 2, 1, 1, 'JPUBLISHED', '', 1, 0, NULL, 0), -(3, 0, 3, 1, 1, 'JTRASHED', '', -2, 0, NULL, 0), -(4, 0, 4, 1, 1, 'JARCHIVED', '', 2, 0, NULL, 0); +INSERT INTO "#__workflow_stages" ("id", "asset_id", "ordering", "workflow_id", "published", "title", "description", "default", "checked_out_time", "checked_out") VALUES +(1, 0, 1, 1, 1, 'COM_WORKFLOW_BASIC_STAGE', '', 1, NULL, 0); -- -- Table structure for table "#__workflow_transitions" @@ -100,6 +95,7 @@ CREATE TABLE IF NOT EXISTS "#__workflow_transitions" ( "description" text NOT NULL, "from_stage_id" bigint DEFAULT 0 NOT NULL, "to_stage_id" bigint DEFAULT 0 NOT NULL, + "options" text NOT NULL, "checked_out_time" timestamp without time zone, "checked_out" bigint DEFAULT 0 NOT NULL, PRIMARY KEY ("id") @@ -111,21 +107,31 @@ CREATE INDEX "#__workflow_transitions_idx_to_stage_id" ON "#__workflow_transitio CREATE INDEX "#__workflow_transitions_idx_workflow_id" ON "#__workflow_transitions" ("workflow_id"); CREATE INDEX "#__workflow_transitions_idx_checked_out" ON "#__workflow_transitions" ("checked_out"); -INSERT INTO "#__workflow_transitions" ("id", "asset_id", "published", "ordering", "workflow_id", "title", "description", "from_stage_id", "to_stage_id", "checked_out_time", "checked_out") VALUES -(1, 0, 1, 1, 1, 'Unpublish', '', -1, 1, NULL, 0), -(2, 0, 1, 2, 1, 'Publish', '', -1, 2, NULL, 0), -(3, 0, 1, 3, 1, 'Trash', '', -1, 3, NULL, 0), -(4, 0, 1, 4, 1, 'Archive', '', -1, 4, NULL, 0); +INSERT INTO "#__workflow_transitions" ("id", "asset_id", "published", "ordering", "workflow_id", "title", "description", "from_stage_id", "to_stage_id", "options", "checked_out_time", "checked_out") VALUES +(1, 0, 1, 1, 1, 'Unpublish', '', -1, 1, '{"publishing":"0"}', NULL, 0), +(2, 0, 1, 2, 1, 'Publish', '', -1, 1, '{"publishing":"1"}', NULL, 0), +(3, 0, 1, 3, 1, 'Trash', '', -1, 1, '{"publishing":"-2"}', NULL, 0), +(4, 0, 1, 4, 1, 'Archive', '', -1, 1, '{"publishing":"2"}', NULL, 0), +(5, 0, 1, 5, 1, 'Feature', '', -1, 1, '{"featuring":"1"}', NULL, 0), +(6, 0, 1, 6, 1, 'Unfeature', '', -1, 1, '{"featuring":"0"}', NULL, 0), +(7, 0, 1, 7, 1, 'Publish & Feature', '', -1, 1, '{"publishing":"1","featuring":"1"}', NULL, 0); -- -- Creating extension entry -- +-- Note that the old pseudo null dates have to be used for the "checked_out_time" +-- column because the conversion to real null dates will be done with a later +-- update SQL script. +-- INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") VALUES -(0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0); +(0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 1, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(0, 'plg_workflow_publishing', 'plugin', 'publishing', 'workflow', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(0, 'plg_workflow_featuring', 'plugin', 'featuring', 'workflow', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0), +(0, 'plg_workflow_notification', 'plugin', 'notification', 'workflow', 0, 1, 1, 0, '', '{}', 0, '1970-01-01 00:00:00', 0, 0); -- -- Creating Associations for existing content -- INSERT INTO "#__workflow_associations" ("item_id", "stage_id", "extension") -SELECT "id", CASE WHEN "state" = -2 THEN 3 WHEN "state" = 0 THEN 1 WHEN "state" = 2 THEN 4 ELSE 2 END, 'com_content' FROM "#__content"; +SELECT "id", 1, 'com_content.article' FROM "#__content"; diff --git a/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2020-05-29.sql b/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2020-05-29.sql new file mode 100644 index 0000000000000..de1f5e820246a --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2020-05-29.sql @@ -0,0 +1,58 @@ +ALTER TABLE "#__extensions" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__extensions" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__menu" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__menu" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__modules" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__modules" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__tags" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__tags" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__update_sites" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__update_sites" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__user_notes" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__user_notes" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__workflows" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__workflows" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__workflow_stages" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__workflow_stages" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__workflow_transitions" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__workflow_transitions" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__banners" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__banners" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__banner_clients" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__banner_clients" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__contact_details" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__contact_details" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__content" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__content" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__finder_filters" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__finder_filters" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__newsfeeds" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__newsfeeds" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__categories" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__categories" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__fields" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__fields" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__fields_groups" ALTER COLUMN "checked_out" DROP DEFAULT; +ALTER TABLE "#__fields_groups" ALTER COLUMN "checked_out" DROP NOT NULL; +ALTER TABLE "#__ucm_content" ALTER COLUMN "core_checked_out_user_id" DROP DEFAULT; +ALTER TABLE "#__ucm_content" ALTER COLUMN "core_checked_out_user_id" DROP NOT NULL; + +UPDATE "#__extensions" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__menu" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__modules" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__tags" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__update_sites" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__user_notes" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__workflows" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__workflow_stages" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__workflow_transitions" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__banners" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__banner_clients" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__contact_details" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__content" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__finder_filters" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__newsfeeds" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__categories" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__fields" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__fields_groups" SET "checked_out" = null WHERE "checked_out" = 0; +UPDATE "#__ucm_content" SET "core_checked_out_user_id" = null WHERE "checked_out" = 0; diff --git a/administrator/components/com_banners/src/Helper/BannersHelper.php b/administrator/components/com_banners/src/Helper/BannersHelper.php index c0fa92d8925fa..fbf19892f3fe3 100644 --- a/administrator/components/com_banners/src/Helper/BannersHelper.php +++ b/administrator/components/com_banners/src/Helper/BannersHelper.php @@ -53,7 +53,7 @@ public static function updateReset() ->extendWhere( 'AND', [ - $db->quoteName('checked_out') . ' = 0', + $db->quoteName('checked_out') . ' IS NULL', $db->quoteName('checked_out') . ' = :userId', ], 'OR' diff --git a/administrator/components/com_banners/src/Table/BannerTable.php b/administrator/components/com_banners/src/Table/BannerTable.php index 0437d5275ef0e..5a4f0c3c672c7 100644 --- a/administrator/components/com_banners/src/Table/BannerTable.php +++ b/administrator/components/com_banners/src/Table/BannerTable.php @@ -352,11 +352,11 @@ public function stick($pks = null, $state = 1, $userId = 0) } // Verify checkout - if ($table->checked_out == 0 || $table->checked_out == $userId) + if (is_null($table->checked_out) || $table->checked_out == $userId) { // Change the state $table->sticky = $state; - $table->checked_out = 0; + $table->checked_out = null; $table->checked_out_time = null; // Check the row diff --git a/administrator/components/com_banners/src/Table/ClientTable.php b/administrator/components/com_banners/src/Table/ClientTable.php index 9cc783f6f83e0..81e9cdcec9278 100644 --- a/administrator/components/com_banners/src/Table/ClientTable.php +++ b/administrator/components/com_banners/src/Table/ClientTable.php @@ -100,7 +100,7 @@ public function publish($pks = null, $state = 1, $userId = 0) $query->extendWhere( 'AND', [ - $this->_db->quoteName('checked_out') . ' = 0', + $this->_db->quoteName('checked_out') . ' IS NULL', $this->_db->quoteName('checked_out') . ' = :userId', ], 'OR' diff --git a/administrator/components/com_banners/src/View/Banner/HtmlView.php b/administrator/components/com_banners/src/View/Banner/HtmlView.php index ffb8f44a51c41..4d887601f9a7b 100644 --- a/administrator/components/com_banners/src/View/Banner/HtmlView.php +++ b/administrator/components/com_banners/src/View/Banner/HtmlView.php @@ -98,7 +98,7 @@ protected function addToolbar(): void $user = Factory::getUser(); $userId = $user->id; $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $userId); // Since we don't track these assets at the item level, use the category id. $canDo = ContentHelper::getActions('com_banners', 'category', $this->item->catid); diff --git a/administrator/components/com_banners/src/View/Client/HtmlView.php b/administrator/components/com_banners/src/View/Client/HtmlView.php index 4612a379f588e..e7ab4f74e8f28 100644 --- a/administrator/components/com_banners/src/View/Client/HtmlView.php +++ b/administrator/components/com_banners/src/View/Client/HtmlView.php @@ -108,7 +108,7 @@ protected function addToolbar(): void $user = Factory::getUser(); $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->id); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $user->id); $canDo = $this->canDo; ToolbarHelper::title( diff --git a/administrator/components/com_banners/tmpl/banners/default.php b/administrator/components/com_banners/tmpl/banners/default.php index 02cdcb03eb530..3793664f1cd79 100644 --- a/administrator/components/com_banners/tmpl/banners/default.php +++ b/administrator/components/com_banners/tmpl/banners/default.php @@ -95,7 +95,7 @@ $item->cat_link = Route::_('index.php?option=com_categories&extension=com_banners&task=edit&type=other&cid[]=' . $item->catid); $canCreate = $user->authorise('core.create', 'com_banners.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_banners.category.' . $item->catid); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || is_null($item->checked_out); $canChange = $user->authorise('core.edit.state', 'com_banners.category.' . $item->catid) && $canCheckin; ?> diff --git a/administrator/components/com_banners/tmpl/clients/default.php b/administrator/components/com_banners/tmpl/clients/default.php index ddc481883c228..021b6a47fbdc1 100644 --- a/administrator/components/com_banners/tmpl/clients/default.php +++ b/administrator/components/com_banners/tmpl/clients/default.php @@ -96,7 +96,7 @@ items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_banners'); $canEdit = $user->authorise('core.edit', 'com_banners'); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || is_null($item->checked_out); $canChange = $user->authorise('core.edit.state', 'com_banners') && $canCheckin; ?> diff --git a/administrator/components/com_categories/src/View/Category/HtmlView.php b/administrator/components/com_categories/src/View/Category/HtmlView.php index f6a938cf8a045..e792d3d367bba 100644 --- a/administrator/components/com_categories/src/View/Category/HtmlView.php +++ b/administrator/components/com_categories/src/View/Category/HtmlView.php @@ -135,7 +135,7 @@ protected function addToolbar() $userId = $user->id; $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $userId); // Avoid nonsense situation. if ($extension == 'com_categories') diff --git a/administrator/components/com_categories/tmpl/categories/default.php b/administrator/components/com_categories/tmpl/categories/default.php index 97da8347a6ebf..2dc49311a1e27 100644 --- a/administrator/components/com_categories/tmpl/categories/default.php +++ b/administrator/components/com_categories/tmpl/categories/default.php @@ -129,7 +129,7 @@ items as $i => $item) : ?> authorise('core.edit', $extension . '.category.' . $item->id); - $canCheckin = $user->authorise('core.admin', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; + $canCheckin = $user->authorise('core.admin', 'com_checkin') || $item->checked_out == $userId || is_null($item->checked_out); $canEditOwn = $user->authorise('core.edit.own', $extension . '.category.' . $item->id) && $item->created_user_id == $userId; $canChange = $user->authorise('core.edit.state', $extension . '.category.' . $item->id) && $canCheckin; diff --git a/administrator/components/com_contact/src/Service/HTML/Icon.php b/administrator/components/com_contact/src/Service/HTML/Icon.php index da96487953847..943a6dca166c2 100644 --- a/administrator/components/com_contact/src/Service/HTML/Icon.php +++ b/administrator/components/com_contact/src/Service/HTML/Icon.php @@ -123,7 +123,7 @@ public static function edit($contact, $params, $attribs = array(), $legacy = fal // Show checked_out icon if the contact is checked out by a different user if (property_exists($contact, 'checked_out') && property_exists($contact, 'checked_out_time') - && $contact->checked_out > 0 + && !is_null($contact->checked_out) && $contact->checked_out !== $user->get('id')) { $checkoutUser = Factory::getUser($contact->checked_out); diff --git a/administrator/components/com_contact/src/View/Contact/HtmlView.php b/administrator/components/com_contact/src/View/Contact/HtmlView.php index 49a99dea63583..60b89ea1966fe 100644 --- a/administrator/components/com_contact/src/View/Contact/HtmlView.php +++ b/administrator/components/com_contact/src/View/Contact/HtmlView.php @@ -101,7 +101,7 @@ protected function addToolbar() $user = Factory::getUser(); $userId = $user->id; $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $userId); // Since we don't track these assets at the item level, use the category id. $canDo = ContentHelper::getActions('com_contact', 'category', $this->item->catid); diff --git a/administrator/components/com_contact/tmpl/contacts/default.php b/administrator/components/com_contact/tmpl/contacts/default.php index f012c909480b7..c7d88168e8eba 100644 --- a/administrator/components/com_contact/tmpl/contacts/default.php +++ b/administrator/components/com_contact/tmpl/contacts/default.php @@ -94,7 +94,7 @@ foreach ($this->items as $i => $item) : $canCreate = $user->authorise('core.create', 'com_contact.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_contact.category.' . $item->catid); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || is_null($item->checked_out); $canEditOwn = $user->authorise('core.edit.own', 'com_contact.category.' . $item->catid) && $item->created_by == $userId; $canChange = $user->authorise('core.edit.state', 'com_contact.category.' . $item->catid) && $canCheckin; diff --git a/administrator/components/com_content/config.xml b/administrator/components/com_content/config.xml index 67901887c1ead..62b34237ba614 100644 --- a/administrator/components/com_content/config.xml +++ b/administrator/components/com_content/config.xml @@ -1039,13 +1039,17 @@ - + +
diff --git a/administrator/components/com_content/forms/article.xml b/administrator/components/com_content/forms/article.xml index ec4a92fd4e4e8..8e9aa6d68f135 100644 --- a/administrator/components/com_content/forms/article.xml +++ b/administrator/components/com_content/forms/article.xml @@ -68,11 +68,18 @@ /> + name="state" + type="list" + label="JSTATUS" + class="custom-select-color-state" + size="1" + default="1" + > + + + + + + + + + JYES - - - - - + - + true, + 'core.state' => true, + ]; + /** * The trashed condition * @@ -171,6 +177,24 @@ public function getContexts(): array return $contexts; } + /** + * Returns valid contexts + * + * @return array + * + * @since 4.0.0 + */ + public function getWorkflowContexts(): array + { + Factory::getLanguage()->load('com_content', JPATH_ADMINISTRATOR); + + $contexts = array( + 'com_content.article' => Text::_('COM_CONTENT') + ); + + return $contexts; + } + /** * Returns the table for the count items functions for the given section. * @@ -199,6 +223,38 @@ public function getWorkflowTableBySection(?string $section = null): string return '#__content'; } + /** + * Returns the model name, based on the context + * + * @param string $context The context of the workflow + * + * @return string + */ + public function getModelName($context): string + { + $parts = explode('.', $context); + + if (count($parts) < 2) + { + return ''; + } + + array_shift($parts); + + $modelname = array_shift($parts); + + if ($modelname === 'article' && Factory::getApplication()->isClient('site')) + { + return 'Form'; + } + elseif ($modelname === 'featured' && Factory::getApplication()->isClient('administrator')) + { + return 'Article'; + } + + return ucfirst($modelname); + } + /** * Method to filter transitions by given id of state. * @@ -228,7 +284,7 @@ public function countItems(array $items, string $section) { $config = (object) array( 'related_tbl' => 'content', - 'state_col' => 'condition', + 'state_col' => 'state', 'group_col' => 'catid', 'relation_type' => 'category_or_group', 'uses_workflows' => true, @@ -277,19 +333,4 @@ public function prepareForm(Form $form, $data) { ContentHelper::onPrepareForm($form, $data); } - - /** - * Method to change state of multiple ids - * - * @param array $pks Array of IDs - * @param int $condition Condition of the workflow state - * - * @return boolean - * - * @since 4.0.0 - */ - public static function updateContentState(array $pks, int $condition): bool - { - return ContentHelper::updateContentState($pks, $condition); - } } diff --git a/administrator/components/com_content/src/Helper/ContentHelper.php b/administrator/components/com_content/src/Helper/ContentHelper.php index f5ffc7d293d5e..664b098f2527a 100644 --- a/administrator/components/com_content/src/Helper/ContentHelper.php +++ b/administrator/components/com_content/src/Helper/ContentHelper.php @@ -67,49 +67,12 @@ public static function filterTransitions(array $transitions, int $pk, int $workf $transitions, function ($var) use ($pk, $workflow_id) { - return in_array($var['from_stage_id'], [-1, $pk]) && $var['to_stage_id'] != $pk && $workflow_id == $var['workflow_id']; + return in_array($var['from_stage_id'], [-1, $pk]) && $workflow_id == $var['workflow_id']; } ) ); } - /** - * Method to change state of multiple ids - * - * @param array $pks Array of IDs - * @param int $condition Condition of the workflow state - * - * @return boolean - * - * @since 4.0.0 - */ - public static function updateContentState(array $pks, int $condition): bool - { - if (empty($pks)) - { - return false; - } - - try - { - $db = Factory::getDbo(); - $query = $db->getQuery(true); - - $query->update($db->quoteName('#__content')) - ->set($db->quoteName('state') . ' = :condition') - ->whereIn($db->quoteName('id'), $pks) - ->bind(':condition', $condition, ParameterType::INTEGER); - - $db->setQuery($query)->execute(); - } - catch (\Exception $e) - { - return false; - } - - return true; - } - /** * Prepares a form * diff --git a/administrator/components/com_content/src/Model/ArticleModel.php b/administrator/components/com_content/src/Model/ArticleModel.php index 1b0142c7a5c04..042f121847689 100644 --- a/administrator/components/com_content/src/Model/ArticleModel.php +++ b/administrator/components/com_content/src/Model/ArticleModel.php @@ -11,14 +11,19 @@ \defined('_JEXEC') or die; +use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Form\Form; +use Joomla\CMS\Form\FormFactoryInterface; use Joomla\CMS\Helper\TagsHelper; use Joomla\CMS\Language\Associations; use Joomla\CMS\Language\LanguageHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Log\Log; +use Joomla\CMS\MVC\Factory\MVCFactoryInterface; use Joomla\CMS\MVC\Model\AdminModel; +use Joomla\CMS\MVC\Model\WorkflowBehaviorTrait; +use Joomla\CMS\MVC\Model\WorkflowModelInterface; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\String\PunycodeHelper; use Joomla\CMS\Table\Category; @@ -30,7 +35,6 @@ use Joomla\Component\Content\Administrator\Extension\ContentComponent; use Joomla\Component\Content\Administrator\Helper\ContentHelper; use Joomla\Component\Fields\Administrator\Helper\FieldsHelper; -use Joomla\Component\Workflow\Administrator\Table\StageTable; use Joomla\Database\ParameterType; use Joomla\Registry\Registry; use Joomla\Utilities\ArrayHelper; @@ -41,8 +45,10 @@ * @since 1.6 */ -class ArticleModel extends AdminModel +class ArticleModel extends AdminModel implements WorkflowModelInterface { + use WorkflowBehaviorTrait; + /** * The prefix to use with controller messages. * @@ -67,6 +73,52 @@ class ArticleModel extends AdminModel */ protected $associationsContext = 'com_content.item'; + /** + * The event to trigger before changing featured status one or more items. + * + * @var string + * @since 4.0 + */ + protected $event_before_change_featured = null; + + /** + * The event to trigger after changing featured status one or more items. + * + * @var string + * @since 4.0 + */ + protected $event_after_change_featured = null; + + /** + * Constructor. + * + * @param array $config An array of configuration options (name, state, dbo, table_path, ignore_request). + * @param MVCFactoryInterface $factory The factory. + * @param FormFactoryInterface $formFactory The form factory. + * + * @since 1.6 + * @throws \Exception + */ + public function __construct($config = array(), MVCFactoryInterface $factory = null, FormFactoryInterface $formFactory = null) + { + $config['events_map'] = $config['events_map'] ?? []; + + $config['events_map'] = array_merge( + ['featured' => 'content'], + $config['events_map'] + ); + + parent::__construct($config, $factory, $formFactory); + + // Set the featured status change events + $this->event_before_change_featured = $config['event_before_change_featured'] ?? $this->event_before_change_featured; + $this->event_before_change_featured = $this->event_before_change_featured ?? 'onContentBeforeChangeFeatured'; + $this->event_after_change_featured = $config['event_after_change_featured'] ?? $this->event_after_change_featured; + $this->event_after_change_featured = $this->event_after_change_featured ?? 'onContentAfterChangeFeatured'; + + $this->setUpWorkflow('com_content.article'); + } + /** * Function that can be overriden to do any data cleanup after batch copying data * @@ -111,12 +163,7 @@ protected function cleanupPostBatchCopy(TableInterface $table, $newId, $oldId) } } - // Copy workflow association - $workflow = new Workflow(['extension' => 'com_content']); - - $assoc = $workflow->getAssociation((int) $oldId); - - $workflow->createAssociation((int) $newId, (int) $assoc->stage_id); + $this->workflowCleanupBatchMove($oldId, $newId); // Register FieldsHelper \JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); @@ -140,50 +187,6 @@ protected function cleanupPostBatchCopy(TableInterface $table, $newId, $oldId) Factory::getApplication()->triggerEvent('onContentAfterSave', array('com_content.article', &$this->table, false, $fieldsData)); } - /** - * Batch change workflow stage or current. - * - * @param integer $value The workflow stage ID. - * @param array $pks An array of row IDs. - * @param array $contexts An array of item contexts. - * - * @return mixed An array of new IDs on success, boolean false on failure. - * - * @since 4.0.0 - */ - protected function batchWorkflowStage(int $value, array $pks, array $contexts) - { - $user = Factory::getUser(); - - if (!$user->authorise('core.admin', 'com_content')) - { - $this->setError(Text::_('JLIB_APPLICATION_ERROR_BATCH_CANNOT_EXECUTE_TRANSITION')); - } - - // Get workflow stage information - $stage = new StageTable($this->_db); - - if (empty($value) || !$stage->load($value)) - { - Factory::getApplication()->enqueueMessage(Text::sprintf('JGLOBAL_BATCH_WORKFLOW_STAGE_ROW_NOT_FOUND'), 'error'); - - return false; - } - - if (empty($pks)) - { - Factory::getApplication()->enqueueMessage(Text::sprintf('JGLOBAL_BATCH_WORKFLOW_STAGE_ROW_NOT_FOUND'), 'error'); - - return false; - } - - $workflow = new Workflow(['extension' => 'com_content']); - - // Update content state value and workflow associations - return ContentHelper::updateContentState($pks, (int) $stage->condition) - && $workflow->updateAssociations($pks, $value); - } - /** * Batch move categories to a new category. * @@ -298,23 +301,12 @@ protected function batchMove($value, $pks, $contexts) */ protected function canDelete($record) { - if (!empty($record->id)) + if (empty($record->id) || ($record->state != -2 && !Factory::getApplication()->isClient('api'))) { - $stage = new StageTable($this->getDbo()); - - $workflow = new Workflow(['extension' => 'com_content']); - - $assoc = $workflow->getAssociation((int) $record->id); - - if (!$stage->load($assoc->stage_id) || ($stage->condition != ContentComponent::CONDITION_TRASHED && !Factory::getApplication()->isClient('api'))) - { - return false; - } - - return Factory::getUser()->authorise('core.delete', 'com_content.article.' . (int) $record->id); + return false; } - return false; + return Factory::getUser()->authorise('core.delete', 'com_content.article.' . (int) $record->id); } /** @@ -390,114 +382,9 @@ protected function prepareTable($table) */ public function publish(&$pks, $value = 1) { - $input = Factory::getApplication()->input; - - $user = Factory::getUser(); - $table = $this->getTable(); - $pks = (array) $pks; - $value = (int) $value; - - $itrans = $input->get('publish_transitions', [], 'array'); - - // Include the plugins for the change of state event. - PluginHelper::importPlugin($this->events_map['change_state']); - - $db = $this->getDbo(); - $query = $db->getQuery(true); - - $query->select( - [ - $db->quoteName('wt.id'), - $db->quoteName('wa.item_id'), - ] - ) - ->from( - [ - $db->quoteName('#__workflow_transitions', 'wt'), - $db->quoteName('#__workflow_stages', 'ws'), - $db->quoteName('#__workflow_stages', 'ws2'), - $db->quoteName('#__workflow_associations', 'wa'), - ] - ) - ->where( - [ - $db->quoteName('wt.to_stage_id') . ' = ' . $db->quoteName('ws.id'), - $db->quoteName('wa.stage_id') . ' = ' . $db->quoteName('ws2.id'), - $db->quoteName('wt.workflow_id') . ' = ' . $db->quoteName('ws.workflow_id'), - $db->quoteName('wt.workflow_id') . ' = ' . $db->quoteName('ws2.workflow_id'), - $db->quoteName('wt.to_stage_id') . ' != ' . $db->quoteName('wa.stage_id'), - $db->quoteName('wa.extension') . ' = ' . $db->quote('com_content'), - $db->quoteName('ws.condition') . ' = :condition', - ] - ) - ->extendWhere( - 'AND', - [ - $db->quoteName('wt.from_stage_id') . ' = -1', - $db->quoteName('wt.from_stage_id') . ' = ' . $db->quoteName('wa.stage_id'), - ], - 'OR' - ) - ->whereIn($db->quoteName('wa.item_id'), $pks) - ->bind(':condition', $value, ParameterType::INTEGER); - - $transitions = $db->setQuery($query)->loadObjectList(); - - $items = []; - - foreach ($transitions as $transition) - { - if ($user->authorise('core.execute.transition', 'com_content.transition.' . $transition->id)) - { - if (!isset($itrans[$transition->item_id]) || $itrans[$transition->item_id] == $transition->id) - { - $items[$transition->item_id] = (int) $transition->id; - } - } - } - - // Access checks. - foreach ($pks as $i => $pk) - { - $table->reset(); - - if ($table->load($pk)) - { - if (!isset($items[$pk])) - { - // Prune items that you can't change. - unset($pks[$i]); - - Log::add(Text::_('JLIB_APPLICATION_ERROR_EDITSTATE_NOT_PERMITTED'), Log::WARNING, 'jerror'); - - return false; - } - - // If the table is checked out by another user, drop it and report to the user trying to change its state. - if ($table->hasField('checked_out') && $table->checked_out && ($table->checked_out != $user->id)) - { - Log::add(Text::_('JLIB_APPLICATION_ERROR_CHECKIN_USER_MISMATCH'), Log::WARNING, 'jerror'); - - // Prune items that you can't change. - unset($pks[$i]); - - return false; - } - } - } - - foreach ($pks as $i => $pk) - { - if (!$this->runTransition($pk, $items[$pk])) - { - return false; - } - } + $this->workflowBeforeStageChange(); - // Clear the component's cache - $this->cleanCache(); - - return true; + return parent::publish($pks, $value); } /** @@ -628,18 +515,6 @@ public function getForm($data = array(), $loadData = true) $form->setFieldAttribute('catid', 'filter', 'unset'); } } - - $table = $this->getTable(); - - if ($table->load(array('id' => $id))) - { - $workflow = new Workflow(['extension' => 'com_content']); - - // Transition field - $assoc = $workflow->getAssociation($table->id); - - $form->setFieldAttribute('transition', 'workflow_stage', (int) $assoc->stage_id); - } } else { @@ -675,10 +550,6 @@ public function getForm($data = array(), $loadData = true) $form->setFieldAttribute('catid', 'refresh-enabled', true); $form->setFieldAttribute('catid', 'refresh-cat-id', $assignedCatids); $form->setFieldAttribute('catid', 'refresh-section', 'article'); - - $workflow = $this->getWorkflowByCategory($assignedCatids); - - $form->setFieldAttribute('transition', 'workflow_stage', (int) $workflow->stage_id); } } @@ -840,6 +711,8 @@ public function save($data) $data['images'] = (string) $registry; } + $this->workflowBeforeSave(); + // Create new category, if needed. $createCategory = true; @@ -924,70 +797,6 @@ public function save($data) } } - $stageId = 0; - - // Set status depending on category - if (empty($data['id'])) - { - $workflow = $this->getWorkflowByCategory($data['catid']); - - if (empty($workflow->id)) - { - $this->setError(Text::_('COM_CONTENT_WORKFLOW_NOT_FOUND')); - - return false; - } - - $stageId = (int) $workflow->stage_id; - - // B/C state - $data['state'] = (int) $workflow->condition; - } - - // Calculate new status depending on transition - if (!empty($data['transition'])) - { - // Check if the user is allowed to execute this transition - if (!$user->authorise('core.execute.transition', 'com_content.transition.' . (int) $data['transition'])) - { - $this->setError(Text::_('COM_CONTENT_WORKFLOW_TRANSITION_NOT_ALLOWED')); - - return false; - } - - // Set the new state - $query = $db->getQuery(true); - $transition = (int) $data['transition']; - - $query->select($db->quoteName(['ws.id', 'ws.condition'])) - ->from( - [ - $db->quoteName('#__workflow_stages', 'ws'), - $db->quoteName('#__workflow_transitions', 'wt'), - ] - ) - ->where( - [ - $db->quoteName('wt.to_stage_id') . ' = ' . $db->quoteName('ws.id'), - $db->quoteName('wt.id') . ' = :transition', - $db->quoteName('ws.published') . ' = 1', - $db->quoteName('wt.published') . ' = 1', - ] - ) - ->bind(':transition', $transition, ParameterType::INTEGER); - - $stage = $db->setQuery($query)->loadObject(); - - if (empty($stage->id)) - { - $this->setError(Text::_('COM_CONTENT_WORKFLOW_TRANSITION_NOT_ALLOWED')); - - return false; - } - - $data['state'] = (int) $stage->condition; - } - // Automatic handling of alias for empty fields if (in_array($input->get('task'), array('apply', 'save', 'save2new')) && (!isset($data['id']) || (int) $data['id'] == 0)) { @@ -1019,11 +828,10 @@ public function save($data) } } - $workflow = new Workflow(['extension' => 'com_content']); - if (parent::save($data)) { - if (isset($data['featured'])) + // Check if featured is set and if not managed by workflow + if (isset($data['featured']) && !$this->bootComponent('com_content')->isFunctionalityUsed('core.featured', 'com_content.article')) { if (!$this->featured( $this->getState($this->getName() . '.id'), @@ -1036,47 +844,7 @@ public function save($data) } } - // Let's check if we have workflow association (perhaps something went wrong before) - if (empty($stageId)) - { - $assoc = $workflow->getAssociation((int) $this->getState($this->getName() . '.id')); - - // If not, reset the state and let's create the associations - if (empty($assoc->item_id)) - { - $table = $this->getTable(); - - $table->load((int) $this->getState($this->getName() . '.id')); - - $workflow = $this->getWorkflowByCategory((int) $table->catid); - - if (empty($workflow->id)) - { - $this->setError(Text::_('COM_CONTENT_WORKFLOW_NOT_FOUND')); - - return false; - } - - $stageId = (int) $workflow->stage_id; - - // B/C state - $table->state = $workflow->condition; - - $table->store(); - } - } - - // If we have a new state, create the workflow association - if (!empty($stageId)) - { - $workflow->createAssociation((int) $this->getState($this->getName() . '.id'), (int) $stageId); - } - - // Run the transition and update the workflow association - if (!empty($data['transition'])) - { - $this->runTransition((int) $this->getState($this->getName() . '.id'), (int) $data['transition']); - } + $this->workflowAfterSave($data); return true; } @@ -1097,9 +865,15 @@ public function save($data) public function featured($pks, $value = 0, $featuredUp = null, $featuredDown = null) { // Sanitize the ids. - $pks = (array) $pks; - $pks = ArrayHelper::toInteger($pks); - $value = (int) $value; + $pks = (array) $pks; + $pks = ArrayHelper::toInteger($pks); + $value = (int) $value; + $context = $this->option . '.' . $this->name; + + $this->workflowBeforeStageChange(); + + // Include the plugins for the change of state event. + PluginHelper::importPlugin($this->events_map['featured']); // Convert empty strings to null for the query. if ($featuredUp === '') @@ -1121,6 +895,16 @@ public function featured($pks, $value = 0, $featuredUp = null, $featuredDown = n $table = $this->getTable('Featured', 'Administrator'); + // Trigger the before change state event. + $result = Factory::getApplication()->triggerEvent($this->event_before_change_featured, array($context, $pks, $value)); + + if (\in_array(false, $result, true)) + { + $this->setError($table->getError()); + + return false; + } + try { $db = $this->getDbo(); @@ -1214,6 +998,16 @@ public function featured($pks, $value = 0, $featuredUp = null, $featuredDown = n $table->reorder(); + // Trigger the change state event. + $result = Factory::getApplication()->triggerEvent($this->event_after_change_featured, array($context, $pks, $value)); + + if (\in_array(false, $result, true)) + { + $this->setError($table->getError()); + + return false; + } + $this->cleanCache(); return true; @@ -1288,6 +1082,8 @@ protected function preprocessForm(Form $form, $data, $group = 'content') } } + $this->workflowPreprocessForm($form, $data); + parent::preprocessForm($form, $data, $group); } @@ -1359,9 +1155,7 @@ public function delete(&$pks) $db->setQuery($query); $db->execute(); - $workflow = new Workflow(['extension' => 'com_content']); - - $workflow->deleteAssociation($pks); + $this->workflow->deleteAssociation($pks); } return $return; @@ -1374,147 +1168,4 @@ public function delete(&$pks) * * @return integer|boolean If found, the workflow ID, otherwise false */ - protected function getWorkflowByCategory(int $catId) - { - $db = $this->getDbo(); - - // Search categories and parents (if requested) for a workflow - $category = new Category($db); - - $categories = array_reverse($category->getPath($catId)); - - $workflow_id = 0; - - foreach ($categories as $cat) - { - $cat->params = new Registry($cat->params); - - $workflow_id = $cat->params->get('workflow_id'); - - if ($workflow_id == 'inherit') - { - $workflow_id = 0; - - continue; - } - elseif ($workflow_id == 'use_default') - { - $workflow_id = 0; - - break; - } - elseif ($workflow_id > 0) - { - break; - } - } - - // Check if the workflow exists - if ($workflow_id = (int) $workflow_id) - { - $query = $db->getQuery(true); - - $query->select( - [ - $db->quoteName('w.id'), - $db->quoteName('ws.condition'), - $db->quoteName('ws.id', 'stage_id'), - ] - ) - ->from( - [ - $db->quoteName('#__workflow_stages', 'ws'), - $db->quoteName('#__workflows', 'w'), - ] - ) - ->where( - [ - $db->quoteName('ws.workflow_id') . ' = ' . $db->quoteName('w.id'), - $db->quoteName('ws.default') . ' = 1', - $db->quoteName('w.published') . ' = 1', - $db->quoteName('ws.published') . ' = 1', - $db->quoteName('w.id') . ' = :workflowId', - ] - ) - ->bind(':workflowId', $workflow_id, ParameterType::INTEGER); - - $workflow = $db->setQuery($query)->loadObject(); - - if (!empty($workflow->id)) - { - return $workflow; - } - } - - // Use default workflow - $query = $db->getQuery(true); - - $query->select( - [ - $db->quoteName('w.id'), - $db->quoteName('ws.condition'), - $db->quoteName('ws.id', 'stage_id'), - ] - ) - ->from( - [ - $db->quoteName('#__workflow_stages', 'ws'), - $db->quoteName('#__workflows', 'w'), - ] - ) - ->where( - [ - $db->quoteName('ws.default') . ' = 1', - $db->quoteName('ws.workflow_id') . ' = ' . $db->quoteName('w.id'), - $db->quoteName('w.published') . ' = 1', - $db->quoteName('ws.published') . ' = 1', - $db->quoteName('w.default') . ' = 1', - ] - ); - - $workflow = $db->setQuery($query)->loadObject(); - - // Last check if we have a workflow ID - if (!empty($workflow->id)) - { - return $workflow; - } - - return false; - } - - /** - * Runs transition for item. - * - * @param integer $pk Id of article - * @param integer $transition_id Id of transition - * - * @return boolean - * - * @since 4.0.0 - */ - public function runTransition(int $pk, int $transition_id): bool - { - $workflow = new Workflow(['extension' => 'com_content']); - - $runTransaction = $workflow->executeTransition([$pk], $transition_id); - - if (!$runTransaction) - { - $this->setError(Text::_('COM_CONTENT_ERROR_UPDATE_STAGE')); - - return false; - } - - // B/C state change trigger for UCM - $context = $this->option . '.' . $this->name; - - // Include the plugins for the change of stage event. - PluginHelper::importPlugin($this->events_map['change_state']); - - // Trigger the change stage event. - Factory::getApplication()->triggerEvent($this->event_change_state, [$context, [$pk], $workflow->getConditionForTransition($transition_id)]); - - return true; - } } diff --git a/administrator/components/com_content/src/Model/ArticlesModel.php b/administrator/components/com_content/src/Model/ArticlesModel.php index 77606720577c5..9b26569f5db0a 100644 --- a/administrator/components/com_content/src/Model/ArticlesModel.php +++ b/administrator/components/com_content/src/Model/ArticlesModel.php @@ -11,6 +11,7 @@ \defined('_JEXEC') or die; +use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Language\Associations; use Joomla\CMS\Language\Text; @@ -68,8 +69,8 @@ public function __construct($config = array()) 'level', 'tag', 'rating_count', 'rating', - 'condition', - 'stage', + 'stage', 'wa.stage_id', + 'ws.title' ); if (Associations::isEnabled()) @@ -81,6 +82,37 @@ public function __construct($config = array()) parent::__construct($config); } + /** + * Get the filter form + * + * @param array $data data + * @param boolean $loadData load current data + * + * @return Form|null The \JForm object or null if the form can't be found + * + * @since 3.2 + */ + public function getFilterForm($data = array(), $loadData = true) + { + $form = parent::getFilterForm($data, $loadData); + + $params = ComponentHelper::getParams('com_content'); + + if (!$params->get('workflow_enabled')) + { + $form->removeField('stage', 'filter'); + } + else + { + $ordering = $form->getField('fullordering', 'list'); + + $ordering->addOption('JSTAGE_ASC', ['value' => 'ws.title ASC']); + $ordering->addOption('JSTAGE_DESC', ['value' => 'ws.title DESC']); + } + + return $form; + } + /** * Method to auto-populate the model state. * @@ -120,9 +152,6 @@ protected function populateState($ordering = 'a.id', $direction = 'desc') $published = $this->getUserStateFromRequest($this->context . '.filter.published', 'filter_published', ''); $this->setState('filter.published', $published); - $condition = $this->getUserStateFromRequest($this->context . '.filter.condition', 'filter_condition', ''); - $this->setState('filter.condition', $condition); - $level = $this->getUserStateFromRequest($this->context . '.filter.level', 'filter_level'); $this->setState('filter.level', $level); @@ -203,6 +232,8 @@ protected function getListQuery() $query = $db->getQuery(true); $user = Factory::getUser(); + $params = ComponentHelper::getParams('com_content'); + // Select the required fields from the table. $query->select( $this->getState( @@ -252,12 +283,12 @@ protected function getListQuery() $db->quoteName('ua.name', 'author_name'), $db->quoteName('wa.stage_id', 'stage_id'), $db->quoteName('ws.title', 'stage_title'), - $db->quoteName('ws.condition', 'stage_condition'), $db->quoteName('ws.workflow_id', 'workflow_id'), + $db->quoteName('w.title', 'workflow_title'), ] ) ->from($db->quoteName('#__content', 'a')) - ->where($db->quoteName('wa.extension') . ' = ' . $db->quote('com_content')) + ->where($db->quoteName('wa.extension') . ' = ' . $db->quote('com_content.article')) ->join('LEFT', $db->quoteName('#__languages', 'l'), $db->quoteName('l.lang_code') . ' = ' . $db->quoteName('a.language')) ->join('LEFT', $db->quoteName('#__content_frontpage', 'fp'), $db->quoteName('fp.content_id') . ' = ' . $db->quoteName('a.id')) ->join('LEFT', $db->quoteName('#__users', 'uc'), $db->quoteName('uc.id') . ' = ' . $db->quoteName('a.checked_out')) @@ -266,7 +297,8 @@ protected function getListQuery() ->join('LEFT', $db->quoteName('#__categories', 'parent'), $db->quoteName('parent.id') . ' = ' . $db->quoteName('c.parent_id')) ->join('LEFT', $db->quoteName('#__users', 'ua'), $db->quoteName('ua.id') . ' = ' . $db->quoteName('a.created_by')) ->join('INNER', $db->quoteName('#__workflow_associations', 'wa'), $db->quoteName('wa.item_id') . ' = ' . $db->quoteName('a.id')) - ->join('INNER', $db->quoteName('#__workflow_stages', 'ws'), $db->quoteName('ws.id') . ' = ' . $db->quoteName('wa.stage_id')); + ->join('INNER', $db->quoteName('#__workflow_stages', 'ws'), $db->quoteName('ws.id') . ' = ' . $db->quoteName('wa.stage_id')) + ->join('INNER', $db->quoteName('#__workflows', 'w'), $db->quoteName('w.id') . ' = ' . $db->quoteName('ws.workflow_id')); if (PluginHelper::isEnabled('content', 'vote')) { @@ -333,27 +365,27 @@ protected function getListQuery() // Filter by published state $workflowStage = (string) $this->getState('filter.stage'); - if (is_numeric($workflowStage)) + if ($params->get('workflow_enabled') && is_numeric($workflowStage)) { $workflowStage = (int) $workflowStage; $query->where($db->quoteName('wa.stage_id') . ' = :stage') ->bind(':stage', $workflowStage, ParameterType::INTEGER); } - $condition = (string) $this->getState('filter.condition'); + $published = (string) $this->getState('filter.published'); - if ($condition !== '*') + if ($published !== '*') { - if (is_numeric($condition)) + if (is_numeric($published)) { - $condition = (int) $condition; - $query->where($db->quoteName('ws.condition') . ' = :condition') - ->bind(':condition', $condition, ParameterType::INTEGER); + $state = (int) $published; + $query->where($db->quoteName('a.state') . ' = :state') + ->bind(':state', $published, ParameterType::INTEGER); } elseif (!is_numeric($workflowStage)) { $query->whereIn( - $db->quoteName('ws.condition'), + $db->quoteName('a.state'), [ ContentComponent::CONDITION_PUBLISHED, ContentComponent::CONDITION_UNPUBLISHED, @@ -558,23 +590,25 @@ public function getTransitions() return false; } - $ids = array_column($items, 'stage_id'); - $ids = ArrayHelper::toInteger($ids); - $ids = array_values(array_unique(array_filter($ids))); + $stage_ids = ArrayHelper::getColumn($items, 'stage_id'); + $stage_ids = ArrayHelper::toInteger($stage_ids); + $stage_ids = array_values(array_unique(array_filter($stage_ids))); - $ids[] = -1; + $workflow_ids = ArrayHelper::getColumn($items, 'workflow_id'); + $workflow_ids = ArrayHelper::toInteger($workflow_ids); + $workflow_ids = array_values(array_unique(array_filter($workflow_ids))); $this->cache[$store] = array(); try { - if (count($ids)) + if (count($stage_ids) || count($workflow_ids)) { Factory::getLanguage()->load('com_workflow', JPATH_ADMINISTRATOR); $query = $db->getQuery(true); - $query->select( + $query ->select( [ $db->quoteName('t.id', 'value'), $db->quoteName('t.title', 'text'), @@ -582,28 +616,39 @@ public function getTransitions() $db->quoteName('t.to_stage_id'), $db->quoteName('s.id', 'stage_id'), $db->quoteName('s.title', 'stage_title'), - $db->quoteName('s.condition', 'stage_condition'), - $db->quoteName('s.workflow_id'), + $db->quoteName('t.workflow_id'), ] ) ->from($db->quoteName('#__workflow_transitions', 't')) - ->join( - 'LEFT', + ->innerJoin( $db->quoteName('#__workflow_stages', 's'), - $db->quoteName('t.from_stage_id') . ' IN (' . implode(',', $query->bindArray($ids)) . ')' + $db->quoteName('t.to_stage_id') . ' = ' . $db->quoteName('s.id') ) ->where( [ - $db->quoteName('t.to_stage_id') . ' = ' . $db->quoteName('s.id'), $db->quoteName('t.published') . ' = 1', $db->quoteName('s.published') . ' = 1', ] ) ->order($db->quoteName('t.ordering')); + $where = []; + + if (count($stage_ids)) + { + $where[] = $db->quoteName('t.from_stage_id') . ' IN (' . implode(',', $query->bindArray($stage_ids)) . ')'; + } + + if (count($workflow_ids)) + { + $where[] = '(' . $db->quoteName('t.from_stage_id') . ' = -1 AND ' . $db->quoteName('t.workflow_id') . ' IN (' . implode(',', $query->bindArray($workflow_ids)) . '))'; + } + + $query->where('((' . implode(') OR (', $where) . '))'); + $transitions = $db->setQuery($query)->loadAssocList(); - $workflow = new Workflow(['extension' => 'com_content']); + $workflow = new Workflow(['extension' => 'com_content.article']); foreach ($transitions as $key => $transition) { @@ -611,13 +656,6 @@ public function getTransitions() { unset($transitions[$key]); } - else - { - // Update the transition text with final state value - $conditionName = $workflow->getConditionName((int) $transition['stage_condition']); - - $transitions[$key]['text'] .= ' [' . Text::_($conditionName) . ']'; - } } $this->cache[$store] = $transitions; diff --git a/administrator/components/com_content/src/Model/FeaturedModel.php b/administrator/components/com_content/src/Model/FeaturedModel.php index 47049c8d02ca6..9735baece3fe0 100644 --- a/administrator/components/com_content/src/Model/FeaturedModel.php +++ b/administrator/components/com_content/src/Model/FeaturedModel.php @@ -56,8 +56,7 @@ public function __construct($config = array()) 'level', 'tag', 'rating_count', 'rating', - 'condition', - 'stage', + 'ws.title', ); } diff --git a/administrator/components/com_content/src/Service/HTML/Icon.php b/administrator/components/com_content/src/Service/HTML/Icon.php index 341bb91e810ee..4c4fae54624e7 100644 --- a/administrator/components/com_content/src/Service/HTML/Icon.php +++ b/administrator/components/com_content/src/Service/HTML/Icon.php @@ -125,7 +125,7 @@ public function edit($article, $params, $attribs = array(), $legacy = false) // Show checked_out icon if the article is checked out by a different user if (property_exists($article, 'checked_out') && property_exists($article, 'checked_out_time') - && $article->checked_out > 0 + && !is_null($article->checked_out) && $article->checked_out != $user->get('id')) { $checkoutUser = Factory::getUser($article->checked_out); diff --git a/administrator/components/com_content/src/View/Article/HtmlView.php b/administrator/components/com_content/src/View/Article/HtmlView.php index 69db0e6feb076..acc77517b0dd1 100644 --- a/administrator/components/com_content/src/View/Article/HtmlView.php +++ b/administrator/components/com_content/src/View/Article/HtmlView.php @@ -126,7 +126,7 @@ protected function addToolbar() $user = Factory::getUser(); $userId = $user->id; $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $userId); // Built the actions for new and existing records. $canDo = $this->canDo; diff --git a/administrator/components/com_content/src/View/Articles/HtmlView.php b/administrator/components/com_content/src/View/Articles/HtmlView.php index ca36533b58a63..a66139ec85c9a 100644 --- a/administrator/components/com_content/src/View/Articles/HtmlView.php +++ b/administrator/components/com_content/src/View/Articles/HtmlView.php @@ -11,6 +11,7 @@ \defined('_JEXEC') or die; +use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Language\Text; @@ -64,6 +65,13 @@ class HtmlView extends BaseHtmlView */ public $activeFilters; + /** + * All transition, which can be executed of one if the items + * + * @var array + */ + protected $transitions = []; + /** * Display the view * @@ -78,9 +86,15 @@ public function display($tpl = null) $this->state = $this->get('State'); $this->filterForm = $this->get('FilterForm'); $this->activeFilters = $this->get('ActiveFilters'); - $this->transitions = $this->get('Transitions'); $this->vote = PluginHelper::isEnabled('content', 'vote'); + if (ComponentHelper::getParams('com_content')->get('workflow_enabled')) + { + PluginHelper::importPlugin('workflow'); + + $this->transitions = $this->get('Transitions'); + } + // Check for errors. if ((count($errors = $this->get('Errors'))) || $this->transitions === false) { @@ -117,51 +131,6 @@ public function display($tpl = null) } } - $transitions = [ - 'publish' => [], - 'unpublish' => [], - 'archive' => [], - 'trash' => [] - ]; - - foreach ($this->transitions as $transition) - { - switch ($transition['stage_condition']) - { - case ContentComponent::CONDITION_PUBLISHED: - $transitions['publish'][$transition['workflow_id']][$transition['from_stage_id']][] = $transition; - break; - - case ContentComponent::CONDITION_UNPUBLISHED: - $transitions['unpublish'][$transition['workflow_id']][$transition['from_stage_id']][] = $transition; - break; - - case ContentComponent::CONDITION_ARCHIVED: - $transitions['archive'][$transition['workflow_id']][$transition['from_stage_id']][] = $transition; - break; - - case ContentComponent::CONDITION_TRASHED: - $transitions['trash'][$transition['workflow_id']][$transition['from_stage_id']][] = $transition; - break; - } - } - - $this->document->addScriptOptions('articles.transitions', $transitions); - - $articles = []; - - foreach ($this->items as $item) - { - $articles['article-' . (int) $item->id] = Text::sprintf('COM_CONTENT_STAGE_ARTICLE_TITLE', $this->escape($item->title), (int) $item->id); - } - - $this->document->addScriptOptions('articles.items', $articles); - - Text::script('COM_CONTENT_ERROR_CANNOT_PUBLISH'); - Text::script('COM_CONTENT_ERROR_CANNOT_UNPUBLISH'); - Text::script('COM_CONTENT_ERROR_CANNOT_TRASH'); - Text::script('COM_CONTENT_ERROR_CANNOT_ARCHIVE'); - return parent::display($tpl); } @@ -187,7 +156,7 @@ protected function addToolbar() $toolbar->addNew('article.add'); } - if ($canDo->get('core.edit.state') || $canDo->get('core.execute.transition')) + if ($canDo->get('core.edit.state') || count($this->transitions)) { $dropdown = $toolbar->dropdownButton('status-group') ->text('JTOOLBAR_CHANGE_STATUS') @@ -198,15 +167,35 @@ protected function addToolbar() $childBar = $dropdown->getChildToolbar(); - if ($canDo->get('core.execute.transition')) + if (count($this->transitions)) { - $childBar->publish('articles.publish')->listCheck(true); - - $childBar->unpublish('articles.unpublish')->listCheck(true); + $childBar->separatorButton('transition-headline') + ->text('COM_CONTENT_RUN_TRANSITIONS') + ->buttonClass('text-center py-2 h3'); + + $cmd = "Joomla.submitbutton('articles.runTransition');"; + $messages = "{error: [Joomla.JText._('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST')]}"; + $alert = 'Joomla.renderMessages(' . $messages . ')'; + $cmd = 'if (document.adminForm.boxchecked.value == 0) { ' . $alert . ' } else { ' . $cmd . ' }'; + + foreach ($this->transitions as $transition) + { + $childBar->standardButton('transition') + ->text($transition['text']) + ->buttonClass('transition-' . (int) $transition['value']) + ->icon('fas fa-project-diagram') + ->onclick('document.adminForm.transition_id.value=' . (int) $transition['value'] . ';' . $cmd); + } + + $childBar->separatorButton('transition-separator'); } if ($canDo->get('core.edit.state')) { + $childBar->publish('articles.publish')->listCheck(true); + + $childBar->unpublish('articles.unpublish')->listCheck(true); + $childBar->standardButton('featured') ->text('JFEATURE') ->task('articles.featured') @@ -216,20 +205,11 @@ protected function addToolbar() ->text('JUNFEATURE') ->task('articles.unfeatured') ->listCheck(true); - } - if ($canDo->get('core.execute.transition')) - { $childBar->archive('articles.archive')->listCheck(true); - } - if ($canDo->get('core.edit.state')) - { $childBar->checkin('articles.checkin')->listCheck(true); - } - if ($canDo->get('core.execute.transition')) - { $childBar->trash('articles.trash')->listCheck(true); } @@ -245,7 +225,7 @@ protected function addToolbar() } } - if ($this->state->get('filter.condition') == ContentComponent::CONDITION_TRASHED && $canDo->get('core.delete')) + if ($this->state->get('filter.published') == ContentComponent::CONDITION_TRASHED && $canDo->get('core.delete')) { $toolbar->delete('articles.delete') ->text('JTOOLBAR_EMPTY_TRASH') diff --git a/administrator/components/com_content/src/View/Featured/HtmlView.php b/administrator/components/com_content/src/View/Featured/HtmlView.php index b016c220a10b2..b2601d44c1b13 100644 --- a/administrator/components/com_content/src/View/Featured/HtmlView.php +++ b/administrator/components/com_content/src/View/Featured/HtmlView.php @@ -11,6 +11,7 @@ \defined('_JEXEC') or die; +use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Language\Text; @@ -64,6 +65,13 @@ class HtmlView extends BaseHtmlView */ public $activeFilters; + /** + * All transition, which can be executed of one if the items + * + * @var array + */ + protected $transitions = []; + /** * Display the view * @@ -81,6 +89,13 @@ public function display($tpl = null) $this->transitions = $this->get('Transitions'); $this->vote = PluginHelper::isEnabled('content', 'vote'); + if (ComponentHelper::getParams('com_content')->get('workflow_enabled')) + { + PluginHelper::importPlugin('workflow'); + + $this->transitions = $this->get('Transitions'); + } + // Check for errors. if (count($errors = $this->get('Errors'))) { @@ -96,51 +111,6 @@ public function display($tpl = null) $this->filterForm->removeField('language', 'filter'); } - $transitions = [ - 'publish' => [], - 'unpublish' => [], - 'archive' => [], - 'trash' => [] - ]; - - foreach ($this->transitions as $transition) - { - switch ($transition['stage_condition']) - { - case ContentComponent::CONDITION_PUBLISHED: - $transitions['publish'][$transition['workflow_id']][$transition['from_stage_id']][] = $transition; - break; - - case ContentComponent::CONDITION_UNPUBLISHED: - $transitions['unpublish'][$transition['workflow_id']][$transition['from_stage_id']][] = $transition; - break; - - case ContentComponent::CONDITION_ARCHIVED: - $transitions['archive'][$transition['workflow_id']][$transition['from_stage_id']][] = $transition; - break; - - case ContentComponent::CONDITION_TRASHED: - $transitions['trash'][$transition['workflow_id']][$transition['from_stage_id']][] = $transition; - break; - } - } - - $this->document->addScriptOptions('articles.transitions', $transitions); - - $articles = []; - - foreach ($this->items as $item) - { - $articles['article-' . (int) $item->id] = Text::sprintf('COM_CONTENT_STAGE_ARTICLE_TITLE', $this->escape($item->title), (int) $item->id); - } - - $this->document->addScriptOptions('articles.items', $articles); - - Text::script('COM_CONTENT_ERROR_CANNOT_PUBLISH'); - Text::script('COM_CONTENT_ERROR_CANNOT_UNPUBLISH'); - Text::script('COM_CONTENT_ERROR_CANNOT_TRASH'); - Text::script('COM_CONTENT_ERROR_CANNOT_ARCHIVE'); - return parent::display($tpl); } @@ -166,7 +136,7 @@ protected function addToolbar() $toolbar->addNew('article.add'); } - if ($canDo->get('core.edit.state') || $canDo->get('core.execute.transition')) + if ($canDo->get('core.edit.state') || count($this->transitions)) { $dropdown = $toolbar->dropdownButton('status-group') ->text('JTOOLBAR_CHANGE_STATUS') @@ -177,38 +147,49 @@ protected function addToolbar() $childBar = $dropdown->getChildToolbar(); - if ($canDo->get('core.execute.transition')) + if (count($this->transitions)) { - $childBar->publish('articles.publish')->listCheck(true); - - $childBar->unpublish('articles.unpublish')->listCheck(true); + $childBar->separatorButton('transition-headline') + ->text('COM_CONTENT_RUN_TRANSITIONS') + ->buttonClass('text-center py-2 h3'); + + $cmd = "Joomla.submitbutton('articles.runTransition');"; + $messages = "{error: [Joomla.JText._('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST')]}"; + $alert = 'Joomla.renderMessages(' . $messages . ')'; + $cmd = 'if (document.adminForm.boxchecked.value == 0) { ' . $alert . ' } else { ' . $cmd . ' }'; + + foreach ($this->transitions as $transition) + { + $childBar->standardButton('transition') + ->text($transition['text']) + ->buttonClass('transition-' . (int) $transition['value']) + ->icon('fas fa-project-diagram') + ->onclick('document.adminForm.transition_id.value=' . (int) $transition['value'] . ';' . $cmd); + } + + $childBar->separatorButton('transition-separator'); } if ($canDo->get('core.edit.state')) { + $childBar->publish('articles.publish')->listCheck(true); + + $childBar->unpublish('articles.unpublish')->listCheck(true); + $childBar->standardButton('unfeatured') ->text('JUNFEATURE') ->task('articles.unfeatured') ->listCheck(true); - } - if ($canDo->get('core.execute.transition')) - { $childBar->archive('articles.archive')->listCheck(true); - } - if ($canDo->get('core.edit.state')) - { $childBar->checkin('articles.checkin')->listCheck(true); - } - if ($canDo->get('core.execute.transition')) - { $childBar->trash('articles.trash')->listCheck(true); } } - if ($this->state->get('filter.condition') == ContentComponent::CONDITION_TRASHED && $canDo->get('core.delete')) + if ($this->state->get('filter.published') == ContentComponent::CONDITION_TRASHED && $canDo->get('core.delete')) { $toolbar->delete('articles.delete') ->text('JTOOLBAR_EMPTY_TRASH') diff --git a/administrator/components/com_content/tmpl/articles/default.php b/administrator/components/com_content/tmpl/articles/default.php index 47d4c871d7f5c..4d545e71d1459 100644 --- a/administrator/components/com_content/tmpl/articles/default.php +++ b/administrator/components/com_content/tmpl/articles/default.php @@ -11,6 +11,8 @@ use Joomla\CMS\Button\FeaturedButton; use Joomla\CMS\Button\PublishedButton; +use Joomla\CMS\Button\TransitionButton; +use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Language\Associations; @@ -21,6 +23,7 @@ use Joomla\CMS\Session\Session; use Joomla\Component\Content\Administrator\Extension\ContentComponent; use Joomla\Component\Content\Administrator\Helper\ContentHelper; +use Joomla\Utilities\ArrayHelper; HTMLHelper::_('behavior.multiselect'); @@ -54,6 +57,12 @@ HTMLHelper::_('draggablelist.draggable'); } +$workflow_enabled = ComponentHelper::getParams('com_content')->get('workflow_enabled'); +$workflow_state = false; +$workflow_featured = false; + +if ($workflow_enabled) : + $js = <<document->addScriptDeclaration($js); -$collection = new \stdClass; +HTMLHelper::_('script', 'com_workflow/admin-items-workflow-buttons.js', ['relative' => true, 'version' => 'auto']); -$collection->publish = []; -$collection->unpublish = []; -$collection->archive = []; -$collection->trash = []; + $workflow_state = Factory::getApplication()->bootComponent('com_content')->isFunctionalityUsed('core.state', 'com_content.article'); + $workflow_featured = Factory::getApplication()->bootComponent('com_content')->isFunctionalityUsed('core.featured', 'com_content.article'); -$assoc = Associations::isEnabled(); +endif; -HTMLHelper::_('script', 'com_content/admin-articles-workflow-buttons.js', ['relative' => true, 'version' => 'auto']); +$assoc = Associations::isEnabled(); ?>
@@ -97,7 +104,7 @@ - +
+ + + @@ -159,7 +171,7 @@ items as $i => $item) : $item->max_ordering = 0; $canEdit = $user->authorise('core.edit', 'com_content.article.' . $item->id); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || is_null($item->checked_out); $canEditOwn = $user->authorise('core.edit.own', 'com_content.article.' . $item->id) && $item->created_by == $userId; $canChange = $user->authorise('core.edit.state', 'com_content.article.' . $item->id) && $canCheckin; $canEditCat = $user->authorise('core.edit', 'com_content.category.' . $item->catid); @@ -169,36 +181,13 @@ $transitions = ContentHelper::filterTransitions($this->transitions, (int) $item->stage_id, (int) $item->workflow_id); - $publish = 0; - $unpublish = 0; - $archive = 0; - $trash = 0; - - foreach ($transitions as $transition) : - switch ($transition['stage_condition']) : - case ContentComponent::CONDITION_PUBLISHED: - ++$publish; - break; - case ContentComponent::CONDITION_UNPUBLISHED: - ++$unpublish; - break; - case ContentComponent::CONDITION_ARCHIVED: - ++$archive; - break; - case ContentComponent::CONDITION_TRASHED: - ++$trash; - break; - endswitch; - endforeach; + $transition_ids = ArrayHelper::getColumn($transitions, 'value'); + $transition_ids = ArrayHelper::toInteger($transition_ids); ?> - + + + -
, , @@ -111,6 +118,11 @@
+ +
id, false, 'cid', 'cb', $item->title); ?> @@ -222,6 +211,22 @@ +
+ $transitions, + 'title' => Text::_($item->stage_title), + 'tip_content' => Text::sprintf('JWORKFLOW', Text::_($item->workflow_title)) + ]; + + echo (new TransitionButton($options)) + ->render(0, $i); + ?> +
+
!$canChange ]; - echo (new FeaturedButton) - ->render((int) $item->featured, $i, $options, $item->featured_up, $item->featured_down); - ?> + if ($workflow_featured) : + $options['disabled'] = true; + endif; + + echo (new FeaturedButton) + ->render((int) $item->featured, $i, $options, $item->featured_up, $item->featured_down); + ?> -
-
- + 'articles.', + 'disabled' => $workflow_enabled || !$canChange + ]; - $options = [ - 'transitions' => $transitions, - 'stage' => Text::_($item->stage_title), - 'id' => (int) $item->id - ]; + if ($workflow_state) : + $options['disabled'] = true; + endif; - echo (new PublishedButton) - ->removeState(0) - ->removeState(1) - ->removeState(2) - ->removeState(-2) - ->addState(ContentComponent::CONDITION_PUBLISHED, '', 'publish', Text::_('COM_CONTENT_CHANGE_STAGE'), ['tip_title' => Text::_('JPUBLISHED')]) - ->addState(ContentComponent::CONDITION_UNPUBLISHED, '', 'unpublish', Text::_('COM_CONTENT_CHANGE_STAGE'), ['tip_title' => Text::_('JUNPUBLISHED')]) - ->addState(ContentComponent::CONDITION_ARCHIVED, '', 'archive', Text::_('COM_CONTENT_CHANGE_STAGE'), ['tip_title' => Text::_('JARCHIVED')]) - ->addState(ContentComponent::CONDITION_TRASHED, '', 'trash', Text::_('COM_CONTENT_CHANGE_STAGE'), ['tip_title' => Text::_('JTRASHED')]) - ->setLayout('joomla.button.transition-button') - ->render((int) $item->stage_condition, $i, $options, $item->publish_up, $item->publish_down); - ?> -
-
+ echo (new PublishedButton)->render((int) $item->state, $i, $options, $item->publish_up, $item->publish_down); + ?>
@@ -407,15 +404,10 @@ $this->loadTemplate('batch_body') ); ?> - Text::_('JTOOLBAR_CHANGE_STATUS'), - 'footer' => $this->loadTemplate('stage_footer'), - ), - $this->loadTemplate('stage_body') - ); ?> + + + + diff --git a/administrator/components/com_content/tmpl/articles/default_batch_body.php b/administrator/components/com_content/tmpl/articles/default_batch_body.php index cb2f379170592..9f88c07f16963 100644 --- a/administrator/components/com_content/tmpl/articles/default_batch_body.php +++ b/administrator/components/com_content/tmpl/articles/default_batch_body.php @@ -10,6 +10,9 @@ use Joomla\CMS\Factory; use Joomla\CMS\Layout\LayoutHelper; +use Joomla\CMS\Component\ComponentHelper; + +$params = ComponentHelper::getParams('com_content'); $published = $this->state->get('filter.published'); @@ -42,7 +45,7 @@
- authorise('core.admin', 'com_content')) : ?> + authorise('core.admin', 'com_content') && $params->get('workflow_enabled')) : ?>
'com_content']); ?> diff --git a/administrator/components/com_content/tmpl/articles/default_stage_body.php b/administrator/components/com_content/tmpl/articles/default_stage_body.php deleted file mode 100644 index 5c45de087c832..0000000000000 --- a/administrator/components/com_content/tmpl/articles/default_stage_body.php +++ /dev/null @@ -1,23 +0,0 @@ - - -
-
-
-

-
-
-
-
-
diff --git a/administrator/components/com_content/tmpl/articles/default_stage_footer.php b/administrator/components/com_content/tmpl/articles/default_stage_footer.php deleted file mode 100644 index c18ec8cfbfe67..0000000000000 --- a/administrator/components/com_content/tmpl/articles/default_stage_footer.php +++ /dev/null @@ -1,21 +0,0 @@ - 'auto', 'relative' => true]); -?> - - diff --git a/administrator/components/com_content/tmpl/featured/default.php b/administrator/components/com_content/tmpl/featured/default.php index 03574c1787716..66805bade001f 100644 --- a/administrator/components/com_content/tmpl/featured/default.php +++ b/administrator/components/com_content/tmpl/featured/default.php @@ -11,8 +11,11 @@ use Joomla\CMS\Button\FeaturedButton; use Joomla\CMS\Button\PublishedButton; +use Joomla\CMS\Button\TransitionButton; +use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Associations; use Joomla\CMS\Language\Multilanguage; use Joomla\CMS\Language\Text; use Joomla\CMS\Layout\LayoutHelper; @@ -20,6 +23,7 @@ use Joomla\CMS\Session\Session; use Joomla\Component\Content\Administrator\Extension\ContentComponent; use Joomla\Component\Content\Administrator\Helper\ContentHelper; +use Joomla\Utilities\ArrayHelper; HTMLHelper::_('behavior.multiselect'); @@ -49,6 +53,10 @@ HTMLHelper::_('draggablelist.draggable'); } +$workflow_enabled = ComponentHelper::getParams('com_content')->get('workflow_enabled'); + +if ($workflow_enabled) : + $js = <<document->addScriptDeclaration($js); -HTMLHelper::_('script', 'com_content/admin-articles-workflow-buttons.js', ['relative' => true, 'version' => 'auto']); +HTMLHelper::_('script', 'com_workflow/admin-items-workflow-buttons.js', ['relative' => true, 'version' => 'auto']); + +endif; + +$assoc = Associations::isEnabled(); ?> @@ -84,7 +96,7 @@
- +
+ + + @@ -113,6 +130,11 @@ + + + + + + + diff --git a/administrator/components/com_fields/tmpl/groups/default.php b/administrator/components/com_fields/tmpl/groups/default.php index 5f81e399732a0..38518020c22ed 100644 --- a/administrator/components/com_fields/tmpl/groups/default.php +++ b/administrator/components/com_fields/tmpl/groups/default.php @@ -93,7 +93,7 @@ items as $i => $item) : ?> authorise('core.edit', $component . '.fieldgroup.' . $item->id); ?> - authorise('core.admin', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; ?> + authorise('core.admin', 'com_checkin') || $item->checked_out == $userId || is_null($item->checked_out); ?> authorise('core.edit.own', $component . '.fieldgroup.' . $item->id) && $item->created_by == $userId; ?> authorise('core.edit.state', $component . '.fieldgroup.' . $item->id) && $canCheckin; ?> diff --git a/administrator/components/com_finder/src/Table/FilterTable.php b/administrator/components/com_finder/src/Table/FilterTable.php index f9d829d5ec212..bcee5b3799950 100644 --- a/administrator/components/com_finder/src/Table/FilterTable.php +++ b/administrator/components/com_finder/src/Table/FilterTable.php @@ -173,7 +173,7 @@ public function publish($pks = null, $state = 1, $userId = 0) } else { - $checkin = ' AND (checked_out = 0 OR checked_out = ' . (int) $userId . ')'; + $checkin = ' AND (checked_out IS NULL OR checked_out = ' . (int) $userId . ')'; } // Update the publishing state for rows with the given primary keys. diff --git a/administrator/components/com_finder/src/View/Filter/HtmlView.php b/administrator/components/com_finder/src/View/Filter/HtmlView.php index 83df7dd64d915..3b47a7abccde1 100644 --- a/administrator/components/com_finder/src/View/Filter/HtmlView.php +++ b/administrator/components/com_finder/src/View/Filter/HtmlView.php @@ -108,7 +108,7 @@ protected function addToolbar() Factory::getApplication()->input->set('hidemainmenu', true); $isNew = ($this->item->filter_id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == Factory::getUser()->id); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == Factory::getUser()->id); $canDo = ContentHelper::getActions('com_finder'); // Configure the toolbar. diff --git a/administrator/components/com_finder/tmpl/filters/default.php b/administrator/components/com_finder/tmpl/filters/default.php index bb45279d6f9f6..22ad786d6a83b 100644 --- a/administrator/components/com_finder/tmpl/filters/default.php +++ b/administrator/components/com_finder/tmpl/filters/default.php @@ -73,7 +73,7 @@ $userAuthoriseCoreEditState = $user->authorise('core.edit.state', 'com_finder'); $userId = $user->id; foreach ($this->items as $i => $item) : - $canCheckIn = $userAuthoriseCoreManage || $item->checked_out == $userId || $item->checked_out == 0; + $canCheckIn = $userAuthoriseCoreManage || $item->checked_out == $userId || is_null($item->checked_out); $canChange = $userAuthoriseCoreEditState && $canCheckIn; $escapedTitle = $this->escape($item->title); ?> diff --git a/administrator/components/com_installer/src/Model/UpdateModel.php b/administrator/components/com_installer/src/Model/UpdateModel.php index 00b593b42b3fd..45268b80564a9 100644 --- a/administrator/components/com_installer/src/Model/UpdateModel.php +++ b/administrator/components/com_installer/src/Model/UpdateModel.php @@ -143,7 +143,7 @@ protected function getListQuery() } else { - $eid = ExtensionHelper::getExtensionRecord('files_joomla')->extension_id; + $eid = ExtensionHelper::getExtensionRecord('joomla', 'file')->extension_id; $query->where($db->quoteName('u.extension_id') . ' != 0') ->where($db->quoteName('u.extension_id') . ' != :eid') ->bind(':eid', $eid, ParameterType::INTEGER); diff --git a/administrator/components/com_installer/src/View/Updatesite/HtmlView.php b/administrator/components/com_installer/src/View/Updatesite/HtmlView.php index 32196e922e9eb..f5f52fb33fc92 100644 --- a/administrator/components/com_installer/src/View/Updatesite/HtmlView.php +++ b/administrator/components/com_installer/src/View/Updatesite/HtmlView.php @@ -99,7 +99,7 @@ protected function addToolbar(): void $user = $app->getIdentity(); $userId = $user->id; - $checkedOut = !($this->item->checked_out === 0 || $this->item->checked_out === $userId); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out === $userId); // Since we don't track these assets at the item level, use the category id. $canDo = ContentHelper::getActions('com_installer', 'updatesite'); diff --git a/administrator/components/com_installer/tmpl/updatesites/default.php b/administrator/components/com_installer/tmpl/updatesites/default.php index 15c579d107dcd..3b34f80e35fba 100644 --- a/administrator/components/com_installer/tmpl/updatesites/default.php +++ b/administrator/components/com_installer/tmpl/updatesites/default.php @@ -74,7 +74,7 @@ items as $i => $item) : $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out === $userId - || $item->checked_out === 0; + || is_null($item->checked_out); $canEdit = $user->authorise('core.edit', 'com_installer'); ?> diff --git a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php index 24771af2eedc2..994e7bab29bac 100644 --- a/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php +++ b/administrator/components/com_joomlaupdate/src/Model/UpdateModel.php @@ -96,7 +96,7 @@ public function applyUpdateSite() $updateURL = 'https://update.joomla.org/core/list.xml'; } - $id = ExtensionHelper::getExtensionRecord('files_joomla')->extension_id; + $id = ExtensionHelper::getExtensionRecord('joomla', 'file')->extension_id; $db = $this->getDbo(); $query = $db->getQuery(true) ->select($db->quoteName('us') . '.*') @@ -166,11 +166,11 @@ public function refreshUpdates($force = false) if (count($methodParameters) >= 4) { // Reinstall support is available in Updater - $updater->findUpdates(ExtensionHelper::getExtensionRecord('files_joomla')->extension_id, $cache_timeout, $minimumStability, true); + $updater->findUpdates(ExtensionHelper::getExtensionRecord('joomla', 'file')->extension_id, $cache_timeout, $minimumStability, true); } else { - $updater->findUpdates(ExtensionHelper::getExtensionRecord('files_joomla')->extension_id, $cache_timeout, $minimumStability); + $updater->findUpdates(ExtensionHelper::getExtensionRecord('joomla', 'file')->extension_id, $cache_timeout, $minimumStability); } } @@ -197,7 +197,7 @@ public function getUpdateInformation() ); // Fetch the update information from the database. - $id = ExtensionHelper::getExtensionRecord('files_joomla')->extension_id; + $id = ExtensionHelper::getExtensionRecord('joomla', 'file')->extension_id; $db = $this->getDbo(); $query = $db->getQuery(true) ->select('*') @@ -731,7 +731,7 @@ public function finaliseUpgrade() $installer->setOverwrite(true); $installer->extension = new \Joomla\CMS\Table\Extension(Factory::getDbo()); - $installer->extension->load(ExtensionHelper::getExtensionRecord('files_joomla')->extension_id); + $installer->extension->load(ExtensionHelper::getExtensionRecord('joomla', 'file')->extension_id); $installer->setAdapter($installer->extension->type); diff --git a/administrator/components/com_languages/src/Model/InstalledModel.php b/administrator/components/com_languages/src/Model/InstalledModel.php index b84d9aefd8298..34a5e79c18968 100644 --- a/administrator/components/com_languages/src/Model/InstalledModel.php +++ b/administrator/components/com_languages/src/Model/InstalledModel.php @@ -222,7 +222,7 @@ public function getData() $row->authorEmail = $lang->manifest['authorEmail']; $row->version = $lang->manifest['version']; $row->published = $defaultLanguage === $row->language ? 1 : 0; - $row->checked_out = 0; + $row->checked_out = null; // Fix wrongly set parentheses in RTL languages if ($isCurrentLanguageRtl) diff --git a/administrator/components/com_mails/tmpl/template/edit.php b/administrator/components/com_mails/tmpl/template/edit.php index 8f1191922900e..2f151796cb9bf 100644 --- a/administrator/components/com_mails/tmpl/template/edit.php +++ b/administrator/components/com_mails/tmpl/template/edit.php @@ -53,6 +53,7 @@ form->renderField('subject'); ?>
+ form->getField('subject_switcher')->label; ?> form->getField('subject_switcher')->input; ?>
@@ -63,6 +64,7 @@ form->renderField('body'); ?>
+ form->getField('body_switcher')->label; ?> form->getField('body_switcher')->input; ?>

@@ -78,6 +80,7 @@ form->renderField('htmlbody'); ?>
+ form->getField('htmlbody_switcher')->label; ?> form->getField('htmlbody_switcher')->input; ?>

diff --git a/administrator/components/com_menus/presets/alternate.xml b/administrator/components/com_menus/presets/alternate.xml index bbcfacb76098d..909ce19c642d7 100644 --- a/administrator/components/com_menus/presets/alternate.xml +++ b/administrator/components/com_menus/presets/alternate.xml @@ -305,7 +305,7 @@ title="COM_CONTENT_MENUS_WORKFLOW" type="component" element="com_workflow" - link="index.php?option=com_workflow&view=workflows&extension=com_content" + link="index.php?option=com_workflow&view=workflows&extension=com_content.article" /> item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id')); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $user->get('id')); $canDo = $this->canDo; $clientId = $this->state->get('item.client_id', 0); diff --git a/administrator/components/com_menus/tmpl/items/default.php b/administrator/components/com_menus/tmpl/items/default.php index 61dd37acbf89c..b0ebf6b21dca8 100644 --- a/administrator/components/com_menus/tmpl/items/default.php +++ b/administrator/components/com_menus/tmpl/items/default.php @@ -102,7 +102,7 @@ $orderkey = array_search($item->id, $this->ordering[$item->parent_id]); $canCreate = $user->authorise('core.create', 'com_menus.menu.' . $item->menutype_id); $canEdit = $user->authorise('core.edit', 'com_menus.menu.' . $item->menutype_id); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || is_null($item->checked_out); $canChange = $user->authorise('core.edit.state', 'com_menus.menu.' . $item->menutype_id) && $canCheckin; // Get the parents of item for sorting diff --git a/administrator/components/com_modules/src/View/Module/HtmlView.php b/administrator/components/com_modules/src/View/Module/HtmlView.php index ba983e9500ec4..c84163ab21094 100644 --- a/administrator/components/com_modules/src/View/Module/HtmlView.php +++ b/administrator/components/com_modules/src/View/Module/HtmlView.php @@ -91,7 +91,7 @@ protected function addToolbar() $user = Factory::getUser(); $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id')); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $user->get('id')); $canDo = $this->canDo; ToolbarHelper::title(Text::sprintf('COM_MODULES_MANAGER_MODULE', Text::_($this->item->module)), 'cube module'); diff --git a/administrator/components/com_modules/tmpl/modules/default.php b/administrator/components/com_modules/tmpl/modules/default.php index b2c8e6cab8164..e5f1c58731932 100644 --- a/administrator/components/com_modules/tmpl/modules/default.php +++ b/administrator/components/com_modules/tmpl/modules/default.php @@ -89,7 +89,7 @@ $ordering = ($listOrder == 'a.ordering'); $canCreate = $user->authorise('core.create', 'com_modules'); $canEdit = $user->authorise('core.edit', 'com_modules.module.' . $item->id); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id')|| $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id')|| is_null($item->checked_out); $canChange = $user->authorise('core.edit.state', 'com_modules.module.' . $item->id) && $canCheckin; ?>
diff --git a/administrator/components/com_newsfeeds/src/View/Newsfeed/HtmlView.php b/administrator/components/com_newsfeeds/src/View/Newsfeed/HtmlView.php index 35bf6bf307fac..d3dfffe6f0d48 100644 --- a/administrator/components/com_newsfeeds/src/View/Newsfeed/HtmlView.php +++ b/administrator/components/com_newsfeeds/src/View/Newsfeed/HtmlView.php @@ -103,7 +103,7 @@ protected function addToolbar() $user = Factory::getUser(); $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id')); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $user->get('id')); // Since we don't track these assets at the item level, use the category id. $canDo = ContentHelper::getActions('com_newsfeeds', 'category', $this->item->catid); diff --git a/administrator/components/com_newsfeeds/tmpl/newsfeeds/default.php b/administrator/components/com_newsfeeds/tmpl/newsfeeds/default.php index 6955cbd127551..080500b0c4600 100644 --- a/administrator/components/com_newsfeeds/tmpl/newsfeeds/default.php +++ b/administrator/components/com_newsfeeds/tmpl/newsfeeds/default.php @@ -92,7 +92,7 @@ $ordering = ($listOrder == 'a.ordering'); $canCreate = $user->authorise('core.create', 'com_newsfeeds.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_newsfeeds.category.' . $item->catid); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || is_null($item->checked_out); $canEditOwn = $user->authorise('core.edit.own', 'com_newsfeeds.category.' . $item->catid) && $item->created_by == $user->id; $canChange = $user->authorise('core.edit.state', 'com_newsfeeds.category.' . $item->catid) && $canCheckin; ?> diff --git a/administrator/components/com_plugins/tmpl/plugins/default.php b/administrator/components/com_plugins/tmpl/plugins/default.php index 5492cb3893c90..8c606b5ef65e8 100644 --- a/administrator/components/com_plugins/tmpl/plugins/default.php +++ b/administrator/components/com_plugins/tmpl/plugins/default.php @@ -76,7 +76,7 @@ items as $i => $item) : $ordering = ($listOrder == 'ordering'); $canEdit = $user->authorise('core.edit', 'com_plugins'); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || is_null($item->checked_out); $canChange = $user->authorise('core.edit.state', 'com_plugins') && $canCheckin; ?> diff --git a/administrator/components/com_postinstall/src/Model/MessagesModel.php b/administrator/components/com_postinstall/src/Model/MessagesModel.php index 9a05ef636d76c..711e2f9d256b7 100644 --- a/administrator/components/com_postinstall/src/Model/MessagesModel.php +++ b/administrator/components/com_postinstall/src/Model/MessagesModel.php @@ -626,6 +626,6 @@ public function addPostInstallationMessage(array $options) */ public function getJoomlaFilesExtensionId() { - return ExtensionHelper::getExtensionRecord('files_joomla')->extension_id; + return ExtensionHelper::getExtensionRecord('joomla', 'file')->extension_id; } } diff --git a/administrator/components/com_tags/src/Model/TagModel.php b/administrator/components/com_tags/src/Model/TagModel.php index 5608fc7b5639b..7688503aded48 100644 --- a/administrator/components/com_tags/src/Model/TagModel.php +++ b/administrator/components/com_tags/src/Model/TagModel.php @@ -11,7 +11,6 @@ \defined('_JEXEC') or die; -use Joomla\CMS\Access\Rules; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Date\Date; use Joomla\CMS\Factory; @@ -226,8 +225,7 @@ protected function loadFormData() */ public function save($data) { - /** @var \Joomla\Component\Tags\Administrator\Table\Tag $table */ - + /** @var \Joomla\Component\Tags\Administrator\Table\TagTable $table */ $table = $this->getTable(); $input = Factory::getApplication()->input; $pk = (!empty($data['id'])) ? $data['id'] : (int) $this->getState($this->getName() . '.id'); @@ -237,100 +235,94 @@ public function save($data) // Include the plugins for the save events. PluginHelper::importPlugin($this->events_map['save']); - // Load the row if saving an existing tag. - if ($pk > 0) + try { - $table->load($pk); - $isNew = false; - } + // Load the row if saving an existing tag. + if ($pk > 0) + { + $table->load($pk); + $isNew = false; + } - // Set the new parent id if parent id not matched OR while New/Save as Copy . - if ($table->parent_id != $data['parent_id'] || $data['id'] == 0) - { - $table->setLocation($data['parent_id'], 'last-child'); - } + // Set the new parent id if parent id not matched OR while New/Save as Copy . + if ($table->parent_id != $data['parent_id'] || $data['id'] == 0) + { + $table->setLocation($data['parent_id'], 'last-child'); + } - if (isset($data['images']) && is_array($data['images'])) - { - $registry = new Registry($data['images']); - $data['images'] = (string) $registry; - } + // Alter the title for save as copy + if ($input->get('task') == 'save2copy') + { + list($title, $alias) = $this->generateNewTitle($data['parent_id'], $data['alias'], $data['title']); + $data['title'] = $title; + $data['alias'] = $alias; + } - if (isset($data['urls']) && is_array($data['urls'])) - { - $registry = new Registry($data['urls']); - $data['urls'] = (string) $registry; - } + // Bind the data. + if (!$table->bind($data)) + { + $this->setError($table->getError()); - // Alter the title for save as copy - if ($input->get('task') == 'save2copy') - { - list($title, $alias) = $this->generateNewTitle($data['parent_id'], $data['alias'], $data['title']); - $data['title'] = $title; - $data['alias'] = $alias; - } + return false; + } - // Bind the data. - if (!$table->bind($data)) - { - $this->setError($table->getError()); + // Prepare the row for saving + $this->prepareTable($table); - return false; - } + // Check the data. + if (!$table->check()) + { + $this->setError($table->getError()); - // Bind the rules. - if (isset($data['rules'])) - { - $rules = new Rules($data['rules']); - $table->setRules($rules); - } + return false; + } - // Check the data. - if (!$table->check()) - { - $this->setError($table->getError()); + // Trigger the before save event. + $result = Factory::getApplication()->triggerEvent($this->event_before_save, array($context, $table, $isNew, $data)); - return false; - } + if (in_array(false, $result, true)) + { + $this->setError($table->getError()); - // Trigger the before save event. - $result = Factory::getApplication()->triggerEvent($this->event_before_save, array($context, &$table, $isNew, $data)); + return false; + } - if (in_array(false, $result, true)) - { - $this->setError($table->getError()); + // Store the data. + if (!$table->store()) + { + $this->setError($table->getError()); - return false; - } + return false; + } - // Store the data. - if (!$table->store()) - { - $this->setError($table->getError()); + // Trigger the after save event. + Factory::getApplication()->triggerEvent($this->event_after_save, array($context, $table, $isNew)); - return false; - } + // Rebuild the path for the tag: + if (!$table->rebuildPath($table->id)) + { + $this->setError($table->getError()); - // Trigger the after save event. - Factory::getApplication()->triggerEvent($this->event_after_save, array($context, &$table, $isNew)); + return false; + } - // Rebuild the path for the tag: - if (!$table->rebuildPath($table->id)) - { - $this->setError($table->getError()); + // Rebuild the paths of the tag's children: + if (!$table->rebuild($table->id, $table->lft, $table->level, $table->path)) + { + $this->setError($table->getError()); - return false; + return false; + } } - - // Rebuild the paths of the tag's children: - if (!$table->rebuild($table->id, $table->lft, $table->level, $table->path)) + catch (\Exception $e) { - $this->setError($table->getError()); + $this->setError($e->getMessage()); return false; } $this->setState($this->getName() . '.id', $table->id); + $this->setState($this->getName() . '.new', $isNew); // Clear the cache $this->cleanCache(); diff --git a/administrator/components/com_tags/src/Table/TagTable.php b/administrator/components/com_tags/src/Table/TagTable.php index c285fe2772788..f37a8fce25f54 100644 --- a/administrator/components/com_tags/src/Table/TagTable.php +++ b/administrator/components/com_tags/src/Table/TagTable.php @@ -17,7 +17,6 @@ use Joomla\CMS\Language\Text; use Joomla\CMS\Table\Nested; use Joomla\Database\DatabaseDriver; -use Joomla\Registry\Registry; use Joomla\String\StringHelper; /** @@ -27,6 +26,14 @@ */ class TagTable extends Nested { + /** + * An array of key names to be json encoded in the bind function + * + * @var array + * @since 4.0.0 + */ + protected $_jsonEncode = ['params', 'metadata', 'urls', 'images']; + /** * Indicates that columns fully support the NULL value in the database * @@ -47,47 +54,6 @@ public function __construct(DatabaseDriver $db) parent::__construct('#__tags', 'id', $db); } - /** - * Overloaded bind function - * - * @param array $array Named array - * @param mixed $ignore An optional array or space separated list of properties - * to ignore while binding. - * - * @return mixed Null if operation was satisfactory, otherwise returns an error string - * - * @see \JTable::bind - * @since 3.1 - */ - public function bind($array, $ignore = '') - { - if (isset($array['params']) && is_array($array['params'])) - { - $registry = new Registry($array['params']); - $array['params'] = (string) $registry; - } - - if (isset($array['metadata']) && is_array($array['metadata'])) - { - $registry = new Registry($array['metadata']); - $array['metadata'] = (string) $registry; - } - - if (isset($array['urls']) && is_array($array['urls'])) - { - $registry = new Registry($array['urls']); - $array['urls'] = (string) $registry; - } - - if (isset($array['images']) && is_array($array['images'])) - { - $registry = new Registry($array['images']); - $array['images'] = (string) $registry; - } - - return parent::bind($array, $ignore); - } - /** * Overloaded check method to ensure data integrity. * diff --git a/administrator/components/com_tags/src/View/Tag/HtmlView.php b/administrator/components/com_tags/src/View/Tag/HtmlView.php index 689f04e05f7b2..90cb289cd471f 100644 --- a/administrator/components/com_tags/src/View/Tag/HtmlView.php +++ b/administrator/components/com_tags/src/View/Tag/HtmlView.php @@ -100,7 +100,7 @@ protected function addToolbar() $user = Factory::getUser(); $userId = $user->get('id'); $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $userId); $canDo = ContentHelper::getActions('com_tags'); diff --git a/administrator/components/com_tags/tmpl/tags/default.php b/administrator/components/com_tags/tmpl/tags/default.php index 2d7705c8390a0..ba0bc17eeba13 100644 --- a/administrator/components/com_tags/tmpl/tags/default.php +++ b/administrator/components/com_tags/tmpl/tags/default.php @@ -133,7 +133,7 @@ $orderkey = array_search($item->id, $this->ordering[$item->parent_id]); $canCreate = $user->authorise('core.create', 'com_tags'); $canEdit = $user->authorise('core.edit', 'com_tags'); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id')|| $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $user->get('id') || is_null($item->checked_out); $canChange = $user->authorise('core.edit.state', 'com_tags') && $canCheckin; // Get the parents of item for sorting diff --git a/administrator/components/com_templates/src/Model/StyleModel.php b/administrator/components/com_templates/src/Model/StyleModel.php index 310ba8817769c..79295e26ffd16 100644 --- a/administrator/components/com_templates/src/Model/StyleModel.php +++ b/administrator/components/com_templates/src/Model/StyleModel.php @@ -550,7 +550,7 @@ public function save($data) ->set($db->quoteName('template_style_id') . ' = :newtsid') ->whereIn($db->quoteName('id'), $data['assigned']) ->where($db->quoteName('template_style_id') . ' != :tsid') - ->whereIn($db->quoteName('checked_out'), [0, $userId]) + ->whereIn($db->quoteName('checked_out'), [null, $userId]) ->bind(':newtsid', $tableId, ParameterType::INTEGER) ->bind(':tsid', $tableId, ParameterType::INTEGER); $db->setQuery($query); @@ -570,7 +570,7 @@ public function save($data) } $query->where($db->quoteName('template_style_id') . ' = :templatestyleid') - ->whereIn($db->quoteName('checked_out'), [0, $userId]) + ->whereIn($db->quoteName('checked_out'), [null, $userId]) ->bind(':templatestyleid', $tableId, ParameterType::INTEGER); $db->setQuery($query); $db->execute(); diff --git a/administrator/components/com_users/src/View/Note/HtmlView.php b/administrator/components/com_users/src/View/Note/HtmlView.php index 3a0808282b95a..06b93baa66f26 100644 --- a/administrator/components/com_users/src/View/Note/HtmlView.php +++ b/administrator/components/com_users/src/View/Note/HtmlView.php @@ -93,7 +93,7 @@ protected function addToolbar() $user = Factory::getUser(); $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id')); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $user->get('id')); // Since we don't track these assets at the item level, use the category id. $canDo = ContentHelper::getActions('com_users', 'category', $this->item->catid); diff --git a/administrator/components/com_users/tmpl/notes/default.php b/administrator/components/com_users/tmpl/notes/default.php index 4068c8cf78701..d0830bc387c6e 100644 --- a/administrator/components/com_users/tmpl/notes/default.php +++ b/administrator/components/com_users/tmpl/notes/default.php @@ -65,7 +65,7 @@ items as $i => $item) : $canEdit = $user->authorise('core.edit', 'com_users.category.' . $item->catid); - $canCheckin = $user->authorise('core.admin', 'com_checkin') || $item->checked_out == $user->get('id') || $item->checked_out == 0; + $canCheckin = $user->authorise('core.admin', 'com_checkin') || $item->checked_out == $user->get('id') || is_null($item->checked_out); $canChange = $user->authorise('core.edit.state', 'com_users.category.' . $item->catid) && $canCheckin; $subject = $item->subject ?: Text::_('COM_USERS_EMPTY_SUBJECT'); ?> diff --git a/administrator/components/com_workflow/forms/filter_stages.xml b/administrator/components/com_workflow/forms/filter_stages.xml index 0223055580aab..a26c2deca43ae 100644 --- a/administrator/components/com_workflow/forms/filter_stages.xml +++ b/administrator/components/com_workflow/forms/filter_stages.xml @@ -17,14 +17,6 @@ > - - - @@ -32,20 +24,17 @@ name="fullordering" type="list" label="JGLOBAL_SORT_BY" - statuses="*,0,1,2,-2" - onchange="this.form.submit();" default="s.ordering ASC" + onchange="this.form.submit();" validate="options" > - - + + - - diff --git a/administrator/components/com_workflow/forms/filter_transitions.xml b/administrator/components/com_workflow/forms/filter_transitions.xml index 4a839964ea748..0b2b2d39f3186 100644 --- a/administrator/components/com_workflow/forms/filter_transitions.xml +++ b/administrator/components/com_workflow/forms/filter_transitions.xml @@ -24,6 +24,7 @@ onchange="this.form.submit();" sql_select="id as value, title as from_stage" sql_from="#__workflow_stages" + translate="true" > @@ -34,6 +35,7 @@ onchange="this.form.submit();" sql_select="id as value, title as to_stage" sql_from="#__workflow_stages" + translate="true" > @@ -45,13 +47,12 @@ type="list" label="JGLOBAL_SORT_BY" default="t.ordering ASC" - statuses="*,0,1,2,-2" onchange="this.form.submit();" validate="options" > - - + + diff --git a/administrator/components/com_workflow/forms/filter_workflows.xml b/administrator/components/com_workflow/forms/filter_workflows.xml index cfd1063ba0274..e6c2915ce6efc 100644 --- a/administrator/components/com_workflow/forms/filter_workflows.xml +++ b/administrator/components/com_workflow/forms/filter_workflows.xml @@ -1,5 +1,13 @@ - + +
+ +
-
diff --git a/administrator/components/com_workflow/src/Controller/DisplayController.php b/administrator/components/com_workflow/src/Controller/DisplayController.php index 2841602e80aeb..c4c47cd284578 100644 --- a/administrator/components/com_workflow/src/Controller/DisplayController.php +++ b/administrator/components/com_workflow/src/Controller/DisplayController.php @@ -40,6 +40,14 @@ class DisplayController extends BaseController */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Constructor. * @@ -58,7 +66,16 @@ public function __construct($config = array(), MVCFactoryInterface $factory = nu // If extension is not set try to get it from input or throw an exception if (empty($this->extension)) { - $this->extension = $this->input->getCmd('extension'); + $extension = $this->input->getCmd('extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } if (empty($this->extension)) { diff --git a/administrator/components/com_workflow/src/Controller/StageController.php b/administrator/components/com_workflow/src/Controller/StageController.php index 4d38fafc7b6f6..69e7625fec329 100644 --- a/administrator/components/com_workflow/src/Controller/StageController.php +++ b/administrator/components/com_workflow/src/Controller/StageController.php @@ -40,6 +40,14 @@ class StageController extends FormController */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Constructor. * @@ -69,7 +77,16 @@ public function __construct($config = array(), MVCFactoryInterface $factory = nu // If extension is not set try to get it from input or throw an exception if (empty($this->extension)) { - $this->extension = $this->input->getCmd('extension'); + $extension = $this->input->getCmd('extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } if (empty($this->extension)) { @@ -89,18 +106,7 @@ public function __construct($config = array(), MVCFactoryInterface $factory = nu */ protected function allowAdd($data = array()) { - $user = Factory::getUser(); - - $model = $this->getModel('Workflow'); - - $workflow = $model->getItem($this->workflowId); - - if ($workflow->core) - { - return false; - } - - return $user->authorise('core.create', $this->extension); + return $this->app->getIdentity()->authorise('core.create', $this->extension); } /** @@ -116,20 +122,7 @@ protected function allowAdd($data = array()) protected function allowEdit($data = array(), $key = 'id') { $recordId = isset($data[$key]) ? (int) $data[$key] : 0; - $user = Factory::getUser(); - - $model = $this->getModel(); - - $item = $model->getItem($recordId); - - $model = $this->getModel('Workflow'); - - $workflow = $model->getItem($item->workflow_id); - - if ($workflow->core) - { - return false; - } + $user = $this->app->getIdentity(); // Check "edit" permission on record asset (explicit or inherited) if ($user->authorise('core.edit', $this->extension . '.stage.' . $recordId)) @@ -163,7 +156,7 @@ protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id') { $append = parent::getRedirectToItemAppend($recordId); - $append .= '&workflow_id=' . $this->workflowId . '&extension=' . $this->extension; + $append .= '&workflow_id=' . $this->workflowId . '&extension=' . $this->extension . ($this->section ? '.' . $this->section : ''); return $append; } @@ -178,7 +171,7 @@ protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id') protected function getRedirectToListAppend() { $append = parent::getRedirectToListAppend(); - $append .= '&workflow_id=' . $this->workflowId . '&extension=' . $this->extension; + $append .= '&workflow_id=' . $this->workflowId . '&extension=' . $this->extension . ($this->section ? '.' . $this->section : ''); return $append; } diff --git a/administrator/components/com_workflow/src/Controller/StagesController.php b/administrator/components/com_workflow/src/Controller/StagesController.php index 4d78855b3e3e5..dd2aab5c6e03f 100644 --- a/administrator/components/com_workflow/src/Controller/StagesController.php +++ b/administrator/components/com_workflow/src/Controller/StagesController.php @@ -42,6 +42,14 @@ class StagesController extends AdminController */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * The prefix to use with controller messages. * @@ -79,7 +87,16 @@ public function __construct(array $config = array(), MVCFactoryInterface $factor // If extension is not set try to get it from input or throw an exception if (empty($this->extension)) { - $this->extension = $this->input->getCmd('extension'); + $extension = $this->input->getCmd('extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } if (empty($this->extension)) { @@ -182,6 +199,6 @@ public function setDefault() */ protected function getRedirectToListAppend() { - return '&extension=' . $this->extension . '&workflow_id=' . $this->workflowId; + return '&extension=' . $this->extension . ($this->section ? '.' . $this->section : '') . '&workflow_id=' . $this->workflowId; } } diff --git a/administrator/components/com_workflow/src/Controller/TransitionController.php b/administrator/components/com_workflow/src/Controller/TransitionController.php index 7fbc647c1ca68..215bb5e2dde69 100644 --- a/administrator/components/com_workflow/src/Controller/TransitionController.php +++ b/administrator/components/com_workflow/src/Controller/TransitionController.php @@ -39,6 +39,14 @@ class TransitionController extends FormController */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Constructor. * @@ -68,7 +76,16 @@ public function __construct($config = array(), MVCFactoryInterface $factory = nu // If extension is not set try to get it from input or throw an exception if (empty($this->extension)) { - $this->extension = $this->input->getCmd('extension'); + $extension = $this->input->getCmd('extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } if (empty($this->extension)) { @@ -88,18 +105,7 @@ public function __construct($config = array(), MVCFactoryInterface $factory = nu */ protected function allowAdd($data = array()) { - $user = $this->app->getIdentity(); - - $model = $this->getModel('Workflow'); - - $workflow = $model->getItem($this->workflowId); - - if ($workflow->core) - { - return false; - } - - return $user->authorise('core.create', $this->extension); + return $this->app->getIdentity()->authorise('core.create', $this->extension); } /** @@ -125,11 +131,6 @@ protected function allowEdit($data = array(), $key = 'id') $workflow = $model->getItem($item->workflow_id); - if ($workflow->core) - { - return false; - } - // Check "edit" permission on record asset (explicit or inherited) if ($user->authorise('core.edit', $this->extension . '.transition.' . $recordId)) { diff --git a/administrator/components/com_workflow/src/Controller/TransitionsController.php b/administrator/components/com_workflow/src/Controller/TransitionsController.php index 045e5f7dfd58a..7882376468aea 100644 --- a/administrator/components/com_workflow/src/Controller/TransitionsController.php +++ b/administrator/components/com_workflow/src/Controller/TransitionsController.php @@ -39,6 +39,14 @@ class TransitionsController extends AdminController */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * The prefix to use with controller messages. * @@ -76,7 +84,16 @@ public function __construct($config = array(), MVCFactoryInterface $factory = nu // If extension is not set try to get it from input or throw an exception if (empty($this->extension)) { - $this->extension = $this->input->getCmd('extension'); + $extension = $this->input->getCmd('extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } if (empty($this->extension)) { @@ -110,7 +127,11 @@ public function getModel($name = 'Transition', $prefix = 'Administrator', $confi */ protected function getRedirectToListAppend() { - return '&extension=' . $this->extension + $append = parent::getRedirectToListAppend(); + + $append .= '&extension=' . $this->extension . ($this->section ? '.' . $this->section : '') . '&workflow_id=' . $this->workflowId; + + return $append; } } diff --git a/administrator/components/com_workflow/src/Controller/WorkflowController.php b/administrator/components/com_workflow/src/Controller/WorkflowController.php index 819ed6323586a..25e8b2677d958 100644 --- a/administrator/components/com_workflow/src/Controller/WorkflowController.php +++ b/administrator/components/com_workflow/src/Controller/WorkflowController.php @@ -32,6 +32,14 @@ class WorkflowController extends FormController */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Constructor. * @@ -50,7 +58,16 @@ public function __construct($config = array(), MVCFactoryInterface $factory = nu // If extension is not set try to get it from input or throw an exception if (empty($this->extension)) { - $this->extension = $this->input->getCmd('extension'); + $extension = $this->input->getCmd('extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } if (empty($this->extension)) { @@ -90,11 +107,6 @@ protected function allowEdit($data = array(), $key = 'id') $record = $this->getModel()->getItem($recordId); - if (!empty($record->id) && $record->core) - { - return false; - } - // Check "edit" permission on record asset (explicit or inherited) if ($user->authorise('core.edit', $this->extension . '.workflow.' . $recordId)) { @@ -123,7 +135,7 @@ protected function allowEdit($data = array(), $key = 'id') protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id') { $append = parent::getRedirectToItemAppend($recordId); - $append .= '&extension=' . $this->extension; + $append .= '&extension=' . $this->extension . ($this->section ? '.' . $this->section : ''); return $append; } @@ -138,7 +150,7 @@ protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id') protected function getRedirectToListAppend() { $append = parent::getRedirectToListAppend(); - $append .= '&extension=' . $this->extension; + $append .= '&extension=' . $this->extension . ($this->section ? '.' . $this->section : ''); return $append; } diff --git a/administrator/components/com_workflow/src/Controller/WorkflowsController.php b/administrator/components/com_workflow/src/Controller/WorkflowsController.php index 552fe8643cf63..01c9f8dd988d6 100644 --- a/administrator/components/com_workflow/src/Controller/WorkflowsController.php +++ b/administrator/components/com_workflow/src/Controller/WorkflowsController.php @@ -34,6 +34,14 @@ class WorkflowsController extends AdminController */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Constructor. * @@ -52,7 +60,16 @@ public function __construct($config = array(), MVCFactoryInterface $factory = nu // If extension is not set try to get it from input or throw an exception if (empty($this->extension)) { - $this->extension = $this->input->getCmd('extension'); + $extension = $this->input->getCmd('extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } if (empty($this->extension)) { @@ -103,7 +120,7 @@ public function setDefault() $this->setRedirect( Route::_( 'index.php?option=' . $this->option . '&view=' . $this->view_list - . '&extension=' . $this->extension, false + . '&extension=' . $this->extension . ($this->section ? '.' . $this->section : ''), false ) ); @@ -149,25 +166,7 @@ public function setDefault() $this->setRedirect( Route::_( 'index.php?option=' . $this->option . '&view=' . $this->view_list - . '&extension=' . $this->extension, false - ) - ); - } - - /** - * Deletes and returns correctly. - * - * @return void - * - * @since 4.0.0 - */ - public function delete() - { - parent::delete(); - $this->setRedirect( - Route::_( - 'index.php?option=' . $this->option . '&view=' . $this->view_list - . '&extension=' . $this->extension, false + . '&extension=' . $this->extension . ($this->section ? '.' . $this->section : ''), false ) ); } @@ -181,6 +180,6 @@ public function delete() */ protected function getRedirectToListAppend() { - return '&extension=' . $this->extension; + return '&extension=' . $this->extension . ($this->section ? '.' . $this->section : ''); } } diff --git a/administrator/components/com_workflow/src/Dispatcher/Dispatcher.php b/administrator/components/com_workflow/src/Dispatcher/Dispatcher.php index b30e6ee24bbc5..792a1a263e96d 100644 --- a/administrator/components/com_workflow/src/Dispatcher/Dispatcher.php +++ b/administrator/components/com_workflow/src/Dispatcher/Dispatcher.php @@ -11,6 +11,7 @@ \defined('_JEXEC') or die; +use Joomla\CMS\Access\Exception\NotAllowed; use Joomla\CMS\Dispatcher\ComponentDispatcher; /** diff --git a/administrator/components/com_workflow/src/Field/WorkflowcontextsField.php b/administrator/components/com_workflow/src/Field/WorkflowcontextsField.php new file mode 100644 index 0000000000000..c5af01c7622d1 --- /dev/null +++ b/administrator/components/com_workflow/src/Field/WorkflowcontextsField.php @@ -0,0 +1,70 @@ +getOptions()) < 2) + { + $this->layout = 'joomla.form.field.hidden'; + } + + return parent::getInput(); + } + + /** + * Method to get the field options. + * + * @return array The field option objects. + * + * @since 4.0.0 + */ + protected function getOptions() + { + $parts = explode('.', $this->value); + + $component = Factory::getApplication()->bootComponent($parts[0]); + + if ($component instanceof WorkflowServiceInterface) + { + return $component->getWorkflowContexts(); + } + + return []; + } +} diff --git a/administrator/components/com_workflow/src/Model/StageModel.php b/administrator/components/com_workflow/src/Model/StageModel.php index c2227fa184878..f9b802861f50c 100644 --- a/administrator/components/com_workflow/src/Model/StageModel.php +++ b/administrator/components/com_workflow/src/Model/StageModel.php @@ -121,7 +121,7 @@ protected function canDelete($record) $table->load($record->workflow_id); - if (empty($record->id) || $record->published != -2 || $table->core) + if (empty($record->id) || $record->published != -2) { return false; } @@ -165,15 +165,6 @@ protected function canEditState($record) $record->workflow_id = $workflowID; } - $table = $this->getTable('Workflow', 'Administrator'); - - $table->load($record->workflow_id); - - if ($table->core) - { - return false; - } - // Check for existing workflow. if (!empty($record->id)) { diff --git a/administrator/components/com_workflow/src/Model/StagesModel.php b/administrator/components/com_workflow/src/Model/StagesModel.php index 151ea6340ac26..817ded91d0ae3 100644 --- a/administrator/components/com_workflow/src/Model/StagesModel.php +++ b/administrator/components/com_workflow/src/Model/StagesModel.php @@ -37,7 +37,6 @@ public function __construct($config = array()) 'id', 's.id', 'title', 's.title', 'ordering','s.ordering', - 'condition','s.condition', 'published', 's.published' ); } @@ -134,7 +133,6 @@ public function getListQuery() 's.id', 's.title', 's.ordering', - 's.condition', 's.default', 's.published', 's.checked_out', @@ -153,21 +151,13 @@ public function getListQuery() $query->where($db->quoteName('s.workflow_id') . ' = ' . $workflowID); } - $condition = $this->getState('filter.condition'); - - // Filter by condition - if (is_numeric($condition)) - { - $query->where($db->quoteName('s.condition') . ' = ' . (int) $db->escape($condition)); - } - // Join over the users for the checked out user. $query->select($db->quoteName('uc.name', 'editor')) ->join('LEFT', $db->quoteName('#__users', 'uc'), $db->quoteName('uc.id') . ' = ' . $db->quoteName('s.checked_out')); $status = (string) $this->getState('filter.published'); - // Filter by condition + // Filter by publish state if (is_numeric($status)) { $query->where($db->quoteName('s.published') . ' = ' . (int) $status); diff --git a/administrator/components/com_workflow/src/Model/TransitionModel.php b/administrator/components/com_workflow/src/Model/TransitionModel.php index 3481eb6cae7cb..a6a48afcab21e 100644 --- a/administrator/components/com_workflow/src/Model/TransitionModel.php +++ b/administrator/components/com_workflow/src/Model/TransitionModel.php @@ -12,8 +12,10 @@ \defined('_JEXEC') or die; use Joomla\CMS\Factory; +use Joomla\CMS\Form\Form; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\Model\AdminModel; +use Joomla\Registry\Registry; use Joomla\String\StringHelper; /** @@ -54,11 +56,7 @@ public function populateState() */ protected function canDelete($record) { - $table = $this->getTable('Workflow', 'Administrator'); - - $table->load($record->workflow_id); - - if (empty($record->id) || $record->published != -2 || $table->core) + if (empty($record->id) || $record->published != -2) { return false; } @@ -91,15 +89,6 @@ protected function canEditState($record) $record->workflow_id = $workflowID; } - $table = $this->getTable('Workflow', 'Administrator'); - - $table->load($record->workflow_id); - - if ($table->core) - { - return false; - } - // Check for existing workflow. if (!empty($record->id)) { @@ -110,6 +99,28 @@ protected function canEditState($record) return $user->authorise('core.edit.state', $extension); } + /** + * Method to get a single record. + * + * @param integer $pk The id of the primary key. + * + * @return CMSObject|boolean Object on success, false on failure. + * + * @since 4.0.0 + */ + public function getItem($pk = null) + { + $item = parent::getItem($pk); + + if (property_exists($item, 'options')) + { + $registry = new Registry($item->options); + $item->options = $registry->toArray(); + } + + return $item; + } + /** * Method to save the form data. * @@ -132,35 +143,6 @@ public function save($data) $isNew = false; } - if ($data['to_stage_id'] == $data['from_stage_id']) - { - $this->setError(Text::_('COM_WORKFLOW_MSG_FROM_TO_STAGE')); - - return false; - } - - $db = $this->getDbo(); - $query = $db->getQuery(true) - ->select($db->quoteName('id')) - ->from($db->quoteName('#__workflow_transitions')) - ->where($db->quoteName('from_stage_id') . ' = ' . (int) $data['from_stage_id']) - ->where($db->quoteName('to_stage_id') . ' = ' . (int) $data['to_stage_id']); - - if (!$isNew) - { - $query->where($db->quoteName('id') . ' <> ' . (int) $data['id']); - } - - $db->setQuery($query); - $duplicate = $db->loadResult(); - - if (!empty($duplicate)) - { - $this->setError(Text::_("COM_WORKFLOW_TRANSITION_DUPLICATE")); - - return false; - } - $workflowID = $app->getUserStateFromRequest($context . '.filter.workflow_id', 'workflow_id', 0, 'int'); if (empty($data['workflow_id'])) @@ -221,6 +203,10 @@ protected function generateNewTitle($category_id, $alias, $title) */ public function getForm($data = array(), $loadData = true) { + $app = Factory::getApplication(); + + $context = $this->option . '.' . $this->name; + // Get the form. $form = $this->loadForm( 'com_workflow.transition', @@ -238,24 +224,31 @@ public function getForm($data = array(), $loadData = true) if ($loadData) { - $data = (object) $this->loadFormData(); + $data = (array) $this->loadFormData(); } - if (!$this->canEditState((object) $data)) + if (empty($data['workflow_id'])) { - // Disable fields for display. - $form->setFieldAttribute('published', 'disabled', 'true'); - - // Disable fields while saving. - // The controller has already verified this is a record you can edit. - $form->setFieldAttribute('published', 'filter', 'unset'); + $data['workflow_id'] = (int) $app->getUserStateFromRequest($context . '.filter.workflow_id', 'workflow_id', 0, 'int'); } - $app = Factory::getApplication(); + // Disable state when no permission to change + $disableFields = []; - $workflow_id = $app->input->getInt('workflow_id'); + if (!$this->canEditState((object) $data)) + { + $disableFields[] = 'published'; + } - $where = $this->getDbo()->quoteName('workflow_id') . ' = ' . $workflow_id . ' AND ' . $this->getDbo()->quoteName('published') . ' = 1'; + foreach ($disableFields as $field) + { + $form->setFieldAttribute($field, 'disabled', 'true'); + $form->setFieldAttribute($field, 'required', 'false'); + $form->setFieldAttribute($field, 'filter', 'unset'); + } + + $where = $this->getDbo()->quoteName('workflow_id') . ' = ' . (int) $data['workflow_id']; + $where .= ' AND ' . $this->getDbo()->quoteName('published') . ' = 1'; $form->setFieldAttribute('from_stage_id', 'sql_where', $where); $form->setFieldAttribute('to_stage_id', 'sql_where', $where); @@ -285,4 +278,37 @@ protected function loadFormData() return $data; } + + public function getWorkflow() + { + $app = Factory::getApplication(); + + $context = $this->option . '.' . $this->name; + + $workflow_id = (int) $app->getUserStateFromRequest($context . '.filter.workflow_id', 'workflow_id', 0, 'int'); + + $workflow = $this->getTable('Workflow'); + + $workflow->load($workflow_id); + + return (object) $workflow->getProperties(); + } + + /** + * Trigger the form preparation for the workflow group + * + * @param Form $form A Form object. + * @param mixed $data The data expected for the form. + * @param string $group The name of the plugin group to import (defaults to "content"). + * + * @return void + * + * @see FormField + * @since 4.0.0 + * @throws \Exception if there is an error in the form event. + */ + protected function preprocessForm(Form $form, $data, $group = 'workflow') + { + parent::preprocessForm($form, $data, $group); + } } diff --git a/administrator/components/com_workflow/src/Model/TransitionsModel.php b/administrator/components/com_workflow/src/Model/TransitionsModel.php index 5977afb4d2c2b..f7037188b2957 100644 --- a/administrator/components/com_workflow/src/Model/TransitionsModel.php +++ b/administrator/components/com_workflow/src/Model/TransitionsModel.php @@ -146,9 +146,7 @@ public function getListQuery() ); $select[] = $db->quoteName('f_stage.title', 'from_stage'); - $select[] = $db->quoteName('f_stage.condition', 'from_condition'); $select[] = $db->quoteName('t_stage.title', 'to_stage'); - $select[] = $db->quoteName('t_stage.condition', 'to_condition'); $joinTo = $db->quoteName('#__workflow_stages', 't_stage') . ' ON ' . $db->quoteName('t_stage.id') . ' = ' . $db->quoteName('t.to_stage_id'); @@ -172,7 +170,7 @@ public function getListQuery() $status = $this->getState('filter.published'); - // Filter by condition + // Filter by status if (is_numeric($status)) { $query->where($db->quoteName('t.published') . ' = ' . (int) $status); diff --git a/administrator/components/com_workflow/src/Model/WorkflowModel.php b/administrator/components/com_workflow/src/Model/WorkflowModel.php index 52f2db78e4215..5cf20b0ac9bc8 100644 --- a/administrator/components/com_workflow/src/Model/WorkflowModel.php +++ b/administrator/components/com_workflow/src/Model/WorkflowModel.php @@ -105,64 +105,21 @@ public function save($data) $result = parent::save($data); - // Create default stages/transitions + // Create default stage for new workflow if ($result && $input->getCmd('task') !== 'save2copy' && $this->getState($this->getName() . '.new')) { $workflow_id = (int) $this->getState($this->getName() . '.id'); - $stages = [ - [ - 'title' => 'JUNPUBLISHED', - 'condition' => Workflow::CONDITION_UNPUBLISHED, - 'default' => 1, - 'transition' => 'Unpublish' - ], - [ - 'title' => 'JPUBLISHED', - 'condition' => Workflow::CONDITION_PUBLISHED, - 'transition' => 'Publish' - ], - [ - 'title' => 'JTRASHED', - 'condition' => Workflow::CONDITION_TRASHED, - 'transition' => 'Trash' - ], - [ - 'title' => 'JARCHIVED', - 'condition' => Workflow::CONDITION_ARCHIVED, - 'transition' => 'Archive' - ] - ]; - $table = $this->getTable('Stage'); - $transition = $this->getTable('Transition'); - - foreach ($stages as $stage) - { - $table->reset(); - - $table->id = 0; - $table->title = $stage['title']; - $table->workflow_id = $workflow_id; - $table->condition = $stage['condition']; - $table->published = 1; - $table->default = (int) !empty($stage['default']); - $table->description = ''; - $table->store(); - - $transition->reset(); + $table->id = 0; + $table->title = 'COM_WORKFLOW_BASIC_STAGE'; + $table->description = ''; + $table->workflow_id = $workflow_id; + $table->published = 1; + $table->default = 1; - $transition->id = 0; - $transition->title = $stage['transition']; - $transition->description = ''; - $transition->workflow_id = $workflow_id; - $transition->published = 1; - $transition->from_stage_id = -1; - $transition->to_stage_id = (int) $table->id; - - $transition->store(); - } + $table->store(); } return $result; @@ -264,6 +221,10 @@ protected function preprocessForm(Form $form, $data, $group = 'content') { $extension = Factory::getApplication()->input->get('extension'); + $parts = explode('.', $extension); + + $extension = array_shift($parts); + // Set the access control rules field component value. $form->setFieldAttribute('rules', 'component', $extension); $form->setFieldAttribute('rules', 'section', 'workflow'); @@ -348,7 +309,7 @@ public function setDefault($pk, $value = 1) */ protected function canDelete($record) { - if (empty($record->id) || $record->published != -2 || $record->core) + if (empty($record->id) || $record->published != -2) { return false; } @@ -369,11 +330,6 @@ protected function canEditState($record) { $user = Factory::getUser(); - if (!empty($record->core)) - { - return false; - } - // Check for existing workflow. if (!empty($record->id)) { diff --git a/administrator/components/com_workflow/src/Model/WorkflowsModel.php b/administrator/components/com_workflow/src/Model/WorkflowsModel.php index d6b912e896693..a05bb2b15ab02 100644 --- a/administrator/components/com_workflow/src/Model/WorkflowsModel.php +++ b/administrator/components/com_workflow/src/Model/WorkflowsModel.php @@ -116,6 +116,28 @@ public function getItems() return $items; } + /** + * Get the filter form + * + * @param array $data data + * @param boolean $loadData load current data + * + * @return \JForm|false the JForm object or false + * + * @since 4.0.0 + */ + public function getFilterForm($data = array(), $loadData = true) + { + $form = parent::getFilterForm($data, $loadData); + + if ($form) + { + $form->setValue('extension', null, $this->getState('filter.extension')); + } + + return $form; + } + /** * Add the number of transitions and states to all workflow items * @@ -197,7 +219,6 @@ public function getListQuery() 'w.checked_out_time', 'w.ordering', 'w.default', - 'w.core', 'w.created_by', 'w.description', 'u.name' @@ -217,7 +238,7 @@ public function getListQuery() $status = (string) $this->getState('filter.published'); - // Filter by condition + // Filter by status if (is_numeric($status)) { $query->where($db->quoteName('w.published') . ' = ' . (int) $status); diff --git a/administrator/components/com_workflow/src/Table/StageTable.php b/administrator/components/com_workflow/src/Table/StageTable.php index 8b91cac144abe..31589d6180e0f 100644 --- a/administrator/components/com_workflow/src/Table/StageTable.php +++ b/administrator/components/com_workflow/src/Table/StageTable.php @@ -207,7 +207,11 @@ protected function _getAssetName() $workflow = new WorkflowTable($this->getDbo()); $workflow->load($this->workflow_id); - return $workflow->extension . '.stage.' . (int) $this->$k; + $parts = explode('.', $workflow->extension); + + $extension = array_shift($parts); + + return $extension . '.stage.' . (int) $this->$k; } /** @@ -235,9 +239,16 @@ protected function _getAssetTitle() protected function _getAssetParentId(Table $table = null, $id = null) { $asset = self::getInstance('Asset', 'JTable', array('dbo' => $this->getDbo())); + $workflow = new WorkflowTable($this->getDbo()); $workflow->load($this->workflow_id); - $name = $workflow->extension . '.workflow.' . (int) $workflow->id; + + $parts = explode('.', $workflow->extension); + + $extension = array_shift($parts); + + $name = $extension . '.workflow.' . (int) $workflow->id; + $asset->loadByName($name); $assetId = $asset->id; diff --git a/administrator/components/com_workflow/src/Table/TransitionTable.php b/administrator/components/com_workflow/src/Table/TransitionTable.php index f2c9ad30f5a17..9da1e1a2bbca0 100644 --- a/administrator/components/com_workflow/src/Table/TransitionTable.php +++ b/administrator/components/com_workflow/src/Table/TransitionTable.php @@ -30,6 +30,16 @@ class TransitionTable extends Table */ protected $_supportNullValue = true; + /** + * An array of key names to be json encoded in the bind function + * + * @var array + * @since 4.0.0 + */ + protected $_jsonEncode = [ + 'options' + ]; + /** * Constructor * @@ -44,21 +54,6 @@ public function __construct(DatabaseDriver $db) $this->access = (int) Factory::getApplication()->get('access'); } - /** - * Overloaded store function - * - * @param boolean $updateNulls True to update fields even if they are null. - * - * @return mixed False on failure, positive integer on success. - * - * @see Table::store() - * @since 4.0.0 - */ - public function store($updateNulls = true) - { - return parent::store($updateNulls); - } - /** * Method to compute the default name of the asset. * The default name is in the form table_name.id @@ -74,7 +69,11 @@ protected function _getAssetName() $workflow = new WorkflowTable($this->getDbo()); $workflow->load($this->workflow_id); - return $workflow->extension . '.transition.' . (int) $this->$k; + $parts = explode('.', $workflow->extension); + + $extension = array_shift($parts); + + return $extension . '.transition.' . (int) $this->$k; } /** @@ -102,9 +101,16 @@ protected function _getAssetTitle() protected function _getAssetParentId(Table $table = null, $id = null) { $asset = self::getInstance('Asset', 'JTable', array('dbo' => $this->getDbo())); + $workflow = new WorkflowTable($this->getDbo()); $workflow->load($this->workflow_id); - $name = $workflow->extension . '.workflow.' . (int) $workflow->id; + + $parts = explode('.', $workflow->extension); + + $extension = array_shift($parts); + + $name = $extension . '.workflow.' . (int) $workflow->id; + $asset->loadByName($name); $assetId = $asset->id; diff --git a/administrator/components/com_workflow/src/Table/WorkflowTable.php b/administrator/components/com_workflow/src/Table/WorkflowTable.php index 502d757dc3e5f..04797b014fc51 100644 --- a/administrator/components/com_workflow/src/Table/WorkflowTable.php +++ b/administrator/components/com_workflow/src/Table/WorkflowTable.php @@ -243,7 +243,11 @@ protected function _getAssetName() { $k = $this->_tbl_key; - return $this->extension . '.workflow.' . (int) $this->$k; + $parts = explode('.', $this->extension); + + $extension = array_shift($parts); + + return $extension . '.workflow.' . (int) $this->$k; } /** @@ -272,11 +276,15 @@ protected function _getAssetParentId(Table $table = null, $id = null) { $assetId = null; + $parts = explode('.', $this->extension); + + $extension = array_shift($parts); + // Build the query to get the asset id for the parent category. $query = $this->getDbo()->getQuery(true) ->select($this->getDbo()->quoteName('id')) ->from($this->getDbo()->quoteName('#__assets')) - ->where($this->getDbo()->quoteName('name') . ' = ' . $this->getDbo()->quote($this->extension)); + ->where($this->getDbo()->quoteName('name') . ' = ' . $this->getDbo()->quote($extension)); // Get the asset id from the database. $this->getDbo()->setQuery($query); diff --git a/administrator/components/com_workflow/src/View/Stage/HtmlView.php b/administrator/components/com_workflow/src/View/Stage/HtmlView.php index 93b783558a60c..7fe44313e013c 100644 --- a/administrator/components/com_workflow/src/View/Stage/HtmlView.php +++ b/administrator/components/com_workflow/src/View/Stage/HtmlView.php @@ -56,6 +56,14 @@ class HtmlView extends BaseHtmlView */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Display item view * @@ -77,7 +85,17 @@ public function display($tpl = null) $this->state = $this->get('State'); $this->form = $this->get('Form'); $this->item = $this->get('Item'); - $this->extension = $this->state->get('filter.extension'); + + $extension = $this->state->get('filter.extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } // Set the toolbar $this->addToolBar(); @@ -101,7 +119,7 @@ protected function addToolbar() $userId = $user->id; $isNew = empty($this->item->id); - $canDo = StageHelper::getActions($this->extension, 'state', $this->item->id); + $canDo = StageHelper::getActions($this->extension, 'stage', $this->item->id); ToolbarHelper::title(empty($this->item->id) ? Text::_('COM_WORKFLOW_STAGE_ADD') : Text::_('COM_WORKFLOW_STAGE_EDIT'), 'address'); diff --git a/administrator/components/com_workflow/src/View/Stages/HtmlView.php b/administrator/components/com_workflow/src/View/Stages/HtmlView.php index 2c8b121c04b34..9813e9f69207e 100644 --- a/administrator/components/com_workflow/src/View/Stages/HtmlView.php +++ b/administrator/components/com_workflow/src/View/Stages/HtmlView.php @@ -99,6 +99,14 @@ class HtmlView extends BaseHtmlView */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Display the view * @@ -124,17 +132,20 @@ public function display($tpl = null) $this->workflow = $this->get('Workflow'); $this->workflowID = $this->workflow->id; - $this->extension = $this->workflow->extension; + + $parts = explode('.', $this->workflow->extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } if (!empty($this->stages)) { $extension = Factory::getApplication()->input->getCmd('extension'); $workflow = new Workflow(['extension' => $extension]); - - foreach ($this->stages as $i => $item) - { - $item->condition = $workflow->getConditionName((int) $item->condition); - } } $this->addToolbar(); @@ -153,11 +164,12 @@ protected function addToolbar() { $canDo = ContentHelper::getActions($this->extension, 'workflow', $this->workflowID); + $user = Factory::getUser(); + $toolbar = Toolbar::getInstance('toolbar'); ToolbarHelper::title(Text::sprintf('COM_WORKFLOW_STAGES_LIST', Text::_($this->state->get('active_workflow', ''))), 'address contact'); - $isCore = $this->workflow->core; $arrow = Factory::getLanguage()->isRtl() ? 'arrow-right' : 'arrow-left'; ToolbarHelper::link( @@ -166,48 +178,45 @@ protected function addToolbar() $arrow ); - if (!$isCore) + if ($canDo->get('core.create')) { - if ($canDo->get('core.create')) - { - $toolbar->addNew('stage.add'); - } + $toolbar->addNew('stage.add'); + } + + if ($canDo->get('core.edit.state') || $user->authorise('core.admin')) + { + $dropdown = $toolbar->dropdownButton('status-group') + ->text('JTOOLBAR_CHANGE_STATUS') + ->toggleSplit(false) + ->icon('fas fa-ellipsis-h') + ->buttonClass('btn btn-action') + ->listCheck(true); + + $childBar = $dropdown->getChildToolbar(); + + $childBar->publish('stages.publish', 'JTOOLBAR_ENABLE')->listCheck(true); + $childBar->unpublish('stages.unpublish', 'JTOOLBAR_DISABLE')->listCheck(true); + $childBar->makeDefault('stages.setDefault', 'COM_WORKFLOW_TOOLBAR_DEFAULT'); - if ($canDo->get('core.edit.state') || $user->authorise('core.admin')) + if ($canDo->get('core.admin')) { - $dropdown = $toolbar->dropdownButton('status-group') - ->text('JTOOLBAR_CHANGE_STATUS') - ->toggleSplit(false) - ->icon('fas fa-ellipsis-h') - ->buttonClass('btn btn-action') - ->listCheck(true); - - $childBar = $dropdown->getChildToolbar(); - - $childBar->publish('stages.publish', 'JTOOLBAR_ENABLE')->listCheck(true); - $childBar->unpublish('stages.unpublish', 'JTOOLBAR_DISABLE')->listCheck(true); - $childBar->makeDefault('stages.setDefault', 'COM_WORKFLOW_TOOLBAR_DEFAULT'); - - if ($canDo->get('core.admin')) - { - $childBar->checkin('stages.checkin')->listCheck(true); - } - - if ($this->state->get('filter.published') !== '-2') - { - $childBar->trash('stages.trash'); - } + $childBar->checkin('stages.checkin')->listCheck(true); } - if ($this->state->get('filter.published') === '-2' && $canDo->get('core.delete') && !$isCore) + if ($this->state->get('filter.published') !== '-2') { - $toolbar->delete('stages.delete') - ->text('JTOOLBAR_EMPTY_TRASH') - ->message('JGLOBAL_CONFIRM_DELETE') - ->listCheck(true); + $childBar->trash('stages.trash'); } } + if ($this->state->get('filter.published') === '-2' && $canDo->get('core.delete')) + { + $toolbar->delete('stages.delete') + ->text('JTOOLBAR_EMPTY_TRASH') + ->message('JGLOBAL_CONFIRM_DELETE') + ->listCheck(true); + } + $toolbar->help('JHELP_WORKFLOW_STAGES_LIST'); } } diff --git a/administrator/components/com_workflow/src/View/Transition/HtmlView.php b/administrator/components/com_workflow/src/View/Transition/HtmlView.php index aabab96354a4a..1614c167fffab 100644 --- a/administrator/components/com_workflow/src/View/Transition/HtmlView.php +++ b/administrator/components/com_workflow/src/View/Transition/HtmlView.php @@ -72,6 +72,22 @@ class HtmlView extends BaseHtmlView */ protected $workflowID; + /** + * The name of current extension + * + * @var string + * @since 4.0.0 + */ + protected $extension; + + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Display item view * @@ -96,7 +112,17 @@ public function display($tpl = null) $this->state = $this->get('State'); $this->form = $this->get('Form'); $this->item = $this->get('Item'); - $this->extension = $this->state->get('filter.extension'); + + $extension = $this->state->get('filter.extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } // Get the ID of workflow $this->workflowID = $this->input->getCmd("workflow_id"); @@ -129,10 +155,12 @@ protected function addToolbar() $toolbarButtons = []; + $canCreate = $canDo->get('core.create'); + if ($isNew) { // For new records, check the create permission. - if ($canDo->get('core.edit')) + if ($canCreate) { ToolbarHelper::apply('transition.apply'); $toolbarButtons = [['save', 'transition.save'], ['save2new', 'transition.save2new']]; @@ -151,20 +179,27 @@ protected function addToolbar() if ($itemEditable) { ToolbarHelper::apply('transition.apply'); - $toolbarButtons = [['save', 'transition.save']]; + $toolbarButtons[] = ['save', 'transition.save']; // We can save this record, but check the create permission to see if we can return to make a new one. - if ($canDo->get('core.create')) + if ($canCreate) { $toolbarButtons[] = ['save2new', 'transition.save2new']; $toolbarButtons[] = ['save2copy', 'transition.save2copy']; } } - ToolbarHelper::saveGroup( - $toolbarButtons, - 'btn-success' - ); + if (count($toolbarButtons) > 1) + { + ToolbarHelper::saveGroup( + $toolbarButtons, + 'btn-success' + ); + } + else + { + ToolbarHelper::save('transition.save'); + } } ToolbarHelper::cancel('transition.cancel'); diff --git a/administrator/components/com_workflow/src/View/Transitions/HtmlView.php b/administrator/components/com_workflow/src/View/Transitions/HtmlView.php index d0d70b94f300e..7fb4db0430e60 100644 --- a/administrator/components/com_workflow/src/View/Transitions/HtmlView.php +++ b/administrator/components/com_workflow/src/View/Transitions/HtmlView.php @@ -98,6 +98,14 @@ class HtmlView extends BaseHtmlView */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Display the view * @@ -123,7 +131,15 @@ public function display($tpl = null) $this->workflow = $this->get('Workflow'); $this->workflowID = $this->workflow->id; - $this->extension = $this->workflow->extension; + + $parts = explode('.', $this->workflow->extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } $this->addToolbar(); @@ -141,11 +157,12 @@ protected function addToolbar() { $canDo = ContentHelper::getActions($this->extension, 'workflow', $this->workflowID); + $user = Factory::getUser(); + $toolbar = Toolbar::getInstance('toolbar'); ToolbarHelper::title(Text::sprintf('COM_WORKFLOW_TRANSITIONS_LIST', Text::_($this->state->get('active_workflow'))), 'address contact'); - $isCore = $this->workflow->core; $arrow = Factory::getLanguage()->isRtl() ? 'arrow-right' : 'arrow-left'; ToolbarHelper::link( @@ -154,47 +171,44 @@ protected function addToolbar() $arrow ); - if (!$isCore) + if ($canDo->get('core.create')) { - if ($canDo->get('core.create')) - { - $toolbar->addNew('transition.add'); - } + $toolbar->addNew('transition.add'); + } + + if ($canDo->get('core.edit.state') || $user->authorise('core.admin')) + { + $dropdown = $toolbar->dropdownButton('status-group') + ->text('JTOOLBAR_CHANGE_STATUS') + ->toggleSplit(false) + ->icon('fas fa-ellipsis-h') + ->buttonClass('btn btn-action') + ->listCheck(true); - if ($canDo->get('core.edit.state') || $user->authorise('core.admin')) + $childBar = $dropdown->getChildToolbar(); + + $childBar->publish('transitions.publish', 'JTOOLBAR_ENABLE'); + $childBar->unpublish('transitions.unpublish', 'JTOOLBAR_DISABLE'); + + if ($canDo->get('core.admin')) { - $dropdown = $toolbar->dropdownButton('status-group') - ->text('JTOOLBAR_CHANGE_STATUS') - ->toggleSplit(false) - ->icon('fas fa-ellipsis-h') - ->buttonClass('btn btn-action') - ->listCheck(true); - - $childBar = $dropdown->getChildToolbar(); - - $childBar->publish('transitions.publish', 'JTOOLBAR_ENABLE'); - $childBar->unpublish('transitions.unpublish', 'JTOOLBAR_DISABLE'); - - if ($canDo->get('core.admin')) - { - $childBar->checkin('transitions.checkin')->listCheck(true); - } - - if ($this->state->get('filter.published') !== '-2') - { - $childBar->trash('transitions.trash'); - } + $childBar->checkin('transitions.checkin')->listCheck(true); } - if ($this->state->get('filter.published') === '-2' && $canDo->get('core.delete')) + if ($this->state->get('filter.published') !== '-2') { - $toolbar->delete('transitions.delete') - ->text('JTOOLBAR_EMPTY_TRASH') - ->message('JGLOBAL_CONFIRM_DELETE') - ->listCheck(true); + $childBar->trash('transitions.trash'); } } + if ($this->state->get('filter.published') === '-2' && $canDo->get('core.delete')) + { + $toolbar->delete('transitions.delete') + ->text('JTOOLBAR_EMPTY_TRASH') + ->message('JGLOBAL_CONFIRM_DELETE') + ->listCheck(true); + } + $toolbar->help('JHELP_WORKFLOW_TRANSITIONS_LIST'); } } diff --git a/administrator/components/com_workflow/src/View/Workflow/HtmlView.php b/administrator/components/com_workflow/src/View/Workflow/HtmlView.php index 2829f1b85eecb..60df1924181f8 100644 --- a/administrator/components/com_workflow/src/View/Workflow/HtmlView.php +++ b/administrator/components/com_workflow/src/View/Workflow/HtmlView.php @@ -62,6 +62,14 @@ class HtmlView extends BaseHtmlView */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Display item view * @@ -77,7 +85,17 @@ public function display($tpl = null) $this->state = $this->get('State'); $this->form = $this->get('Form'); $this->item = $this->get('Item'); - $this->extension = $this->state->get('filter.extension'); + + $extension = $this->state->get('filter.extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } // Check for errors. if (count($errors = $this->get('Errors'))) @@ -132,7 +150,7 @@ protected function addToolbar() // Since it's an existing record, check the edit permission, or fall back to edit own if the owner. $itemEditable = $canDo->get('core.edit') || ($canDo->get('core.edit.own') && $this->item->created_by == $userId); - if ($itemEditable && !$this->item->core) + if ($itemEditable) { ToolbarHelper::apply('workflow.apply'); $toolbarButtons = [['save', 'workflow.save']]; diff --git a/administrator/components/com_workflow/src/View/Workflows/HtmlView.php b/administrator/components/com_workflow/src/View/Workflows/HtmlView.php index 91c42fcac355e..6847a17b15c69 100644 --- a/administrator/components/com_workflow/src/View/Workflows/HtmlView.php +++ b/administrator/components/com_workflow/src/View/Workflows/HtmlView.php @@ -10,6 +10,7 @@ \defined('_JEXEC') or die; +use Joomla\CMS\Factory; use Joomla\CMS\Helper\ContentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\MVC\View\GenericDataException; @@ -80,6 +81,14 @@ class HtmlView extends BaseHtmlView */ protected $extension; + /** + * The section of the current extension + * + * @var string + * @since 4.0.0 + */ + protected $section; + /** * Display the view * @@ -103,7 +112,16 @@ public function display($tpl = null) throw new GenericDataException(implode("\n", $errors), 500); } - $this->extension = $this->state->get('filter.extension'); + $extension = $this->state->get('filter.extension'); + + $parts = explode('.', $extension); + + $this->extension = array_shift($parts); + + if (!empty($parts)) + { + $this->section = array_shift($parts); + } $this->addToolbar(); @@ -119,7 +137,9 @@ public function display($tpl = null) */ protected function addToolbar() { - $canDo = ContentHelper::getActions($this->extension); + $canDo = ContentHelper::getActions($this->extension, $this->section); + + $user = Factory::getApplication()->getIdentity(); // Get the toolbar object instance $toolbar = Toolbar::getInstance('toolbar'); diff --git a/administrator/components/com_workflow/tmpl/stage/edit.php b/administrator/components/com_workflow/tmpl/stage/edit.php index 220038f1a04d4..f8bc54f05fa7b 100644 --- a/administrator/components/com_workflow/tmpl/stage/edit.php +++ b/administrator/components/com_workflow/tmpl/stage/edit.php @@ -39,7 +39,6 @@
- form->renderField('condition'); ?> form->renderField('description'); ?>
diff --git a/administrator/components/com_workflow/tmpl/stages/default.php b/administrator/components/com_workflow/tmpl/stages/default.php index aa01c4b46b4de..74db6c9419393 100644 --- a/administrator/components/com_workflow/tmpl/stages/default.php +++ b/administrator/components/com_workflow/tmpl/stages/default.php @@ -27,8 +27,6 @@ $saveOrder = ($listOrder == 's.ordering'); -$isCore = $this->workflow->core; - if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_workflow&task=stages.saveOrderAjax&workflow_id=' . (int) $this->workflowID . '&extension=' . $this->escape($this->extension) . '&' . Session::getFormToken() . '=1'; @@ -68,18 +66,15 @@
- - - - @@ -90,7 +85,7 @@ $edit = Route::_('index.php?option=com_workflow&task=stage.edit&id=' . $item->id . '&workflow_id=' . (int) $this->workflowID . '&extension=' . $this->extension); $canEdit = $user->authorise('core.edit', $this->extension . '.stage.' . $item->id); - $canCheckin = $user->authorise('core.admin', 'com_workflow') || $item->checked_out == $userId || $item->checked_out == 0; + $canCheckin = $user->authorise('core.admin', 'com_workflow') || $item->checked_out == $userId || is_null($item->checked_out); $canChange = $user->authorise('core.edit.stage', $this->extension . '.stage.' . $item->id) && $canCheckin; ?> @@ -116,7 +111,7 @@ diff --git a/administrator/components/com_workflow/tmpl/transition/edit.php b/administrator/components/com_workflow/tmpl/transition/edit.php index 215b26b435cd0..0682d7600ed52 100644 --- a/administrator/components/com_workflow/tmpl/transition/edit.php +++ b/administrator/components/com_workflow/tmpl/transition/edit.php @@ -17,6 +17,9 @@ HTMLHelper::_('behavior.formvalidator'); HTMLHelper::_('behavior.keepalive'); +$this->ignore_fieldsets = ['params', 'transition', 'permissions']; +$this->useCoreUI = true; + // In case of modal $isModal = $this->input->get('layout') === 'modal'; $layout = $isModal ? 'modal' : 'edit'; @@ -30,7 +33,7 @@ 'details')); ?> - +
@@ -51,6 +54,8 @@
+ +
diff --git a/administrator/components/com_workflow/tmpl/transitions/default.php b/administrator/components/com_workflow/tmpl/transitions/default.php index 31c1d7a6e1d23..fa5f26b053ec2 100644 --- a/administrator/components/com_workflow/tmpl/transitions/default.php +++ b/administrator/components/com_workflow/tmpl/transitions/default.php @@ -27,8 +27,6 @@ $saveOrder = ($listOrder == 't.ordering'); -$isCore = $this->workflow->core; - if ($saveOrder) { $saveOrderingUrl = 'index.php?option=com_workflow&task=transitions.saveOrderAjax&workflow_id=' . (int) $this->workflowID . '&extension=' . $this->escape($this->extension) . '&' . Session::getFormToken() . '=1'; @@ -68,16 +66,16 @@
- - - - - items as $i => $article) : ?> - items[$i]->stage_condition == ContentComponent::CONDITION_UNPUBLISHED) : ?> + items[$i]->state == ContentComponent::CONDITION_UNPUBLISHED) : ?> @@ -225,7 +225,7 @@ - stage_condition == ContentComponent::CONDITION_UNPUBLISHED) : ?> + state == ContentComponent::CONDITION_UNPUBLISHED) : ?> diff --git a/components/com_content/tmpl/form/edit.php b/components/com_content/tmpl/form/edit.php index ae2da60cbe4a1..3689b23b12d01 100644 --- a/components/com_content/tmpl/form/edit.php +++ b/components/com_content/tmpl/form/edit.php @@ -99,6 +99,9 @@ tab_name, 'publishing', Text::_('COM_CONTENT_PUBLISHING')); ?> + + form->renderField('transition'); ?> + form->renderField('state'); ?> form->renderField('catid'); ?> form->renderField('tags'); ?> form->renderField('note'); ?> @@ -108,9 +111,6 @@ get('show_publishing_options', 1) == 1) : ?> form->renderField('created_by_alias'); ?> - item->id > 0) : ?> - form->renderField('transition'); ?> - item->params->get('access-change')) : ?> form->renderField('featured'); ?> get('show_publishing_options', 1) == 1) : ?> diff --git a/composer.lock b/composer.lock index 9aebbc588d361..7f129ef1713a3 100644 --- a/composer.lock +++ b/composer.lock @@ -5759,12 +5759,12 @@ "source": { "type": "git", "url": "https://github.com/joomla-projects/joomla-browser.git", - "reference": "45a40262a139b599193f2aee0faefb29874d200a" + "reference": "0323d0d0741b0c9096bec5a015fc39444dd28cf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/joomla-projects/joomla-browser/zipball/45a40262a139b599193f2aee0faefb29874d200a", - "reference": "45a40262a139b599193f2aee0faefb29874d200a", + "url": "https://api.github.com/repos/joomla-projects/joomla-browser/zipball/0323d0d0741b0c9096bec5a015fc39444dd28cf5", + "reference": "0323d0d0741b0c9096bec5a015fc39444dd28cf5", "shasum": "" }, "require": { @@ -5802,7 +5802,7 @@ "acceptance testing", "joomla" ], - "time": "2020-04-12T10:39:07+00:00" + "time": "2020-05-01T19:53:33+00:00" }, { "name": "joomla/cms-coding-standards", diff --git a/installation/sql/mysql/base.sql b/installation/sql/mysql/base.sql index a3a363527d313..28a2ca49b3207 100644 --- a/installation/sql/mysql/base.sql +++ b/installation/sql/mysql/base.sql @@ -75,15 +75,15 @@ INSERT INTO `#__assets` (`id`, `parent_id`, `lft`, `rgt`, `level`, `name`, `titl (53, 18, 90, 91, 2, 'com_modules.module.86', 'Joomla Version', '{}'), (54, 16, 54, 55, 2, 'com_menus.menu.1', 'Main Menu', '{}'), (55, 18, 92, 93, 2, 'com_modules.module.87', 'Sample Data', '{}'), -(56, 8, 20, 37, 2, 'com_content.workflow.1', 'COM_WORKFLOW_DEFAULT_WORKFLOW', '{}'), -(57, 56, 21, 22, 3, 'com_content.state.1', 'Unpublished', '{}'), -(58, 56, 23, 24, 3, 'com_content.state.2', 'Published', '{}'), -(59, 56, 25, 26, 3, 'com_content.state.3', 'Trashed', '{}'), -(60, 56, 27, 28, 3, 'com_content.state.4', 'Archived', '{}'), -(61, 56, 29, 30, 3, 'com_content.transition.1', 'Publish', '{}'), -(62, 56, 31, 32, 3, 'com_content.transition.2', 'Unpublish', '{}'), -(63, 56, 33, 34, 3, 'com_content.transition.3', 'Archive', '{}'), -(64, 56, 35, 36, 3, 'com_content.transition.4', 'Trash', '{}'), +(56, 8, 20, 37, 2, 'com_content.workflow.1', 'COM_WORKFLOW_BASIC_WORKFLOW', '{}'), +(57, 56, 21, 22, 3, 'com_content.state.1', 'COM_WORKFLOW_BASIC_STAGE', '{}'), +(58, 56, 23, 24, 3, 'com_content.transition.1', 'Publish', '{}'), +(59, 56, 25, 26, 3, 'com_content.transition.2', 'Unpublish', '{}'), +(60, 56, 27, 28, 3, 'com_content.transition.3', 'Archive', '{}'), +(61, 56, 29, 30, 3, 'com_content.transition.4', 'Trash', '{}'), +(62, 56, 31, 32, 3, 'com_content.transition.5', 'Feature', '{}'), +(63, 56, 33, 34, 3, 'com_content.transition.6', 'Unfeature', '{}'), +(64, 56, 35, 36, 3, 'com_content.transition.7', 'Publish & Feature', '{}'), (65, 1, 129, 130, 1, 'com_privacy', 'com_privacy', '{}'), (66, 1, 131, 132, 1, 'com_actionlogs', 'com_actionlogs', '{}'), (67, 18, 74, 75, 2, 'com_modules.module.88', 'Latest Actions', '{}'), @@ -124,7 +124,7 @@ CREATE TABLE IF NOT EXISTS `#__extensions` ( `locked` tinyint(3) NOT NULL DEFAULT 0 COMMENT 'Flag to indicate if the extension is locked. Locked extensions cannot be uninstalled.', `manifest_cache` text NOT NULL, `params` text NOT NULL, - `checked_out` int(10) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `ordering` int(11) DEFAULT 0, `state` int(11) DEFAULT 0, @@ -140,244 +140,247 @@ CREATE TABLE IF NOT EXISTS `#__extensions` ( -- -- Components -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(0, 'com_wrapper', 'component', 'com_wrapper', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_admin', 'component', 'com_admin', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_banners', 'component', 'com_banners', '', 1, 1, 1, 0, 1, '', '{"purchase_type":"3","track_impressions":"0","track_clicks":"0","metakey_prefix":"","save_history":"1","history_limit":10}', 0, NULL, 0, 0), -(0, 'com_cache', 'component', 'com_cache', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_categories', 'component', 'com_categories', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_checkin', 'component', 'com_checkin', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_contact', 'component', 'com_contact', '', 1, 1, 1, 0, 1, '', '{"contact_layout":"_:default","show_contact_category":"hide","save_history":"1","history_limit":10,"show_contact_list":"0","presentation_style":"sliders","show_tags":"1","show_info":"1","show_name":"1","show_position":"1","show_email":"0","show_street_address":"1","show_suburb":"1","show_state":"1","show_postcode":"1","show_country":"1","show_telephone":"1","show_mobile":"1","show_fax":"1","show_webpage":"1","show_image":"1","show_misc":"1","image":"","allow_vcard":"0","show_articles":"0","articles_display_num":"10","show_profile":"0","show_user_custom_fields":["-1"],"show_links":"0","linka_name":"","linkb_name":"","linkc_name":"","linkd_name":"","linke_name":"","contact_icons":"0","icon_address":"","icon_email":"","icon_telephone":"","icon_mobile":"","icon_fax":"","icon_misc":"","category_layout":"_:default","show_category_title":"1","show_description":"1","show_description_image":"0","maxLevel":"-1","show_subcat_desc":"1","show_empty_categories":"0","show_cat_items":"1","show_cat_tags":"1","show_base_description":"1","maxLevelcat":"-1","show_subcat_desc_cat":"1","show_empty_categories_cat":"0","show_cat_items_cat":"1","filter_field":"0","show_pagination_limit":"0","show_headings":"1","show_image_heading":"0","show_position_headings":"1","show_email_headings":"0","show_telephone_headings":"1","show_mobile_headings":"0","show_fax_headings":"0","show_suburb_headings":"1","show_state_headings":"1","show_country_headings":"1","show_pagination":"2","show_pagination_results":"1","initial_sort":"ordering","captcha":"","show_email_form":"1","show_email_copy":"0","banned_email":"","banned_subject":"","banned_text":"","validate_session":"1","custom_reply":"0","redirect":"","show_feed_link":"1","sef_ids":0,"custom_fields_enable":"1"}', 0, NULL, 0, 0), -(0, 'com_cpanel', 'component', 'com_cpanel', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_installer', 'component', 'com_installer', '', 1, 1, 1, 1, 1, '', '{"cachetimeout":"6","minimum_stability":"4"}', 0, NULL, 0, 0), -(0, 'com_languages', 'component', 'com_languages', '', 1, 1, 1, 1, 1, '', '{"administrator":"en-GB","site":"en-GB"}', 0, NULL, 0, 0), -(0, 'com_login', 'component', 'com_login', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_media', 'component', 'com_media', '', 1, 1, 0, 1, 1, '', '{"upload_extensions":"bmp,csv,doc,gif,ico,jpg,jpeg,odg,odp,ods,odt,pdf,png,ppt,txt,xcf,xls,BMP,CSV,DOC,GIF,ICO,JPG,JPEG,ODG,ODP,ODS,ODT,PDF,PNG,PPT,TXT,XCF,XLS","upload_maxsize":"10","file_path":"images","image_path":"images","restrict_uploads":"1","allowed_media_usergroup":"3","check_mime":"1","image_extensions":"bmp,gif,jpg,png","ignore_extensions":"","upload_mime":"image\\/jpeg,image\\/gif,image\\/png,image\\/bmp,application\\/msword,application\\/excel,application\\/pdf,application\\/powerpoint,text\\/plain,application\\/x-zip","upload_mime_illegal":"text\\/html"}', 0, NULL, 0, 0), -(0, 'com_menus', 'component', 'com_menus', '', 1, 1, 1, 1, 1, '', '{"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":""}', 0, NULL, 0, 0), -(0, 'com_messages', 'component', 'com_messages', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_modules', 'component', 'com_modules', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_newsfeeds', 'component', 'com_newsfeeds', '', 1, 1, 1, 0, 1, '', '{"newsfeed_layout":"_:default","save_history":"1","history_limit":5,"show_feed_image":"1","show_feed_description":"1","show_item_description":"1","feed_character_count":"0","feed_display_order":"des","float_first":"right","float_second":"right","show_tags":"1","category_layout":"_:default","show_category_title":"1","show_description":"1","show_description_image":"1","maxLevel":"-1","show_empty_categories":"0","show_subcat_desc":"1","show_cat_items":"1","show_cat_tags":"1","show_base_description":"1","maxLevelcat":"-1","show_empty_categories_cat":"0","show_subcat_desc_cat":"1","show_cat_items_cat":"1","filter_field":"1","show_pagination_limit":"1","show_headings":"1","show_articles":"0","show_link":"1","show_pagination":"1","show_pagination_results":"1"}', 0, NULL, 0, 0), -(0, 'com_plugins', 'component', 'com_plugins', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_templates', 'component', 'com_templates', '', 1, 1, 1, 1, 1, '', '{"template_positions_display":"0","upload_limit":"10","image_formats":"gif,bmp,jpg,jpeg,png","source_formats":"txt,less,ini,xml,js,php,css,scss,sass,json","font_formats":"woff,ttf,otf","compressed_formats":"zip"}', 0, NULL, 0, 0), -(0, 'com_content', 'component', 'com_content', '', 1, 1, 0, 1, 1, '', '{"article_layout":"_:default","show_title":"1","link_titles":"1","show_intro":"1","show_category":"1","link_category":"1","show_parent_category":"0","link_parent_category":"0","show_author":"1","link_author":"0","show_create_date":"0","show_modify_date":"0","show_publish_date":"1","show_item_navigation":"1","show_vote":"0","show_tags":"1","show_readmore":"1","show_readmore_title":"1","readmore_limit":"100","show_hits":"1","show_noauth":"0","show_publishing_options":"1","show_article_options":"1","save_history":"1","history_limit":10,"show_urls_images_frontend":"0","show_urls_images_backend":"1","targeta":0,"targetb":0,"targetc":0,"float_intro":"left","float_fulltext":"left","category_layout":"_:blog","show_category_title":"0","show_description":"0","show_description_image":"0","maxLevel":"1","show_empty_categories":"0","show_no_articles":"1","show_subcat_desc":"1","show_cat_num_articles":"0","show_base_description":"1","maxLevelcat":"-1","show_empty_categories_cat":"0","show_subcat_desc_cat":"1","show_cat_num_articles_cat":"1","num_leading_articles":"1","num_intro_articles":"4","num_links":"4","show_subcategory_content":"0","show_pagination_limit":"1","filter_field":"hide","show_headings":"1","list_show_date":"0","date_format":"","list_show_hits":"1","list_show_author":"1","orderby_pri":"order","orderby_sec":"rdate","order_date":"published","show_pagination":"2","show_pagination_results":"1","show_feed_link":"1","feed_summary":"0"}', 0, NULL, 0, 0), -(0, 'com_config', 'component', 'com_config', '', 1, 1, 0, 1, 1, '', '{"filters":{"1":{"filter_type":"NH","filter_tags":"","filter_attributes":""},"6":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"7":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"2":{"filter_type":"NH","filter_tags":"","filter_attributes":""},"3":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"4":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"5":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"10":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"12":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"8":{"filter_type":"NONE","filter_tags":"","filter_attributes":""}}}', 0, NULL, 0, 0), -(0, 'com_redirect', 'component', 'com_redirect', '', 1, 1, 0, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_users', 'component', 'com_users', '', 1, 1, 0, 1, 1, '', '{"allowUserRegistration":"0","new_usertype":"2","guest_usergroup":"9","sendpassword":"0","useractivation":"2","mail_to_admin":"1","captcha":"","frontend_userparams":"1","site_language":"0","change_login_name":"0","reset_count":"10","reset_time":"1","minimum_length":"4","minimum_integers":"0","minimum_symbols":"0","minimum_uppercase":"0","save_history":"1","history_limit":5,"mailSubjectPrefix":"","mailBodySuffix":""}', 0, NULL, 0, 0), -(0, 'com_finder', 'component', 'com_finder', '', 1, 1, 0, 0, 1, '', '{"enabled":"0","show_description":"1","description_length":255,"allow_empty_query":"0","show_url":"1","show_autosuggest":"1","show_suggested_query":"1","show_explained_query":"1","show_advanced":"1","show_advanced_tips":"1","expand_advanced":"0","show_date_filters":"0","sort_order":"relevance","sort_direction":"desc","highlight_terms":"1","opensearch_name":"","opensearch_description":"","batch_size":"50","memory_table_limit":30000,"title_multiplier":"1.7","text_multiplier":"0.7","meta_multiplier":"1.2","path_multiplier":"2.0","misc_multiplier":"0.3","stem":"1","stemmer":"snowball","enable_logging":"0"}', 0, NULL, 0, 0), -(0, 'com_joomlaupdate', 'component', 'com_joomlaupdate', '', 1, 1, 0, 1, 1, '', '{"updatesource":"default","customurl":""}', 0, NULL, 0, 0), -(0, 'com_tags', 'component', 'com_tags', '', 1, 1, 1, 0, 1, '', '{"tag_layout":"_:default","save_history":"1","history_limit":5,"show_tag_title":"0","tag_list_show_tag_image":"0","tag_list_show_tag_description":"0","tag_list_image":"","tag_list_orderby":"title","tag_list_orderby_direction":"ASC","show_headings":"0","tag_list_show_date":"0","tag_list_show_item_image":"0","tag_list_show_item_description":"0","tag_list_item_maximum_characters":0,"return_any_or_all":"1","include_children":"0","maximum":200,"tag_list_language_filter":"all","tags_layout":"_:default","all_tags_orderby":"title","all_tags_orderby_direction":"ASC","all_tags_show_tag_image":"0","all_tags_show_tag_description":"0","all_tags_tag_maximum_characters":20,"all_tags_show_tag_hits":"0","filter_field":"1","show_pagination_limit":"1","show_pagination":"2","show_pagination_results":"1","tag_field_ajax_mode":"1","show_feed_link":"1"}', 0, NULL, 0, 0), -(0, 'com_contenthistory', 'component', 'com_contenthistory', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_ajax', 'component', 'com_ajax', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_postinstall', 'component', 'com_postinstall', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_fields', 'component', 'com_fields', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_associations', 'component', 'com_associations', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_privacy', 'component', 'com_privacy', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 0, 1, '', '{"ip_logging":0,"csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_checkin","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', 0, NULL, 0, 0), -(0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 1, 1, '', '{}', 0, NULL, 0, 0), -(0, 'com_csp', 'component', 'com_csp', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_mails', 'component', 'com_mails', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0); +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`) VALUES +(0, 'com_wrapper', 'component', 'com_wrapper', '', 1, 1, 1, 0, 1, '', ''), +(0, 'com_admin', 'component', 'com_admin', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_banners', 'component', 'com_banners', '', 1, 1, 1, 0, 1, '', '{"purchase_type":"3","track_impressions":"0","track_clicks":"0","metakey_prefix":"","save_history":"1","history_limit":10}'), +(0, 'com_cache', 'component', 'com_cache', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_categories', 'component', 'com_categories', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_checkin', 'component', 'com_checkin', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_contact', 'component', 'com_contact', '', 1, 1, 1, 0, 1, '', '{"contact_layout":"_:default","show_contact_category":"hide","save_history":"1","history_limit":10,"show_contact_list":"0","presentation_style":"sliders","show_tags":"1","show_info":"1","show_name":"1","show_position":"1","show_email":"0","show_street_address":"1","show_suburb":"1","show_state":"1","show_postcode":"1","show_country":"1","show_telephone":"1","show_mobile":"1","show_fax":"1","show_webpage":"1","show_image":"1","show_misc":"1","image":"","allow_vcard":"0","show_articles":"0","articles_display_num":"10","show_profile":"0","show_user_custom_fields":["-1"],"show_links":"0","linka_name":"","linkb_name":"","linkc_name":"","linkd_name":"","linke_name":"","contact_icons":"0","icon_address":"","icon_email":"","icon_telephone":"","icon_mobile":"","icon_fax":"","icon_misc":"","category_layout":"_:default","show_category_title":"1","show_description":"1","show_description_image":"0","maxLevel":"-1","show_subcat_desc":"1","show_empty_categories":"0","show_cat_items":"1","show_cat_tags":"1","show_base_description":"1","maxLevelcat":"-1","show_subcat_desc_cat":"1","show_empty_categories_cat":"0","show_cat_items_cat":"1","filter_field":"0","show_pagination_limit":"0","show_headings":"1","show_image_heading":"0","show_position_headings":"1","show_email_headings":"0","show_telephone_headings":"1","show_mobile_headings":"0","show_fax_headings":"0","show_suburb_headings":"1","show_state_headings":"1","show_country_headings":"1","show_pagination":"2","show_pagination_results":"1","initial_sort":"ordering","captcha":"","show_email_form":"1","show_email_copy":"0","banned_email":"","banned_subject":"","banned_text":"","validate_session":"1","custom_reply":"0","redirect":"","show_feed_link":"1","sef_ids":0,"custom_fields_enable":"1"}'), +(0, 'com_cpanel', 'component', 'com_cpanel', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_installer', 'component', 'com_installer', '', 1, 1, 1, 1, 1, '', '{"cachetimeout":"6","minimum_stability":"4"}'), +(0, 'com_languages', 'component', 'com_languages', '', 1, 1, 1, 1, 1, '', '{"administrator":"en-GB","site":"en-GB"}'), +(0, 'com_login', 'component', 'com_login', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_media', 'component', 'com_media', '', 1, 1, 0, 1, 1, '', '{"upload_extensions":"bmp,csv,doc,gif,ico,jpg,jpeg,odg,odp,ods,odt,pdf,png,ppt,txt,xcf,xls,BMP,CSV,DOC,GIF,ICO,JPG,JPEG,ODG,ODP,ODS,ODT,PDF,PNG,PPT,TXT,XCF,XLS","upload_maxsize":"10","file_path":"images","image_path":"images","restrict_uploads":"1","allowed_media_usergroup":"3","check_mime":"1","image_extensions":"bmp,gif,jpg,png","ignore_extensions":"","upload_mime":"image\\/jpeg,image\\/gif,image\\/png,image\\/bmp,application\\/msword,application\\/excel,application\\/pdf,application\\/powerpoint,text\\/plain,application\\/x-zip","upload_mime_illegal":"text\\/html"}'), +(0, 'com_menus', 'component', 'com_menus', '', 1, 1, 1, 1, 1, '', '{"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":""}'), +(0, 'com_messages', 'component', 'com_messages', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_modules', 'component', 'com_modules', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_newsfeeds', 'component', 'com_newsfeeds', '', 1, 1, 1, 0, 1, '', '{"newsfeed_layout":"_:default","save_history":"1","history_limit":5,"show_feed_image":"1","show_feed_description":"1","show_item_description":"1","feed_character_count":"0","feed_display_order":"des","float_first":"right","float_second":"right","show_tags":"1","category_layout":"_:default","show_category_title":"1","show_description":"1","show_description_image":"1","maxLevel":"-1","show_empty_categories":"0","show_subcat_desc":"1","show_cat_items":"1","show_cat_tags":"1","show_base_description":"1","maxLevelcat":"-1","show_empty_categories_cat":"0","show_subcat_desc_cat":"1","show_cat_items_cat":"1","filter_field":"1","show_pagination_limit":"1","show_headings":"1","show_articles":"0","show_link":"1","show_pagination":"1","show_pagination_results":"1"}'), +(0, 'com_plugins', 'component', 'com_plugins', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_templates', 'component', 'com_templates', '', 1, 1, 1, 1, 1, '', '{"template_positions_display":"0","upload_limit":"10","image_formats":"gif,bmp,jpg,jpeg,png","source_formats":"txt,less,ini,xml,js,php,css,scss,sass,json","font_formats":"woff,ttf,otf","compressed_formats":"zip"}'), +(0, 'com_content', 'component', 'com_content', '', 1, 1, 0, 1, 1, '', '{"article_layout":"_:default","show_title":"1","link_titles":"1","show_intro":"1","show_category":"1","link_category":"1","show_parent_category":"0","link_parent_category":"0","show_author":"1","link_author":"0","show_create_date":"0","show_modify_date":"0","show_publish_date":"1","show_item_navigation":"1","show_vote":"0","show_tags":"1","show_readmore":"1","show_readmore_title":"1","readmore_limit":"100","show_hits":"1","show_noauth":"0","show_publishing_options":"1","show_article_options":"1","save_history":"1","history_limit":10,"show_urls_images_frontend":"0","show_urls_images_backend":"1","targeta":0,"targetb":0,"targetc":0,"float_intro":"left","float_fulltext":"left","category_layout":"_:blog","show_category_title":"0","show_description":"0","show_description_image":"0","maxLevel":"1","show_empty_categories":"0","show_no_articles":"1","show_subcat_desc":"1","show_cat_num_articles":"0","show_base_description":"1","maxLevelcat":"-1","show_empty_categories_cat":"0","show_subcat_desc_cat":"1","show_cat_num_articles_cat":"1","num_leading_articles":"1","num_intro_articles":"4","num_links":"4","show_subcategory_content":"0","show_pagination_limit":"1","filter_field":"hide","show_headings":"1","list_show_date":"0","date_format":"","list_show_hits":"1","list_show_author":"1","orderby_pri":"order","orderby_sec":"rdate","order_date":"published","show_pagination":"2","show_pagination_results":"1","show_feed_link":"1","feed_summary":"0"}'), +(0, 'com_config', 'component', 'com_config', '', 1, 1, 0, 1, 1, '', '{"filters":{"1":{"filter_type":"NH","filter_tags":"","filter_attributes":""},"6":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"7":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"2":{"filter_type":"NH","filter_tags":"","filter_attributes":""},"3":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"4":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"5":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"10":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"12":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"8":{"filter_type":"NONE","filter_tags":"","filter_attributes":""}}}'), +(0, 'com_redirect', 'component', 'com_redirect', '', 1, 1, 0, 0, 1, '', ''), +(0, 'com_users', 'component', 'com_users', '', 1, 1, 0, 1, 1, '', '{"allowUserRegistration":"0","new_usertype":"2","guest_usergroup":"9","sendpassword":"0","useractivation":"2","mail_to_admin":"1","captcha":"","frontend_userparams":"1","site_language":"0","change_login_name":"0","reset_count":"10","reset_time":"1","minimum_length":"4","minimum_integers":"0","minimum_symbols":"0","minimum_uppercase":"0","save_history":"1","history_limit":5,"mailSubjectPrefix":"","mailBodySuffix":""}'), +(0, 'com_finder', 'component', 'com_finder', '', 1, 1, 0, 0, 1, '', '{"enabled":"0","show_description":"1","description_length":255,"allow_empty_query":"0","show_url":"1","show_autosuggest":"1","show_suggested_query":"1","show_explained_query":"1","show_advanced":"1","show_advanced_tips":"1","expand_advanced":"0","show_date_filters":"0","sort_order":"relevance","sort_direction":"desc","highlight_terms":"1","opensearch_name":"","opensearch_description":"","batch_size":"50","memory_table_limit":30000,"title_multiplier":"1.7","text_multiplier":"0.7","meta_multiplier":"1.2","path_multiplier":"2.0","misc_multiplier":"0.3","stem":"1","stemmer":"snowball","enable_logging":"0"}'), +(0, 'com_joomlaupdate', 'component', 'com_joomlaupdate', '', 1, 1, 0, 1, 1, '', '{"updatesource":"default","customurl":""}'), +(0, 'com_tags', 'component', 'com_tags', '', 1, 1, 1, 0, 1, '', '{"tag_layout":"_:default","save_history":"1","history_limit":5,"show_tag_title":"0","tag_list_show_tag_image":"0","tag_list_show_tag_description":"0","tag_list_image":"","tag_list_orderby":"title","tag_list_orderby_direction":"ASC","show_headings":"0","tag_list_show_date":"0","tag_list_show_item_image":"0","tag_list_show_item_description":"0","tag_list_item_maximum_characters":0,"return_any_or_all":"1","include_children":"0","maximum":200,"tag_list_language_filter":"all","tags_layout":"_:default","all_tags_orderby":"title","all_tags_orderby_direction":"ASC","all_tags_show_tag_image":"0","all_tags_show_tag_description":"0","all_tags_tag_maximum_characters":20,"all_tags_show_tag_hits":"0","filter_field":"1","show_pagination_limit":"1","show_pagination":"2","show_pagination_results":"1","tag_field_ajax_mode":"1","show_feed_link":"1"}'), +(0, 'com_contenthistory', 'component', 'com_contenthistory', '', 1, 1, 1, 0, 1, '', ''), +(0, 'com_ajax', 'component', 'com_ajax', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_postinstall', 'component', 'com_postinstall', '', 1, 1, 1, 1, 1, '', ''), +(0, 'com_fields', 'component', 'com_fields', '', 1, 1, 1, 0, 1, '', ''), +(0, 'com_associations', 'component', 'com_associations', '', 1, 1, 1, 0, 1, '', ''), +(0, 'com_privacy', 'component', 'com_privacy', '', 1, 1, 1, 0, 1, '', ''), +(0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 0, 1, '', '{"ip_logging":0,"csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_checkin","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}'), +(0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 1, 1, '', '{}'), +(0, 'com_csp', 'component', 'com_csp', '', 1, 1, 1, 0, 1, '', ''), +(0, 'com_mails', 'component', 'com_mails', '', 1, 1, 1, 1, 1, '', ''); -- Libraries -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(0, 'Joomla! Platform', 'library', 'joomla', '', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'PHPass', 'library', 'phpass', '', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0); +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`) VALUES +(0, 'Joomla! Platform', 'library', 'joomla', '', 0, 1, 1, 1, 1, '', ''), +(0, 'PHPass', 'library', 'phpass', '', 0, 1, 1, 1, 1, '', ''); -- Modules: Site -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(0, 'mod_articles_archive', 'module', 'mod_articles_archive', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_articles_latest', 'module', 'mod_articles_latest', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_articles_popular', 'module', 'mod_articles_popular', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_banners', 'module', 'mod_banners', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_breadcrumbs', 'module', 'mod_breadcrumbs', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_custom', 'module', 'mod_custom', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_feed', 'module', 'mod_feed', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_footer', 'module', 'mod_footer', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_login', 'module', 'mod_login', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_menu', 'module', 'mod_menu', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_articles_news', 'module', 'mod_articles_news', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_random_image', 'module', 'mod_random_image', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_related_items', 'module', 'mod_related_items', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_stats', 'module', 'mod_stats', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_syndicate', 'module', 'mod_syndicate', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_users_latest', 'module', 'mod_users_latest', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_whosonline', 'module', 'mod_whosonline', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_wrapper', 'module', 'mod_wrapper', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_articles_category', 'module', 'mod_articles_category', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_articles_categories', 'module', 'mod_articles_categories', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_languages', 'module', 'mod_languages', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_finder', 'module', 'mod_finder', '', 0, 1, 0, 0, 1, '', '', 0, NULL, 0, 0); +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`) VALUES +(0, 'mod_articles_archive', 'module', 'mod_articles_archive', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_articles_latest', 'module', 'mod_articles_latest', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_articles_popular', 'module', 'mod_articles_popular', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_banners', 'module', 'mod_banners', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_breadcrumbs', 'module', 'mod_breadcrumbs', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_custom', 'module', 'mod_custom', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_feed', 'module', 'mod_feed', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_footer', 'module', 'mod_footer', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_login', 'module', 'mod_login', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_menu', 'module', 'mod_menu', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_articles_news', 'module', 'mod_articles_news', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_random_image', 'module', 'mod_random_image', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_related_items', 'module', 'mod_related_items', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_stats', 'module', 'mod_stats', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_syndicate', 'module', 'mod_syndicate', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_users_latest', 'module', 'mod_users_latest', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_whosonline', 'module', 'mod_whosonline', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_wrapper', 'module', 'mod_wrapper', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_articles_category', 'module', 'mod_articles_category', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_articles_categories', 'module', 'mod_articles_categories', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_languages', 'module', 'mod_languages', '', 0, 1, 1, 0, 1, '', ''), +(0, 'mod_finder', 'module', 'mod_finder', '', 0, 1, 0, 0, 1, '', ''); -- Modules: Administrator -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(0, 'mod_custom', 'module', 'mod_custom', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_feed', 'module', 'mod_feed', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_latest', 'module', 'mod_latest', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_logged', 'module', 'mod_logged', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_login', 'module', 'mod_login', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_loginsupport', 'module', 'mod_loginsupport', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_menu', 'module', 'mod_menu', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_popular', 'module', 'mod_popular', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_quickicon', 'module', 'mod_quickicon', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_frontend', 'module', 'mod_frontend', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_messages', 'module', 'mod_messages', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_post_installation_messages', 'module', 'mod_post_installation_messages', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_user', 'module', 'mod_user', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_title', 'module', 'mod_title', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_toolbar', 'module', 'mod_toolbar', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_multilangstatus', 'module', 'mod_multilangstatus', '', 1, 1, 1, 0, 1, '', '{"cache":"0"}', 0, NULL, 0, 0), -(0, 'mod_version', 'module', 'mod_version', '', 1, 1, 1, 0, 1, '', '{"cache":"0"}', 0, NULL, 0, 0), -(0, 'mod_stats_admin', 'module', 'mod_stats_admin', '', 1, 1, 1, 0, 1, '', '{"serverinfo":"0","siteinfo":"0","counter":"0","increase":"0","cache":"1","cache_time":"900","cachemode":"static"}', 0, NULL, 0, 0), -(0, 'mod_tags_popular', 'module', 'mod_tags_popular', '', 0, 1, 1, 0, 1, '', '{"maximum":"5","timeframe":"alltime","owncache":"1"}', 0, NULL, 0, 0), -(0, 'mod_tags_similar', 'module', 'mod_tags_similar', '', 0, 1, 1, 0, 1, '', '{"maximum":"5","matchtype":"any","owncache":"1"}', 0, NULL, 0, 0), -(0, 'mod_sampledata', 'module', 'mod_sampledata', '', 1, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'mod_latestactions', 'module', 'mod_latestactions', '', 1, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'mod_privacy_dashboard', 'module', 'mod_privacy_dashboard', '', 1, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'mod_submenu', 'module', 'mod_submenu', '', 1, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'mod_privacy_status', 'module', 'mod_privacy_status', '', 1, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0); +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`) VALUES +(0, 'mod_custom', 'module', 'mod_custom', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_feed', 'module', 'mod_feed', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_latest', 'module', 'mod_latest', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_logged', 'module', 'mod_logged', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_login', 'module', 'mod_login', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_loginsupport', 'module', 'mod_loginsupport', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_menu', 'module', 'mod_menu', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_popular', 'module', 'mod_popular', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_quickicon', 'module', 'mod_quickicon', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_frontend', 'module', 'mod_frontend', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_messages', 'module', 'mod_messages', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_post_installation_messages', 'module', 'mod_post_installation_messages', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_user', 'module', 'mod_user', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_title', 'module', 'mod_title', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_toolbar', 'module', 'mod_toolbar', '', 1, 1, 1, 0, 1, '', ''), +(0, 'mod_multilangstatus', 'module', 'mod_multilangstatus', '', 1, 1, 1, 0, 1, '', '{"cache":"0"}'), +(0, 'mod_version', 'module', 'mod_version', '', 1, 1, 1, 0, 1, '', '{"cache":"0"}'), +(0, 'mod_stats_admin', 'module', 'mod_stats_admin', '', 1, 1, 1, 0, 1, '', '{"serverinfo":"0","siteinfo":"0","counter":"0","increase":"0","cache":"1","cache_time":"900","cachemode":"static"}'), +(0, 'mod_tags_popular', 'module', 'mod_tags_popular', '', 0, 1, 1, 0, 1, '', '{"maximum":"5","timeframe":"alltime","owncache":"1"}'), +(0, 'mod_tags_similar', 'module', 'mod_tags_similar', '', 0, 1, 1, 0, 1, '', '{"maximum":"5","matchtype":"any","owncache":"1"}'), +(0, 'mod_sampledata', 'module', 'mod_sampledata', '', 1, 1, 1, 0, 1, '', '{}'), +(0, 'mod_latestactions', 'module', 'mod_latestactions', '', 1, 1, 1, 0, 1, '', '{}'), +(0, 'mod_privacy_dashboard', 'module', 'mod_privacy_dashboard', '', 1, 1, 1, 0, 1, '', '{}'), +(0, 'mod_submenu', 'module', 'mod_submenu', '', 1, 1, 1, 0, 1, '', '{}'), +(0, 'mod_privacy_status', 'module', 'mod_privacy_status', '', 1, 1, 1, 0, 1, '', '{}'); -- Plugins -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(0, 'plg_authentication_joomla', 'plugin', 'joomla', 'authentication', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_authentication_ldap', 'plugin', 'ldap', 'authentication', 0, 0, 1, 0, 1, '', '{"host":"","port":"389","use_ldapV3":"0","negotiate_tls":"0","no_referrals":"0","auth_method":"bind","base_dn":"","search_string":"","users_dn":"","username":"admin","password":"bobby7","ldap_fullname":"fullName","ldap_email":"mail","ldap_uid":"uid"}', 0, NULL, 3, 0), -(0, 'plg_content_contact', 'plugin', 'contact', 'content', 0, 1, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_content_emailcloak', 'plugin', 'emailcloak', 'content', 0, 1, 1, 0, 1, '', '{"mode":"1"}', 0, NULL, 1, 0), -(0, 'plg_content_loadmodule', 'plugin', 'loadmodule', 'content', 0, 1, 1, 0, 1, '', '{"style":"xhtml"}', 0, NULL, 0, 0), -(0, 'plg_content_pagebreak', 'plugin', 'pagebreak', 'content', 0, 1, 1, 0, 1, '', '{"title":"1","multipage_toc":"1","showall":"1"}', 0, NULL, 4, 0), -(0, 'plg_content_pagenavigation', 'plugin', 'pagenavigation', 'content', 0, 1, 1, 0, 1, '', '{"position":"1"}', 0, NULL, 5, 0), -(0, 'plg_content_vote', 'plugin', 'vote', 'content', 0, 0, 1, 0, 1, '', '', 0, NULL, 6, 0), -(0, 'plg_editors_codemirror', 'plugin', 'codemirror', 'editors', 0, 1, 1, 0, 1, '', '{"lineNumbers":"1","lineWrapping":"1","matchTags":"1","matchBrackets":"1","marker-gutter":"1","autoCloseTags":"1","autoCloseBrackets":"1","autoFocus":"1","theme":"default","tabmode":"indent"}', 0, NULL, 1, 0), -(0, 'plg_editors_none', 'plugin', 'none', 'editors', 0, 1, 1, 1, 1, '', '', 0, NULL, 2, 0), -(0, 'plg_editors_tinymce', 'plugin', 'tinymce', 'editors', 0, 1, 1, 0, 1, '', '{"configuration":{"toolbars":{"2":{"toolbar1":["bold","underline","strikethrough","|","undo","redo","|","bullist","numlist","|","pastetext"]},"1":{"menu":["edit","insert","view","format","table","tools"],"toolbar1":["bold","italic","underline","strikethrough","|","alignleft","aligncenter","alignright","alignjustify","|","formatselect","|","bullist","numlist","|","outdent","indent","|","undo","redo","|","link","unlink","anchor","code","|","hr","table","|","subscript","superscript","|","charmap","pastetext","preview"]},"0":{"menu":["edit","insert","view","format","table","tools"],"toolbar1":["bold","italic","underline","strikethrough","|","alignleft","aligncenter","alignright","alignjustify","|","styleselect","|","formatselect","fontselect","fontsizeselect","|","searchreplace","|","bullist","numlist","|","outdent","indent","|","undo","redo","|","link","unlink","anchor","image","|","code","|","forecolor","backcolor","|","fullscreen","|","table","|","subscript","superscript","|","charmap","emoticons","media","hr","ltr","rtl","|","cut","copy","paste","pastetext","|","visualchars","visualblocks","nonbreaking","blockquote","template","|","print","preview","codesample","insertdatetime","removeformat"]}},"setoptions":{"2":{"access":["1"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"0","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""},"1":{"access":["6","2"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"0","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""},"0":{"access":["7","4","8"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"1","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""}}},"sets_amount":3,"html_height":"550","html_width":"750"}', 0, NULL, 3, 0), -(0, 'plg_editors-xtd_article', 'plugin', 'article', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_editors-xtd_image', 'plugin', 'image', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 2, 0), -(0, 'plg_editors-xtd_pagebreak', 'plugin', 'pagebreak', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 3, 0), -(0, 'plg_editors-xtd_readmore', 'plugin', 'readmore', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 4, 0), -(0, 'plg_system_languagefilter', 'plugin', 'languagefilter', 'system', 0, 0, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_system_cache', 'plugin', 'cache', 'system', 0, 0, 1, 0, 1, '', '{"browsercache":"0","cachetime":"15"}', 0, NULL, 9, 0), -(0, 'plg_system_debug', 'plugin', 'debug', 'system', 0, 1, 1, 0, 1, '', '{"profile":"1","queries":"1","memory":"1","language_files":"1","language_strings":"1","strip-first":"1","strip-prefix":"","strip-suffix":""}', 0, NULL, 4, 0), -(0, 'plg_system_log', 'plugin', 'log', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 5, 0), -(0, 'plg_system_redirect', 'plugin', 'redirect', 'system', 0, 0, 1, 0, 1, '', '', 0, NULL, 3, 0), -(0, 'plg_system_remember', 'plugin', 'remember', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 7, 0), -(0, 'plg_system_sef', 'plugin', 'sef', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 8, 0), -(0, 'plg_system_logout', 'plugin', 'logout', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 6, 0), -(0, 'plg_user_contactcreator', 'plugin', 'contactcreator', 'user', 0, 0, 1, 0, 1, '', '{"autowebpage":"","category":"4","autopublish":"0"}', 0, NULL, 1, 0), -(0, 'plg_user_joomla', 'plugin', 'joomla', 'user', 0, 1, 1, 0, 1, '', '{"autoregister":"1","mail_to_user":"1","forceLogout":"1"}', 0, NULL, 2, 0), -(0, 'plg_user_profile', 'plugin', 'profile', 'user', 0, 0, 1, 0, 1, '', '{"register-require_address1":"1","register-require_address2":"1","register-require_city":"1","register-require_region":"1","register-require_country":"1","register-require_postal_code":"1","register-require_phone":"1","register-require_website":"1","register-require_favoritebook":"1","register-require_aboutme":"1","register-require_tos":"1","register-require_dob":"1","profile-require_address1":"1","profile-require_address2":"1","profile-require_city":"1","profile-require_region":"1","profile-require_country":"1","profile-require_postal_code":"1","profile-require_phone":"1","profile-require_website":"1","profile-require_favoritebook":"1","profile-require_aboutme":"1","profile-require_tos":"1","profile-require_dob":"1"}', 0, NULL, 0, 0), -(0, 'plg_extension_joomla', 'plugin', 'joomla', 'extension', 0, 1, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_content_joomla', 'plugin', 'joomla', 'content', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_languagecode', 'plugin', 'languagecode', 'system', 0, 0, 1, 0, 1, '', '', 0, NULL, 10, 0), -(0, 'plg_quickicon_joomlaupdate', 'plugin', 'joomlaupdate', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_quickicon_downloadkey', 'plugin', 'downloadkey', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_quickicon_extensionupdate', 'plugin', 'extensionupdate', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_captcha_recaptcha', 'plugin', 'recaptcha', 'captcha', 0, 0, 1, 0, 1, '', '{"public_key":"","private_key":"","theme":"clean"}', 0, NULL, 0, 0), -(0, 'plg_system_highlight', 'plugin', 'highlight', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 7, 0), -(0, 'plg_content_finder', 'plugin', 'finder', 'content', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_finder_categories', 'plugin', 'categories', 'finder', 0, 1, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_finder_contacts', 'plugin', 'contacts', 'finder', 0, 1, 1, 0, 1, '', '', 0, NULL, 2, 0), -(0, 'plg_finder_content', 'plugin', 'content', 'finder', 0, 1, 1, 0, 1, '', '', 0, NULL, 3, 0), -(0, 'plg_finder_newsfeeds', 'plugin', 'newsfeeds', 'finder', 0, 1, 1, 0, 1, '', '', 0, NULL, 4, 0), -(0, 'plg_finder_tags', 'plugin', 'tags', 'finder', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_twofactorauth_totp', 'plugin', 'totp', 'twofactorauth', 0, 0, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_authentication_cookie', 'plugin', 'cookie', 'authentication', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_twofactorauth_yubikey', 'plugin', 'yubikey', 'twofactorauth', 0, 0, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_updatenotification', 'plugin', 'updatenotification', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_editors-xtd_module', 'plugin', 'module', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_stats', 'plugin', 'stats', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_installer_packageinstaller', 'plugin', 'packageinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_installer_folderinstaller', 'plugin', 'folderinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 0, NULL, 2, 0), -(0, 'plg_installer_urlinstaller', 'plugin', 'urlinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 0, NULL, 3, 0), -(0, 'plg_quickicon_phpversioncheck', 'plugin', 'phpversioncheck', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_editors-xtd_menu', 'plugin', 'menu', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_editors-xtd_contact', 'plugin', 'contact', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_fields', 'plugin', 'fields', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_calendar', 'plugin', 'calendar', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_checkboxes', 'plugin', 'checkboxes', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_color', 'plugin', 'color', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_editor', 'plugin', 'editor', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_imagelist', 'plugin', 'imagelist', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_integer', 'plugin', 'integer', 'fields', 0, 1, 1, 0, 1, '', '{"multiple":"0","first":"1","last":"100","step":"1"}', 0, NULL, 0, 0), -(0, 'plg_fields_list', 'plugin', 'list', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_media', 'plugin', 'media', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_radio', 'plugin', 'radio', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_sql', 'plugin', 'sql', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_text', 'plugin', 'text', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_textarea', 'plugin', 'textarea', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_url', 'plugin', 'url', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_user', 'plugin', 'user', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_usergrouplist', 'plugin', 'usergrouplist', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_subfields', 'plugin', 'subfields', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_content_fields', 'plugin', 'fields', 'content', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_editors-xtd_fields', 'plugin', 'fields', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_sampledata_blog', 'plugin', 'blog', 'sampledata', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_sessiongc', 'plugin', 'sessiongc', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_actionlog_joomla', 'plugin', 'joomla', 'actionlog', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 0, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 0, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_user_token', 'plugin', 'token', 'user', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_privacy_contact', 'plugin', 'contact', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_privacy_content', 'plugin', 'content', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_privacy_message', 'plugin', 'message', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_privacy_actionlogs', 'plugin', 'actionlogs', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_captcha_recaptcha_invisible', 'plugin', 'recaptcha_invisible', 'captcha', 0, 0, 1, 0, 1, '', '{"public_key":"","private_key":"","theme":"clean"}', 0, NULL, 0, 0), -(0, 'plg_privacy_consents', 'plugin', 'consents', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_behaviour_taggable', 'plugin', 'taggable', 'behaviour', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_behaviour_versionable', 'plugin', 'versionable', 'behaviour', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_installer_webinstaller', 'plugin', 'webinstaller', 'installer', 0, 1, 1, 0, 1, '', '{"tab_position":"1"}', 0, NULL, 0, 0), -(0, 'plg_system_httpheaders', 'plugin', 'httpheaders', 'system', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_sampledata_multilang', 'plugin', 'multilang', 'sampledata', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_extension_namespacemap', 'plugin', 'namespacemap', 'extension', 0, 1, 1, 1, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_installer_override', 'plugin', 'override', 'installer', 0, 1, 1, 0, 1, '', '', 0, NULL, 4, 0), -(0, 'plg_quickicon_overridecheck', 'plugin', 'overridecheck', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_extension_finder', 'plugin', 'finder', 'extension', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_skipto', 'plugin', 'skipto', 'system', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_api-authentication_basic', 'plugin', 'basic', 'api-authentication', 0, 0, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_api-authentication_token', 'plugin', 'token', 'api-authentication', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_banners', 'plugin', 'banners', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_config', 'plugin', 'config', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_contact', 'plugin', 'contact', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_content', 'plugin', 'content', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_languages', 'plugin', 'languages', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_menus', 'plugin', 'menus', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_messages', 'plugin', 'messages', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_modules', 'plugin', 'modules', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_newsfeeds', 'plugin', 'newsfeeds', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_plugins', 'plugin', 'plugins', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_privacy', 'plugin', 'privacy', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_redirect', 'plugin', 'redirect', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_tags', 'plugin', 'tags', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_templates', 'plugin', 'templates', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_users', 'plugin', 'users', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_filesystem_local', 'plugin', 'local', 'filesystem', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_media-action_crop', 'plugin', 'crop', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_media-action_resize', 'plugin', 'resize', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_media-action_rotate', 'plugin', 'rotate', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_system_accessibility', 'plugin', 'accessibility', 'system', 0, 0, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_system_webauthn', 'plugin', 'webauthn', 'system', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0); +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `ordering`, `state`) VALUES +(0, 'plg_authentication_joomla', 'plugin', 'joomla', 'authentication', 0, 1, 1, 1, 1, '', '', 0, 0), +(0, 'plg_authentication_ldap', 'plugin', 'ldap', 'authentication', 0, 0, 1, 0, 1, '', '{"host":"","port":"389","use_ldapV3":"0","negotiate_tls":"0","no_referrals":"0","auth_method":"bind","base_dn":"","search_string":"","users_dn":"","username":"admin","password":"bobby7","ldap_fullname":"fullName","ldap_email":"mail","ldap_uid":"uid"}', 3, 0), +(0, 'plg_content_contact', 'plugin', 'contact', 'content', 0, 1, 1, 0, 1, '', '', 1, 0), +(0, 'plg_content_emailcloak', 'plugin', 'emailcloak', 'content', 0, 1, 1, 0, 1, '', '{"mode":"1"}', 1, 0), +(0, 'plg_content_loadmodule', 'plugin', 'loadmodule', 'content', 0, 1, 1, 0, 1, '', '{"style":"xhtml"}', 0, 0), +(0, 'plg_content_pagebreak', 'plugin', 'pagebreak', 'content', 0, 1, 1, 0, 1, '', '{"title":"1","multipage_toc":"1","showall":"1"}', 4, 0), +(0, 'plg_content_pagenavigation', 'plugin', 'pagenavigation', 'content', 0, 1, 1, 0, 1, '', '{"position":"1"}', 5, 0), +(0, 'plg_content_vote', 'plugin', 'vote', 'content', 0, 0, 1, 0, 1, '', '', 6, 0), +(0, 'plg_editors_codemirror', 'plugin', 'codemirror', 'editors', 0, 1, 1, 0, 1, '', '{"lineNumbers":"1","lineWrapping":"1","matchTags":"1","matchBrackets":"1","marker-gutter":"1","autoCloseTags":"1","autoCloseBrackets":"1","autoFocus":"1","theme":"default","tabmode":"indent"}', 1, 0), +(0, 'plg_editors_none', 'plugin', 'none', 'editors', 0, 1, 1, 1, 1, '', '', 2, 0), +(0, 'plg_editors_tinymce', 'plugin', 'tinymce', 'editors', 0, 1, 1, 0, 1, '', '{"configuration":{"toolbars":{"2":{"toolbar1":["bold","underline","strikethrough","|","undo","redo","|","bullist","numlist","|","pastetext"]},"1":{"menu":["edit","insert","view","format","table","tools"],"toolbar1":["bold","italic","underline","strikethrough","|","alignleft","aligncenter","alignright","alignjustify","|","formatselect","|","bullist","numlist","|","outdent","indent","|","undo","redo","|","link","unlink","anchor","code","|","hr","table","|","subscript","superscript","|","charmap","pastetext","preview"]},"0":{"menu":["edit","insert","view","format","table","tools"],"toolbar1":["bold","italic","underline","strikethrough","|","alignleft","aligncenter","alignright","alignjustify","|","styleselect","|","formatselect","fontselect","fontsizeselect","|","searchreplace","|","bullist","numlist","|","outdent","indent","|","undo","redo","|","link","unlink","anchor","image","|","code","|","forecolor","backcolor","|","fullscreen","|","table","|","subscript","superscript","|","charmap","emoticons","media","hr","ltr","rtl","|","cut","copy","paste","pastetext","|","visualchars","visualblocks","nonbreaking","blockquote","template","|","print","preview","codesample","insertdatetime","removeformat"]}},"setoptions":{"2":{"access":["1"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"0","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""},"1":{"access":["6","2"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"0","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""},"0":{"access":["7","4","8"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"1","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""}}},"sets_amount":3,"html_height":"550","html_width":"750"}', 3, 0), +(0, 'plg_editors-xtd_article', 'plugin', 'article', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 1, 0), +(0, 'plg_editors-xtd_image', 'plugin', 'image', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 2, 0), +(0, 'plg_editors-xtd_pagebreak', 'plugin', 'pagebreak', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 3, 0), +(0, 'plg_editors-xtd_readmore', 'plugin', 'readmore', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 4, 0), +(0, 'plg_system_languagefilter', 'plugin', 'languagefilter', 'system', 0, 0, 1, 0, 1, '', '', 1, 0), +(0, 'plg_system_cache', 'plugin', 'cache', 'system', 0, 0, 1, 0, 1, '', '{"browsercache":"0","cachetime":"15"}', 9, 0), +(0, 'plg_system_debug', 'plugin', 'debug', 'system', 0, 1, 1, 0, 1, '', '{"profile":"1","queries":"1","memory":"1","language_files":"1","language_strings":"1","strip-first":"1","strip-prefix":"","strip-suffix":""}', 4, 0), +(0, 'plg_system_log', 'plugin', 'log', 'system', 0, 1, 1, 0, 1, '', '', 5, 0), +(0, 'plg_system_redirect', 'plugin', 'redirect', 'system', 0, 0, 1, 0, 1, '', '', 3, 0), +(0, 'plg_system_remember', 'plugin', 'remember', 'system', 0, 1, 1, 0, 1, '', '', 7, 0), +(0, 'plg_system_sef', 'plugin', 'sef', 'system', 0, 1, 1, 0, 1, '', '', 8, 0), +(0, 'plg_system_logout', 'plugin', 'logout', 'system', 0, 1, 1, 0, 1, '', '', 6, 0), +(0, 'plg_user_contactcreator', 'plugin', 'contactcreator', 'user', 0, 0, 1, 0, 1, '', '{"autowebpage":"","category":"4","autopublish":"0"}', 1, 0), +(0, 'plg_user_joomla', 'plugin', 'joomla', 'user', 0, 1, 1, 0, 1, '', '{"autoregister":"1","mail_to_user":"1","forceLogout":"1"}', 2, 0), +(0, 'plg_user_profile', 'plugin', 'profile', 'user', 0, 0, 1, 0, 1, '', '{"register-require_address1":"1","register-require_address2":"1","register-require_city":"1","register-require_region":"1","register-require_country":"1","register-require_postal_code":"1","register-require_phone":"1","register-require_website":"1","register-require_favoritebook":"1","register-require_aboutme":"1","register-require_tos":"1","register-require_dob":"1","profile-require_address1":"1","profile-require_address2":"1","profile-require_city":"1","profile-require_region":"1","profile-require_country":"1","profile-require_postal_code":"1","profile-require_phone":"1","profile-require_website":"1","profile-require_favoritebook":"1","profile-require_aboutme":"1","profile-require_tos":"1","profile-require_dob":"1"}', 0, 0), +(0, 'plg_extension_joomla', 'plugin', 'joomla', 'extension', 0, 1, 1, 0, 1, '', '', 1, 0), +(0, 'plg_content_joomla', 'plugin', 'joomla', 'content', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_languagecode', 'plugin', 'languagecode', 'system', 0, 0, 1, 0, 1, '', '', 10, 0), +(0, 'plg_quickicon_joomlaupdate', 'plugin', 'joomlaupdate', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_quickicon_downloadkey', 'plugin', 'downloadkey', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_quickicon_extensionupdate', 'plugin', 'extensionupdate', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_captcha_recaptcha', 'plugin', 'recaptcha', 'captcha', 0, 0, 1, 0, 1, '', '{"public_key":"","private_key":"","theme":"clean"}', 0, 0), +(0, 'plg_system_highlight', 'plugin', 'highlight', 'system', 0, 1, 1, 0, 1, '', '', 7, 0), +(0, 'plg_content_finder', 'plugin', 'finder', 'content', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_finder_categories', 'plugin', 'categories', 'finder', 0, 1, 1, 0, 1, '', '', 1, 0), +(0, 'plg_finder_contacts', 'plugin', 'contacts', 'finder', 0, 1, 1, 0, 1, '', '', 2, 0), +(0, 'plg_finder_content', 'plugin', 'content', 'finder', 0, 1, 1, 0, 1, '', '', 3, 0), +(0, 'plg_finder_newsfeeds', 'plugin', 'newsfeeds', 'finder', 0, 1, 1, 0, 1, '', '', 4, 0), +(0, 'plg_finder_tags', 'plugin', 'tags', 'finder', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_twofactorauth_totp', 'plugin', 'totp', 'twofactorauth', 0, 0, 1, 0, 1, '', '', 0, 0), +(0, 'plg_authentication_cookie', 'plugin', 'cookie', 'authentication', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_twofactorauth_yubikey', 'plugin', 'yubikey', 'twofactorauth', 0, 0, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_updatenotification', 'plugin', 'updatenotification', 'system', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_editors-xtd_module', 'plugin', 'module', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_stats', 'plugin', 'stats', 'system', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_installer_packageinstaller', 'plugin', 'packageinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 1, 0), +(0, 'plg_installer_folderinstaller', 'plugin', 'folderinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 2, 0), +(0, 'plg_installer_urlinstaller', 'plugin', 'urlinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 3, 0), +(0, 'plg_quickicon_phpversioncheck', 'plugin', 'phpversioncheck', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_editors-xtd_menu', 'plugin', 'menu', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_editors-xtd_contact', 'plugin', 'contact', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_fields', 'plugin', 'fields', 'system', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_calendar', 'plugin', 'calendar', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_checkboxes', 'plugin', 'checkboxes', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_color', 'plugin', 'color', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_editor', 'plugin', 'editor', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_imagelist', 'plugin', 'imagelist', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_integer', 'plugin', 'integer', 'fields', 0, 1, 1, 0, 1, '', '{"multiple":"0","first":"1","last":"100","step":"1"}', 0, 0), +(0, 'plg_fields_list', 'plugin', 'list', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_media', 'plugin', 'media', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_radio', 'plugin', 'radio', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_sql', 'plugin', 'sql', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_text', 'plugin', 'text', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_textarea', 'plugin', 'textarea', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_url', 'plugin', 'url', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_user', 'plugin', 'user', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_usergrouplist', 'plugin', 'usergrouplist', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_subfields', 'plugin', 'subfields', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_content_fields', 'plugin', 'fields', 'content', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_editors-xtd_fields', 'plugin', 'fields', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_sampledata_blog', 'plugin', 'blog', 'sampledata', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_sessiongc', 'plugin', 'sessiongc', 'system', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_actionlog_joomla', 'plugin', 'joomla', 'actionlog', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 0, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 0, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_user_token', 'plugin', 'token', 'user', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_privacy_contact', 'plugin', 'contact', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_privacy_content', 'plugin', 'content', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_privacy_message', 'plugin', 'message', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_privacy_actionlogs', 'plugin', 'actionlogs', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_captcha_recaptcha_invisible', 'plugin', 'recaptcha_invisible', 'captcha', 0, 0, 1, 0, 1, '', '{"public_key":"","private_key":"","theme":"clean"}', 0, 0), +(0, 'plg_privacy_consents', 'plugin', 'consents', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_behaviour_taggable', 'plugin', 'taggable', 'behaviour', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_behaviour_versionable', 'plugin', 'versionable', 'behaviour', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_installer_webinstaller', 'plugin', 'webinstaller', 'installer', 0, 1, 1, 0, 1, '', '{"tab_position":"1"}', 0, 0), +(0, 'plg_system_httpheaders', 'plugin', 'httpheaders', 'system', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_sampledata_multilang', 'plugin', 'multilang', 'sampledata', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_extension_namespacemap', 'plugin', 'namespacemap', 'extension', 0, 1, 1, 1, 1, '', '{}', 0, 0), +(0, 'plg_installer_override', 'plugin', 'override', 'installer', 0, 1, 1, 0, 1, '', '', 4, 0), +(0, 'plg_quickicon_overridecheck', 'plugin', 'overridecheck', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_extension_finder', 'plugin', 'finder', 'extension', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_skipto', 'plugin', 'skipto', 'system', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_api-authentication_basic', 'plugin', 'basic', 'api-authentication', 0, 0, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_api-authentication_token', 'plugin', 'token', 'api-authentication', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_banners', 'plugin', 'banners', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_config', 'plugin', 'config', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_contact', 'plugin', 'contact', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_content', 'plugin', 'content', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_languages', 'plugin', 'languages', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_menus', 'plugin', 'menus', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_messages', 'plugin', 'messages', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_modules', 'plugin', 'modules', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_newsfeeds', 'plugin', 'newsfeeds', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_plugins', 'plugin', 'plugins', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_privacy', 'plugin', 'privacy', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_redirect', 'plugin', 'redirect', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_tags', 'plugin', 'tags', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_templates', 'plugin', 'templates', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_users', 'plugin', 'users', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_filesystem_local', 'plugin', 'local', 'filesystem', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_media-action_crop', 'plugin', 'crop', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_media-action_resize', 'plugin', 'resize', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_media-action_rotate', 'plugin', 'rotate', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_system_accessibility', 'plugin', 'accessibility', 'system', 0, 0, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_system_webauthn', 'plugin', 'webauthn', 'system', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_workflow_publishing', 'plugin', 'publishing', 'workflow', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_workflow_featuring', 'plugin', 'featuring', 'workflow', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_workflow_notification', 'plugin', 'notification', 'workflow', 0, 1, 1, 0, 1, '', '{}', 0, 0); -- Templates -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(0, 'atum', 'template', 'atum', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'cassiopeia', 'template', 'cassiopeia', '', 0, 1, 1, 0, 1, '', '{"logoFile":"","fluidContainer":"0","sidebarLeftWidth":"3","sidebarRightWidth":"3"}', 0, NULL, 0, 0); +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `ordering`, `state`) VALUES +(0, 'atum', 'template', 'atum', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'cassiopeia', 'template', 'cassiopeia', '', 0, 1, 1, 0, 1, '', '{"logoFile":"","fluidContainer":"0","sidebarLeftWidth":"3","sidebarRightWidth":"3"}', 0, 0); -- Files Extensions -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(0, 'files_joomla', 'file', 'joomla', '', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0); +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `ordering`, `state`) VALUES +(0, 'files_joomla', 'file', 'joomla', '', 0, 1, 1, 1, 1, '', '', 0, 0); -- Packages -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) VALUES -(0, 'English (en-GB) Language Pack', 'package', 'pkg_en-GB', '', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0); +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `ordering`, `state`) VALUES +(0, 'English (en-GB) Language Pack', 'package', 'pkg_en-GB', '', 0, 1, 1, 1, 1, '', '', 0, 0); -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) -SELECT `extension_id`, 'English (en-GB)', 'language', 'en-GB', '', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0 FROM `#__extensions` WHERE `name` = 'English (en-GB) Language Pack'; -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) -SELECT `extension_id`, 'English (en-GB)', 'language', 'en-GB', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0 FROM `#__extensions` WHERE `name` = 'English (en-GB) Language Pack'; -INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `checked_out`, `checked_out_time`, `ordering`, `state`) -SELECT `extension_id`, 'English (en-GB)', 'language', 'en-GB', '', 3, 1, 1, 1, 1, '', '', 0, NULL, 0, 0 FROM `#__extensions` WHERE `name` = 'English (en-GB) Language Pack'; +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `ordering`, `state`) +SELECT `extension_id`, 'English (en-GB)', 'language', 'en-GB', '', 0, 1, 1, 1, 1, '', '', 0, 0 FROM `#__extensions` WHERE `name` = 'English (en-GB) Language Pack'; +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `ordering`, `state`) +SELECT `extension_id`, 'English (en-GB)', 'language', 'en-GB', '', 1, 1, 1, 1, 1, '', '', 0, 0 FROM `#__extensions` WHERE `name` = 'English (en-GB) Language Pack'; +INSERT INTO `#__extensions` (`package_id`, `name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `locked`, `manifest_cache`, `params`, `ordering`, `state`) +SELECT `extension_id`, 'English (en-GB)', 'language', 'en-GB', '', 3, 1, 1, 1, 1, '', '', 0, 0 FROM `#__extensions` WHERE `name` = 'English (en-GB) Language Pack'; -- -------------------------------------------------------- @@ -433,7 +436,7 @@ CREATE TABLE IF NOT EXISTS `#__menu` ( `parent_id` int(10) unsigned NOT NULL DEFAULT 1 COMMENT 'The parent menu item in the menu tree.', `level` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'The relative level in the tree.', `component_id` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to #__extensions.id', - `checked_out` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to #__users.id', + `checked_out` int(10) unsigned COMMENT 'FK to #__users.id', `checked_out_time` datetime COMMENT 'The time the menu item was checked out.', `browserNav` tinyint(4) NOT NULL DEFAULT 0 COMMENT 'The click behaviour of the link.', `access` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'The access level required to view the menu item.', @@ -461,50 +464,50 @@ CREATE TABLE IF NOT EXISTS `#__menu` ( -- Dumping data for table `#__menu` -- -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) VALUES -(1, '', 'Menu_Item_Root', 'root', '', '', '', '', 1, 0, 0, 0, 0, NULL, 0, 0, '', 0, '', 0, 43, 0, '*', 0, NULL, NULL); -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 2, 'main', 'com_banners', 'Banners', '', 'Banners', 'index.php?option=com_banners', 'component', 1, 1, 1, `extension_id`, 0, NULL, 0, 0, 'class:bookmark', 0, '', 1, 10, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_banners'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 3, 'main', 'com_banners', 'Banners', '', 'Banners/Banners', 'index.php?option=com_banners&view=banners', 'component', 1, 2, 2, `extension_id`, 0, NULL, 0, 0, 'class:banners', 0, '', 2, 3, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_banners'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 4, 'main', 'com_banners_categories', 'Categories', '', 'Banners/Categories', 'index.php?option=com_categories&view=categories&extension=com_banners', 'component', 1, 2, 2, `extension_id`, 0, NULL, 0, 0, 'class:banners-cat', 0, '', 4, 5, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_categories'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 5, 'main', 'com_banners_clients', 'Clients', '', 'Banners/Clients', 'index.php?option=com_banners&view=clients', 'component', 1, 2, 2, `extension_id`, 0, NULL, 0, 0, 'class:banners-clients', 0, '', 6, 7, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_banners'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 6, 'main', 'com_banners_tracks', 'Tracks', '', 'Banners/Tracks', 'index.php?option=com_banners&view=tracks', 'component', 1, 2, 2, `extension_id`, 0, NULL, 0, 0, 'class:banners-tracks', 0, '', 8, 9, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_banners'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 7, 'main', 'com_contact', 'Contacts', '', 'Contacts', 'index.php?option=com_contact', 'component', 1, 1, 1, `extension_id`, 0, NULL, 0, 0, 'class:address-book', 0, '', 11, 20, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_contact'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 8, 'main', 'com_contact_contacts', 'Contacts', '', 'Contacts/Contacts', 'index.php?option=com_contact&view=contacts', 'component', 1, 7, 2, `extension_id`, 0, NULL, 0, 0, 'class:contact', 0, '', 12, 13, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_contact'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 9, 'main', 'com_contact_categories', 'Categories', '', 'Contacts/Categories', 'index.php?option=com_categories&view=categories&extension=com_contact', 'component', 1, 7, 2, `extension_id`, 0, NULL, 0, 0, 'class:contact-cat', 0, '', 14, 15, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_categories'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 10, 'main', 'com_newsfeeds', 'News Feeds', '', 'News Feeds', 'index.php?option=com_newsfeeds', 'component', 1, 1, 1, `extension_id`, 0, NULL, 0, 0, 'class:rss', 0, '', 23, 28, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_newsfeeds'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 11, 'main', 'com_newsfeeds_feeds', 'Feeds', '', 'News Feeds/Feeds', 'index.php?option=com_newsfeeds&view=newsfeeds', 'component', 1, 10, 2, `extension_id`, 0, NULL, 0, 0, 'class:newsfeeds', 0, '', 24, 25, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_newsfeeds'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 12, 'main', 'com_newsfeeds_categories', 'Categories', '', 'News Feeds/Categories', 'index.php?option=com_categories&view=categories&extension=com_newsfeeds', 'component', 1, 10, 2, `extension_id`, 0, NULL, 0, 0, 'class:newsfeeds-cat', 0, '', 26, 27, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_categories'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 13, 'main', 'com_finder', 'Smart Search', '', 'Smart Search', 'index.php?option=com_finder&view=index', 'component', 1, 1, 1, `extension_id`, 0, NULL, 0, 0, 'class:search-plus', 0, '', 29, 38, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_finder'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 14, 'main', 'com_tags', 'Tags', '', 'Tags', 'index.php?option=com_tags&view=tags', 'component', 1, 1, 1, `extension_id`, 0, NULL, 0, 1, 'class:tags', 0, '', 39, 40, 0, '', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_tags'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 15, 'main', 'com_associations', 'Multilingual Associations', '', 'Multilingual Associations', 'index.php?option=com_associations&view=associations', 'component', 1, 1, 1, `extension_id`, 0, NULL, 0, 0, 'class:language', 0, '', 21, 22, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_associations'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 16, 'main', 'mod_menu_fields', 'Contact Custom Fields', '', 'contact/Custom Fields', 'index.php?option=com_fields&context=com_contact.contact', 'component', 1, 7, 2, `extension_id`, 0, NULL, 0, 0, 'class:messages-add', 0, '', 16, 17, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_fields'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 17, 'main', 'mod_menu_fields_group', 'Contact Custom Fields Group', '', 'contact/Custom Fields Group', 'index.php?option=com_fields&view=groups&context=com_contact.contact', 'component', 1, 7, 2, `extension_id`, 0, NULL, 0, 0, 'class:messages-add', 0, '', 18, 19, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_fields'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 18, 'main', 'com_finder_index', 'Smart-Search-Index', '', 'Smart Search/Index', 'index.php?option=com_finder&view=index', 'component', 1, 13, 2, `extension_id`, 0, NULL, 0, 0, 'class:finder', 0, '', 30, 31, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_finder'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 19, 'main', 'com_finder_maps', 'Smart-Search-Maps', '', 'Smart Search/Maps', 'index.php?option=com_finder&view=maps', 'component', 1, 13, 2, `extension_id`, 0, NULL, 0, 0, 'class:finder-maps', 0, '', 32, 33, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_finder'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 20, 'main', 'com_finder_filters', 'Smart-Search-Filters', '', 'Smart Search/Filters', 'index.php?option=com_finder&view=filters', 'component', 1, 13, 2, `extension_id`, 0, NULL, 0, 0, 'class:finder-filters', 0, '', 34, 35, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_finder'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 21, 'main', 'com_finder_searches', 'Smart-Search-Searches', '', 'Smart Search/Searches', 'index.php?option=com_finder&view=searches', 'component', 1, 13, 2, `extension_id`, 0, NULL, 0, 0, 'class:finder-searches', 0, '', 36, 37, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_finder'; -INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `checked_out`, `checked_out_time`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) -SELECT 101, 'mainmenu', 'Home', 'home', '', 'home', 'index.php?option=com_content&view=featured', 'component', 1, 1, 1, `extension_id`, 0, NULL, 0, 1, '', 0, '{"featured_categories":[""],"layout_type":"blog","num_leading_articles":"1","num_intro_articles":"3","num_columns":"3","num_links":"0","multi_column_order":"1","orderby_pri":"","orderby_sec":"front","order_date":"","show_pagination":"2","show_pagination_results":"1","show_title":"","link_titles":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_vote":"","show_readmore":"","show_readmore_title":"","show_hits":"","show_noauth":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":1,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 41, 42, 1, '*', 0, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_content'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) VALUES +(1, '', 'Menu_Item_Root', 'root', '', '', '', '', 1, 0, 0, 0, 0, 0, '', 0, '', 0, 43, 0, '*', 0, NULL, NULL); +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 2, 'main', 'com_banners', 'Banners', '', 'Banners', 'index.php?option=com_banners', 'component', 1, 1, 1, `extension_id`, 0, 0, 'class:bookmark', 0, '', 1, 10, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_banners'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 3, 'main', 'com_banners', 'Banners', '', 'Banners/Banners', 'index.php?option=com_banners&view=banners', 'component', 1, 2, 2, `extension_id`, 0, 0, 'class:banners', 0, '', 2, 3, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_banners'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 4, 'main', 'com_banners_categories', 'Categories', '', 'Banners/Categories', 'index.php?option=com_categories&view=categories&extension=com_banners', 'component', 1, 2, 2, `extension_id`, 0, 0, 'class:banners-cat', 0, '', 4, 5, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_categories'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 5, 'main', 'com_banners_clients', 'Clients', '', 'Banners/Clients', 'index.php?option=com_banners&view=clients', 'component', 1, 2, 2, `extension_id`, 0, 0, 'class:banners-clients', 0, '', 6, 7, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_banners'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 6, 'main', 'com_banners_tracks', 'Tracks', '', 'Banners/Tracks', 'index.php?option=com_banners&view=tracks', 'component', 1, 2, 2, `extension_id`, 0, 0, 'class:banners-tracks', 0, '', 8, 9, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_banners'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 7, 'main', 'com_contact', 'Contacts', '', 'Contacts', 'index.php?option=com_contact', 'component', 1, 1, 1, `extension_id`, 0, 0, 'class:address-book', 0, '', 11, 20, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_contact'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 8, 'main', 'com_contact_contacts', 'Contacts', '', 'Contacts/Contacts', 'index.php?option=com_contact&view=contacts', 'component', 1, 7, 2, `extension_id`, 0, 0, 'class:contact', 0, '', 12, 13, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_contact'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 9, 'main', 'com_contact_categories', 'Categories', '', 'Contacts/Categories', 'index.php?option=com_categories&view=categories&extension=com_contact', 'component', 1, 7, 2, `extension_id`, 0, 0, 'class:contact-cat', 0, '', 14, 15, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_categories'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 10, 'main', 'com_newsfeeds', 'News Feeds', '', 'News Feeds', 'index.php?option=com_newsfeeds', 'component', 1, 1, 1, `extension_id`, 0, 0, 'class:rss', 0, '', 23, 28, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_newsfeeds'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 11, 'main', 'com_newsfeeds_feeds', 'Feeds', '', 'News Feeds/Feeds', 'index.php?option=com_newsfeeds&view=newsfeeds', 'component', 1, 10, 2, `extension_id`, 0, 0, 'class:newsfeeds', 0, '', 24, 25, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_newsfeeds'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 12, 'main', 'com_newsfeeds_categories', 'Categories', '', 'News Feeds/Categories', 'index.php?option=com_categories&view=categories&extension=com_newsfeeds', 'component', 1, 10, 2, `extension_id`, 0, 0, 'class:newsfeeds-cat', 0, '', 26, 27, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_categories'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 13, 'main', 'com_finder', 'Smart Search', '', 'Smart Search', 'index.php?option=com_finder&view=index', 'component', 1, 1, 1, `extension_id`, 0, 0, 'class:search-plus', 0, '', 29, 38, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_finder'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 14, 'main', 'com_tags', 'Tags', '', 'Tags', 'index.php?option=com_tags&view=tags', 'component', 1, 1, 1, `extension_id`, 0, 1, 'class:tags', 0, '', 39, 40, 0, '', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_tags'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 15, 'main', 'com_associations', 'Multilingual Associations', '', 'Multilingual Associations', 'index.php?option=com_associations&view=associations', 'component', 1, 1, 1, `extension_id`, 0, 0, 'class:language', 0, '', 21, 22, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_associations'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 16, 'main', 'mod_menu_fields', 'Contact Custom Fields', '', 'contact/Custom Fields', 'index.php?option=com_fields&context=com_contact.contact', 'component', 1, 7, 2, `extension_id`, 0, 0, 'class:messages-add', 0, '', 16, 17, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_fields'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 17, 'main', 'mod_menu_fields_group', 'Contact Custom Fields Group', '', 'contact/Custom Fields Group', 'index.php?option=com_fields&view=groups&context=com_contact.contact', 'component', 1, 7, 2, `extension_id`, 0, 0, 'class:messages-add', 0, '', 18, 19, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_fields'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 18, 'main', 'com_finder_index', 'Smart-Search-Index', '', 'Smart Search/Index', 'index.php?option=com_finder&view=index', 'component', 1, 13, 2, `extension_id`, 0, 0, 'class:finder', 0, '', 30, 31, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_finder'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 19, 'main', 'com_finder_maps', 'Smart-Search-Maps', '', 'Smart Search/Maps', 'index.php?option=com_finder&view=maps', 'component', 1, 13, 2, `extension_id`, 0, 0, 'class:finder-maps', 0, '', 32, 33, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_finder'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 20, 'main', 'com_finder_filters', 'Smart-Search-Filters', '', 'Smart Search/Filters', 'index.php?option=com_finder&view=filters', 'component', 1, 13, 2, `extension_id`, 0, 0, 'class:finder-filters', 0, '', 34, 35, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_finder'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 21, 'main', 'com_finder_searches', 'Smart-Search-Searches', '', 'Smart Search/Searches', 'index.php?option=com_finder&view=searches', 'component', 1, 13, 2, `extension_id`, 0, 0, 'class:finder-searches', 0, '', 36, 37, 0, '*', 1, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_finder'; +INSERT INTO `#__menu` (`id`, `menutype`, `title`, `alias`, `note`, `path`, `link`, `type`, `published`, `parent_id`, `level`, `component_id`, `browserNav`, `access`, `img`, `template_style_id`, `params`, `lft`, `rgt`, `home`, `language`, `client_id`, `publish_up`, `publish_down`) +SELECT 101, 'mainmenu', 'Home', 'home', '', 'home', 'index.php?option=com_content&view=featured', 'component', 1, 1, 1, `extension_id`, 0, 1, '', 0, '{"featured_categories":[""],"layout_type":"blog","num_leading_articles":"1","num_intro_articles":"3","num_columns":"3","num_links":"0","multi_column_order":"1","orderby_pri":"","orderby_sec":"front","order_date":"","show_pagination":"2","show_pagination_results":"1","show_title":"","link_titles":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_vote":"","show_readmore":"","show_readmore_title":"","show_hits":"","show_noauth":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":1,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 41, 42, 1, '*', 0, NULL, NULL FROM `#__extensions` WHERE `name` = 'com_content'; -- -------------------------------------------------------- @@ -544,7 +547,7 @@ CREATE TABLE IF NOT EXISTS `#__modules` ( `content` text, `ordering` int(11) NOT NULL DEFAULT 0, `position` varchar(50) NOT NULL DEFAULT '', - `checked_out` int(10) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `publish_up` datetime, `publish_down` datetime, @@ -565,42 +568,42 @@ CREATE TABLE IF NOT EXISTS `#__modules` ( -- Dumping data for table `#__modules` -- -INSERT INTO `#__modules` (`id`, `asset_id`, `title`, `note`, `content`, `ordering`, `position`, `checked_out`, `checked_out_time`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES -(1, 39, 'Main Menu', '', '', 1, 'sidebar-right', 0, NULL, NULL, NULL, 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"0","endLevel":"0","showAllChildren":"1","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), -(2, 40, 'Login', '', '', 1, 'login', 0, NULL, NULL, NULL, 1, 'mod_login', 1, 1, '', 1, '*'), -(3, 41, 'Popular Articles', '', '', 3, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_popular', 3, 1, '{"count":"5","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(4, 42, 'Recently Added Articles', '', '', 4, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_latest', 3, 1, '{"count":"5","ordering":"c_dsc","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(8, 43, 'Toolbar', '', '', 1, 'toolbar', 0, NULL, NULL, NULL, 1, 'mod_toolbar', 3, 1, '', 1, '*'), -(9, 44, 'Update Checks', '', '', 3, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 3, 1, '{"context":"update_quickicon","header_icon":"fas fa-sync","show_jupdate":"1","show_eupdate":"1","show_oupdate":"1","show_privacy":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":""}', 1, '*'), -(10, 45, 'Logged-in Users', '', '', 2, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_logged', 3, 1, '{"count":"5","name":"1","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(12, 46, 'Admin Menu', '', '', 1, 'menu', 0, NULL, NULL, NULL, 1, 'mod_menu', 3, 1, '{"layout":"","moduleclass_sfx":"","shownew":"1","showhelp":"1","cache":"0"}', 1, '*'), -(15, 49, 'Title', '', '', 1, 'title', 0, NULL, NULL, NULL, 1, 'mod_title', 3, 1, '', 1, '*'), -(16, 50, 'Login Form', '', '', 7, 'sidebar-right', 0, NULL, NULL, NULL, 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'), -(17, 51, 'Breadcrumbs', '', '', 1, 'breadcrumbs', 0, NULL, NULL, NULL, 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), -(79, 52, 'Multilanguage status', '', '', 2, 'status', 0, NULL, NULL, NULL, 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), -(86, 53, 'Joomla Version', '', '', 1, 'status', 0, NULL, NULL, NULL, 1, 'mod_version', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), -(87, 55, 'Sample Data', '', '', 0, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_sampledata', 6, 1, '{"bootstrap_size": "6"}', 1, '*'), -(88, 67, 'Latest Actions', '', '', 0, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_latestactions', 6, 1, '{}', 1, '*'), -(89, 68, 'Privacy Dashboard', '', '', 0, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_privacy_dashboard', 6, 1, '{}', 1, '*'), -(90, 65, 'Login Support', '', '', 1, 'sidebar', 0, NULL, NULL, NULL, 1, 'mod_loginsupport', 1, 1, '{"forum_url":"https://forum.joomla.org/","documentation_url":"https://docs.joomla.org/","news_url":"https://www.joomla.org/","automatic_title":1,"prepare_content":1,"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 1, '*'), -(91, 72, 'System Dashboard', '', '', 1, 'cpanel-system', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"system","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), -(92, 73, 'Content Dashboard', '', '', 1, 'cpanel-content', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"content","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"3","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), -(93, 74, 'Menus Dashboard', '', '', 1, 'cpanel-menus', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"menus","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), -(94, 75, 'Components Dashboard', '', '', 1, 'cpanel-components', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"components","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), -(95, 76, 'Users Dashboard', '', '', 1, 'cpanel-users', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"users","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), -(96, 41, 'Popular Articles', '', '', 3, 'cpanel-content', 0, NULL, NULL, NULL, 1, 'mod_popular', 3, 1, '{"count":"5","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(97, 42, 'Recently Added Articles', '', '', 4, 'cpanel-content', 0, NULL, NULL, NULL, 1, 'mod_latest', 3, 1, '{"count":"5","ordering":"c_dsc","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(98, 45, 'Logged-in Users', '', '', 2, 'cpanel-users', 0, NULL, NULL, NULL, 1, 'mod_logged', 3, 1, '{"count":"5","name":"1","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(99, 77, 'Frontend Link', '', '', 5, 'status', 0, NULL, NULL, NULL, 1, 'mod_frontend', 1, 1, '', 1, '*'), -(100, 78, 'Messages', '', '', 4, 'status', 0, NULL, NULL, NULL, 1, 'mod_messages', 3, 1, '', 1, '*'), -(101, 79, 'Post Install Messages', '', '', 3, 'status', 0, NULL, NULL, NULL, 1, 'mod_post_installation_messages', 3, 1, '', 1, '*'), -(102, 80, 'User Status', '', '', 6, 'status', 0, NULL, NULL, NULL, 1, 'mod_user', 3, 1, '', 1, '*'), -(103, 70, 'Site', '', '', 1, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"site_quickicon","header_icon":"fas fa-desktop","show_users":"1","show_articles":"1","show_categories":"1","show_media":"1","show_menuItems":"1","show_modules":"1","show_plugins":"1","show_templates":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), -(104, 71, 'System', '', '', 2, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"system_quickicon","header_icon":"fas fa-wrench","show_global":"1","show_checkin":"1","show_cache":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), -(105, 82, '3rd Party', '', '', 4, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"mod_quickicon","header_icon":"fas fa-boxes","load_plugins":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), -(106, 83, 'Help Dashboard', '', '', 1, 'cpanel-help', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"help","layout":"_:default","moduleclass_sfx":"","style":"System-none","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'), -(107, 84, 'Privacy Requests', '', '', 1, 'cpanel-privacy', 0, NULL, NULL, NULL, 1, 'mod_privacy_dashboard', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'), -(108, 85, 'Privacy Status', '', '', 1, 'cpanel-privacy', 0, NULL, NULL, NULL, 1, 'mod_privacy_status', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'); +INSERT INTO `#__modules` (`id`, `asset_id`, `title`, `note`, `content`, `ordering`, `position`, `publish_up`, `publish_down`, `published`, `module`, `access`, `showtitle`, `params`, `client_id`, `language`) VALUES +(1, 39, 'Main Menu', '', '', 1, 'sidebar-right', NULL, NULL, 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"0","endLevel":"0","showAllChildren":"1","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(2, 40, 'Login', '', '', 1, 'login', NULL, NULL, 1, 'mod_login', 1, 1, '', 1, '*'), +(3, 41, 'Popular Articles', '', '', 3, 'cpanel', NULL, NULL, 1, 'mod_popular', 3, 1, '{"count":"5","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(4, 42, 'Recently Added Articles', '', '', 4, 'cpanel', NULL, NULL, 1, 'mod_latest', 3, 1, '{"count":"5","ordering":"c_dsc","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(8, 43, 'Toolbar', '', '', 1, 'toolbar', NULL, NULL, 1, 'mod_toolbar', 3, 1, '', 1, '*'), +(9, 44, 'Update Checks', '', '', 3, 'icon', NULL, NULL, 1, 'mod_quickicon', 3, 1, '{"context":"update_quickicon","header_icon":"fas fa-sync","show_jupdate":"1","show_eupdate":"1","show_oupdate":"1","show_privacy":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":""}', 1, '*'), +(10, 45, 'Logged-in Users', '', '', 2, 'cpanel', NULL, NULL, 1, 'mod_logged', 3, 1, '{"count":"5","name":"1","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(12, 46, 'Admin Menu', '', '', 1, 'menu', NULL, NULL, 1, 'mod_menu', 3, 1, '{"layout":"","moduleclass_sfx":"","shownew":"1","showhelp":"1","cache":"0"}', 1, '*'), +(15, 49, 'Title', '', '', 1, 'title', NULL, NULL, 1, 'mod_title', 3, 1, '', 1, '*'), +(16, 50, 'Login Form', '', '', 7, 'sidebar-right', NULL, NULL, 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'), +(17, 51, 'Breadcrumbs', '', '', 1, 'breadcrumbs', NULL, NULL, 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), +(79, 52, 'Multilanguage status', '', '', 2, 'status', NULL, NULL, 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), +(86, 53, 'Joomla Version', '', '', 1, 'status', NULL, NULL, 1, 'mod_version', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), +(87, 55, 'Sample Data', '', '', 0, 'cpanel', NULL, NULL, 1, 'mod_sampledata', 6, 1, '{"bootstrap_size": "6"}', 1, '*'), +(88, 67, 'Latest Actions', '', '', 0, 'cpanel', NULL, NULL, 1, 'mod_latestactions', 6, 1, '{}', 1, '*'), +(89, 68, 'Privacy Dashboard', '', '', 0, 'cpanel', NULL, NULL, 1, 'mod_privacy_dashboard', 6, 1, '{}', 1, '*'), +(90, 65, 'Login Support', '', '', 1, 'sidebar', NULL, NULL, 1, 'mod_loginsupport', 1, 1, '{"forum_url":"https://forum.joomla.org/","documentation_url":"https://docs.joomla.org/","news_url":"https://www.joomla.org/","automatic_title":1,"prepare_content":1,"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 1, '*'), +(91, 72, 'System Dashboard', '', '', 1, 'cpanel-system', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"system","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), +(92, 73, 'Content Dashboard', '', '', 1, 'cpanel-content', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"content","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"3","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), +(93, 74, 'Menus Dashboard', '', '', 1, 'cpanel-menus', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"menus","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), +(94, 75, 'Components Dashboard', '', '', 1, 'cpanel-components', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"components","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), +(95, 76, 'Users Dashboard', '', '', 1, 'cpanel-users', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"users","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), +(96, 41, 'Popular Articles', '', '', 3, 'cpanel-content', NULL, NULL, 1, 'mod_popular', 3, 1, '{"count":"5","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(97, 42, 'Recently Added Articles', '', '', 4, 'cpanel-content', NULL, NULL, 1, 'mod_latest', 3, 1, '{"count":"5","ordering":"c_dsc","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(98, 45, 'Logged-in Users', '', '', 2, 'cpanel-users', NULL, NULL, 1, 'mod_logged', 3, 1, '{"count":"5","name":"1","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(99, 77, 'Frontend Link', '', '', 5, 'status', NULL, NULL, 1, 'mod_frontend', 1, 1, '', 1, '*'), +(100, 78, 'Messages', '', '', 4, 'status', NULL, NULL, 1, 'mod_messages', 3, 1, '', 1, '*'), +(101, 79, 'Post Install Messages', '', '', 3, 'status', NULL, NULL, 1, 'mod_post_installation_messages', 3, 1, '', 1, '*'), +(102, 80, 'User Status', '', '', 6, 'status', NULL, NULL, 1, 'mod_user', 3, 1, '', 1, '*'), +(103, 70, 'Site', '', '', 1, 'icon', NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"site_quickicon","header_icon":"fas fa-desktop","show_users":"1","show_articles":"1","show_categories":"1","show_media":"1","show_menuItems":"1","show_modules":"1","show_plugins":"1","show_templates":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), +(104, 71, 'System', '', '', 2, 'icon', NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"system_quickicon","header_icon":"fas fa-wrench","show_global":"1","show_checkin":"1","show_cache":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), +(105, 82, '3rd Party', '', '', 4, 'icon', NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"mod_quickicon","header_icon":"fas fa-boxes","load_plugins":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), +(106, 83, 'Help Dashboard', '', '', 1, 'cpanel-help', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"help","layout":"_:default","moduleclass_sfx":"","style":"System-none","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'), +(107, 84, 'Privacy Requests', '', '', 1, 'cpanel-privacy', NULL, NULL, 1, 'mod_privacy_dashboard', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'), +(108, 85, 'Privacy Status', '', '', 1, 'cpanel-privacy', NULL, NULL, 1, 'mod_privacy_status', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'); -- -------------------------------------------------------- @@ -708,7 +711,7 @@ CREATE TABLE IF NOT EXISTS `#__tags` ( `note` varchar(255) NOT NULL DEFAULT '', `description` mediumtext NOT NULL, `published` tinyint(1) NOT NULL DEFAULT 0, - `checked_out` int(11) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `access` int(10) unsigned NOT NULL DEFAULT 0, `params` text NOT NULL, @@ -741,8 +744,8 @@ CREATE TABLE IF NOT EXISTS `#__tags` ( -- Dumping data for table `#__tags` -- -INSERT INTO `#__tags` (`id`, `parent_id`, `lft`, `rgt`, `level`, `path`, `title`, `alias`, `note`, `description`, `published`, `checked_out`, `checked_out_time`, `access`, `params`, `metadesc`, `metakey`, `metadata`, `created_user_id`, `created_time`, `created_by_alias`, `modified_user_id`, `modified_time`, `images`, `urls`, `hits`, `language`, `version`) VALUES -(1, 0, 0, 1, 0, '', 'ROOT', 'root', '', '', 1, 0, NULL, 1, '', '', '', '', 42, CURRENT_TIMESTAMP(), '', 42, CURRENT_TIMESTAMP(), '', '', 0, '*', 1); +INSERT INTO `#__tags` (`id`, `parent_id`, `lft`, `rgt`, `level`, `path`, `title`, `alias`, `note`, `description`, `published`, `access`, `params`, `metadesc`, `metakey`, `metadata`, `created_user_id`, `created_time`, `created_by_alias`, `modified_user_id`, `modified_time`, `images`, `urls`, `hits`, `language`, `version`) VALUES +(1, 0, 0, 1, 0, '', 'ROOT', 'root', '', '', 1, 1, '', '', '', '', 42, CURRENT_TIMESTAMP(), '', 42, CURRENT_TIMESTAMP(), '', '', 0, '*', 1); -- -------------------------------------------------------- @@ -831,7 +834,7 @@ CREATE TABLE IF NOT EXISTS `#__update_sites` ( `enabled` int(11) DEFAULT 0, `last_check_timestamp` bigint(20) DEFAULT 0, `extra_query` varchar(1000) DEFAULT '', - `checked_out` int(10) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime NULL DEFAULT NULL, PRIMARY KEY (`update_site_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci COMMENT='Update Sites'; @@ -963,7 +966,7 @@ CREATE TABLE IF NOT EXISTS `#__user_notes` ( `subject` varchar(100) NOT NULL DEFAULT '', `body` text NOT NULL, `state` tinyint(3) NOT NULL DEFAULT 0, - `checked_out` int(10) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `created_user_id` int(10) unsigned NOT NULL DEFAULT 0, `created_time` datetime NOT NULL, @@ -1043,14 +1046,13 @@ CREATE TABLE IF NOT EXISTS `#__workflows` ( `description` text NOT NULL, `extension` varchar(50) NOT NULL, `default` tinyint(1) NOT NULL DEFAULT 0, - `core` tinyint(1) NOT NULL DEFAULT 0, `ordering` int(11) NOT NULL DEFAULT 0, `created` datetime NOT NULL, `created_by` int(10) NOT NULL DEFAULT 0, `modified` datetime NOT NULL, `modified_by` int(10) NOT NULL DEFAULT 0, `checked_out_time` datetime, - `checked_out` int(10) NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, PRIMARY KEY (`id`), KEY `idx_asset_id` (`asset_id`), KEY `idx_title` (`title`(191)), @@ -1067,8 +1069,8 @@ CREATE TABLE IF NOT EXISTS `#__workflows` ( -- Dumping data for table `#__workflows` -- -INSERT INTO `#__workflows` (`id`, `asset_id`, `published`, `title`, `description`, `extension`, `default`, `core`, `ordering`, `created`, `created_by`, `modified`, `modified_by`, `checked_out_time`, `checked_out`) VALUES -(1, 56, 1, 'COM_WORKFLOW_DEFAULT_WORKFLOW', '', 'com_content', 1, 1, 1, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 42, NULL, 0); +INSERT INTO `#__workflows` (`id`, `asset_id`, `published`, `title`, `description`, `extension`, `default`, `ordering`, `created`, `created_by`, `modified`, `modified_by`) VALUES +(1, 56, 1, 'COM_WORKFLOW_BASIC_WORKFLOW', '', 'com_content.article', 1, 1, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 42); -- -------------------------------------------------------- @@ -1101,10 +1103,9 @@ CREATE TABLE IF NOT EXISTS `#__workflow_stages` ( `published` tinyint(1) NOT NULL DEFAULT 0, `title` varchar(255) NOT NULL, `description` text NOT NULL, - `condition` int(10) DEFAULT 0, `default` tinyint(1) NOT NULL DEFAULT 0, `checked_out_time` datetime, - `checked_out` int(10) NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, PRIMARY KEY (`id`), KEY `idx_workflow_id` (`workflow_id`), KEY `idx_checked_out` (`checked_out`), @@ -1117,11 +1118,8 @@ CREATE TABLE IF NOT EXISTS `#__workflow_stages` ( -- Dumping data for table `#__workflow_stages` -- -INSERT INTO `#__workflow_stages` (`id`, `asset_id`, `ordering`, `workflow_id`, `published`, `title`, `description`, `condition`, `default`, `checked_out_time`, `checked_out`) VALUES -(1, 57, 1, 1, 1, 'JUNPUBLISHED', '', 0, 1, NULL, 0), -(2, 58, 2, 1, 1, 'JPUBLISHED', '', 1, 0, NULL, 0), -(3, 59, 3, 1, 1, 'JTRASHED', '', -2, 0, NULL, 0), -(4, 60, 4, 1, 1, 'JARCHIVED', '', 2, 0, NULL, 0); +INSERT INTO `#__workflow_stages` (`id`, `asset_id`, `ordering`, `workflow_id`, `published`, `title`, `description`, `default`) VALUES +(1, 0, 1, 1, 1, 'COM_WORKFLOW_BASIC_STAGE', '', 1); -- -------------------------------------------------------- @@ -1139,8 +1137,9 @@ CREATE TABLE IF NOT EXISTS `#__workflow_transitions` ( `description` text NOT NULL, `from_stage_id` int(10) NOT NULL, `to_stage_id` int(10) NOT NULL, + `options` text NOT NULL, `checked_out_time` datetime, - `checked_out` int(10) NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, PRIMARY KEY (`id`), KEY `idx_title` (`title`(191)), KEY `idx_asset_id` (`asset_id`), @@ -1154,8 +1153,11 @@ CREATE TABLE IF NOT EXISTS `#__workflow_transitions` ( -- Dumping data for table `#__workflow_transitions` -- -INSERT INTO `#__workflow_transitions` (`id`, `asset_id`, `published`, `ordering`, `workflow_id`, `title`, `description`, `from_stage_id`, `to_stage_id`, `checked_out_time`, `checked_out`) VALUES -(1, 61, 1, 1, 1, 'Unpublish', '', -1, 1, NULL, 0), -(2, 62, 1, 2, 1, 'Publish', '', -1, 2, NULL, 0), -(3, 63, 1, 3, 1, 'Trash', '', -1, 3, NULL, 0), -(4, 64, 1, 4, 1, 'Archive', '', -1, 4, NULL, 0); +INSERT INTO `#__workflow_transitions` (`id`, `asset_id`, `published`, `ordering`, `workflow_id`, `title`, `description`, `from_stage_id`, `to_stage_id`, `options`) VALUES +(1, 58, 1, 1, 1, 'Unpublish', '', -1, 1, '{"publishing":"0"}'), +(2, 59, 1, 2, 1, 'Publish', '', -1, 1, '{"publishing":"1"}'), +(3, 60, 1, 3, 1, 'Trash', '', -1, 1, '{"publishing":"-2"}'), +(4, 61, 1, 4, 1, 'Archive', '', -1, 1, '{"publishing":"2"}'), +(5, 62, 1, 5, 1, 'Feature', '', -1, 1, '{"featuring":"1"}'), +(6, 63, 1, 6, 1, 'Unfeature', '', -1, 1, '{"featuring":"0"}'), +(7, 64, 1, 7, 1, 'Publish & Feature', '', -1, 1, '{"publishing":"1","featuring":"1"}'); diff --git a/installation/sql/mysql/extensions.sql b/installation/sql/mysql/extensions.sql index 2616eb7315336..1cb9d2ab7cf2f 100644 --- a/installation/sql/mysql/extensions.sql +++ b/installation/sql/mysql/extensions.sql @@ -28,7 +28,7 @@ CREATE TABLE IF NOT EXISTS `#__banners` ( `purchase_type` tinyint(4) NOT NULL DEFAULT -1, `track_clicks` tinyint(4) NOT NULL DEFAULT -1, `track_impressions` tinyint(4) NOT NULL DEFAULT -1, - `checked_out` int(10) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `publish_up` datetime, `publish_down` datetime, @@ -61,7 +61,7 @@ CREATE TABLE IF NOT EXISTS `#__banner_clients` ( `email` varchar(255) NOT NULL DEFAULT '', `extrainfo` text NOT NULL, `state` tinyint(3) NOT NULL DEFAULT 0, - `checked_out` int(10) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `metakey` text, `own_prefix` tinyint(4) NOT NULL DEFAULT 0, @@ -114,7 +114,7 @@ CREATE TABLE IF NOT EXISTS `#__contact_details` ( `email_to` varchar(255), `default_con` tinyint(1) unsigned NOT NULL DEFAULT 0, `published` tinyint(1) NOT NULL DEFAULT 0, - `checked_out` int(10) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `ordering` int(11) NOT NULL DEFAULT 0, `params` text NOT NULL, @@ -170,7 +170,7 @@ CREATE TABLE IF NOT EXISTS `#__content` ( `created_by_alias` varchar(255) NOT NULL DEFAULT '', `modified` datetime NOT NULL, `modified_by` int(10) unsigned NOT NULL DEFAULT 0, - `checked_out` int(10) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime NULL DEFAULT NULL, `publish_up` datetime NULL DEFAULT NULL, `publish_down` datetime NULL DEFAULT NULL, @@ -242,7 +242,7 @@ CREATE TABLE IF NOT EXISTS `#__finder_filters` ( `created_by_alias` varchar(255) NOT NULL DEFAULT '', `modified` datetime NOT NULL, `modified_by` int(10) unsigned NOT NULL DEFAULT 0, - `checked_out` int(10) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `map_count` int(10) unsigned NOT NULL DEFAULT 0, `data` text, @@ -688,7 +688,7 @@ CREATE TABLE IF NOT EXISTS `#__newsfeeds` ( `published` tinyint(1) NOT NULL DEFAULT 0, `numarticles` int(10) unsigned NOT NULL DEFAULT 1, `cache_time` int(10) unsigned NOT NULL DEFAULT 3600, - `checked_out` int(10) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `ordering` int(11) NOT NULL DEFAULT 0, `rtl` tinyint(4) NOT NULL DEFAULT 0, diff --git a/installation/sql/mysql/supports.sql b/installation/sql/mysql/supports.sql index ee93005b0b8ff..35a0923e73721 100644 --- a/installation/sql/mysql/supports.sql +++ b/installation/sql/mysql/supports.sql @@ -35,7 +35,7 @@ CREATE TABLE IF NOT EXISTS `#__categories` ( `note` varchar(255) NOT NULL DEFAULT '', `description` mediumtext, `published` tinyint(1) NOT NULL DEFAULT 0, - `checked_out` int(11) unsigned NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `access` int(10) unsigned NOT NULL DEFAULT 0, `params` text, @@ -63,13 +63,13 @@ CREATE TABLE IF NOT EXISTS `#__categories` ( -- Dumping data for table `#__categories` -- -INSERT INTO `#__categories` (`id`, `asset_id`, `parent_id`, `lft`, `rgt`, `level`, `path`, `extension`, `title`, `alias`, `note`, `description`, `published`, `checked_out`, `checked_out_time`, `access`, `params`, `metadesc`, `metakey`, `metadata`, `created_user_id`, `created_time`, `modified_user_id`, `modified_time`, `hits`, `language`, `version`) VALUES -(1, 0, 0, 0, 11, 0, '', 'system', 'ROOT', 'root', '', '', 1, 0, NULL, 1, '{}', '', '', '{}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1), -(2, 27, 1, 1, 2, 1, 'uncategorised', 'com_content', 'Uncategorised', 'uncategorised', '', '', 1, 0, NULL, 1, '{"category_layout":"","image":"","workflow_id":"use_default"}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1), -(3, 28, 1, 3, 4, 1, 'uncategorised', 'com_banners', 'Uncategorised', 'uncategorised', '', '', 1, 0, NULL, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1), -(4, 29, 1, 5, 6, 1, 'uncategorised', 'com_contact', 'Uncategorised', 'uncategorised', '', '', 1, 0, NULL, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1), -(5, 30, 1, 7, 8, 1, 'uncategorised', 'com_newsfeeds', 'Uncategorised', 'uncategorised', '', '', 1, 0, NULL, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1), -(7, 32, 1, 9, 10, 1, 'uncategorised', 'com_users', 'Uncategorised', 'uncategorised', '', '', 1, 0, NULL, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1); +INSERT INTO `#__categories` (`id`, `asset_id`, `parent_id`, `lft`, `rgt`, `level`, `path`, `extension`, `title`, `alias`, `note`, `description`, `published`, `access`, `params`, `metadesc`, `metakey`, `metadata`, `created_user_id`, `created_time`, `modified_user_id`, `modified_time`, `hits`, `language`, `version`) VALUES +(1, 0, 0, 0, 11, 0, '', 'system', 'ROOT', 'root', '', '', 1, 1, '{}', '', '', '{}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1), +(2, 27, 1, 1, 2, 1, 'uncategorised', 'com_content', 'Uncategorised', 'uncategorised', '', '', 1, 1, '{"category_layout":"","image":"","workflow_id":"use_default"}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1), +(3, 28, 1, 3, 4, 1, 'uncategorised', 'com_banners', 'Uncategorised', 'uncategorised', '', '', 1, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1), +(4, 29, 1, 5, 6, 1, 'uncategorised', 'com_contact', 'Uncategorised', 'uncategorised', '', '', 1, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1), +(5, 30, 1, 7, 8, 1, 'uncategorised', 'com_newsfeeds', 'Uncategorised', 'uncategorised', '', '', 1, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1), +(7, 32, 1, 9, 10, 1, 'uncategorised', 'com_users', 'Uncategorised', 'uncategorised', '', '', 1, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP(), 42, CURRENT_TIMESTAMP(), 0, '*', 1); -- -------------------------------------------------------- @@ -166,7 +166,7 @@ CREATE TABLE IF NOT EXISTS `#__fields` ( `description` text NOT NULL, `state` tinyint(1) NOT NULL DEFAULT 0, `required` tinyint(1) NOT NULL DEFAULT 0, - `checked_out` int(11) NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `ordering` int(11) NOT NULL DEFAULT 0, `params` text NOT NULL, @@ -212,7 +212,7 @@ CREATE TABLE IF NOT EXISTS `#__fields_groups` ( `note` varchar(255) NOT NULL DEFAULT '', `description` text NOT NULL, `state` tinyint(1) NOT NULL DEFAULT 0, - `checked_out` int(11) NOT NULL DEFAULT 0, + `checked_out` int(10) unsigned, `checked_out_time` datetime, `ordering` int(11) NOT NULL DEFAULT 0, `params` text NOT NULL, @@ -329,7 +329,7 @@ CREATE TABLE IF NOT EXISTS `#__ucm_content` ( `core_body` mediumtext, `core_state` tinyint(1) NOT NULL DEFAULT 0, `core_checked_out_time` datetime, - `core_checked_out_user_id` int(10) unsigned NOT NULL DEFAULT 0, + `core_checked_out_user_id` int(10) unsigned, `core_access` int(10) unsigned NOT NULL DEFAULT 0, `core_params` text, `core_featured` tinyint(4) unsigned NOT NULL DEFAULT 0, diff --git a/installation/sql/postgresql/base.sql b/installation/sql/postgresql/base.sql index e63b0d0b0612a..d565eb6b87d35 100644 --- a/installation/sql/postgresql/base.sql +++ b/installation/sql/postgresql/base.sql @@ -81,15 +81,15 @@ INSERT INTO "#__assets" ("id", "parent_id", "lft", "rgt", "level", "name", "titl (53, 18, 90, 91, 2, 'com_modules.module.86', 'Joomla Version', '{}'), (54, 16, 54, 55, 2, 'com_menus.menu.1', 'Main Menu', '{}'), (55, 18, 92, 93, 2, 'com_modules.module.87', 'Sample Data', '{}'), -(56, 8, 20, 37, 2, 'com_content.workflow.1', 'COM_WORKFLOW_DEFAULT_WORKFLOW', '{}'), -(57, 56, 21, 22, 3, 'com_content.state.1', 'Unpublished', '{}'), -(58, 56, 23, 24, 3, 'com_content.state.2', 'Published', '{}'), -(59, 56, 25, 26, 3, 'com_content.state.3', 'Trashed', '{}'), -(60, 56, 27, 28, 3, 'com_content.state.4', 'Archived', '{}'), -(61, 56, 29, 30, 3, 'com_content.transition.1', 'Publish', '{}'), -(62, 56, 31, 32, 3, 'com_content.transition.2', 'Unpublish', '{}'), -(63, 56, 33, 34, 3, 'com_content.transition.3', 'Archive', '{}'), -(64, 56, 35, 36, 3, 'com_content.transition.4', 'Trash', '{}'), +(56, 8, 20, 37, 2, 'com_content.workflow.1', 'COM_WORKFLOW_BASIC_WORKFLOW', '{}'), +(57, 56, 21, 22, 3, 'com_content.state.1', 'COM_WORKFLOW_BASIC_STAGE', '{}'), +(58, 56, 23, 24, 3, 'com_content.transition.1', 'Publish', '{}'), +(59, 56, 25, 26, 3, 'com_content.transition.2', 'Unpublish', '{}'), +(60, 56, 27, 28, 3, 'com_content.transition.3', 'Archive', '{}'), +(61, 56, 29, 30, 3, 'com_content.transition.4', 'Trash', '{}'), +(62, 56, 31, 32, 3, 'com_content.transition.5', 'Feature', '{}'), +(63, 56, 33, 34, 3, 'com_content.transition.6', 'Unfeature', '{}'), +(64, 56, 35, 36, 3, 'com_content.transition.7', 'Publish & Feature', '{}'), (65, 1, 129, 130, 1, 'com_privacy', 'com_privacy', '{}'), (66, 1, 131, 132, 1, 'com_actionlogs', 'com_actionlogs', '{}'), (67, 18, 74, 75, 2, 'com_modules.module.88', 'Latest Actions', '{}'), @@ -130,7 +130,7 @@ CREATE TABLE IF NOT EXISTS "#__extensions" ( "locked" smallint DEFAULT 0 NOT NULL, "manifest_cache" text NOT NULL, "params" text NOT NULL, - "checked_out" integer DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "ordering" bigint DEFAULT 0, "state" bigint DEFAULT 0, @@ -146,245 +146,248 @@ COMMENT ON COLUMN "#__extensions"."locked" IS 'Flag to indicate if the extension COMMENT ON COLUMN "#__extensions"."package_id" IS 'Parent package ID for extensions installed as a package.'; -- Components -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") VALUES -(0, 'com_wrapper', 'component', 'com_wrapper', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_admin', 'component', 'com_admin', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_banners', 'component', 'com_banners', '', 1, 1, 1, 0, 1, '', '{"purchase_type":"3","track_impressions":"0","track_clicks":"0","metakey_prefix":"","save_history":"1","history_limit":10}', 0, NULL, 0, 0), -(0, 'com_cache', 'component', 'com_cache', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_categories', 'component', 'com_categories', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_checkin', 'component', 'com_checkin', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_contact', 'component', 'com_contact', '', 1, 1, 1, 0, 1, '', '{"contact_layout":"_:default","show_contact_category":"hide","save_history":"1","history_limit":10,"show_contact_list":"0","presentation_style":"sliders","show_tags":"1","show_info":"1","show_name":"1","show_position":"1","show_email":"0","show_street_address":"1","show_suburb":"1","show_state":"1","show_postcode":"1","show_country":"1","show_telephone":"1","show_mobile":"1","show_fax":"1","show_webpage":"1","show_image":"1","show_misc":"1","image":"","allow_vcard":"0","show_articles":"0","articles_display_num":"10","show_profile":"0","show_user_custom_fields":["-1"],"show_links":"0","linka_name":"","linkb_name":"","linkc_name":"","linkd_name":"","linke_name":"","contact_icons":"0","icon_address":"","icon_email":"","icon_telephone":"","icon_mobile":"","icon_fax":"","icon_misc":"","category_layout":"_:default","show_category_title":"1","show_description":"1","show_description_image":"0","maxLevel":"-1","show_subcat_desc":"1","show_empty_categories":"0","show_cat_items":"1","show_cat_tags":"1","show_base_description":"1","maxLevelcat":"-1","show_subcat_desc_cat":"1","show_empty_categories_cat":"0","show_cat_items_cat":"1","filter_field":"0","show_pagination_limit":"0","show_headings":"1","show_image_heading":"0","show_position_headings":"1","show_email_headings":"0","show_telephone_headings":"1","show_mobile_headings":"0","show_fax_headings":"0","show_suburb_headings":"1","show_state_headings":"1","show_country_headings":"1","show_pagination":"2","show_pagination_results":"1","initial_sort":"ordering","captcha":"","show_email_form":"1","show_email_copy":"0","banned_email":"","banned_subject":"","banned_text":"","validate_session":"1","custom_reply":"0","redirect":"","show_feed_link":"1","sef_ids":0,"custom_fields_enable":"1"}', 0, NULL, 0, 0), -(0, 'com_cpanel', 'component', 'com_cpanel', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_installer', 'component', 'com_installer', '', 1, 1, 1, 1, 1, '', '{"cachetimeout":"6","minimum_stability":"4"}', 0, NULL, 0, 0), -(0, 'com_languages', 'component', 'com_languages', '', 1, 1, 1, 1, 1, '', '{"administrator":"en-GB","site":"en-GB"}', 0, NULL, 0, 0), -(0, 'com_login', 'component', 'com_login', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_media', 'component', 'com_media', '', 1, 1, 0, 1, 1, '', '{"upload_extensions":"bmp,csv,doc,gif,ico,jpg,jpeg,odg,odp,ods,odt,pdf,png,ppt,txt,xcf,xls,BMP,CSV,DOC,GIF,ICO,JPG,JPEG,ODG,ODP,ODS,ODT,PDF,PNG,PPT,TXT,XCF,XLS","upload_maxsize":"10","file_path":"images","image_path":"images","restrict_uploads":"1","allowed_media_usergroup":"3","check_mime":"1","image_extensions":"bmp,gif,jpg,png","ignore_extensions":"","upload_mime":"image\\/jpeg,image\\/gif,image\\/png,image\\/bmp,application\\/msword,application\\/excel,application\\/pdf,application\\/powerpoint,text\\/plain,application\\/x-zip","upload_mime_illegal":"text\\/html"}', 0, NULL, 0, 0), -(0, 'com_menus', 'component', 'com_menus', '', 1, 1, 1, 1, 1, '', '{"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":""}', 0, NULL, 0, 0), -(0, 'com_messages', 'component', 'com_messages', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_modules', 'component', 'com_modules', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_newsfeeds', 'component', 'com_newsfeeds', '', 1, 1, 1, 0, 1, '', '{"newsfeed_layout":"_:default","save_history":"1","history_limit":5,"show_feed_image":"1","show_feed_description":"1","show_item_description":"1","feed_character_count":"0","feed_display_order":"des","float_first":"right","float_second":"right","show_tags":"1","category_layout":"_:default","show_category_title":"1","show_description":"1","show_description_image":"1","maxLevel":"-1","show_empty_categories":"0","show_subcat_desc":"1","show_cat_items":"1","show_cat_tags":"1","show_base_description":"1","maxLevelcat":"-1","show_empty_categories_cat":"0","show_subcat_desc_cat":"1","show_cat_items_cat":"1","filter_field":"1","show_pagination_limit":"1","show_headings":"1","show_articles":"0","show_link":"1","show_pagination":"1","show_pagination_results":"1"}', 0, NULL, 0, 0), -(0, 'com_plugins', 'component', 'com_plugins', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_templates', 'component', 'com_templates', '', 1, 1, 1, 1, 1, '', '{"template_positions_display":"0","upload_limit":"10","image_formats":"gif,bmp,jpg,jpeg,png","source_formats":"txt,less,ini,xml,js,php,css,scss,sass,json","font_formats":"woff,ttf,otf","compressed_formats":"zip"}', 0, NULL, 0, 0), -(0, 'com_content', 'component', 'com_content', '', 1, 1, 0, 1, 1, '', '{"article_layout":"_:default","show_title":"1","link_titles":"1","show_intro":"1","show_category":"1","link_category":"1","show_parent_category":"0","link_parent_category":"0","show_author":"1","link_author":"0","show_create_date":"0","show_modify_date":"0","show_publish_date":"1","show_item_navigation":"1","show_vote":"0","show_tags":"1","show_readmore":"1","show_readmore_title":"1","readmore_limit":"100","show_hits":"1","show_noauth":"0","show_publishing_options":"1","show_article_options":"1","save_history":"1","history_limit":10,"show_urls_images_frontend":"0","show_urls_images_backend":"1","targeta":0,"targetb":0,"targetc":0,"float_intro":"left","float_fulltext":"left","category_layout":"_:blog","show_category_title":"0","show_description":"0","show_description_image":"0","maxLevel":"1","show_empty_categories":"0","show_no_articles":"1","show_subcat_desc":"1","show_cat_num_articles":"0","show_base_description":"1","maxLevelcat":"-1","show_empty_categories_cat":"0","show_subcat_desc_cat":"1","show_cat_num_articles_cat":"1","num_leading_articles":"1","num_intro_articles":"4","num_links":"4","show_subcategory_content":"0","show_pagination_limit":"1","filter_field":"hide","show_headings":"1","list_show_date":"0","date_format":"","list_show_hits":"1","list_show_author":"1","orderby_pri":"order","orderby_sec":"rdate","order_date":"published","show_pagination":"2","show_pagination_results":"1","show_feed_link":"1","feed_summary":"0"}', 0, NULL, 0, 0), -(0, 'com_config', 'component', 'com_config', '', 1, 1, 0, 1, 1, '', '{"filters":{"1":{"filter_type":"NH","filter_tags":"","filter_attributes":""},"6":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"7":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"2":{"filter_type":"NH","filter_tags":"","filter_attributes":""},"3":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"4":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"5":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"10":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"12":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"8":{"filter_type":"NONE","filter_tags":"","filter_attributes":""}}}', 0, NULL, 0, 0), -(0, 'com_redirect', 'component', 'com_redirect', '', 1, 1, 0, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_users', 'component', 'com_users', '', 1, 1, 0, 1, 1, '', '{"allowUserRegistration":"0","new_usertype":"2","guest_usergroup":"9","sendpassword":"0","useractivation":"2","mail_to_admin":"1","captcha":"","frontend_userparams":"1","site_language":"0","change_login_name":"0","reset_count":"10","reset_time":"1","minimum_length":"4","minimum_integers":"0","minimum_symbols":"0","minimum_uppercase":"0","save_history":"1","history_limit":5,"mailSubjectPrefix":"","mailBodySuffix":""}', 0, NULL, 0, 0), -(0, 'com_finder', 'component', 'com_finder', '', 1, 1, 0, 0, 1, '', '{"enabled":"0","show_description":"1","description_length":255,"allow_empty_query":"0","show_url":"1","show_autosuggest":"1","show_suggested_query":"1","show_explained_query":"1","show_advanced":"1","show_advanced_tips":"1","expand_advanced":"0","show_date_filters":"0","sort_order":"relevance","sort_direction":"desc","highlight_terms":"1","opensearch_name":"","opensearch_description":"","batch_size":"50","memory_table_limit":30000,"title_multiplier":"1.7","text_multiplier":"0.7","meta_multiplier":"1.2","path_multiplier":"2.0","misc_multiplier":"0.3","stem":"1","stemmer":"snowball","enable_logging":"0"}', 0, NULL, 0, 0), -(0, 'com_joomlaupdate', 'component', 'com_joomlaupdate', '', 1, 1, 0, 1, 1, '', '{"updatesource":"default","customurl":""}', 0, NULL, 0, 0), -(0, 'com_tags', 'component', 'com_tags', '', 1, 1, 1, 0, 1, '', '{"tag_layout":"_:default","save_history":"1","history_limit":5,"show_tag_title":"0","tag_list_show_tag_image":"0","tag_list_show_tag_description":"0","tag_list_image":"","tag_list_orderby":"title","tag_list_orderby_direction":"ASC","show_headings":"0","tag_list_show_date":"0","tag_list_show_item_image":"0","tag_list_show_item_description":"0","tag_list_item_maximum_characters":0,"return_any_or_all":"1","include_children":"0","maximum":200,"tag_list_language_filter":"all","tags_layout":"_:default","all_tags_orderby":"title","all_tags_orderby_direction":"ASC","all_tags_show_tag_image":"0","all_tags_show_tag_description":"0","all_tags_tag_maximum_characters":20,"all_tags_show_tag_hits":"0","filter_field":"1","show_pagination_limit":"1","show_pagination":"2","show_pagination_results":"1","tag_field_ajax_mode":"1","show_feed_link":"1"}', 0, NULL, 0, 0), -(0, 'com_contenthistory', 'component', 'com_contenthistory', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_ajax', 'component', 'com_ajax', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_postinstall', 'component', 'com_postinstall', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'com_fields', 'component', 'com_fields', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_associations', 'component', 'com_associations', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_privacy', 'component', 'com_privacy', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 0, 1, '', '{"ip_logging":0,"csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_checkin","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', 0, NULL, 0, 0), -(0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 1, 1, '', '{}', 0, NULL, 0, 0), -(0, 'com_csp', 'component', 'com_csp', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'com_mails', 'component', 'com_mails', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0); +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") VALUES +(0, 'com_wrapper', 'component', 'com_wrapper', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'com_admin', 'component', 'com_admin', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_banners', 'component', 'com_banners', '', 1, 1, 1, 0, 1, '', '{"purchase_type":"3","track_impressions":"0","track_clicks":"0","metakey_prefix":"","save_history":"1","history_limit":10}', 0, 0), +(0, 'com_cache', 'component', 'com_cache', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_categories', 'component', 'com_categories', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_checkin', 'component', 'com_checkin', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_contact', 'component', 'com_contact', '', 1, 1, 1, 0, 1, '', '{"contact_layout":"_:default","show_contact_category":"hide","save_history":"1","history_limit":10,"show_contact_list":"0","presentation_style":"sliders","show_tags":"1","show_info":"1","show_name":"1","show_position":"1","show_email":"0","show_street_address":"1","show_suburb":"1","show_state":"1","show_postcode":"1","show_country":"1","show_telephone":"1","show_mobile":"1","show_fax":"1","show_webpage":"1","show_image":"1","show_misc":"1","image":"","allow_vcard":"0","show_articles":"0","articles_display_num":"10","show_profile":"0","show_user_custom_fields":["-1"],"show_links":"0","linka_name":"","linkb_name":"","linkc_name":"","linkd_name":"","linke_name":"","contact_icons":"0","icon_address":"","icon_email":"","icon_telephone":"","icon_mobile":"","icon_fax":"","icon_misc":"","category_layout":"_:default","show_category_title":"1","show_description":"1","show_description_image":"0","maxLevel":"-1","show_subcat_desc":"1","show_empty_categories":"0","show_cat_items":"1","show_cat_tags":"1","show_base_description":"1","maxLevelcat":"-1","show_subcat_desc_cat":"1","show_empty_categories_cat":"0","show_cat_items_cat":"1","filter_field":"0","show_pagination_limit":"0","show_headings":"1","show_image_heading":"0","show_position_headings":"1","show_email_headings":"0","show_telephone_headings":"1","show_mobile_headings":"0","show_fax_headings":"0","show_suburb_headings":"1","show_state_headings":"1","show_country_headings":"1","show_pagination":"2","show_pagination_results":"1","initial_sort":"ordering","captcha":"","show_email_form":"1","show_email_copy":"0","banned_email":"","banned_subject":"","banned_text":"","validate_session":"1","custom_reply":"0","redirect":"","show_feed_link":"1","sef_ids":0,"custom_fields_enable":"1"}', 0, 0), +(0, 'com_cpanel', 'component', 'com_cpanel', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_installer', 'component', 'com_installer', '', 1, 1, 1, 1, 1, '', '{"cachetimeout":"6","minimum_stability":"4"}', 0, 0), +(0, 'com_languages', 'component', 'com_languages', '', 1, 1, 1, 1, 1, '', '{"administrator":"en-GB","site":"en-GB"}', 0, 0), +(0, 'com_login', 'component', 'com_login', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_media', 'component', 'com_media', '', 1, 1, 0, 1, 1, '', '{"upload_extensions":"bmp,csv,doc,gif,ico,jpg,jpeg,odg,odp,ods,odt,pdf,png,ppt,txt,xcf,xls,BMP,CSV,DOC,GIF,ICO,JPG,JPEG,ODG,ODP,ODS,ODT,PDF,PNG,PPT,TXT,XCF,XLS","upload_maxsize":"10","file_path":"images","image_path":"images","restrict_uploads":"1","allowed_media_usergroup":"3","check_mime":"1","image_extensions":"bmp,gif,jpg,png","ignore_extensions":"","upload_mime":"image\\/jpeg,image\\/gif,image\\/png,image\\/bmp,application\\/msword,application\\/excel,application\\/pdf,application\\/powerpoint,text\\/plain,application\\/x-zip","upload_mime_illegal":"text\\/html"}', 0, 0), +(0, 'com_menus', 'component', 'com_menus', '', 1, 1, 1, 1, 1, '', '{"page_title":"","show_page_heading":0,"page_heading":"","pageclass_sfx":""}', 0, 0), +(0, 'com_messages', 'component', 'com_messages', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_modules', 'component', 'com_modules', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_newsfeeds', 'component', 'com_newsfeeds', '', 1, 1, 1, 0, 1, '', '{"newsfeed_layout":"_:default","save_history":"1","history_limit":5,"show_feed_image":"1","show_feed_description":"1","show_item_description":"1","feed_character_count":"0","feed_display_order":"des","float_first":"right","float_second":"right","show_tags":"1","category_layout":"_:default","show_category_title":"1","show_description":"1","show_description_image":"1","maxLevel":"-1","show_empty_categories":"0","show_subcat_desc":"1","show_cat_items":"1","show_cat_tags":"1","show_base_description":"1","maxLevelcat":"-1","show_empty_categories_cat":"0","show_subcat_desc_cat":"1","show_cat_items_cat":"1","filter_field":"1","show_pagination_limit":"1","show_headings":"1","show_articles":"0","show_link":"1","show_pagination":"1","show_pagination_results":"1"}', 0, 0), +(0, 'com_plugins', 'component', 'com_plugins', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_templates', 'component', 'com_templates', '', 1, 1, 1, 1, 1, '', '{"template_positions_display":"0","upload_limit":"10","image_formats":"gif,bmp,jpg,jpeg,png","source_formats":"txt,less,ini,xml,js,php,css,scss,sass,json","font_formats":"woff,ttf,otf","compressed_formats":"zip"}', 0, 0), +(0, 'com_content', 'component', 'com_content', '', 1, 1, 0, 1, 1, '', '{"article_layout":"_:default","show_title":"1","link_titles":"1","show_intro":"1","show_category":"1","link_category":"1","show_parent_category":"0","link_parent_category":"0","show_author":"1","link_author":"0","show_create_date":"0","show_modify_date":"0","show_publish_date":"1","show_item_navigation":"1","show_vote":"0","show_tags":"1","show_readmore":"1","show_readmore_title":"1","readmore_limit":"100","show_hits":"1","show_noauth":"0","show_publishing_options":"1","show_article_options":"1","save_history":"1","history_limit":10,"show_urls_images_frontend":"0","show_urls_images_backend":"1","targeta":0,"targetb":0,"targetc":0,"float_intro":"left","float_fulltext":"left","category_layout":"_:blog","show_category_title":"0","show_description":"0","show_description_image":"0","maxLevel":"1","show_empty_categories":"0","show_no_articles":"1","show_subcat_desc":"1","show_cat_num_articles":"0","show_base_description":"1","maxLevelcat":"-1","show_empty_categories_cat":"0","show_subcat_desc_cat":"1","show_cat_num_articles_cat":"1","num_leading_articles":"1","num_intro_articles":"4","num_links":"4","show_subcategory_content":"0","show_pagination_limit":"1","filter_field":"hide","show_headings":"1","list_show_date":"0","date_format":"","list_show_hits":"1","list_show_author":"1","orderby_pri":"order","orderby_sec":"rdate","order_date":"published","show_pagination":"2","show_pagination_results":"1","show_feed_link":"1","feed_summary":"0"}', 0, 0), +(0, 'com_config', 'component', 'com_config', '', 1, 1, 0, 1, 1, '', '{"filters":{"1":{"filter_type":"NH","filter_tags":"","filter_attributes":""},"6":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"7":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"2":{"filter_type":"NH","filter_tags":"","filter_attributes":""},"3":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"4":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"5":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"10":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"12":{"filter_type":"BL","filter_tags":"","filter_attributes":""},"8":{"filter_type":"NONE","filter_tags":"","filter_attributes":""}}}', 0, 0), +(0, 'com_redirect', 'component', 'com_redirect', '', 1, 1, 0, 0, 1, '', '', 0, 0), +(0, 'com_users', 'component', 'com_users', '', 1, 1, 0, 1, 1, '', '{"allowUserRegistration":"0","new_usertype":"2","guest_usergroup":"9","sendpassword":"0","useractivation":"2","mail_to_admin":"1","captcha":"","frontend_userparams":"1","site_language":"0","change_login_name":"0","reset_count":"10","reset_time":"1","minimum_length":"4","minimum_integers":"0","minimum_symbols":"0","minimum_uppercase":"0","save_history":"1","history_limit":5,"mailSubjectPrefix":"","mailBodySuffix":""}', 0, 0), +(0, 'com_finder', 'component', 'com_finder', '', 1, 1, 0, 0, 1, '', '{"enabled":"0","show_description":"1","description_length":255,"allow_empty_query":"0","show_url":"1","show_autosuggest":"1","show_suggested_query":"1","show_explained_query":"1","show_advanced":"1","show_advanced_tips":"1","expand_advanced":"0","show_date_filters":"0","sort_order":"relevance","sort_direction":"desc","highlight_terms":"1","opensearch_name":"","opensearch_description":"","batch_size":"50","memory_table_limit":30000,"title_multiplier":"1.7","text_multiplier":"0.7","meta_multiplier":"1.2","path_multiplier":"2.0","misc_multiplier":"0.3","stem":"1","stemmer":"snowball","enable_logging":"0"}', 0, 0), +(0, 'com_joomlaupdate', 'component', 'com_joomlaupdate', '', 1, 1, 0, 1, 1, '', '{"updatesource":"default","customurl":""}', 0, 0), +(0, 'com_tags', 'component', 'com_tags', '', 1, 1, 1, 0, 1, '', '{"tag_layout":"_:default","save_history":"1","history_limit":5,"show_tag_title":"0","tag_list_show_tag_image":"0","tag_list_show_tag_description":"0","tag_list_image":"","tag_list_orderby":"title","tag_list_orderby_direction":"ASC","show_headings":"0","tag_list_show_date":"0","tag_list_show_item_image":"0","tag_list_show_item_description":"0","tag_list_item_maximum_characters":0,"return_any_or_all":"1","include_children":"0","maximum":200,"tag_list_language_filter":"all","tags_layout":"_:default","all_tags_orderby":"title","all_tags_orderby_direction":"ASC","all_tags_show_tag_image":"0","all_tags_show_tag_description":"0","all_tags_tag_maximum_characters":20,"all_tags_show_tag_hits":"0","filter_field":"1","show_pagination_limit":"1","show_pagination":"2","show_pagination_results":"1","tag_field_ajax_mode":"1","show_feed_link":"1"}', 0, 0), +(0, 'com_contenthistory', 'component', 'com_contenthistory', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'com_ajax', 'component', 'com_ajax', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_postinstall', 'component', 'com_postinstall', '', 1, 1, 1, 1, 1, '', '', 0, 0), +(0, 'com_fields', 'component', 'com_fields', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'com_associations', 'component', 'com_associations', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'com_privacy', 'component', 'com_privacy', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'com_actionlogs', 'component', 'com_actionlogs', '', 1, 1, 1, 0, 1, '', '{"ip_logging":0,"csv_delimiter":",","loggable_extensions":["com_banners","com_cache","com_categories","com_checkin","com_config","com_contact","com_content","com_installer","com_media","com_menus","com_messages","com_modules","com_newsfeeds","com_plugins","com_redirect","com_tags","com_templates","com_users"]}', 0, 0), +(0, 'com_workflow', 'component', 'com_workflow', '', 1, 1, 0, 1, 1, '', '{}', 0, 0), +(0, 'com_csp', 'component', 'com_csp', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'com_mails', 'component', 'com_mails', '', 1, 1, 1, 1, 1, '', '', 0, 0); -- Libraries -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") VALUES -(0, 'Joomla! Platform', 'library', 'joomla', '', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'PHPass', 'library', 'phpass', '', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0); +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") VALUES +(0, 'Joomla! Platform', 'library', 'joomla', '', 0, 1, 1, 1, 1, '', '', 0, 0), +(0, 'PHPass', 'library', 'phpass', '', 0, 1, 1, 1, 1, '', '', 0, 0); -- Modules: Site -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") VALUES -(0, 'mod_articles_archive', 'module', 'mod_articles_archive', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_articles_latest', 'module', 'mod_articles_latest', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_articles_popular', 'module', 'mod_articles_popular', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_banners', 'module', 'mod_banners', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_breadcrumbs', 'module', 'mod_breadcrumbs', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_custom', 'module', 'mod_custom', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_feed', 'module', 'mod_feed', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_footer', 'module', 'mod_footer', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_login', 'module', 'mod_login', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_menu', 'module', 'mod_menu', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_articles_news', 'module', 'mod_articles_news', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_random_image', 'module', 'mod_random_image', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_related_items', 'module', 'mod_related_items', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_stats', 'module', 'mod_stats', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_syndicate', 'module', 'mod_syndicate', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_users_latest', 'module', 'mod_users_latest', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_whosonline', 'module', 'mod_whosonline', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_wrapper', 'module', 'mod_wrapper', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_articles_category', 'module', 'mod_articles_category', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_articles_categories', 'module', 'mod_articles_categories', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_languages', 'module', 'mod_languages', '', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_finder', 'module', 'mod_finder', '', 0, 1, 0, 0, 1, '', '', 0, NULL, 0, 0); +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") VALUES +(0, 'mod_articles_archive', 'module', 'mod_articles_archive', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_articles_latest', 'module', 'mod_articles_latest', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_articles_popular', 'module', 'mod_articles_popular', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_banners', 'module', 'mod_banners', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_breadcrumbs', 'module', 'mod_breadcrumbs', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_custom', 'module', 'mod_custom', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_feed', 'module', 'mod_feed', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_footer', 'module', 'mod_footer', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_login', 'module', 'mod_login', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_menu', 'module', 'mod_menu', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_articles_news', 'module', 'mod_articles_news', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_random_image', 'module', 'mod_random_image', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_related_items', 'module', 'mod_related_items', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_stats', 'module', 'mod_stats', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_syndicate', 'module', 'mod_syndicate', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_users_latest', 'module', 'mod_users_latest', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_whosonline', 'module', 'mod_whosonline', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_wrapper', 'module', 'mod_wrapper', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_articles_category', 'module', 'mod_articles_category', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_articles_categories', 'module', 'mod_articles_categories', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_languages', 'module', 'mod_languages', '', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_finder', 'module', 'mod_finder', '', 0, 1, 0, 0, 1, '', '', 0, 0); -- Modules: Administrator -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") VALUES -(0, 'mod_custom', 'module', 'mod_custom', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_feed', 'module', 'mod_feed', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_latest', 'module', 'mod_latest', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_logged', 'module', 'mod_logged', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_login', 'module', 'mod_login', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_loginsupport', 'module', 'mod_loginsupport', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_menu', 'module', 'mod_menu', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_popular', 'module', 'mod_popular', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_quickicon', 'module', 'mod_quickicon', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_frontend', 'module', 'mod_frontend', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_messages', 'module', 'mod_messages', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_post_installation_messages', 'module', 'mod_post_installation_messages', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_user', 'module', 'mod_user', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_title', 'module', 'mod_title', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_toolbar', 'module', 'mod_toolbar', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'mod_multilangstatus', 'module', 'mod_multilangstatus', '', 1, 1, 1, 0, 1, '', '{"cache":"0"}', 0, NULL, 0, 0), -(0, 'mod_version', 'module', 'mod_version', '', 1, 1, 1, 0, 1, '', '{"cache":"0"}', 0, NULL, 0, 0), -(0, 'mod_stats_admin', 'module', 'mod_stats_admin', '', 1, 1, 1, 0, 1, '', '{"serverinfo":"0","siteinfo":"0","counter":"0","increase":"0","cache":"1","cache_time":"900","cachemode":"static"}', 0, NULL, 0, 0), -(0, 'mod_tags_popular', 'module', 'mod_tags_popular', '', 0, 1, 1, 0, 1, '', '{"maximum":"5","timeframe":"alltime","owncache":"1"}', 0, NULL, 0, 0), -(0, 'mod_tags_similar', 'module', 'mod_tags_similar', '', 0, 1, 1, 0, 1, '', '{"maximum":"5","matchtype":"any","owncache":"1"}', 0, NULL, 0, 0), -(0, 'mod_sampledata', 'module', 'mod_sampledata', '', 1, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'mod_latestactions', 'module', 'mod_latestactions', '', 1, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'mod_privacy_dashboard', 'module', 'mod_privacy_dashboard', '', 1, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'mod_submenu', 'module', 'mod_submenu', '', 1, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'mod_privacy_status', 'module', 'mod_privacy_status', '', 1, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0); +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") VALUES +(0, 'mod_custom', 'module', 'mod_custom', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_feed', 'module', 'mod_feed', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_latest', 'module', 'mod_latest', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_logged', 'module', 'mod_logged', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_login', 'module', 'mod_login', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_loginsupport', 'module', 'mod_loginsupport', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_menu', 'module', 'mod_menu', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_popular', 'module', 'mod_popular', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_quickicon', 'module', 'mod_quickicon', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_frontend', 'module', 'mod_frontend', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_messages', 'module', 'mod_messages', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_post_installation_messages', 'module', 'mod_post_installation_messages', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_user', 'module', 'mod_user', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_title', 'module', 'mod_title', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_toolbar', 'module', 'mod_toolbar', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'mod_multilangstatus', 'module', 'mod_multilangstatus', '', 1, 1, 1, 0, 1, '', '{"cache":"0"}', 0, 0), +(0, 'mod_version', 'module', 'mod_version', '', 1, 1, 1, 0, 1, '', '{"cache":"0"}', 0, 0), +(0, 'mod_stats_admin', 'module', 'mod_stats_admin', '', 1, 1, 1, 0, 1, '', '{"serverinfo":"0","siteinfo":"0","counter":"0","increase":"0","cache":"1","cache_time":"900","cachemode":"static"}', 0, 0), +(0, 'mod_tags_popular', 'module', 'mod_tags_popular', '', 0, 1, 1, 0, 1, '', '{"maximum":"5","timeframe":"alltime","owncache":"1"}', 0, 0), +(0, 'mod_tags_similar', 'module', 'mod_tags_similar', '', 0, 1, 1, 0, 1, '', '{"maximum":"5","matchtype":"any","owncache":"1"}', 0, 0), +(0, 'mod_sampledata', 'module', 'mod_sampledata', '', 1, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'mod_latestactions', 'module', 'mod_latestactions', '', 1, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'mod_privacy_dashboard', 'module', 'mod_privacy_dashboard', '', 1, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'mod_submenu', 'module', 'mod_submenu', '', 1, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'mod_privacy_status', 'module', 'mod_privacy_status', '', 1, 1, 1, 0, 1, '', '{}', 0, 0); -- Plugins -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") VALUES -(0, 'plg_authentication_joomla', 'plugin', 'joomla', 'authentication', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_authentication_ldap', 'plugin', 'ldap', 'authentication', 0, 0, 1, 0, 1, '', '{"host":"","port":"389","use_ldapV3":"0","negotiate_tls":"0","no_referrals":"0","auth_method":"bind","base_dn":"","search_string":"","users_dn":"","username":"admin","password":"bobby7","ldap_fullname":"fullName","ldap_email":"mail","ldap_uid":"uid"}', 0, NULL, 3, 0), -(0, 'plg_content_contact', 'plugin', 'contact', 'content', 0, 1, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_content_emailcloak', 'plugin', 'emailcloak', 'content', 0, 1, 1, 0, 1, '', '{"mode":"1"}', 0, NULL, 1, 0), -(0, 'plg_content_loadmodule', 'plugin', 'loadmodule', 'content', 0, 1, 1, 0, 1, '', '{"style":"xhtml"}', 0, NULL, 0, 0), -(0, 'plg_content_pagebreak', 'plugin', 'pagebreak', 'content', 0, 1, 1, 0, 1, '', '{"title":"1","multipage_toc":"1","showall":"1"}', 0, NULL, 4, 0), -(0, 'plg_content_pagenavigation', 'plugin', 'pagenavigation', 'content', 0, 1, 1, 0, 1, '', '{"position":"1"}', 0, NULL, 5, 0), -(0, 'plg_content_vote', 'plugin', 'vote', 'content', 0, 0, 1, 0, 1, '', '', 0, NULL, 6, 0), -(0, 'plg_editors_codemirror', 'plugin', 'codemirror', 'editors', 0, 1, 1, 0, 1, '', '{"lineNumbers":"1","lineWrapping":"1","matchTags":"1","matchBrackets":"1","marker-gutter":"1","autoCloseTags":"1","autoCloseBrackets":"1","autoFocus":"1","theme":"default","tabmode":"indent"}', 0, NULL, 1, 0), -(0, 'plg_editors_none', 'plugin', 'none', 'editors', 0, 1, 1, 1, 1, '', '', 0, NULL, 2, 0), -(0, 'plg_editors_tinymce', 'plugin', 'tinymce', 'editors', 0, 1, 1, 0, 1, '', '{"configuration":{"toolbars":{"2":{"toolbar1":["bold","underline","strikethrough","|","undo","redo","|","bullist","numlist","|","pastetext"]},"1":{"menu":["edit","insert","view","format","table","tools"],"toolbar1":["bold","italic","underline","strikethrough","|","alignleft","aligncenter","alignright","alignjustify","|","formatselect","|","bullist","numlist","|","outdent","indent","|","undo","redo","|","link","unlink","anchor","code","|","hr","table","|","subscript","superscript","|","charmap","pastetext","preview"]},"0":{"menu":["edit","insert","view","format","table","tools"],"toolbar1":["bold","italic","underline","strikethrough","|","alignleft","aligncenter","alignright","alignjustify","|","styleselect","|","formatselect","fontselect","fontsizeselect","|","searchreplace","|","bullist","numlist","|","outdent","indent","|","undo","redo","|","link","unlink","anchor","image","|","code","|","forecolor","backcolor","|","fullscreen","|","table","|","subscript","superscript","|","charmap","emoticons","media","hr","ltr","rtl","|","cut","copy","paste","pastetext","|","visualchars","visualblocks","nonbreaking","blockquote","template","|","print","preview","codesample","insertdatetime","removeformat"]}},"setoptions":{"2":{"access":["1"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"0","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""},"1":{"access":["6","2"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"0","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""},"0":{"access":["7","4","8"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"1","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""}}},"sets_amount":3,"html_height":"550","html_width":"750"}', 0, NULL, 3, 0), -(0, 'plg_editors-xtd_article', 'plugin', 'article', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_editors-xtd_image', 'plugin', 'image', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 2, 0), -(0, 'plg_editors-xtd_pagebreak', 'plugin', 'pagebreak', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 3, 0), -(0, 'plg_editors-xtd_readmore', 'plugin', 'readmore', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 4, 0), -(0, 'plg_system_languagefilter', 'plugin', 'languagefilter', 'system', 0, 0, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_system_cache', 'plugin', 'cache', 'system', 0, 0, 1, 0, 1, '', '{"browsercache":"0","cachetime":"15"}', 0, NULL, 9, 0), -(0, 'plg_system_debug', 'plugin', 'debug', 'system', 0, 1, 1, 0, 1, '', '{"profile":"1","queries":"1","memory":"1","language_files":"1","language_strings":"1","strip-first":"1","strip-prefix":"","strip-suffix":""}', 0, NULL, 4, 0), -(0, 'plg_system_log', 'plugin', 'log', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 5, 0), -(0, 'plg_system_redirect', 'plugin', 'redirect', 'system', 0, 0, 1, 0, 1, '', '', 0, NULL, 3, 0), -(0, 'plg_system_remember', 'plugin', 'remember', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 7, 0), -(0, 'plg_system_sef', 'plugin', 'sef', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 8, 0), -(0, 'plg_system_logout', 'plugin', 'logout', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 6, 0), -(0, 'plg_user_contactcreator', 'plugin', 'contactcreator', 'user', 0, 0, 1, 0, 1, '', '{"autowebpage":"","category":"4","autopublish":"0"}', 0, NULL, 1, 0), -(0, 'plg_user_joomla', 'plugin', 'joomla', 'user', 0, 1, 1, 0, 1, '', '{"autoregister":"1","mail_to_user":"1","forceLogout":"1"}', 0, NULL, 2, 0), -(0, 'plg_user_profile', 'plugin', 'profile', 'user', 0, 0, 1, 0, 1, '', '{"register-require_address1":"1","register-require_address2":"1","register-require_city":"1","register-require_region":"1","register-require_country":"1","register-require_postal_code":"1","register-require_phone":"1","register-require_website":"1","register-require_favoritebook":"1","register-require_aboutme":"1","register-require_tos":"1","register-require_dob":"1","profile-require_address1":"1","profile-require_address2":"1","profile-require_city":"1","profile-require_region":"1","profile-require_country":"1","profile-require_postal_code":"1","profile-require_phone":"1","profile-require_website":"1","profile-require_favoritebook":"1","profile-require_aboutme":"1","profile-require_tos":"1","profile-require_dob":"1"}', 0, NULL, 0, 0), -(0, 'plg_extension_joomla', 'plugin', 'joomla', 'extension', 0, 1, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_content_joomla', 'plugin', 'joomla', 'content', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_languagecode', 'plugin', 'languagecode', 'system', 0, 0, 1, 0, 1, '', '', 0, NULL, 10, 0), -(0, 'plg_quickicon_joomlaupdate', 'plugin', 'joomlaupdate', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_quickicon_downloadkey', 'plugin', 'downloadkey', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_quickicon_extensionupdate', 'plugin', 'extensionupdate', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_captcha_recaptcha', 'plugin', 'recaptcha', 'captcha', 0, 0, 1, 0, 1, '', '{"public_key":"","private_key":"","theme":"clean"}', 0, NULL, 0, 0), -(0, 'plg_system_highlight', 'plugin', 'highlight', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 7, 0), -(0, 'plg_content_finder', 'plugin', 'finder', 'content', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_finder_categories', 'plugin', 'categories', 'finder', 0, 1, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_finder_contacts', 'plugin', 'contacts', 'finder', 0, 1, 1, 0, 1, '', '', 0, NULL, 2, 0), -(0, 'plg_finder_content', 'plugin', 'content', 'finder', 0, 1, 1, 0, 1, '', '', 0, NULL, 3, 0), -(0, 'plg_finder_newsfeeds', 'plugin', 'newsfeeds', 'finder', 0, 1, 1, 0, 1, '', '', 0, NULL, 4, 0), -(0, 'plg_finder_tags', 'plugin', 'tags', 'finder', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_twofactorauth_totp', 'plugin', 'totp', 'twofactorauth', 0, 0, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_authentication_cookie', 'plugin', 'cookie', 'authentication', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_twofactorauth_yubikey', 'plugin', 'yubikey', 'twofactorauth', 0, 0, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_updatenotification', 'plugin', 'updatenotification', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_editors-xtd_module', 'plugin', 'module', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_stats', 'plugin', 'stats', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_installer_packageinstaller', 'plugin', 'packageinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 0, NULL, 1, 0), -(0, 'plg_installer_folderinstaller', 'plugin', 'folderinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 0, NULL, 2, 0), -(0, 'plg_installer_urlinstaller', 'plugin', 'urlinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 0, NULL, 3, 0), -(0, 'plg_quickicon_phpversioncheck', 'plugin', 'phpversioncheck', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_editors-xtd_menu', 'plugin', 'menu', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_editors-xtd_contact', 'plugin', 'contact', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_fields', 'plugin', 'fields', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_calendar', 'plugin', 'calendar', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_checkboxes', 'plugin', 'checkboxes', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_color', 'plugin', 'color', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_editor', 'plugin', 'editor', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_imagelist', 'plugin', 'imagelist', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_integer', 'plugin', 'integer', 'fields', 0, 1, 1, 0, 1, '', '{"multiple":"0","first":"1","last":"100","step":"1"}', 0, NULL, 0, 0), -(0, 'plg_fields_list', 'plugin', 'list', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_media', 'plugin', 'media', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_radio', 'plugin', 'radio', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_sql', 'plugin', 'sql', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_subfields', 'plugin', 'subfields', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_text', 'plugin', 'text', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_textarea', 'plugin', 'textarea', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_url', 'plugin', 'url', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_user', 'plugin', 'user', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_fields_usergrouplist', 'plugin', 'usergrouplist', 'fields', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_content_fields', 'plugin', 'fields', 'content', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_editors-xtd_fields', 'plugin', 'fields', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_sampledata_blog', 'plugin', 'blog', 'sampledata', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_sessiongc', 'plugin', 'sessiongc', 'system', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_actionlog_joomla', 'plugin', 'joomla', 'actionlog', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 0, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 0, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_user_token', 'plugin', 'token', 'user', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_privacy_contact', 'plugin', 'contact', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_privacy_content', 'plugin', 'content', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_privacy_message', 'plugin', 'message', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_privacy_actionlogs', 'plugin', 'actionlogs', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_captcha_recaptcha_invisible', 'plugin', 'recaptcha_invisible', 'captcha', 0, 0, 1, 0, 1, '', '{"public_key":"","private_key":"","theme":"clean"}', 0, NULL, 0, 0), -(0, 'plg_privacy_consents', 'plugin', 'consents', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_behaviour_taggable', 'plugin', 'taggable', 'behaviour', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_behaviour_versionable', 'plugin', 'versionable', 'behaviour', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_installer_webinstaller', 'plugin', 'webinstaller', 'installer', 0, 1, 1, 0, 1, '', '{"tab_position":"1"}', 0, NULL, 0, 0), -(0, 'plg_system_httpheaders', 'plugin', 'httpheaders', 'system', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_sampledata_multilang', 'plugin', 'multilang', 'sampledata', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_extension_namespacemap', 'plugin', 'namespacemap', 'extension', 0, 1, 1, 1, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_installer_override', 'plugin', 'override', 'installer', 0, 1, 1, 0, 1, '', '', 0, NULL, 4, 0), -(0, 'plg_quickicon_overridecheck', 'plugin', 'overridecheck', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_extension_finder', 'plugin', 'finder', 'extension', 0, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'plg_system_skipto', 'plugin', 'skipto', 'system', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_api-authentication_basic', 'plugin', 'basic', 'api-authentication', 0, 0, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_api-authentication_token', 'plugin', 'token', 'api-authentication', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_banners', 'plugin', 'banners', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_config', 'plugin', 'config', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_contact', 'plugin', 'contact', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_content', 'plugin', 'content', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_languages', 'plugin', 'languages', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_menus', 'plugin', 'menus', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_messages', 'plugin', 'messages', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_modules', 'plugin', 'modules', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_newsfeeds', 'plugin', 'newsfeeds', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_plugins', 'plugin', 'plugins', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_privacy', 'plugin', 'privacy', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_redirect', 'plugin', 'redirect', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_tags', 'plugin', 'tags', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_templates', 'plugin', 'templates', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_webservices_users', 'plugin', 'users', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_filesystem_local', 'plugin', 'local', 'filesystem', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_media-action_crop', 'plugin', 'crop', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_media-action_resize', 'plugin', 'resize', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_media-action_rotate', 'plugin', 'rotate', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_system_accessibility', 'plugin', 'accessibility', 'system', 0, 0, 1, 0, 1, '', '{}', 0, NULL, 0, 0), -(0, 'plg_system_webauthn', 'plugin', 'webauthn', 'system', 0, 1, 1, 0, 1, '', '{}', 0, NULL, 0, 0); +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") VALUES +(0, 'plg_authentication_joomla', 'plugin', 'joomla', 'authentication', 0, 1, 1, 1, 1, '', '', 0, 0), +(0, 'plg_authentication_ldap', 'plugin', 'ldap', 'authentication', 0, 0, 1, 0, 1, '', '{"host":"","port":"389","use_ldapV3":"0","negotiate_tls":"0","no_referrals":"0","auth_method":"bind","base_dn":"","search_string":"","users_dn":"","username":"admin","password":"bobby7","ldap_fullname":"fullName","ldap_email":"mail","ldap_uid":"uid"}', 3, 0), +(0, 'plg_content_contact', 'plugin', 'contact', 'content', 0, 1, 1, 0, 1, '', '', 1, 0), +(0, 'plg_content_emailcloak', 'plugin', 'emailcloak', 'content', 0, 1, 1, 0, 1, '', '{"mode":"1"}', 1, 0), +(0, 'plg_content_loadmodule', 'plugin', 'loadmodule', 'content', 0, 1, 1, 0, 1, '', '{"style":"xhtml"}', 0, 0), +(0, 'plg_content_pagebreak', 'plugin', 'pagebreak', 'content', 0, 1, 1, 0, 1, '', '{"title":"1","multipage_toc":"1","showall":"1"}', 4, 0), +(0, 'plg_content_pagenavigation', 'plugin', 'pagenavigation', 'content', 0, 1, 1, 0, 1, '', '{"position":"1"}', 5, 0), +(0, 'plg_content_vote', 'plugin', 'vote', 'content', 0, 0, 1, 0, 1, '', '', 6, 0), +(0, 'plg_editors_codemirror', 'plugin', 'codemirror', 'editors', 0, 1, 1, 0, 1, '', '{"lineNumbers":"1","lineWrapping":"1","matchTags":"1","matchBrackets":"1","marker-gutter":"1","autoCloseTags":"1","autoCloseBrackets":"1","autoFocus":"1","theme":"default","tabmode":"indent"}', 1, 0), +(0, 'plg_editors_none', 'plugin', 'none', 'editors', 0, 1, 1, 1, 1, '', '', 2, 0), +(0, 'plg_editors_tinymce', 'plugin', 'tinymce', 'editors', 0, 1, 1, 0, 1, '', '{"configuration":{"toolbars":{"2":{"toolbar1":["bold","underline","strikethrough","|","undo","redo","|","bullist","numlist","|","pastetext"]},"1":{"menu":["edit","insert","view","format","table","tools"],"toolbar1":["bold","italic","underline","strikethrough","|","alignleft","aligncenter","alignright","alignjustify","|","formatselect","|","bullist","numlist","|","outdent","indent","|","undo","redo","|","link","unlink","anchor","code","|","hr","table","|","subscript","superscript","|","charmap","pastetext","preview"]},"0":{"menu":["edit","insert","view","format","table","tools"],"toolbar1":["bold","italic","underline","strikethrough","|","alignleft","aligncenter","alignright","alignjustify","|","styleselect","|","formatselect","fontselect","fontsizeselect","|","searchreplace","|","bullist","numlist","|","outdent","indent","|","undo","redo","|","link","unlink","anchor","image","|","code","|","forecolor","backcolor","|","fullscreen","|","table","|","subscript","superscript","|","charmap","emoticons","media","hr","ltr","rtl","|","cut","copy","paste","pastetext","|","visualchars","visualblocks","nonbreaking","blockquote","template","|","print","preview","codesample","insertdatetime","removeformat"]}},"setoptions":{"2":{"access":["1"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"0","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""},"1":{"access":["6","2"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"0","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""},"0":{"access":["7","4","8"],"skin":"0","skin_admin":"0","mobile":"0","drag_drop":"1","path":"","entity_encoding":"raw","lang_mode":"1","text_direction":"ltr","content_css":"1","content_css_custom":"","relative_urls":"1","newlines":"0","use_config_textfilters":"0","invalid_elements":"script,applet,iframe","valid_elements":"","extended_elements":"","resizing":"1","resize_horizontal":"1","element_path":"1","wordcount":"1","image_advtab":"1","advlist":"1","autosave":"1","contextmenu":"1","custom_plugin":"","custom_button":""}}},"sets_amount":3,"html_height":"550","html_width":"750"}', 3, 0), +(0, 'plg_editors-xtd_article', 'plugin', 'article', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 1, 0), +(0, 'plg_editors-xtd_image', 'plugin', 'image', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 2, 0), +(0, 'plg_editors-xtd_pagebreak', 'plugin', 'pagebreak', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 3, 0), +(0, 'plg_editors-xtd_readmore', 'plugin', 'readmore', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 4, 0), +(0, 'plg_system_languagefilter', 'plugin', 'languagefilter', 'system', 0, 0, 1, 0, 1, '', '', 1, 0), +(0, 'plg_system_cache', 'plugin', 'cache', 'system', 0, 0, 1, 0, 1, '', '{"browsercache":"0","cachetime":"15"}', 9, 0), +(0, 'plg_system_debug', 'plugin', 'debug', 'system', 0, 1, 1, 0, 1, '', '{"profile":"1","queries":"1","memory":"1","language_files":"1","language_strings":"1","strip-first":"1","strip-prefix":"","strip-suffix":""}', 4, 0), +(0, 'plg_system_log', 'plugin', 'log', 'system', 0, 1, 1, 0, 1, '', '', 5, 0), +(0, 'plg_system_redirect', 'plugin', 'redirect', 'system', 0, 0, 1, 0, 1, '', '', 3, 0), +(0, 'plg_system_remember', 'plugin', 'remember', 'system', 0, 1, 1, 0, 1, '', '', 7, 0), +(0, 'plg_system_sef', 'plugin', 'sef', 'system', 0, 1, 1, 0, 1, '', '', 8, 0), +(0, 'plg_system_logout', 'plugin', 'logout', 'system', 0, 1, 1, 0, 1, '', '', 6, 0), +(0, 'plg_user_contactcreator', 'plugin', 'contactcreator', 'user', 0, 0, 1, 0, 1, '', '{"autowebpage":"","category":"4","autopublish":"0"}', 1, 0), +(0, 'plg_user_joomla', 'plugin', 'joomla', 'user', 0, 1, 1, 0, 1, '', '{"autoregister":"1","mail_to_user":"1","forceLogout":"1"}', 2, 0), +(0, 'plg_user_profile', 'plugin', 'profile', 'user', 0, 0, 1, 0, 1, '', '{"register-require_address1":"1","register-require_address2":"1","register-require_city":"1","register-require_region":"1","register-require_country":"1","register-require_postal_code":"1","register-require_phone":"1","register-require_website":"1","register-require_favoritebook":"1","register-require_aboutme":"1","register-require_tos":"1","register-require_dob":"1","profile-require_address1":"1","profile-require_address2":"1","profile-require_city":"1","profile-require_region":"1","profile-require_country":"1","profile-require_postal_code":"1","profile-require_phone":"1","profile-require_website":"1","profile-require_favoritebook":"1","profile-require_aboutme":"1","profile-require_tos":"1","profile-require_dob":"1"}', 0, 0), +(0, 'plg_extension_joomla', 'plugin', 'joomla', 'extension', 0, 1, 1, 0, 1, '', '', 1, 0), +(0, 'plg_content_joomla', 'plugin', 'joomla', 'content', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_languagecode', 'plugin', 'languagecode', 'system', 0, 0, 1, 0, 1, '', '', 10, 0), +(0, 'plg_quickicon_joomlaupdate', 'plugin', 'joomlaupdate', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_quickicon_downloadkey', 'plugin', 'downloadkey', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_quickicon_extensionupdate', 'plugin', 'extensionupdate', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_captcha_recaptcha', 'plugin', 'recaptcha', 'captcha', 0, 0, 1, 0, 1, '', '{"public_key":"","private_key":"","theme":"clean"}', 0, 0), +(0, 'plg_system_highlight', 'plugin', 'highlight', 'system', 0, 1, 1, 0, 1, '', '', 7, 0), +(0, 'plg_content_finder', 'plugin', 'finder', 'content', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_finder_categories', 'plugin', 'categories', 'finder', 0, 1, 1, 0, 1, '', '', 1, 0), +(0, 'plg_finder_contacts', 'plugin', 'contacts', 'finder', 0, 1, 1, 0, 1, '', '', 2, 0), +(0, 'plg_finder_content', 'plugin', 'content', 'finder', 0, 1, 1, 0, 1, '', '', 3, 0), +(0, 'plg_finder_newsfeeds', 'plugin', 'newsfeeds', 'finder', 0, 1, 1, 0, 1, '', '', 4, 0), +(0, 'plg_finder_tags', 'plugin', 'tags', 'finder', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_twofactorauth_totp', 'plugin', 'totp', 'twofactorauth', 0, 0, 1, 0, 1, '', '', 0, 0), +(0, 'plg_authentication_cookie', 'plugin', 'cookie', 'authentication', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_twofactorauth_yubikey', 'plugin', 'yubikey', 'twofactorauth', 0, 0, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_updatenotification', 'plugin', 'updatenotification', 'system', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_editors-xtd_module', 'plugin', 'module', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_stats', 'plugin', 'stats', 'system', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_installer_packageinstaller', 'plugin', 'packageinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 1, 0), +(0, 'plg_installer_folderinstaller', 'plugin', 'folderinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 2, 0), +(0, 'plg_installer_urlinstaller', 'plugin', 'urlinstaller', 'installer', 0, 1, 1, 0, 1, '', '', 3, 0), +(0, 'plg_quickicon_phpversioncheck', 'plugin', 'phpversioncheck', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_editors-xtd_menu', 'plugin', 'menu', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_editors-xtd_contact', 'plugin', 'contact', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_fields', 'plugin', 'fields', 'system', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_calendar', 'plugin', 'calendar', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_checkboxes', 'plugin', 'checkboxes', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_color', 'plugin', 'color', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_editor', 'plugin', 'editor', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_imagelist', 'plugin', 'imagelist', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_integer', 'plugin', 'integer', 'fields', 0, 1, 1, 0, 1, '', '{"multiple":"0","first":"1","last":"100","step":"1"}', 0, 0), +(0, 'plg_fields_list', 'plugin', 'list', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_media', 'plugin', 'media', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_radio', 'plugin', 'radio', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_sql', 'plugin', 'sql', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_subfields', 'plugin', 'subfields', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_text', 'plugin', 'text', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_textarea', 'plugin', 'textarea', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_url', 'plugin', 'url', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_user', 'plugin', 'user', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_fields_usergrouplist', 'plugin', 'usergrouplist', 'fields', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_content_fields', 'plugin', 'fields', 'content', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_editors-xtd_fields', 'plugin', 'fields', 'editors-xtd', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_sampledata_blog', 'plugin', 'blog', 'sampledata', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_sessiongc', 'plugin', 'sessiongc', 'system', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_content_confirmconsent', 'plugin', 'confirmconsent', 'content', 0, 0, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_system_actionlogs', 'plugin', 'actionlogs', 'system', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_actionlog_joomla', 'plugin', 'joomla', 'actionlog', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_system_privacyconsent', 'plugin', 'privacyconsent', 'system', 0, 0, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_system_logrotation', 'plugin', 'logrotation', 'system', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_privacy_user', 'plugin', 'user', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_quickicon_privacycheck', 'plugin', 'privacycheck', 'quickicon', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_user_terms', 'plugin', 'terms', 'user', 0, 0, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_user_token', 'plugin', 'token', 'user', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_privacy_contact', 'plugin', 'contact', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_privacy_content', 'plugin', 'content', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_privacy_message', 'plugin', 'message', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_privacy_actionlogs', 'plugin', 'actionlogs', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_captcha_recaptcha_invisible', 'plugin', 'recaptcha_invisible', 'captcha', 0, 0, 1, 0, 1, '', '{"public_key":"","private_key":"","theme":"clean"}', 0, 0), +(0, 'plg_privacy_consents', 'plugin', 'consents', 'privacy', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_behaviour_taggable', 'plugin', 'taggable', 'behaviour', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_behaviour_versionable', 'plugin', 'versionable', 'behaviour', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_installer_webinstaller', 'plugin', 'webinstaller', 'installer', 0, 1, 1, 0, 1, '', '{"tab_position":"1"}', 0, 0), +(0, 'plg_system_httpheaders', 'plugin', 'httpheaders', 'system', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_sampledata_multilang', 'plugin', 'multilang', 'sampledata', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_extension_namespacemap', 'plugin', 'namespacemap', 'extension', 0, 1, 1, 1, 1, '', '{}', 0, 0), +(0, 'plg_installer_override', 'plugin', 'override', 'installer', 0, 1, 1, 0, 1, '', '', 4, 0), +(0, 'plg_quickicon_overridecheck', 'plugin', 'overridecheck', 'quickicon', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_extension_finder', 'plugin', 'finder', 'extension', 0, 1, 1, 0, 1, '', '', 0, 0), +(0, 'plg_system_skipto', 'plugin', 'skipto', 'system', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_api-authentication_basic', 'plugin', 'basic', 'api-authentication', 0, 0, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_api-authentication_token', 'plugin', 'token', 'api-authentication', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_banners', 'plugin', 'banners', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_config', 'plugin', 'config', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_contact', 'plugin', 'contact', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_content', 'plugin', 'content', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_languages', 'plugin', 'languages', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_menus', 'plugin', 'menus', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_messages', 'plugin', 'messages', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_modules', 'plugin', 'modules', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_newsfeeds', 'plugin', 'newsfeeds', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_plugins', 'plugin', 'plugins', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_privacy', 'plugin', 'privacy', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_redirect', 'plugin', 'redirect', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_tags', 'plugin', 'tags', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_templates', 'plugin', 'templates', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_webservices_users', 'plugin', 'users', 'webservices', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_filesystem_local', 'plugin', 'local', 'filesystem', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_media-action_crop', 'plugin', 'crop', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_media-action_resize', 'plugin', 'resize', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_media-action_rotate', 'plugin', 'rotate', 'media-action', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_system_accessibility', 'plugin', 'accessibility', 'system', 0, 0, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_system_webauthn', 'plugin', 'webauthn', 'system', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_workflow_publishing', 'plugin', 'publishing', 'workflow', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_workflow_featuring', 'plugin', 'featuring', 'workflow', 0, 1, 1, 0, 1, '', '{}', 0, 0), +(0, 'plg_workflow_notification', 'plugin', 'notification', 'workflow', 0, 1, 1, 0, 1, '', '{}', 0, 0); -- Templates -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") VALUES -(0, 'atum', 'template', 'atum', '', 1, 1, 1, 0, 1, '', '', 0, NULL, 0, 0), -(0, 'cassiopeia', 'template', 'cassiopeia', '', 0, 1, 1, 0, 1, '', '{"logoFile":"","fluidContainer":"0","sidebarLeftWidth":"3","sidebarRightWidth":"3"}', 0, NULL, 0, 0); +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") VALUES +(0, 'atum', 'template', 'atum', '', 1, 1, 1, 0, 1, '', '', 0, 0), +(0, 'cassiopeia', 'template', 'cassiopeia', '', 0, 1, 1, 0, 1, '', '{"logoFile":"","fluidContainer":"0","sidebarLeftWidth":"3","sidebarRightWidth":"3"}', 0, 0); -- Files Extensions -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") VALUES -(0, 'files_joomla', 'file', 'joomla', '', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0); +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") VALUES +(0, 'files_joomla', 'file', 'joomla', '', 0, 1, 1, 1, 1, '', '', 0, 0); -- Languages -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") VALUES -(0, 'English (en-GB) Language Pack', 'package', 'pkg_en-GB', '', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0); +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") VALUES +(0, 'English (en-GB) Language Pack', 'package', 'pkg_en-GB', '', 0, 1, 1, 1, 1, '', '', 0, 0); -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") -SELECT "extension_id", 'English (en-GB)', 'language', 'en-GB', '', 0, 1, 1, 1, 1, '', '', 0, NULL, 0, 0 FROM "#__extensions" WHERE "name" = 'English (en-GB) Language Pack'; -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") -SELECT "extension_id", 'English (en-GB)', 'language', 'en-GB', '', 1, 1, 1, 1, 1, '', '', 0, NULL, 0, 0 FROM "#__extensions" WHERE "name" = 'English (en-GB) Language Pack'; -INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "checked_out", "checked_out_time", "ordering", "state") -SELECT "extension_id", 'English (en-GB)', 'language', 'en-GB', '', 3, 1, 1, 1, 1, '', '', 0, NULL, 0, 0 FROM "#__extensions" WHERE "name" = 'English (en-GB) Language Pack'; +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") +SELECT "extension_id", 'English (en-GB)', 'language', 'en-GB', '', 0, 1, 1, 1, 1, '', '', 0, 0 FROM "#__extensions" WHERE "name" = 'English (en-GB) Language Pack'; +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") +SELECT "extension_id", 'English (en-GB)', 'language', 'en-GB', '', 1, 1, 1, 1, 1, '', '', 0, 0 FROM "#__extensions" WHERE "name" = 'English (en-GB) Language Pack'; +INSERT INTO "#__extensions" ("package_id", "name", "type", "element", "folder", "client_id", "enabled", "access", "protected", "locked", "manifest_cache", "params", "ordering", "state") +SELECT "extension_id", 'English (en-GB)', 'language', 'en-GB', '', 3, 1, 1, 1, 1, '', '', 0, 0 FROM "#__extensions" WHERE "name" = 'English (en-GB) Language Pack'; -- -- Table structure for table `#__languages` @@ -438,7 +441,7 @@ CREATE TABLE IF NOT EXISTS "#__menu" ( "parent_id" integer DEFAULT 1 NOT NULL, "level" integer DEFAULT 0 NOT NULL, "component_id" integer DEFAULT 0 NOT NULL, - "checked_out" integer DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "browserNav" smallint DEFAULT 0 NOT NULL, "access" bigint DEFAULT 0 NOT NULL, @@ -486,50 +489,50 @@ COMMENT ON COLUMN "#__menu"."home" IS 'Indicates if this menu item is the home o -- Dumping data for table `#__menu` -- -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") VALUES -(1, '', 'Menu_Item_Root', 'root', '', '', '', '', 1, 0, 0, 0, 0, NULL, 0, 0, '', 0, '', 0, 43, 0, '*', 0, NULL, NULL); -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 2, 'main', 'com_banners', 'Banners', '', 'Banners', 'index.php?option=com_banners', 'component', 1, 1, 1, "extension_id", 0, NULL, 0, 0, 'class:bookmark', 0, '', 1, 10, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_banners'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 3, 'main', 'com_banners', 'Banners', '', 'Banners/Banners', 'index.php?option=com_banners&view=banners', 'component', 1, 2, 2, "extension_id", 0, NULL, 0, 0, 'class:banners', 0, '', 2, 3, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_banners'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 4, 'main', 'com_banners_categories', 'Categories', '', 'Banners/Categories', 'index.php?option=com_categories&view=categories&extension=com_banners', 'component', 1, 2, 2, "extension_id", 0, NULL, 0, 0, 'class:banners-cat', 0, '', 4, 5, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_categories'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 5, 'main', 'com_banners_clients', 'Clients', '', 'Banners/Clients', 'index.php?option=com_banners&view=clients', 'component', 1, 2, 2, "extension_id", 0, NULL, 0, 0, 'class:banners-clients', 0, '', 6, 7, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_banners'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 6, 'main', 'com_banners_tracks', 'Tracks', '', 'Banners/Tracks', 'index.php?option=com_banners&view=tracks', 'component', 1, 2, 2, "extension_id", 0, NULL, 0, 0, 'class:banners-tracks', 0, '', 8, 9, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_banners'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 7, 'main', 'com_contact', 'Contacts', '', 'Contacts', 'index.php?option=com_contact', 'component', 1, 1, 1, "extension_id", 0, NULL, 0, 0, 'class:address-book', 0, '', 11, 20, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_contact'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 8, 'main', 'com_contact_contacts', 'Contacts', '', 'Contacts/Contacts', 'index.php?option=com_contact&view=contacts', 'component', 1, 7, 2, "extension_id", 0, NULL, 0, 0, 'class:contact', 0, '', 12, 13, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_contact'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 9, 'main', 'com_contact_categories', 'Categories', '', 'Contacts/Categories', 'index.php?option=com_categories&view=categories&extension=com_contact', 'component', 1, 7, 2, "extension_id", 0, NULL, 0, 0, 'class:contact-cat', 0, '', 14, 15, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_categories'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 10, 'main', 'com_newsfeeds', 'News Feeds', '', 'News Feeds', 'index.php?option=com_newsfeeds', 'component', 1, 1, 1, "extension_id", 0, NULL, 0, 0, 'class:rss', 0, '', 23, 28, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_newsfeeds'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 11, 'main', 'com_newsfeeds_feeds', 'Feeds', '', 'News Feeds/Feeds', 'index.php?option=com_newsfeeds&view=newsfeeds', 'component', 1, 10, 2, "extension_id", 0, NULL, 0, 0, 'class:newsfeeds', 0, '', 24, 25, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_newsfeeds'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 12, 'main', 'com_newsfeeds_categories', 'Categories', '', 'News Feeds/Categories', 'index.php?option=com_categories&view=categories&extension=com_newsfeeds', 'component', 1, 10, 2, "extension_id", 0, NULL, 0, 0, 'class:newsfeeds-cat', 0, '', 26, 27, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_categories'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 13, 'main', 'com_finder', 'Smart Search', '', 'Smart Search', 'index.php?option=com_finder&view=index', 'component', 1, 1, 1, "extension_id", 0, NULL, 0, 0, 'class:search-plus', 0, '', 29, 38, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_finder'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 14, 'main', 'com_tags', 'Tags', '', 'Tags', 'index.php?option=com_tags&view=tags', 'component', 1, 1, 1, "extension_id", 0, NULL, 0, 1, 'class:tags', 0, '', 39, 40, 0, '', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_tags'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 15, 'main', 'com_associations', 'Multilingual Associations', '', 'Multilingual Associations', 'index.php?option=com_associations&view=associations', 'component', 1, 1, 1, "extension_id", 0, NULL, 0, 0, 'class:language', 0, '', 21, 22, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_associations'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 16, 'main', 'mod_menu_fields', 'Contact Custom Fields', '', 'contact/Custom Fields', 'index.php?option=com_fields&context=com_contact.contact', 'component', 1, 7, 2, "extension_id", 0, NULL, 0, 0, 'class:messages-add', 0, '', 16, 17, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_fields'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 17, 'main', 'mod_menu_fields_group', 'Contact Custom Fields Group', '', 'contact/Custom Fields Group', 'index.php?option=com_fields&view=groups&context=com_contact.contact', 'component', 1, 7, 2, "extension_id", 0, NULL, 0, 0, 'class:messages-add', 0, '', 18, 19, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_fields'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 18, 'main', 'com_finder_index', 'Smart-Search-Index', '', 'Smart Search/Index', 'index.php?option=com_finder&view=index', 'component', 1, 13, 2, "extension_id", 0, NULL, 0, 0, 'class:finder', 0, '', 30, 31, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_finder'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 19, 'main', 'com_finder_maps', 'Smart-Search-Maps', '', 'Smart Search/Maps', 'index.php?option=com_finder&view=maps', 'component', 1, 13, 2, "extension_id", 0, NULL, 0, 0, 'class:finder-maps', 0, '', 32, 33, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_finder'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 20, 'main', 'com_finder_filters', 'Smart-Search-Filters', '', 'Smart Search/Filters', 'index.php?option=com_finder&view=filters', 'component', 1, 13, 2, "extension_id", 0, NULL, 0, 0, 'class:finder-filters', 0, '', 34, 35, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_finder'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 21, 'main', 'com_finder_searches', 'Smart-Search-Searches', '', 'Smart Search/Searches', 'index.php?option=com_finder&view=searches', 'component', 1, 13, 2, "extension_id", 0, NULL, 0, 0, 'class:finder-searches', 0, '', 36, 37, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_finder'; -INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "checked_out", "checked_out_time", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") -SELECT 101, 'mainmenu', 'Home', 'home', '', 'home', 'index.php?option=com_content&view=featured', 'component', 1, 1, 1, "extension_id", 0, NULL, 0, 1, '', 0, '{"featured_categories":[""],"layout_type":"blog","num_leading_articles":"1","num_intro_articles":"3","num_columns":"3","num_links":"0","multi_column_order":"1","orderby_pri":"","orderby_sec":"front","order_date":"","show_pagination":"2","show_pagination_results":"1","show_title":"","link_titles":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_vote":"","show_readmore":"","show_readmore_title":"","show_hits":"","show_noauth":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":1,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 41, 42, 1, '*', 0, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_content'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") VALUES +(1, '', 'Menu_Item_Root', 'root', '', '', '', '', 1, 0, 0, 0, 0, 0, '', 0, '', 0, 43, 0, '*', 0, NULL, NULL); +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 2, 'main', 'com_banners', 'Banners', '', 'Banners', 'index.php?option=com_banners', 'component', 1, 1, 1, "extension_id", 0, 0, 'class:bookmark', 0, '', 1, 10, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_banners'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 3, 'main', 'com_banners', 'Banners', '', 'Banners/Banners', 'index.php?option=com_banners&view=banners', 'component', 1, 2, 2, "extension_id", 0, 0, 'class:banners', 0, '', 2, 3, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_banners'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 4, 'main', 'com_banners_categories', 'Categories', '', 'Banners/Categories', 'index.php?option=com_categories&view=categories&extension=com_banners', 'component', 1, 2, 2, "extension_id", 0, 0, 'class:banners-cat', 0, '', 4, 5, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_categories'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 5, 'main', 'com_banners_clients', 'Clients', '', 'Banners/Clients', 'index.php?option=com_banners&view=clients', 'component', 1, 2, 2, "extension_id", 0, 0, 'class:banners-clients', 0, '', 6, 7, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_banners'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 6, 'main', 'com_banners_tracks', 'Tracks', '', 'Banners/Tracks', 'index.php?option=com_banners&view=tracks', 'component', 1, 2, 2, "extension_id", 0, 0, 'class:banners-tracks', 0, '', 8, 9, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_banners'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 7, 'main', 'com_contact', 'Contacts', '', 'Contacts', 'index.php?option=com_contact', 'component', 1, 1, 1, "extension_id", 0, 0, 'class:address-book', 0, '', 11, 20, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_contact'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 8, 'main', 'com_contact_contacts', 'Contacts', '', 'Contacts/Contacts', 'index.php?option=com_contact&view=contacts', 'component', 1, 7, 2, "extension_id", 0, 0, 'class:contact', 0, '', 12, 13, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_contact'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 9, 'main', 'com_contact_categories', 'Categories', '', 'Contacts/Categories', 'index.php?option=com_categories&view=categories&extension=com_contact', 'component', 1, 7, 2, "extension_id", 0, 0, 'class:contact-cat', 0, '', 14, 15, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_categories'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 10, 'main', 'com_newsfeeds', 'News Feeds', '', 'News Feeds', 'index.php?option=com_newsfeeds', 'component', 1, 1, 1, "extension_id", 0, 0, 'class:rss', 0, '', 23, 28, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_newsfeeds'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 11, 'main', 'com_newsfeeds_feeds', 'Feeds', '', 'News Feeds/Feeds', 'index.php?option=com_newsfeeds&view=newsfeeds', 'component', 1, 10, 2, "extension_id", 0, 0, 'class:newsfeeds', 0, '', 24, 25, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_newsfeeds'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 12, 'main', 'com_newsfeeds_categories', 'Categories', '', 'News Feeds/Categories', 'index.php?option=com_categories&view=categories&extension=com_newsfeeds', 'component', 1, 10, 2, "extension_id", 0, 0, 'class:newsfeeds-cat', 0, '', 26, 27, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_categories'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 13, 'main', 'com_finder', 'Smart Search', '', 'Smart Search', 'index.php?option=com_finder&view=index', 'component', 1, 1, 1, "extension_id", 0, 0, 'class:search-plus', 0, '', 29, 38, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_finder'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 14, 'main', 'com_tags', 'Tags', '', 'Tags', 'index.php?option=com_tags&view=tags', 'component', 1, 1, 1, "extension_id", 0, 1, 'class:tags', 0, '', 39, 40, 0, '', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_tags'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 15, 'main', 'com_associations', 'Multilingual Associations', '', 'Multilingual Associations', 'index.php?option=com_associations&view=associations', 'component', 1, 1, 1, "extension_id", 0, 0, 'class:language', 0, '', 21, 22, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_associations'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 16, 'main', 'mod_menu_fields', 'Contact Custom Fields', '', 'contact/Custom Fields', 'index.php?option=com_fields&context=com_contact.contact', 'component', 1, 7, 2, "extension_id", 0, 0, 'class:messages-add', 0, '', 16, 17, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_fields'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 17, 'main', 'mod_menu_fields_group', 'Contact Custom Fields Group', '', 'contact/Custom Fields Group', 'index.php?option=com_fields&view=groups&context=com_contact.contact', 'component', 1, 7, 2, "extension_id", 0, 0, 'class:messages-add', 0, '', 18, 19, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_fields'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 18, 'main', 'com_finder_index', 'Smart-Search-Index', '', 'Smart Search/Index', 'index.php?option=com_finder&view=index', 'component', 1, 13, 2, "extension_id", 0, 0, 'class:finder', 0, '', 30, 31, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_finder'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 19, 'main', 'com_finder_maps', 'Smart-Search-Maps', '', 'Smart Search/Maps', 'index.php?option=com_finder&view=maps', 'component', 1, 13, 2, "extension_id", 0, 0, 'class:finder-maps', 0, '', 32, 33, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_finder'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 20, 'main', 'com_finder_filters', 'Smart-Search-Filters', '', 'Smart Search/Filters', 'index.php?option=com_finder&view=filters', 'component', 1, 13, 2, "extension_id", 0, 0, 'class:finder-filters', 0, '', 34, 35, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_finder'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 21, 'main', 'com_finder_searches', 'Smart-Search-Searches', '', 'Smart Search/Searches', 'index.php?option=com_finder&view=searches', 'component', 1, 13, 2, "extension_id", 0, 0, 'class:finder-searches', 0, '', 36, 37, 0, '*', 1, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_finder'; +INSERT INTO "#__menu" ("id", "menutype", "title", "alias", "note", "path", "link", "type", "published", "parent_id", "level", "component_id", "browserNav", "access", "img", "template_style_id", "params", "lft", "rgt", "home", "language", "client_id", "publish_up", "publish_down") +SELECT 101, 'mainmenu', 'Home', 'home', '', 'home', 'index.php?option=com_content&view=featured', 'component', 1, 1, 1, "extension_id", 0, 1, '', 0, '{"featured_categories":[""],"layout_type":"blog","num_leading_articles":"1","num_intro_articles":"3","num_columns":"3","num_links":"0","multi_column_order":"1","orderby_pri":"","orderby_sec":"front","order_date":"","show_pagination":"2","show_pagination_results":"1","show_title":"","link_titles":"","show_intro":"","info_block_position":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_vote":"","show_readmore":"","show_readmore_title":"","show_hits":"","show_noauth":"","show_feed_link":"1","feed_summary":"","menu-anchor_title":"","menu-anchor_css":"","menu_image":"","menu_text":1,"page_title":"","show_page_heading":1,"page_heading":"","pageclass_sfx":"","menu-meta_description":"","menu-meta_keywords":"","robots":"","secure":0}', 41, 42, 1, '*', 0, NULL, NULL FROM "#__extensions" WHERE "name" = 'com_content'; SELECT setval('#__menu_id_seq', 102, false); -- @@ -568,7 +571,7 @@ CREATE TABLE IF NOT EXISTS "#__modules" ( "content" text, "ordering" bigint DEFAULT 0 NOT NULL, "position" varchar(50) DEFAULT '' NOT NULL, - "checked_out" integer DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "publish_up" timestamp without time zone, "publish_down" timestamp without time zone, @@ -589,42 +592,42 @@ CREATE INDEX "#__modules_idx_language" ON "#__modules" ("language"); -- Dumping data for table `#__modules` -- -INSERT INTO "#__modules" ("id", "asset_id", "title", "note", "content", "ordering", "position", "checked_out", "checked_out_time", "publish_up", "publish_down", "published", "module", "access", "showtitle", "params", "client_id", "language") VALUES -(1, 39, 'Main Menu', '', '', 1, 'sidebar-right', 0, NULL, NULL, NULL, 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"0","endLevel":"0","showAllChildren":"1","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), -(2, 40, 'Login', '', '', 1, 'login', 0, NULL, NULL, NULL, 1, 'mod_login', 1, 1, '', 1, '*'), -(3, 41, 'Popular Articles', '', '', 3, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_popular', 3, 1, '{"count":"5","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(4, 42, 'Recently Added Articles', '', '', 4, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_latest', 3, 1, '{"count":"5","ordering":"c_dsc","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(8, 43, 'Toolbar', '', '', 1, 'toolbar', 0, NULL, NULL, NULL, 1, 'mod_toolbar', 3, 1, '', 1, '*'), -(9, 44, 'Update Checks', '', '', 3, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 3, 1, '{"context":"update_quickicon","header_icon":"fas fa-sync","show_jupdate":"1","show_eupdate":"1","show_oupdate":"1","show_privacy":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":""}', 1, '*'), -(10, 45, 'Logged-in Users', '', '', 2, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_logged', 3, 1, '{"count":"5","name":"1","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(12, 46, 'Admin Menu', '', '', 1, 'menu', 0, NULL, NULL, NULL, 1, 'mod_menu', 3, 1, '{"layout":"","moduleclass_sfx":"","shownew":"1","showhelp":"1","cache":"0"}', 1, '*'), -(15, 49, 'Title', '', '', 1, 'title', 0, NULL, NULL, NULL, 1, 'mod_title', 3, 1, '', 1, '*'), -(16, 50, 'Login Form', '', '', 7, 'sidebar-right', 0, NULL, NULL, NULL, 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'), -(17, 51, 'Breadcrumbs', '', '', 1, 'breadcrumbs', 0, NULL, NULL, NULL, 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), -(79, 52, 'Multilanguage status', '', '', 2, 'status', 0, NULL, NULL, NULL, 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), -(86, 53, 'Joomla Version', '', '', 1, 'status', 0, NULL, NULL, NULL, 1, 'mod_version', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), -(87, 55, 'Sample Data', '', '', 0, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_sampledata', 6, 1, '{"bootstrap_size": "6"}', 1, '*'), -(88, 67, 'Latest Actions', '', '', 0, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_latestactions', 6, 1, '{}', 1, '*'), -(89, 68, 'Privacy Dashboard', '', '', 0, 'cpanel', 0, NULL, NULL, NULL, 1, 'mod_privacy_dashboard', 6, 1, '{}', 1, '*'), -(90, 65, 'Login Support', '', '', 1, 'sidebar', 0, NULL, NULL, NULL, 1, 'mod_loginsupport', 1, 1, '{"forum_url":"https://forum.joomla.org/","documentation_url":"https://docs.joomla.org/","news_url":"https://www.joomla.org/","automatic_title":1,"prepare_content":1,"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 1, '*'), -(91, 72, 'System Dashboard', '', '', 1, 'cpanel-system', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"system","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), -(92, 73, 'Content Dashboard', '', '', 1, 'cpanel-content', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"content","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"3","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), -(93, 74, 'Menus Dashboard', '', '', 1, 'cpanel-menus', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"menus","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), -(94, 75, 'Components Dashboard', '', '', 1, 'cpanel-components', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"components","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), -(95, 76, 'Users Dashboard', '', '', 1, 'cpanel-users', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"users","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), -(96, 41, 'Popular Articles', '', '', 3, 'cpanel-content', 0, NULL, NULL, NULL, 1, 'mod_popular', 3, 1, '{"count":"5","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(97, 42, 'Recently Added Articles', '', '', 4, 'cpanel-content', 0, NULL, NULL, NULL, 1, 'mod_latest', 3, 1, '{"count":"5","ordering":"c_dsc","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(98, 45, 'Logged-in Users', '', '', 2, 'cpanel-users', 0, NULL, NULL, NULL, 1, 'mod_logged', 3, 1, '{"count":"5","name":"1","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), -(99, 77, 'Frontend Link', '', '', 5, 'status', 0, NULL, NULL, NULL, 1, 'mod_frontend', 1, 1, '', 1, '*'), -(100, 78, 'Messages', '', '', 4, 'status', 0, NULL, NULL, NULL, 1, 'mod_messages', 3, 1, '', 1, '*'), -(101, 79, 'Post Install Messages', '', '', 3, 'status', 0, NULL, NULL, NULL, 1, 'mod_post_installation_messages', 3, 1, '', 1, '*'), -(102, 80, 'User Status', '', '', 6, 'status', 0, NULL, NULL, NULL, 1, 'mod_user', 3, 1, '', 1, '*'), -(103, 70, 'Site', '', '', 1, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"site_quickicon","header_icon":"fas fa-desktop","show_users":"1","show_articles":"1","show_categories":"1","show_media":"1","show_menuItems":"1","show_modules":"1","show_plugins":"1","show_templates":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), -(104, 71, 'System', '', '', 2, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"system_quickicon","header_icon":"fas fa-wrench","show_global":"1","show_checkin":"1","show_cache":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), -(105, 82, '3rd Party', '', '', 4, 'icon', 0, NULL, NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"mod_quickicon","header_icon":"fas fa-boxes","load_plugins":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), -(106, 83, 'Help Dashboard', '', '', 1, 'cpanel-help', 0, NULL, NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"help","layout":"_:default","moduleclass_sfx":"","style":"System-none","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'), -(107, 84, 'Privacy Requests', '', '', 1, 'cpanel-privacy', 0, NULL, NULL, NULL, 1, 'mod_privacy_dashboard', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'), -(108, 85, 'Privacy Status', '', '', 1, 'cpanel-privacy', 0, NULL, NULL, NULL, 1, 'mod_privacy_status', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'); +INSERT INTO "#__modules" ("id", "asset_id", "title", "note", "content", "ordering", "position", "publish_up", "publish_down", "published", "module", "access", "showtitle", "params", "client_id", "language") VALUES +(1, 39, 'Main Menu', '', '', 1, 'sidebar-right', NULL, NULL, 1, 'mod_menu', 1, 1, '{"menutype":"mainmenu","startLevel":"0","endLevel":"0","showAllChildren":"1","tag_id":"","class_sfx":"","window_open":"","layout":"","moduleclass_sfx":"","cache":"1","cache_time":"900","cachemode":"itemid"}', 0, '*'), +(2, 40, 'Login', '', '', 1, 'login', NULL, NULL, 1, 'mod_login', 1, 1, '', 1, '*'), +(3, 41, 'Popular Articles', '', '', 3, 'cpanel', NULL, NULL, 1, 'mod_popular', 3, 1, '{"count":"5","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(4, 42, 'Recently Added Articles', '', '', 4, 'cpanel', NULL, NULL, 1, 'mod_latest', 3, 1, '{"count":"5","ordering":"c_dsc","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(8, 43, 'Toolbar', '', '', 1, 'toolbar', NULL, NULL, 1, 'mod_toolbar', 3, 1, '', 1, '*'), +(9, 44, 'Update Checks', '', '', 3, 'icon', NULL, NULL, 1, 'mod_quickicon', 3, 1, '{"context":"update_quickicon","header_icon":"fas fa-sync","show_jupdate":"1","show_eupdate":"1","show_oupdate":"1","show_privacy":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":""}', 1, '*'), +(10, 45, 'Logged-in Users', '', '', 2, 'cpanel', NULL, NULL, 1, 'mod_logged', 3, 1, '{"count":"5","name":"1","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(12, 46, 'Admin Menu', '', '', 1, 'menu', NULL, NULL, 1, 'mod_menu', 3, 1, '{"layout":"","moduleclass_sfx":"","shownew":"1","showhelp":"1","cache":"0"}', 1, '*'), +(15, 49, 'Title', '', '', 1, 'title', NULL, NULL, 1, 'mod_title', 3, 1, '', 1, '*'), +(16, 50, 'Login Form', '', '', 7, 'sidebar-right', NULL, NULL, 1, 'mod_login', 1, 1, '{"greeting":"1","name":"0"}', 0, '*'), +(17, 51, 'Breadcrumbs', '', '', 1, 'breadcrumbs', NULL, NULL, 1, 'mod_breadcrumbs', 1, 1, '{"moduleclass_sfx":"","showHome":"1","homeText":"","showComponent":"1","separator":"","cache":"0","cache_time":"0","cachemode":"itemid"}', 0, '*'), +(79, 52, 'Multilanguage status', '', '', 2, 'status', NULL, NULL, 0, 'mod_multilangstatus', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), +(86, 53, 'Joomla Version', '', '', 1, 'status', NULL, NULL, 1, 'mod_version', 3, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":"0"}', 1, '*'), +(87, 55, 'Sample Data', '', '', 0, 'cpanel', NULL, NULL, 1, 'mod_sampledata', 6, 1, '{"bootstrap_size": "6"}', 1, '*'), +(88, 67, 'Latest Actions', '', '', 0, 'cpanel', NULL, NULL, 1, 'mod_latestactions', 6, 1, '{}', 1, '*'), +(89, 68, 'Privacy Dashboard', '', '', 0, 'cpanel', NULL, NULL, 1, 'mod_privacy_dashboard', 6, 1, '{}', 1, '*'), +(90, 65, 'Login Support', '', '', 1, 'sidebar', NULL, NULL, 1, 'mod_loginsupport', 1, 1, '{"forum_url":"https://forum.joomla.org/","documentation_url":"https://docs.joomla.org/","news_url":"https://www.joomla.org/","automatic_title":1,"prepare_content":1,"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":"","style":"0"}', 1, '*'), +(91, 72, 'System Dashboard', '', '', 1, 'cpanel-system', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"system","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), +(92, 73, 'Content Dashboard', '', '', 1, 'cpanel-content', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"content","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"3","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), +(93, 74, 'Menus Dashboard', '', '', 1, 'cpanel-menus', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"menus","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), +(94, 75, 'Components Dashboard', '', '', 1, 'cpanel-components', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"components","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"12","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), +(95, 76, 'Users Dashboard', '', '', 1, 'cpanel-users', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"users","layout":"_:default","moduleclass_sfx":"","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":"","style":"System-none"}', 1, '*'), +(96, 41, 'Popular Articles', '', '', 3, 'cpanel-content', NULL, NULL, 1, 'mod_popular', 3, 1, '{"count":"5","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(97, 42, 'Recently Added Articles', '', '', 4, 'cpanel-content', NULL, NULL, 1, 'mod_latest', 3, 1, '{"count":"5","ordering":"c_dsc","catid":"","user_id":"0","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(98, 45, 'Logged-in Users', '', '', 2, 'cpanel-users', NULL, NULL, 1, 'mod_logged', 3, 1, '{"count":"5","name":"1","layout":"_:default","moduleclass_sfx":"","cache":"0", "bootstrap_size": "6"}', 1, '*'), +(99, 77, 'Frontend Link', '', '', 5, 'status', NULL, NULL, 1, 'mod_frontend', 1, 1, '', 1, '*'), +(100, 78, 'Messages', '', '', 4, 'status', NULL, NULL, 1, 'mod_messages', 3, 1, '', 1, '*'), +(101, 79, 'Post Install Messages', '', '', 3, 'status', NULL, NULL, 1, 'mod_post_installation_messages', 3, 1, '', 1, '*'), +(102, 80, 'User Status', '', '', 6, 'status', NULL, NULL, 1, 'mod_user', 3, 1, '', 1, '*'), +(103, 70, 'Site', '', '', 1, 'icon', NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"site_quickicon","header_icon":"fas fa-desktop","show_users":"1","show_articles":"1","show_categories":"1","show_media":"1","show_menuItems":"1","show_modules":"1","show_plugins":"1","show_templates":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), +(104, 71, 'System', '', '', 2, 'icon', NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"system_quickicon","header_icon":"fas fa-wrench","show_global":"1","show_checkin":"1","show_cache":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), +(105, 82, '3rd Party', '', '', 4, 'icon', NULL, NULL, 1, 'mod_quickicon', 1, 1, '{"context":"mod_quickicon","header_icon":"fas fa-boxes","load_plugins":"1","layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"style":"0","module_tag":"div","bootstrap_size":"6","header_tag":"h3","header_class":""}', 1, '*'), +(106, 83, 'Help Dashboard', '', '', 1, 'cpanel-help', NULL, NULL, 1, 'mod_submenu', 1, 0, '{"menutype":"*","preset":"help","layout":"_:default","moduleclass_sfx":"","style":"System-none","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'), +(107, 84, 'Privacy Requests', '', '', 1, 'cpanel-privacy', NULL, NULL, 1, 'mod_privacy_dashboard', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'), +(108, 85, 'Privacy Status', '', '', 1, 'cpanel-privacy', NULL, NULL, 1, 'mod_privacy_status', 1, 1, '{"layout":"_:default","moduleclass_sfx":"","cache":1,"cache_time":900,"cachemode":"static","style":"0","module_tag":"div","bootstrap_size":"0","header_tag":"h3","header_class":""}', 1, '*'); SELECT setval('#__modules_id_seq', 109, false); @@ -726,7 +729,7 @@ CREATE TABLE IF NOT EXISTS "#__tags" ( "note" varchar(255) DEFAULT '' NOT NULL, "description" text NOT NULL, "published" smallint DEFAULT 0 NOT NULL, - "checked_out" bigint DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "access" bigint DEFAULT 0 NOT NULL, "params" text NOT NULL, @@ -759,8 +762,8 @@ CREATE INDEX "#__tags_idx_language" ON "#__tags" ("language"); -- Dumping data for table `#__tags` -- -INSERT INTO "#__tags" ("id", "parent_id", "lft", "rgt", "level", "path", "title", "alias", "note", "description", "published", "checked_out", "checked_out_time", "access", "params", "metadesc", "metakey", "metadata", "created_user_id", "created_time", "created_by_alias", "modified_user_id", "modified_time", "images", "urls", "hits", "language", "version") VALUES -(1, 0, 0, 1, 0, '', 'ROOT', 'root', '', '', 1, 0, NULL, 1, '', '', '', '', 42, CURRENT_TIMESTAMP, '', 42, CURRENT_TIMESTAMP, '', '', 0, '*', 1); +INSERT INTO "#__tags" ("id", "parent_id", "lft", "rgt", "level", "path", "title", "alias", "note", "description", "published", "access", "params", "metadesc", "metakey", "metadata", "created_user_id", "created_time", "created_by_alias", "modified_user_id", "modified_time", "images", "urls", "hits", "language", "version") VALUES +(1, 0, 0, 1, 0, '', 'ROOT', 'root', '', '', 1, 1, '', '', '', '', 42, CURRENT_TIMESTAMP, '', 42, CURRENT_TIMESTAMP, '', '', 0, '*', 1); SELECT setval('#__tags_id_seq', 2, false); @@ -847,7 +850,7 @@ CREATE TABLE IF NOT EXISTS "#__update_sites" ( "enabled" bigint DEFAULT 0, "last_check_timestamp" bigint DEFAULT 0, "extra_query" varchar(1000) DEFAULT '', - "checked_out" bigint DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone DEFAULT NULL, PRIMARY KEY ("update_site_id") ); @@ -987,7 +990,7 @@ CREATE TABLE IF NOT EXISTS "#__user_notes" ( "subject" varchar(100) DEFAULT '' NOT NULL, "body" text NOT NULL, "state" smallint DEFAULT 0 NOT NULL, - "checked_out" integer DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "created_user_id" integer DEFAULT 0 NOT NULL, "created_time" timestamp without time zone NOT NULL, @@ -1069,14 +1072,13 @@ CREATE TABLE IF NOT EXISTS "#__workflows" ( "description" text NOT NULL, "extension" varchar(50) NOT NULL, "default" smallint NOT NULL DEFAULT 0, - "core" smallint NOT NULL DEFAULT 0, "ordering" bigint NOT NULL DEFAULT 0, "created" timestamp without time zone NOT NULL, "created_by" bigint DEFAULT 0 NOT NULL, "modified" timestamp without time zone NOT NULL, "modified_by" bigint DEFAULT 0 NOT NULL, "checked_out_time" timestamp without time zone, - "checked_out" bigint DEFAULT 0 NOT NULL, + "checked_out" integer, PRIMARY KEY ("id") ); @@ -1090,8 +1092,8 @@ CREATE INDEX "#__workflows_idx_modified" ON "#__workflows" ("modified"); CREATE INDEX "#__workflows_idx_modified_by" ON "#__workflows" ("modified_by"); CREATE INDEX "#__workflows_idx_checked_out" ON "#__workflows" ("checked_out"); -INSERT INTO "#__workflows" ("id", "asset_id", "published", "title", "description", "extension", "default", "core", "ordering", "created", "created_by", "modified", "modified_by", "checked_out_time", "checked_out") VALUES -(1, 56, 1, 'COM_WORKFLOW_DEFAULT_WORKFLOW', '', 'com_content', 1, 1, 1, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 42, NULL, 0); +INSERT INTO "#__workflows" ("id", "asset_id", "published", "title", "description", "extension", "default", "ordering", "created", "created_by", "modified", "modified_by") VALUES +(1, 56, 1, 'COM_WORKFLOW_BASIC_WORKFLOW', '', 'com_content.article', 1, 1, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 42); SELECT setval('#__workflows_id_seq', 2, false); @@ -1125,10 +1127,9 @@ CREATE TABLE IF NOT EXISTS "#__workflow_stages" ( "published" smallint NOT NULL DEFAULT 0, "title" varchar(255) NOT NULL, "description" text NOT NULL, - "condition" bigint DEFAULT 0 NOT NULL, "default" smallint NOT NULL DEFAULT 0, "checked_out_time" timestamp without time zone, - "checked_out" bigint DEFAULT 0 NOT NULL, + "checked_out" integer, PRIMARY KEY ("id") ); CREATE INDEX "#__workflow_stages_idx_workflow_id" ON "#__workflow_stages" ("workflow_id"); @@ -1141,13 +1142,10 @@ CREATE INDEX "#__workflow_stages_idx_checked_out" ON "#__workflow_stages" ("chec -- Dumping data for table `#__workflow_stages` -- -INSERT INTO "#__workflow_stages" ("id", "asset_id", "ordering", "workflow_id", "published", "title", "description", "condition", "default", "checked_out_time", "checked_out") VALUES -(1, 57, 1, 1, 1, 'JUNPUBLISHED', '', 0, 1, NULL, 0), -(2, 58, 2, 1, 1, 'JPUBLISHED', '', 1, 0, NULL, 0), -(3, 59, 3, 1, 1, 'JTRASHED', '', -2, 0, NULL, 0), -(4, 60, 4, 1, 1, 'JARCHIVED', '', 2, 0, NULL, 0); +INSERT INTO "#__workflow_stages" ("id", "asset_id", "ordering", "workflow_id", "published", "title", "description", "default") VALUES +(1, 57, 1, 1, 1, 'COM_WORKFLOW_BASIC_STAGE', '', 1); -SELECT setval('#__workflow_stages_id_seq', 5, false); +SELECT setval('#__workflow_stages_id_seq', 2, false); -- -- Table structure for table `#__workflow_transitions` @@ -1163,8 +1161,9 @@ CREATE TABLE IF NOT EXISTS "#__workflow_transitions" ( "description" text NOT NULL, "from_stage_id" bigint DEFAULT 0 NOT NULL, "to_stage_id" bigint DEFAULT 0 NOT NULL, + "options" text NOT NULL, "checked_out_time" timestamp without time zone, - "checked_out" bigint DEFAULT 0 NOT NULL, + "checked_out" integer, PRIMARY KEY ("id") ); CREATE INDEX "#__workflow_transitions_idx_title" ON "#__workflow_transitions" ("title"); @@ -1174,10 +1173,13 @@ CREATE INDEX "#__workflow_transitions_idx_to_stage_id" ON "#__workflow_transitio CREATE INDEX "#__workflow_transitions_idx_workflow_id" ON "#__workflow_transitions" ("workflow_id"); CREATE INDEX "#__workflow_transitions_idx_checked_out" ON "#__workflow_transitions" ("checked_out"); -INSERT INTO "#__workflow_transitions" ("id", "asset_id", "published", "ordering", "workflow_id", "title", "description", "from_stage_id", "to_stage_id", "checked_out_time", "checked_out") VALUES -(1, 61, 1, 1, 1, 'Unpublish', '', -1, 1, NULL, 0), -(2, 62, 1, 2, 1, 'Publish', '', -1, 2, NULL, 0), -(3, 63, 1, 3, 1, 'Trash', '', -1, 3, NULL, 0), -(4, 64, 1, 4, 1, 'Archive', '', -1, 4, NULL, 0); +INSERT INTO "#__workflow_transitions" ("id", "asset_id", "published", "ordering", "workflow_id", "title", "description", "from_stage_id", "to_stage_id", "options") VALUES +(1, 58, 1, 1, 1, 'Unpublish', '', -1, 1, '{"publishing":"0"}'), +(2, 59, 1, 2, 1, 'Publish', '', -1, 1, '{"publishing":"1"}'), +(3, 60, 1, 3, 1, 'Trash', '', -1, 1, '{"publishing":"-2"}'), +(4, 61, 1, 4, 1, 'Archive', '', -1, 1, '{"publishing":"2"}'), +(5, 62, 1, 5, 1, 'Feature', '', -1, 1, '{"featuring":"1"}'), +(6, 63, 1, 6, 1, 'Unfeature', '', -1, 1, '{"featuring":"0"}'), +(7, 64, 1, 7, 1, 'Publish & Feature', '', -1, 1, '{"publishing":"1","featuring":"1"}'); -SELECT setval('#__workflow_transitions_id_seq', 5, false); \ No newline at end of file +SELECT setval('#__workflow_transitions_id_seq', 7, false); diff --git a/installation/sql/postgresql/extensions.sql b/installation/sql/postgresql/extensions.sql index 0e09b7b29e6e4..776e99e16c977 100644 --- a/installation/sql/postgresql/extensions.sql +++ b/installation/sql/postgresql/extensions.sql @@ -25,7 +25,7 @@ CREATE TABLE IF NOT EXISTS "#__banners" ( "purchase_type" smallint DEFAULT -1 NOT NULL, "track_clicks" smallint DEFAULT -1 NOT NULL, "track_impressions" smallint DEFAULT -1 NOT NULL, - "checked_out" bigint DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "publish_up" timestamp without time zone, "publish_down" timestamp without time zone, @@ -56,7 +56,7 @@ CREATE TABLE IF NOT EXISTS "#__banner_clients" ( "email" varchar(255) DEFAULT '' NOT NULL, "extrainfo" text NOT NULL, "state" smallint DEFAULT 0 NOT NULL, - "checked_out" bigint DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "metakey" text, "own_prefix" smallint DEFAULT 0 NOT NULL, @@ -105,7 +105,7 @@ CREATE TABLE IF NOT EXISTS "#__contact_details" ( "email_to" varchar(255), "default_con" smallint NOT NULL DEFAULT 0, "published" smallint NOT NULL DEFAULT 0, - "checked_out" bigint NOT NULL DEFAULT 0, + "checked_out" integer, "checked_out_time" timestamp without time zone, "ordering" bigint NOT NULL DEFAULT 0, "params" text NOT NULL, @@ -161,7 +161,7 @@ CREATE TABLE IF NOT EXISTS "#__content" ( "created_by_alias" varchar(255) DEFAULT '' NOT NULL, "modified" timestamp without time zone NOT NULL, "modified_by" bigint DEFAULT 0 NOT NULL, - "checked_out" bigint DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "publish_up" timestamp without time zone, "publish_down" timestamp without time zone, @@ -232,7 +232,7 @@ CREATE TABLE IF NOT EXISTS "#__finder_filters" ( "created_by_alias" varchar(255) DEFAULT '' NOT NULL, "modified" timestamp without time zone NOT NULL, "modified_by" integer DEFAULT 0 NOT NULL, - "checked_out" integer DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "map_count" integer DEFAULT 0 NOT NULL, "data" text, @@ -654,7 +654,7 @@ CREATE TABLE IF NOT EXISTS "#__newsfeeds" ( "published" smallint DEFAULT 0 NOT NULL, "numarticles" bigint DEFAULT 1 NOT NULL, "cache_time" bigint DEFAULT 3600 NOT NULL, - "checked_out" integer DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "ordering" bigint DEFAULT 0 NOT NULL, "rtl" smallint DEFAULT 0 NOT NULL, diff --git a/installation/sql/postgresql/supports.sql b/installation/sql/postgresql/supports.sql index f4a75d0bbc45a..ffb3cbc625703 100644 --- a/installation/sql/postgresql/supports.sql +++ b/installation/sql/postgresql/supports.sql @@ -32,7 +32,7 @@ CREATE TABLE IF NOT EXISTS "#__categories" ( "note" varchar(255) DEFAULT '' NOT NULL, "description" text, "published" smallint DEFAULT 0 NOT NULL, - "checked_out" bigint DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "access" bigint DEFAULT 0 NOT NULL, "params" text, @@ -65,13 +65,13 @@ COMMENT ON COLUMN "#__categories"."metadata" IS 'JSON encoded metadata propertie -- Dumping data for table `#__categories` -- -INSERT INTO "#__categories" ("id", "asset_id", "parent_id", "lft", "rgt", "level", "path", "extension", "title", "alias", "note", "description", "published", "checked_out", "checked_out_time", "access", "params", "metadesc", "metakey", "metadata", "created_user_id", "created_time", "modified_user_id", "modified_time", "hits", "language", "version") VALUES -(1, 0, 0, 0, 11, 0, '', 'system', 'ROOT', 'root', '', '', 1, 0, NULL, 1, '{}', '', '', '{}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1), -(2, 27, 1, 1, 2, 1, 'uncategorised', 'com_content', 'Uncategorised', 'uncategorised', '', '', 1, 0, NULL, 1, '{"category_layout":"","image":"","workflow_id":"use_default"}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1), -(3, 28, 1, 3, 4, 1, 'uncategorised', 'com_banners', 'Uncategorised', 'uncategorised', '', '', 1, 0, NULL, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1), -(4, 29, 1, 5, 6, 1, 'uncategorised', 'com_contact', 'Uncategorised', 'uncategorised', '', '', 1, 0, NULL, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1), -(5, 30, 1, 7, 8, 1, 'uncategorised', 'com_newsfeeds', 'Uncategorised', 'uncategorised', '', '', 1, 0, NULL, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1), -(7, 32, 1, 9, 10, 1, 'uncategorised', 'com_users', 'Uncategorised', 'uncategorised', '', '', 1, 0, NULL, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1); +INSERT INTO "#__categories" ("id", "asset_id", "parent_id", "lft", "rgt", "level", "path", "extension", "title", "alias", "note", "description", "published", "access", "params", "metadesc", "metakey", "metadata", "created_user_id", "created_time", "modified_user_id", "modified_time", "hits", "language", "version") VALUES +(1, 0, 0, 0, 11, 0, '', 'system', 'ROOT', 'root', '', '', 1, 1, '{}', '', '', '{}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1), +(2, 27, 1, 1, 2, 1, 'uncategorised', 'com_content', 'Uncategorised', 'uncategorised', '', '', 1, 1, '{"category_layout":"","image":"","workflow_id":"use_default"}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1), +(3, 28, 1, 3, 4, 1, 'uncategorised', 'com_banners', 'Uncategorised', 'uncategorised', '', '', 1, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1), +(4, 29, 1, 5, 6, 1, 'uncategorised', 'com_contact', 'Uncategorised', 'uncategorised', '', '', 1, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1), +(5, 30, 1, 7, 8, 1, 'uncategorised', 'com_newsfeeds', 'Uncategorised', 'uncategorised', '', '', 1, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1), +(7, 32, 1, 9, 10, 1, 'uncategorised', 'com_users', 'Uncategorised', 'uncategorised', '', '', 1, 1, '{"category_layout":"","image":""}', '', '', '{"author":"","robots":""}', 42, CURRENT_TIMESTAMP, 42, CURRENT_TIMESTAMP, 0, '*', 1); SELECT setval('#__categories_id_seq', 8, false); @@ -174,7 +174,7 @@ CREATE TABLE IF NOT EXISTS "#__fields" ( "description" text NOT NULL, "state" smallint DEFAULT 0 NOT NULL, "required" smallint DEFAULT 0 NOT NULL, - "checked_out" integer DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "ordering" bigint DEFAULT 0 NOT NULL, "params" text NOT NULL, @@ -216,7 +216,7 @@ CREATE TABLE IF NOT EXISTS "#__fields_groups" ( "note" varchar(255) DEFAULT '' NOT NULL, "description" text NOT NULL, "state" smallint DEFAULT 0 NOT NULL, - "checked_out" integer DEFAULT 0 NOT NULL, + "checked_out" integer, "checked_out_time" timestamp without time zone, "ordering" integer DEFAULT 0 NOT NULL, "params" text NOT NULL, @@ -336,7 +336,7 @@ CREATE TABLE IF NOT EXISTS "#__ucm_content" ( "core_body" text, "core_state" smallint DEFAULT 0 NOT NULL, "core_checked_out_time" timestamp without time zone, - "core_checked_out_user_id" bigint DEFAULT 0 NOT NULL, + "core_checked_out_user_id" integer, "core_access" bigint DEFAULT 0 NOT NULL, "core_params" text, "core_featured" smallint DEFAULT 0 NOT NULL, diff --git a/installation/src/Model/LanguagesModel.php b/installation/src/Model/LanguagesModel.php index 60c7c700a3cc4..652498bb63e95 100644 --- a/installation/src/Model/LanguagesModel.php +++ b/installation/src/Model/LanguagesModel.php @@ -367,7 +367,7 @@ protected function getInstalledlangs($cms_client = 'administrator') $row->published = 0; } - $row->checked_out = 0; + $row->checked_out = null; $data[] = $row; } diff --git a/layouts/joomla/button/transition-button.php b/layouts/joomla/button/transition-button.php index dc9d63c8948a5..dabad81bcdcb0 100644 --- a/layouts/joomla/button/transition-button.php +++ b/layouts/joomla/button/transition-button.php @@ -8,6 +8,7 @@ */ use Joomla\CMS\HTML\HTMLHelper; +use Joomla\CMS\Language\Text; HTMLHelper::_('bootstrap.popover'); @@ -23,50 +24,62 @@ $only_icon = empty($options['transitions']); $disabled = !empty($options['disabled']); $tip = !empty($options['tip']); -$id = (int) $options['id']; $tipTitle = $options['tip_title']; +$tipContent = $options['tip_content']; $checkboxName = $options['checkbox_name']; ?> - - - + + > + -
escape($options['stage']); ?>
- - - href="javascript://" +
+ + + - +
+ +
+
+ + + + +
+ + + escape($options['stage'])), + HTMLHelper::_('select.option', '', $this->escape($options['title'])), HTMLHelper::_('select.option', '-1', '--------', ['disable' => true]) ]; $transitions = array_merge($default, $options['transitions']); $attribs = [ - 'id' => 'transition-select_' . (int) $id, + 'id' => 'transition-select_' . (int) $row ?? '', 'list.attr' => [ 'class' => 'custom-select custom-select-sm w-auto', - 'onchange' => "Joomla.listItemTask('" . $checkboxName . $this->escape($row ?? '') . "', 'articles.runTransition')"] + 'onchange' => "this.form.transition_id.value=this.value;Joomla.listItemTask('" . $checkboxName . $this->escape($row ?? '') . "', 'articles.runTransition')"] ]; - echo HTMLHelper::_('select.genericlist', $transitions, 'transition_' . (int) $id, $attribs); + echo HTMLHelper::_('select.genericlist', $transitions, '', $attribs); ?>
diff --git a/layouts/joomla/edit/global.php b/layouts/joomla/edit/global.php index f2310e954a3c0..4c83001e8b942 100644 --- a/layouts/joomla/edit/global.php +++ b/layouts/joomla/edit/global.php @@ -33,8 +33,6 @@ array('published', 'state', 'enabled'), array('category', 'catid'), 'featured', - 'featured_up', - 'featured_down', 'sticky', 'access', 'language', diff --git a/layouts/joomla/edit/publishingdata.php b/layouts/joomla/edit/publishingdata.php index a21d03de73276..6dc2304850f14 100644 --- a/layouts/joomla/edit/publishingdata.php +++ b/layouts/joomla/edit/publishingdata.php @@ -17,6 +17,8 @@ $fields = $displayData->get('fields') ?: array( 'publish_up', 'publish_down', + 'featured_up', + 'featured_down', array('created', 'created_time'), array('created_by', 'created_user_id'), 'created_by_alias', diff --git a/layouts/joomla/form/field/calendar.php b/layouts/joomla/form/field/calendar.php index 0deafe1787bb0..d6c2b6a752c01 100644 --- a/layouts/joomla/form/field/calendar.php +++ b/layouts/joomla/form/field/calendar.php @@ -47,6 +47,8 @@ * @var array $checkedOptions Options that will be set as checked. * @var boolean $hasValue Has this field a value assigned? * @var array $options Options available for this field. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attributes for eg, data-*. * * Calendar Specific * @var string $localesPath The relative path for the locale file @@ -112,6 +114,7 @@ value="" + data-alt-value="" autocomplete="off"> diff --git a/layouts/joomla/form/field/checkbox.php b/layouts/joomla/form/field/checkbox.php index 41e95ab8b786b..9c404b2cfd88d 100644 --- a/layouts/joomla/form/field/checkbox.php +++ b/layouts/joomla/form/field/checkbox.php @@ -42,6 +42,8 @@ * @var string $validate Validation rules to apply. * @var string $value Value attribute of the field. * @var boolean $checked Whether the checkbox should be checked. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-*. */ // Initialize some field attributes. @@ -63,6 +65,6 @@ id="" class="form-check-input" value="" - + > diff --git a/layouts/joomla/form/field/checkboxes.php b/layouts/joomla/form/field/checkboxes.php index 74aad723d5853..5e8a52a81b5e3 100644 --- a/layouts/joomla/form/field/checkboxes.php +++ b/layouts/joomla/form/field/checkboxes.php @@ -40,6 +40,8 @@ * @var array $checkedOptions Options that will be set as checked. * @var boolean $hasValue Has this field a value assigned? * @var array $options Options available for this field. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attributes for eg, data-*. */ /** @@ -57,7 +59,8 @@
- > + + > $option) : ?> diff --git a/layouts/joomla/form/field/color/advanced.php b/layouts/joomla/form/field/color/advanced.php index a71c52c3bc850..71bd7ed822dce 100644 --- a/layouts/joomla/form/field/color/advanced.php +++ b/layouts/joomla/form/field/color/advanced.php @@ -44,6 +44,8 @@ * @var array $checked Is this field checked? * @var array $position Is this field checked? * @var array $control Is this field checked? + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attributes for eg, data-*. */ if ($validate !== 'color' && in_array($format, array('rgb', 'rgba'), true)) @@ -75,7 +77,6 @@ $wa = Factory::getApplication()->getDocument()->getWebAssetManager(); $wa->usePreset('minicolors') ->useScript('field.color-adv'); - ?> /> diff --git a/layouts/joomla/form/field/color/simple.php b/layouts/joomla/form/field/color/simple.php index a35b848343436..65041c2bb3c6b 100644 --- a/layouts/joomla/form/field/color/simple.php +++ b/layouts/joomla/form/field/color/simple.php @@ -47,6 +47,8 @@ * @var array $position Is this field checked? * @var array $control Is this field checked? * @var array $colors The specified colors + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-*. */ $class = ' class="custom-select ' . trim($class) . '"'; @@ -60,7 +62,7 @@ ?> + >
diff --git a/layouts/joomla/form/field/hidden.php b/layouts/joomla/form/field/hidden.php index ce2ee0b3d78cd..709223dc03a4f 100644 --- a/layouts/joomla/form/field/hidden.php +++ b/layouts/joomla/form/field/hidden.php @@ -41,6 +41,8 @@ * @var boolean $hasValue Has this field a value assigned? * @var array $options Options available for this field. * @var array $inputType Options available for this field. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-* */ // Initialize some field attributes. @@ -53,4 +55,4 @@ name="" id="" value="" - > + > diff --git a/layouts/joomla/form/field/list-fancy-select.php b/layouts/joomla/form/field/list-fancy-select.php index 06c3277976573..753ed7c8c07c7 100644 --- a/layouts/joomla/form/field/list-fancy-select.php +++ b/layouts/joomla/form/field/list-fancy-select.php @@ -45,6 +45,8 @@ * @var boolean $hasValue Has this field a value assigned? * @var array $options Options available for this field. * @var array $inputType Options available for this field. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-* */ $html = array(); @@ -55,6 +57,7 @@ $attr .= $multiple ? ' multiple' : ''; $attr .= $autofocus ? ' autofocus' : ''; $attr .= $onchange ? ' onchange="' . $onchange . '"' : ''; +$attr .= $dataAttribute; // To avoid user's confusion, readonly="readonly" should imply disabled="disabled". if ($readonly || $disabled) diff --git a/layouts/joomla/form/field/list.php b/layouts/joomla/form/field/list.php index 1e5792ca718dc..0a202a9f76fa8 100644 --- a/layouts/joomla/form/field/list.php +++ b/layouts/joomla/form/field/list.php @@ -43,6 +43,8 @@ * @var boolean $hasValue Has this field a value assigned? * @var array $options Options available for this field. * @var array $inputType Options available for this field. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-* */ $html = array(); @@ -56,6 +58,7 @@ $attr .= $autofocus ? ' autofocus' : ''; $attr .= $onchange ? ' onchange="' . $onchange . '"' : ''; $attr .= !empty($description) ? ' aria-describedby="' . $name . '-desc"' : ''; +$attr .= $dataAttribute; // To avoid user's confusion, readonly="readonly" should imply disabled="disabled". if ($readonly || $disabled) diff --git a/layouts/joomla/form/field/media.php b/layouts/joomla/form/field/media.php index 85be7187b28bb..f4fc9c482c4af 100644 --- a/layouts/joomla/form/field/media.php +++ b/layouts/joomla/form/field/media.php @@ -19,23 +19,25 @@ * Layout variables * --------------------- * - * @var string $asset The asset text - * @var string $authorField The label text - * @var integer $authorId The author id - * @var string $class The class text - * @var boolean $disabled True if field is disabled - * @var string $folder The folder text - * @var string $id The label text - * @var string $link The link text - * @var string $name The name text - * @var string $preview The preview image relative path - * @var integer $previewHeight The image preview height - * @var integer $previewWidth The image preview width - * @var string $onchange The onchange text - * @var boolean $readonly True if field is readonly - * @var integer $size The size text - * @var string $value The value text - * @var string $src The path and filename of the image + * @var string $asset The asset text + * @var string $authorField The label text + * @var integer $authorId The author id + * @var string $class The class text + * @var boolean $disabled True if field is disabled + * @var string $folder The folder text + * @var string $id The label text + * @var string $link The link text + * @var string $name The name text + * @var string $preview The preview image relative path + * @var integer $previewHeight The image preview height + * @var integer $previewWidth The image preview width + * @var string $onchange The onchange text + * @var boolean $readonly True if field is readonly + * @var integer $size The size text + * @var string $value The value text + * @var string $src The path and filename of the image + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-* */ extract($displayData); @@ -44,6 +46,7 @@ // Initialize some field attributes. $attr .= !empty($class) ? ' class="form-control field-media-input ' . $class . '"' : ' class="form-control field-media-input"'; $attr .= !empty($size) ? ' size="' . $size . '"' : ''; +$attr .= $dataAttribute; // Initialize JavaScript field attributes. $attr .= !empty($onchange) ? ' onchange="' . $onchange . '"' : ''; diff --git a/layouts/joomla/form/field/meter.php b/layouts/joomla/form/field/meter.php index 1d0fb8cd7599e..795d6020f0d39 100644 --- a/layouts/joomla/form/field/meter.php +++ b/layouts/joomla/form/field/meter.php @@ -45,9 +45,10 @@ * @var string $animated Is it animated. * @var string $active Is it active. * @var string $max The maximum value. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-* */ - // Initialize some field attributes. $class = 'progress-bar ' . $class; $class .= $animated ? ' progress-bar-striped progress-bar-animated' : ''; @@ -66,7 +67,8 @@ $attributes = array( $class, !empty($width) ? ' style="width:' . $width . ';"' : '', - $data + $data, + $dataAttribute, ); $value = ((float) ($value - $min) * 100) / ($max - $min); diff --git a/layouts/joomla/form/field/moduleorder.php b/layouts/joomla/form/field/moduleorder.php index 306725e9998b9..4badf529effa1 100644 --- a/layouts/joomla/form/field/moduleorder.php +++ b/layouts/joomla/form/field/moduleorder.php @@ -45,6 +45,8 @@ * @var array $inputType Options available for this field. * @var array $spellcheck Options available for this field. * @var string $accept File types that are accepted. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attributes for eg, data-*. */ // Initialize some field attributes. @@ -76,6 +78,11 @@ $attributes['onchange'] = 'onchange="' . $onchange . '"'; } +if ($dataAttribute) +{ + $attributes['dataAttribute'] = $dataAttribute; +} + Factory::getDocument()->getWebAssetManager() ->useScript('webcomponent.field-module-order'); diff --git a/layouts/joomla/form/field/number.php b/layouts/joomla/form/field/number.php index 55f1361a9d5cb..ed3e0ecc79fb9 100644 --- a/layouts/joomla/form/field/number.php +++ b/layouts/joomla/form/field/number.php @@ -42,6 +42,8 @@ * @var array $inputType Options available for this field. * @var array $spellcheck Options available for this field. * @var string $accept File types that are accepted. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-*. */ $attributes = array( @@ -56,7 +58,8 @@ isset($min) ? 'min="' . $min . '"' : '', $required ? 'required' : '', !empty($autocomplete) ? 'autocomplete="' . $autocomplete . '"' : '', - $autofocus ? 'autofocus' : '' + $autofocus ? 'autofocus' : '', + $dataAttribute, ); if (is_numeric($value)) diff --git a/layouts/joomla/form/field/password.php b/layouts/joomla/form/field/password.php index 695027273eee9..70ab4b81acf11 100644 --- a/layouts/joomla/form/field/password.php +++ b/layouts/joomla/form/field/password.php @@ -45,6 +45,8 @@ * @var array $options Options available for this field. * @var array $inputType Options available for this field. * @var string $accept File types that are accepted. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-*. */ /** @var Joomla\CMS\WebAsset\WebAssetManager $wa */ @@ -85,6 +87,7 @@ !empty($minUppercase) ? 'data-min-uppercase="' . $minUppercase . '"' : '', !empty($minLowercase) ? 'data-min-lowercase="' . $minLowercase . '"' : '', !empty($forcePassword) ? 'data-min-force="' . $forcePassword . '"' : '', + $dataAttribute, ); ?> diff --git a/layouts/joomla/form/field/radio/buttons.php b/layouts/joomla/form/field/radio/buttons.php index 2df6ee454863a..cb6710a4c975e 100644 --- a/layouts/joomla/form/field/radio/buttons.php +++ b/layouts/joomla/form/field/radio/buttons.php @@ -38,6 +38,8 @@ * @var string $validate Validation rules to apply. * @var string $value Value attribute of the field. * @var array $options Options available for this field. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attributes for eg, data-*. */ $alt = preg_replace('/[^a-zA-Z0-9_\-]/', '_', $name); @@ -77,6 +79,10 @@ $attribs[] = 'style="pointer-events: none"'; } +if ($dataAttribute) +{ + $attribs[] = $dataAttribute; +} ?>
> diff --git a/layouts/joomla/form/field/radio/switcher.php b/layouts/joomla/form/field/radio/switcher.php index a4ba13aa77cfd..81f34c48b5d39 100644 --- a/layouts/joomla/form/field/radio/switcher.php +++ b/layouts/joomla/form/field/radio/switcher.php @@ -40,6 +40,8 @@ * @var string $validate Validation rules to apply. * @var string $value Value attribute of the field. * @var array $options Options available for this field. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attributes for eg, data-*. */ // If there are no options don't render anything @@ -62,6 +64,7 @@ $attr = 'id="' . $id . '"'; $attr .= $onchange ? ' onchange="' . $onchange . '"' : ''; +$attr .= $dataAttribute; if (!empty($disabled) || !empty($readonly)) { diff --git a/layouts/joomla/form/field/radiobasic.php b/layouts/joomla/form/field/radiobasic.php index 763abafda0fe2..24a210ecd7409 100644 --- a/layouts/joomla/form/field/radiobasic.php +++ b/layouts/joomla/form/field/radiobasic.php @@ -40,6 +40,8 @@ * @var string $validate Validation rules to apply. * @var string $value Value attribute of the field. * @var array $options Options available for this field. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-*. */ /** @@ -55,7 +57,8 @@
- > + + > $option) : ?> diff --git a/layouts/joomla/form/field/range.php b/layouts/joomla/form/field/range.php index 3c1ed74dd9fd7..8bc498ba30c8e 100644 --- a/layouts/joomla/form/field/range.php +++ b/layouts/joomla/form/field/range.php @@ -42,10 +42,11 @@ * @var array $options Options available for this field. * @var array $inputType Options available for this field. * @var string $accept File types that are accepted. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-*. */ // Initialize some field attributes. - $attributes = array( $class ? 'class="form-control ' . $class . '"' : 'class="form-control"', !empty($description) ? 'aria-describedby="' . $name . '-desc"' : '', @@ -56,6 +57,7 @@ !empty($step) ? 'step="' . $step . '"' : '', !empty($min) ? 'min="' . $min . '"' : '', $autofocus ? 'autofocus' : '', + $dataAttribute, ); $value = is_numeric($value) ? (float) $value : $min; diff --git a/layouts/joomla/form/field/rules.php b/layouts/joomla/form/field/rules.php index 91f83358f3065..289b40e10bc68 100644 --- a/layouts/joomla/form/field/rules.php +++ b/layouts/joomla/form/field/rules.php @@ -49,6 +49,8 @@ * @var boolean $newItem The new item. * @var object $assetRules Rules for asset. * @var integer $parentAssetId To calculate permissions. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attributes for eg, data-*. */ // Add Javascript for permission change @@ -95,7 +97,7 @@
- +> diff --git a/layouts/joomla/form/field/tag.php b/layouts/joomla/form/field/tag.php index 6984bc1ad6da5..cbb8dea756abe 100644 --- a/layouts/joomla/form/field/tag.php +++ b/layouts/joomla/form/field/tag.php @@ -49,6 +49,8 @@ * @var boolean $allowCustom Flag, to allow add custom values * @var boolean $remoteSearch Flag, to enable remote search * @var integer $minTermLength Minimum length of the term to start searching + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attributes for eg, data-*. */ $html = array(); @@ -58,6 +60,7 @@ $attr .= $multiple ? ' multiple' : ''; $attr .= $autofocus ? ' autofocus' : ''; $attr .= $onchange ? ' onchange="' . $onchange . '"' : ''; +$attr .= $dataAttribute; // To avoid user's confusion, readonly="readonly" should imply disabled="disabled". if ($readonly || $disabled) @@ -68,6 +71,7 @@ $attr2 = ''; $attr2 .= !empty($class) ? ' class="' . $class . '"' : ''; $attr2 .= ' placeholder="' . $this->escape($hint ?: Text::_('JGLOBAL_TYPE_OR_SELECT_SOME_TAGS')) . '" '; +$attr2 .= $dataAttribute; if ($allowCustom) { diff --git a/layouts/joomla/form/field/tel.php b/layouts/joomla/form/field/tel.php index 7492cb7ac137a..c80cab4c9a0d2 100644 --- a/layouts/joomla/form/field/tel.php +++ b/layouts/joomla/form/field/tel.php @@ -43,6 +43,8 @@ * @var array $inputType Options available for this field. * @var string $accept File types that are accepted. * @var integer $maxLength The maximum length that the field shall accept. + * @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output + * @var array $dataAttributes Miscellaneous data attribute for eg, data-*. */ $attributes = array( @@ -57,6 +59,7 @@ $onchange ? 'onchange="' . $onchange . '"' : '', !empty($maxLength) ? $maxLength : '', $required ? 'required' : '', + $dataAttribute, ); ?>
, , @@ -98,6 +110,11 @@
+ + + + @@ -145,7 +167,7 @@ $assetId = 'com_content.article.' . $item->id; $canCreate = $user->authorise('core.create', 'com_content.category.' . $item->catid); $canEdit = $user->authorise('core.edit', 'com_content.article.' . $item->id); - $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; + $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || is_null($item->checked_out); $canChange = $user->authorise('core.edit.state', 'com_content.article.' . $item->id) && $canCheckin; $canEditCat = $user->authorise('core.edit', 'com_content.category.' . $item->catid); $canEditOwnCat = $user->authorise('core.edit.own', 'com_content.category.' . $item->catid) && $item->category_uid == $userId; @@ -154,36 +176,12 @@ $transitions = ContentHelper::filterTransitions($this->transitions, (int) $item->stage_id, (int) $item->workflow_id); - $publish = 0; - $unpublish = 0; - $archive = 0; - $trash = 0; - - foreach ($transitions as $transition) : - switch ($transition['stage_condition']) : - case ContentComponent::CONDITION_PUBLISHED: - ++$publish; - break; - case ContentComponent::CONDITION_UNPUBLISHED: - ++$unpublish; - break; - case ContentComponent::CONDITION_ARCHIVED: - ++$archive; - break; - case ContentComponent::CONDITION_TRASHED: - ++$trash; - break; - endswitch; - endforeach; + $transition_ids = ArrayHelper::getColumn($transitions, 'value'); + $transition_ids = ArrayHelper::toInteger($transition_ids); ?>
id); ?> @@ -208,6 +206,22 @@ +
+ $transitions, + 'title' => Text::_($item->stage_title), + 'tip_content' => Text::sprintf('JWORKFLOW', Text::_($item->workflow_title)) + ]; + + echo (new TransitionButton($options)) + ->render(0, $i); + ?> +
+
!$canChange ]; + if ($workflow_enabled) : + $options['disabled'] = true; + endif; + echo (new FeaturedButton) ->render((int) $item->featured, $i, $options, $item->featured_up, $item->featured_down); ?> -
-
- $transitions, - 'stage' => Text::_($item->stage_title), - 'id' => (int) $item->id - ]; + 'articles.', + 'disabled' => $workflow_enabled || !$canChange + ]; - echo (new PublishedButton) - ->removeState(0) - ->removeState(1) - ->removeState(2) - ->removeState(-2) - ->addState(ContentComponent::CONDITION_PUBLISHED, '', 'publish', Text::_('COM_CONTENT_CHANGE_STAGE'), ['tip_title' => Text::_('JPUBLISHED')]) - ->addState(ContentComponent::CONDITION_UNPUBLISHED, '', 'unpublish', Text::_('COM_CONTENT_CHANGE_STAGE'), ['tip_title' => Text::_('JUNPUBLISHED')]) - ->addState(ContentComponent::CONDITION_ARCHIVED, '', 'archive', Text::_('COM_CONTENT_CHANGE_STAGE'), ['tip_title' => Text::_('JARCHIVED')]) - ->addState(ContentComponent::CONDITION_TRASHED, '', 'trash', Text::_('COM_CONTENT_CHANGE_STAGE'), ['tip_title' => Text::_('JTRASHED')]) - ->setLayout('joomla.button.transition-button') - ->render((int) $item->stage_condition, $i, $options, $item->publish_up, $item->publish_down); - ?> -
-
+ echo (new PublishedButton)->render((int) $item->state, $i, $options, $item->publish_up, $item->publish_down); + ?>
@@ -333,6 +335,13 @@
escape($item->created_by_alias)); ?>
+ +
+ association) : ?> + id); ?> + + @@ -384,6 +393,10 @@ + + + + diff --git a/administrator/components/com_fields/src/View/Field/HtmlView.php b/administrator/components/com_fields/src/View/Field/HtmlView.php index 8d26209d33db9..7d16f6ef8181d 100644 --- a/administrator/components/com_fields/src/View/Field/HtmlView.php +++ b/administrator/components/com_fields/src/View/Field/HtmlView.php @@ -93,7 +93,7 @@ protected function addToolbar() $canDo = $this->canDo; $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $userId); // Avoid nonsense situation. if ($component == 'com_fields') diff --git a/administrator/components/com_fields/src/View/Group/HtmlView.php b/administrator/components/com_fields/src/View/Group/HtmlView.php index 4bbecc5539a2d..ca84af6157d09 100644 --- a/administrator/components/com_fields/src/View/Group/HtmlView.php +++ b/administrator/components/com_fields/src/View/Group/HtmlView.php @@ -118,7 +118,7 @@ protected function addToolbar() $canDo = $this->canDo; $isNew = ($this->item->id == 0); - $checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $userId); + $checkedOut = !(is_null($this->item->checked_out) || $this->item->checked_out == $userId); // Avoid nonsense situation. if ($component == 'com_fields') diff --git a/administrator/components/com_fields/tmpl/fields/default.php b/administrator/components/com_fields/tmpl/fields/default.php index 3d87d888245a8..f4441566e8f61 100644 --- a/administrator/components/com_fields/tmpl/fields/default.php +++ b/administrator/components/com_fields/tmpl/fields/default.php @@ -101,7 +101,7 @@ items as $i => $item) : ?> authorise('core.edit', $component . '.field.' . $item->id); ?> - authorise('core.admin', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0; ?> + authorise('core.admin', 'com_checkin') || $item->checked_out == $userId || is_null($item->checked_out); ?> authorise('core.edit.own', $component . '.field.' . $item->id) && $item->created_user_id == $userId; ?> authorise('core.edit.state', $component . '.field.' . $item->id) && $canCheckin; ?>
- + + + + - -
- published, $i, 'stages.', $canChange && !$isCore); ?> + published, $i, 'stages.', $canChange); ?> default, $i, 'stages.', $canChange); ?> @@ -125,7 +120,7 @@ checked_out) : ?> editor, $item->checked_out_time, 'stages.', $canCheckin); ?> - + escape(Text::_($item->title)); ?> @@ -135,21 +130,6 @@
escape(Text::_($item->description)); ?>
-
- condition == 'JARCHIVED'): - $icon = 'icon-archive'; - elseif ($item->condition == 'JTRASHED'): - $icon = 'icon-trash'; - elseif ($item->condition == 'JPUBLISHED'): - $icon = 'icon-publish'; - elseif ($item->condition == 'JUNPUBLISHED'): - $icon = 'icon-unpublish'; - endif; - ?> - - condition); ?> - id; ?> + + + @@ -89,9 +87,10 @@ transitions as $i => $item): $edit = Route::_('index.php?option=com_workflow&task=transition.edit&id=' . $item->id . '&workflow_id=' . (int) $this->workflowID . '&extension=' . $this->extension); - $canEdit = $user->authorise('core.edit', $this->extension . '.transition.' . $item->id) && !$isCore; - $canCheckin = $user->authorise('core.admin', 'com_workflow') || $item->checked_out == $userId || $item->checked_out == 0; - $canChange = $user->authorise('core.edit.state', $this->extension . '.transition.' . $item->id) && $canCheckin && !$isCore; ?> + $canEdit = $user->authorise('core.edit', $this->extension . '.transition.' . $item->id); + $canCheckin = $user->authorise('core.admin', 'com_workflow') || $item->checked_out == $user->id || is_null($item->checked_out); + $canChange = $user->authorise('core.edit.state', $this->extension . '.transition.' . $item->id) && $canCheckin; + ?>
id); ?> @@ -135,42 +134,10 @@ from_stage_id < 0): ?> - from_condition == Workflow::CONDITION_ARCHIVED): - $icon = 'icon-archive'; - $condition = Text::_('JARCHIVED'); - elseif ($item->from_condition == Workflow::CONDITION_TRASHED): - $icon = 'icon-trash'; - $condition = Text::_('JTRASHED'); - elseif ($item->from_condition == Workflow::CONDITION_PUBLISHED): - $icon = 'icon-publish'; - $condition = Text::_('JPUBLISHED'); - elseif ($item->from_condition == Workflow::CONDITION_UNPUBLISHED): - $icon = 'icon-unpublish'; - $condition = Text::_('JUNPUBLISHED'); - endif; ?> - - escape(Text::_($item->from_stage)); ?> - to_condition == Workflow::CONDITION_ARCHIVED): - $icon = 'icon-archive'; - $condition = Text::_('JARCHIVED'); - elseif ($item->to_condition == Workflow::CONDITION_TRASHED): - $icon = 'icon-trash'; - $condition = Text::_('JTRASHED'); - elseif ($item->to_condition == Workflow::CONDITION_PUBLISHED): - $icon = 'icon-publish'; - $condition = Text::_('JPUBLISHED'); - elseif ($item->to_condition == Workflow::CONDITION_UNPUBLISHED): - $icon = 'icon-unpublish'; - $condition = Text::_('JUNPUBLISHED'); - endif; ?> - - escape(Text::_($item->to_stage)); ?> diff --git a/administrator/components/com_workflow/tmpl/workflows/default.php b/administrator/components/com_workflow/tmpl/workflows/default.php index dc956a22b6c6b..0a579616fd227 100644 --- a/administrator/components/com_workflow/tmpl/workflows/default.php +++ b/administrator/components/com_workflow/tmpl/workflows/default.php @@ -53,7 +53,7 @@
$this)); + echo LayoutHelper::render('joomla.searchtools.default', array('view' => $this, 'options' => array('selectorFieldName' => 'extension'))); ?> workflows)) : ?>
@@ -75,10 +75,10 @@
+ + @@ -101,9 +101,8 @@ $transitions = Route::_('index.php?option=com_workflow&view=transitions&workflow_id=' . $item->id . '&extension=' . $extension); $edit = Route::_('index.php?option=com_workflow&task=workflow.edit&id=' . $item->id . '&extension=' . $extension); - $isCore = !empty($item->core); $canEdit = $user->authorise('core.edit', $extension . '.workflow.' . $item->id); - $canCheckin = $user->authorise('core.admin', 'com_workflow') || $item->checked_out == $userId || $item->checked_out == 0; + $canCheckin = $user->authorise('core.admin', 'com_workflow') || $item->checked_out == $userId || is_null($item->checked_out); $canEditOwn = $user->authorise('core.edit.own', $extension . '.workflow.' . $item->id) && $item->created_by == $userId; $canChange = $user->authorise('core.edit.state', $extension . '.workflow.' . $item->id) && $canCheckin; ?> @@ -131,13 +130,13 @@ - published, $i, 'workflows.', $canChange && !$isCore); ?> + published, $i, 'workflows.', $canChange); ?> checked_out) : ?> editor, $item->checked_out_time, 'workflows.', $canCheckin); ?> - + escape(Text::_($item->title)); ?> @@ -170,7 +169,6 @@ - diff --git a/administrator/language/en-GB/com_content.ini b/administrator/language/en-GB/com_content.ini index efba71e6a34c1..7489424f6a1e1 100644 --- a/administrator/language/en-GB/com_content.ini +++ b/administrator/language/en-GB/com_content.ini @@ -168,7 +168,7 @@ COM_CONTENT_SUBMENU_CATEGORIES="Categories" COM_CONTENT_SUBMENU_FEATURED="Featured Articles" COM_CONTENT_SUBMENU_WORKFLOWS="Workflows" COM_CONTENT_TIP_ASSOCIATION="Associated articles" -COM_CONTENT_TRANSITION="Status" +COM_CONTENT_TRANSITION="Transition" COM_CONTENT_TRASHED="Trashed" COM_CONTENT_UNFEATURED="Unfeatured Article" COM_CONTENT_UNPUBLISHED="Unpublished" diff --git a/administrator/language/en-GB/com_users.ini b/administrator/language/en-GB/com_users.ini index 694c58d3a015f..6991d1c085577 100644 --- a/administrator/language/en-GB/com_users.ini +++ b/administrator/language/en-GB/com_users.ini @@ -188,7 +188,7 @@ COM_USERS_MAIL_PLEASE_FILL_IN_THE_FORM_CORRECTLY="Please fill in the form correc COM_USERS_MAIL_PLEASE_FILL_IN_THE_MESSAGE="Please enter a message" COM_USERS_MAIL_PLEASE_FILL_IN_THE_SUBJECT="Please enter a subject" COM_USERS_MAIL_PLEASE_SELECT_A_GROUP="Please select a Group" -COM_USERS_MAIL_REMINDER_DESC="This mail is sent to a user when by the \"Forgot your username?\" link e.g. in a login form." +COM_USERS_MAIL_REMINDER_DESC="This mail is sent to a user by using the \"Forgot your username?\" link e.g. in a login form." COM_USERS_MAIL_REMINDER_TITLE="Users: Username Reminder" COM_USERS_MAIL_THE_MAIL_COULD_NOT_BE_SENT="The mail could not be sent." COM_USERS_MASS_MAIL="Mass Mail Users" diff --git a/administrator/language/en-GB/com_workflow.ini b/administrator/language/en-GB/com_workflow.ini index ebda98c477ad5..47c1ea6f62070 100644 --- a/administrator/language/en-GB/com_workflow.ini +++ b/administrator/language/en-GB/com_workflow.ini @@ -6,6 +6,7 @@ COM_WORKFLOW_ARE_YOU_SURE="Are you sure?" COM_WORKFLOW_AUTHOR="Author" COM_WORKFLOW_BASIC_TAB="Basic" +COM_WORKFLOW_BASIC_STAGE="Basic Stage" COM_WORKFLOW_CHOOSE_CONTEXT_LABEL="Context" COM_WORKFLOW_CONDITION="Condition of items in this stage: " COM_WORKFLOW_CONDITION_DESC="Defines item behaviour." @@ -22,10 +23,10 @@ COM_WORKFLOW_DATE_CREATED="Date Created" COM_WORKFLOW_DATE_MODIFIED="Date Modified" COM_WORKFLOW_DEFAULT="Default" COM_WORKFLOW_DEFAULT_ITEM="Default option is already set for a different item." -COM_WORKFLOW_DEFAULT_WORKFLOW="Joomla! Default" +COM_WORKFLOW_BASIC_WORKFLOW="Basic Workflow" COM_WORKFLOW_DESCRIPTION="Description" COM_WORKFLOW_DESC_TAB="Description" -COM_WORKFLOW_DISABLE_DEFAULT="Cannot change default stage of this item." +COM_WORKFLOW_DISABLE_DEFAULT="The default status cannot be changed." COM_WORKFLOW_EDIT="Edit" COM_WORKFLOW_EDIT_TAB="Edit" COM_WORKFLOW_ERROR_EXTENSION_NOT_SET="Extension not set." @@ -98,6 +99,7 @@ COM_WORKFLOW_TOO_MANY_STAGES="Only one stage can be set as the default." COM_WORKFLOW_TOO_MANY_WORKFLOWS="Only one workflow can be set as the default." COM_WORKFLOW_TO_STAGE="Target Stage" COM_WORKFLOW_TRANSITION="Transition" +COM_WORKFLOW_TRANSITION_ACTIONS_LABEL="Transition Actions" COM_WORKFLOW_TRANSITIONS="Transitions" COM_WORKFLOW_TRANSITIONS_LIST="Transitions List: %s" COM_WORKFLOW_TRANSITIONS_N_ITEMS_CHECKED_IN="%s transitions checked in." @@ -118,7 +120,7 @@ COM_WORKFLOW_TRANSITION_NOTE="Note" COM_WORKFLOW_TRANSITION_THE_SAME_STAGE="Current stage and target stage are the same." COM_WORKFLOW_TRASHED="Trashed" COM_WORKFLOW_UNPUBLISHED="Unpublished" -COM_WORKFLOW_UNPUBLISH_DEFAULT_ERROR="You can't unpublish the default workflow." +COM_WORKFLOW_UNPUBLISH_DEFAULT_ERROR="The default workflow cannot be disabled." COM_WORKFLOW_USER_GROUPS="User Group" COM_WORKFLOW_USER_GROUPS_DESC="Select user group." COM_WORKFLOW_USE_DEFAULT_WORKFLOW="Use default (%s)" diff --git a/administrator/language/en-GB/com_workflow.sys.ini b/administrator/language/en-GB/com_workflow.sys.ini index 53b54f1ecc162..5baa202207a65 100644 --- a/administrator/language/en-GB/com_workflow.sys.ini +++ b/administrator/language/en-GB/com_workflow.sys.ini @@ -4,7 +4,7 @@ ; Note : All ini files need to be saved as UTF-8 COM_WORKFLOW="Workflows" -COM_WORKFLOW_DEFAULT_WORKFLOW="Joomla! Default" +COM_WORKFLOW_BASIC_WORKFLOW="Basic Workflow" COM_WORKFLOW_MESSAGES_VIEW_DEFAULT_DESC="Customised workflow support for Joomla! site" COM_WORKFLOW_MESSAGES_VIEW_DEFAULT_TITLE="Workflows" COM_WORKFLOW_XML_DESCRIPTION="Customised workflow support for Joomla! site" diff --git a/administrator/language/en-GB/joomla.ini b/administrator/language/en-GB/joomla.ini index 15e68a5a206fd..6e345c18c637c 100644 --- a/administrator/language/en-GB/joomla.ini +++ b/administrator/language/en-GB/joomla.ini @@ -115,6 +115,10 @@ JREGISTER="Register" JORDERINGDISABLED="Please sort by order to enable reordering" JSAVE="Save & Close" JSELECT="Select" +JSTAGE="Stage" +JSTATUS="Status" +JSTAGE_ASC="Stage ascending" +JSTAGE_DESC="Stage descending" JSTATUS="Status" JSTATUS_ASC="Status ascending" JSTATUS_DESC="Status descending" @@ -649,7 +653,6 @@ JGLOBAL_WARNCOOKIES="Warning! Cookies must be enabled to access the Administrato JGLOBAL_WARNIE="Warning! Internet Explorer should not be used for proper operation of the Administrator Backend." JGLOBAL_WARNJAVASCRIPT="Warning! JavaScript must be enabled for proper operation of the Administrator Backend." JGLOBAL_WIDTH="Width" -JGLOBAL_WORKFLOWS_ENABLE_LABEL="Edit Workflows" JGRID_HEADING_ACCESS="Access" JGRID_HEADING_ACCESS_ASC="Access ascending" @@ -912,7 +915,6 @@ JOPTION_SELECT_AUTHORS="- Select Authors -" JOPTION_SELECT_AUTHOR_ALIAS="- Select Author Alias -" JOPTION_SELECT_AUTHOR_ALIASES="- Select Author Aliases -" JOPTION_SELECT_CATEGORY="- Select Category -" -JOPTION_SELECT_CONDITION="- Select Condition -" JOPTION_SELECT_EDITOR="- Select Editor -" JOPTION_SELECT_FEATURED="- Select Featured -" JOPTION_SELECT_IMAGE="- Select Image -" @@ -995,6 +997,17 @@ JWARNING_DELETE_MUST_SELECT="You must select at least one item to permanently de JWARNING_REMOVE_ROOT_USER="You are logged-in using the emergency Root User setting in configuration.php.
You should remove $root_user from the configuration.php as soon as you have restored control to your site to avoid future security breaches.
Select here to try to do it automatically." JWARNING_REMOVE_ROOT_USER_ADMIN="The emergency Root User setting is enabled for the user(id): %s.
You should remove $root_user from the configuration.php as soon as you have restored control to your site to avoid future security breaches.
Select here to try to do it automatically." +; Workflow +JWORKFLOW="Workflow: %s" +JWORKFLOW_TITLE="Workflow" +JWORKFLOW_ENABLED_LABEL="Enable Workflow" +JWORKFLOW_EXECUTE_TRANSITION="Select the transition to execute on this item." +JWORKFLOW_SHOW_TRANSITIONS_FOR_THIS_ITEM="Show the transition selection to execute a transition on this item." +JWORKFLOW_EXTENSION_WHITELIST_LABEL="Extension Whitelist" +JWORKFLOW_EXTENSION_WHITELIST_DESCRIPTION="Activate this plugin only for listed extensions. If used all other extensions are disabled." +JWORKFLOW_EXTENSION_BLACKLIST_LABEL="Extension Blacklist" +JWORKFLOW_EXTENSION_BLACKLIST_DESCRIPTION="Disable this plugin for listed extensions." +JWORKFLOW_FIELD_COMPONENT_SECTIONS_TEXT="%1$s: %2$s" ; Date format DATE_FORMAT_LC="l, d F Y" diff --git a/administrator/language/en-GB/plg_content_joomla.ini b/administrator/language/en-GB/plg_content_joomla.ini index 0cf5749dddb3f..c7f64edcf915a 100644 --- a/administrator/language/en-GB/plg_content_joomla.ini +++ b/administrator/language/en-GB/plg_content_joomla.ini @@ -8,8 +8,4 @@ PLG_CONTENT_JOOMLA_FIELD_CHECK_CATEGORIES_DESC="Check that categories are fully PLG_CONTENT_JOOMLA_FIELD_CHECK_CATEGORIES_LABEL="Check Category Deletion" PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_FE_DESC="Email users if 'Send email' is on when there is a new article submitted via the Frontend." PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_FE_LABEL="Email on New Site Article" -PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_STAGE_DESC="Email users if 'Send email' is on when there is a status change of an article." -PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_STAGE_LABEL="Email on transition execution" -PLG_CONTENT_JOOMLA_ON_STAGE_CHANGE_MSG="The status of an article has been changed by '%1$s' entitled '%2$s'." -PLG_CONTENT_JOOMLA_ON_STAGE_CHANGE_SUBJECT="Status of article has changed" PLG_CONTENT_JOOMLA_XML_DESCRIPTION="This plugin does category processing for core extensions; sends an email when new article is submitted in the Frontend or a transition is executed." diff --git a/administrator/language/en-GB/plg_workflow_featuring.ini b/administrator/language/en-GB/plg_workflow_featuring.ini new file mode 100644 index 0000000000000..21cb6e0e62527 --- /dev/null +++ b/administrator/language/en-GB/plg_workflow_featuring.ini @@ -0,0 +1,11 @@ +; Joomla! Project +; Copyright (C) 2005 - 2019 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_WORKFLOW_FEATURING="Workflow - Featuring" +PLG_WORKFLOW_FEATURING_CHANGE_STATE_NOT_ALLOWED="You're not allowed to change the featured state of this item. Please use a workflow transition." +PLG_WORKFLOW_FEATURING_FEATURED="Featured: %s" +PLG_WORKFLOW_FEATURING_TRANSITION_ACTIONS_FEATURING_DESC="Define the featured state an item should be set, when executing this transition" +PLG_WORKFLOW_FEATURING_TRANSITION_ACTIONS_FEATURING_LABEL="Featuring state" +PLG_WORKFLOW_FEATURING_XML_DESCRIPTION="Add featuring actions to the workflow transitions for your items" diff --git a/administrator/language/en-GB/plg_workflow_featuring.sys.ini b/administrator/language/en-GB/plg_workflow_featuring.sys.ini new file mode 100644 index 0000000000000..a80d79cb2fe80 --- /dev/null +++ b/administrator/language/en-GB/plg_workflow_featuring.sys.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2019 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_WORKFLOW_FEATURING="Workflow - Featuring" +PLG_WORKFLOW_FEATURING_XML_DESCRIPTION="Add featuring options to the workflow transitions for your items" diff --git a/administrator/language/en-GB/plg_workflow_notification.ini b/administrator/language/en-GB/plg_workflow_notification.ini new file mode 100644 index 0000000000000..b73cc705d650c --- /dev/null +++ b/administrator/language/en-GB/plg_workflow_notification.ini @@ -0,0 +1,20 @@ +; Joomla! Project +; Copyright (C) 2005 - 2019 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +COM_WORKFLOW_NOTIFICATION_FIELDSET_LABEL="Notification" +PLG_WORKFLOW_NOTIFICATION="Workflow - Notification" +PLG_WORKFLOW_NOTIFICATION_ADDTEXT="The stage has changed" +PLG_WORKFLOW_NOTIFICATION_ADDTEXT_DESC="This text will be sent: Title [title], Changed by [user], New State: [state]. You can add own Text to this information. You can localise the Text by using a Language key and make language overrides." +PLG_WORKFLOW_NOTIFICATION_ADDTEXT_LABEL="Additional Message Text." +PLG_WORKFLOW_NOTIFICATION_ON_TRANSITION_SUBJECT="The status of an '%1$s' has been changed"; +PLG_WORKFLOW_NOTIFICATION_ON_TRANSITION_MSG="Title: '%1$s', Changed by '%2$s', New State: '%3$s'." +PLG_WORKFLOW_NOTIFICATION_RECEIVERS_LABEL="Users" +PLG_WORKFLOW_NOTIFICATION_RECEIVERS_SELECT="Select single Users who obtain a Notification" +PLG_WORKFLOW_NOTIFICATION_SENDMAIL_LABEL="Send Notification" +PLG_WORKFLOW_NOTIFICATION_SENT="Notifications have been sent" +PLG_WORKFLOW_NOTIFICATION_USERGROUP_DESC="The users in this usergroup get a notification if this transition has been performed" +PLG_WORKFLOW_NOTIFICATION_USERGROUP_LABEL="Usergroups" +PLG_WORKFLOW_NOTIFICATION_USERGROUP_SELECT="Select usergroups" +PLG_WORKFLOW_NOTIFICATION_XML_DESCRIPTION="Send Notification if a Transition has been performed in a Workflow" diff --git a/administrator/language/en-GB/plg_workflow_notification.sys.ini b/administrator/language/en-GB/plg_workflow_notification.sys.ini new file mode 100644 index 0000000000000..c585237338360 --- /dev/null +++ b/administrator/language/en-GB/plg_workflow_notification.sys.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2019 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_WORKFLOW_NOTIFICATION="Workflow - Notification" +PLG_WORKFLOW_NOTIFICATION_XML_DESCRIPTION="Send Notification for Transitions in Publishing Workflow" \ No newline at end of file diff --git a/administrator/language/en-GB/plg_workflow_publishing.ini b/administrator/language/en-GB/plg_workflow_publishing.ini new file mode 100644 index 0000000000000..409a97882a65f --- /dev/null +++ b/administrator/language/en-GB/plg_workflow_publishing.ini @@ -0,0 +1,12 @@ +; Joomla! Project +; Copyright (C) 2005 - 2019 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_WORKFLOW_PUBLISHING="Workflow - Publishing" +PLG_WORKFLOW_PUBLISHING_CHANGE_STATE_NOT_ALLOWED="You're not allowed to change the publishing state of this item. Please use a workflow transition." +PLG_WORKFLOW_PUBLISHING_PUBLISHED="Status: %s" +PLG_WORKFLOW_PUBLISHING_TRANSITION_ACTIONS_PUBLISHING_DESC="Define the state an item should be set, when executing this transition" +PLG_WORKFLOW_PUBLISHING_TRANSITION_ACTIONS_PUBLISHING_DO_NO_CHANGE="- Do not change -" +PLG_WORKFLOW_PUBLISHING_TRANSITION_ACTIONS_PUBLISHING_LABEL="Publishing state" +PLG_WORKFLOW_PUBLISHING_XML_DESCRIPTION="Add publishing actions to the workflow transitions for your items" diff --git a/administrator/language/en-GB/plg_workflow_publishing.sys.ini b/administrator/language/en-GB/plg_workflow_publishing.sys.ini new file mode 100644 index 0000000000000..8f09ca95bbbf7 --- /dev/null +++ b/administrator/language/en-GB/plg_workflow_publishing.sys.ini @@ -0,0 +1,7 @@ +; Joomla! Project +; Copyright (C) 2005 - 2019 Open Source Matters. All rights reserved. +; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php +; Note : All ini files need to be saved as UTF-8 + +PLG_WORKFLOW_PUBLISHING="Workflow - Publishing" +PLG_WORKFLOW_PUBLISHING_XML_DESCRIPTION="Add publishing options to the workflow transitions for your items" diff --git a/administrator/modules/mod_login/tmpl/default.php b/administrator/modules/mod_login/tmpl/default.php index 20f4eaf6a16f4..df49e796b5066 100644 --- a/administrator/modules/mod_login/tmpl/default.php +++ b/administrator/modules/mod_login/tmpl/default.php @@ -101,11 +101,12 @@ class="form-control" - +
'; - } - }); - - modalcontent.innerHTML = html; - - // TODO: remove jQuery dependency, when we have a new modal script - window.jQuery(modal).modal(); - } - } - - publishBtn.parentElement.addEventListener('click', (e) => { - if (publishBtn.classList.contains('disabled')) { - e.stopImmediatePropagation(); - - Joomla.renderMessages({ error: [Joomla.JText._('COM_CONTENT_ERROR_CANNOT_PUBlISH')] }); - } else { - checkTransition(e, 'publish'); - } - }); - - unpublishBtn.parentElement.addEventListener('click', (e) => { - if (unpublishBtn.classList.contains('disabled')) { - e.stopImmediatePropagation(); - - Joomla.renderMessages({ error: [Joomla.JText._('COM_CONTENT_ERROR_CANNOT_UNPUBlISH')] }); - } else { - checkTransition(e, 'unpublish'); - } - }); - - archiveBtn.parentElement.addEventListener('click', (e) => { - if (archiveBtn.classList.contains('disabled')) { - e.stopImmediatePropagation(); - - Joomla.renderMessages({ error: [Joomla.JText._('COM_CONTENT_ERROR_CANNOT_ARCHIVE')] }); - } else { - checkTransition(e, 'archive'); - } - }); - - trashBtn.parentElement.addEventListener('click', (e) => { - if (trashBtn.classList.contains('disabled')) { - e.stopImmediatePropagation(); - - Joomla.renderMessages({ error: [Joomla.JText._('COM_CONTENT_ERROR_CANNOT_TRASH')] }); - } else { - checkTransition(e, 'trash'); - } - }); - - function setOrRemDisabled(btn, set) { - if (set) { - btn.classList.remove('disabled'); - } else { - btn.classList.add('disabled'); - } - } - - // disable or enable Buttons of transitions depending on the boolean variables - function disableButtons() { - setOrRemDisabled(publishBtn, publishBool); - setOrRemDisabled(unpublishBtn, unpublishBool); - setOrRemDisabled(archiveBtn, archiveBool); - setOrRemDisabled(trashBtn, trashBool); - } - - // check for common attributes for which the conditions for a transition are possible or not - // and save this information in a boolean variable. - function checkForAttributes(row) { - publishBool = row.getAttribute('data-condition-publish') > 0 && (countChecked === 0 || publishBool); - unpublishBool = row.getAttribute('data-condition-unpublish') > 0 && (countChecked === 0 || unpublishBool); - archiveBool = row.getAttribute('data-condition-archive') > 0 && (countChecked === 0 || archiveBool); - trashBool = row.getAttribute('data-condition-trash') > 0 && (countChecked === 0 || trashBool); - } - - // listen to click event to get selected rows - if (articleList) { - articleList.addEventListener('click', () => { - articleListRows.forEach((el) => { - const checkedBox = el.querySelectorAll('input[type=checkbox]')[0]; - - if (checkedBox.checked) { - const parentTr = checkedBox.closest('tr'); - checkForAttributes(parentTr); - countChecked += 1; - } - }); - disableButtons(); - countChecked = 0; - }); - } - }); -})(); diff --git a/build/media_source/com_mails/js/admin-email-template-edit.es6.js b/build/media_source/com_mails/js/admin-email-template-edit.es6.js index dfa5c1e4e9afd..b6e6a7cb6c95b 100644 --- a/build/media_source/com_mails/js/admin-email-template-edit.es6.js +++ b/build/media_source/com_mails/js/admin-email-template-edit.es6.js @@ -121,10 +121,13 @@ if (target.value === '0') { this.setHtmlBodyValue(this.templateData.htmlbody ? this.templateData.htmlbody.master : ''); + this.inputHtmlBody.disabled = true; Joomla.editors.instances[this.inputHtmlBody.id].disable(true); tagsContainer.classList.add('hidden'); } else if (target.value === '1') { Joomla.editors.instances[this.inputHtmlBody.id].disable(false); + this.inputHtmlBody.disabled = false; + this.inputHtmlBody.readOnly = false; this.setHtmlBodyValue(this.templateData.htmlbody ? this.templateData.htmlbody.translated : ''); tagsContainer.classList.remove('hidden'); } else { diff --git a/build/media_source/com_workflow/js/admin-items-workflow-buttons.es6.js b/build/media_source/com_workflow/js/admin-items-workflow-buttons.es6.js new file mode 100644 index 0000000000000..b6434abc14cc8 --- /dev/null +++ b/build/media_source/com_workflow/js/admin-items-workflow-buttons.es6.js @@ -0,0 +1,113 @@ +/** + * @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved. + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +Joomla = window.Joomla || {}; + +/** + * Method that switches a given class to the following elements of the element provided + * + * @param {HTMLElement} element The reference element + * @param {string} className The class name to be toggled + */ +Joomla.toggleAllNextElements = (element, className) => { + const getNextSiblings = (el) => { + const siblings = []; + /* eslint-disable no-cond-assign,no-param-reassign */ + do { + siblings.push(el); + } while ((el = el.nextElementSibling) !== null); + /* eslint-enable no-cond-assign,no-param-reassign */ + return siblings; + }; + + const followingElements = getNextSiblings(element); + if (followingElements.length) { + followingElements.forEach((elem) => { + if (elem.classList.contains(className)) { + elem.classList.remove(className); + } else { + elem.classList.add(className); + } + }); + } +}; + +(() => { + 'use strict'; + + document.addEventListener('DOMContentLoaded', () => { + const dropDownBtn = document.getElementById('toolbar-dropdown-status-group'); + const transitions = [].slice.call(dropDownBtn.querySelectorAll('.button-transition')); + const headline = dropDownBtn.querySelector('.button-transition-headline'); + const separator = dropDownBtn.querySelector('.button-transition-separator'); + const itemList = document.querySelector('table.itemList'); + + let itemListRows = []; + let transitionIds = []; + + if (itemList) { + itemListRows = [].slice.call(itemList.querySelectorAll('tbody tr')); + } + + function enableTransitions() { + if (transitionIds.length) { + let availableTrans = transitionIds.shift(); + + while (transitionIds.length) { + const compareTrans = transitionIds.shift(); + + availableTrans = availableTrans.filter((id) => compareTrans.indexOf(id) !== -1); + } + + if (availableTrans.length) { + if (headline) { + headline.classList.remove('d-none'); + } + if (separator) { + separator.classList.remove('d-none'); + } + } + + availableTrans.forEach((trans) => { + const elem = dropDownBtn.querySelector(`.transition-${trans}`); + + if (elem) { + elem.parentNode.classList.remove('d-none'); + } + }); + } + } + + // check for common attributes for which the conditions for a transition are possible or not + // and save this information in a boolean variable. + function collectTransitions(row) { + transitionIds.push(row.getAttribute('data-transitions').split(',')); + } + + // listen to click event to get selected rows + if (itemList) { + itemList.addEventListener('click', () => { + transitions.forEach((trans) => { + trans.parentNode.classList.add('d-none'); + }); + if (headline) { + headline.classList.add('d-none'); + } + if (separator) { + separator.classList.add('d-none'); + } + transitionIds = []; + itemListRows.forEach((el) => { + const checkedBox = el.querySelector('input[type=checkbox]'); + if (checkedBox.checked) { + const parentTr = checkedBox.closest('tr'); + collectTransitions(parentTr); + } + }); + enableTransitions(); + }); + } + }); +})(); diff --git a/build/media_source/plg_system_webauthn/js/login.es6.js b/build/media_source/plg_system_webauthn/js/login.es6.js index c040e6d478855..16adef4f1f567 100644 --- a/build/media_source/plg_system_webauthn/js/login.es6.js +++ b/build/media_source/plg_system_webauthn/js/login.es6.js @@ -6,243 +6,258 @@ * @license GNU General Public License version 2 or later; see LICENSE.txt */ -/** - * Converts a simple object containing query string parameters to a single, escaped query string. - * This method is a necessary evil since Joomla.request can only accept data as a string. - * - * @param object {object} A plain object containing the query parameters to pass - * @param thisParamIsThePrefix {string} Prefix for array-type parameters - * - * @returns {string} - */ -function plgSystemWebauthnInterpolateParameters(object, thisParamIsThePrefix) { - const prefix = thisParamIsThePrefix || ''; - let encodedString = ''; - - Object.keys(object).forEach((prop) => { - if (typeof object[prop] !== 'object') { - if (encodedString.length > 0) { - encodedString += '&'; +window.Joomla = window.Joomla || {}; + +((Joomla, document) => { + 'use strict'; + + /** + * Converts a simple object containing query string parameters to a single, escaped query string. + * This method is a necessary evil since Joomla.request can only accept data as a string. + * + * @param object {object} A plain object containing the query parameters to pass + * @param prefix {string} Prefix for array-type parameters + * + * @returns {string} + */ + const interpolateParameters = (object, prefix = '') => { + let encodedString = ''; + + Object.keys(object).forEach((prop) => { + if (typeof object[prop] !== 'object') { + if (encodedString.length > 0) { + encodedString += '&'; + } + + if (prefix === '') { + encodedString += `${encodeURIComponent(prop)}=${encodeURIComponent(object[prop])}`; + } else { + encodedString + += `${encodeURIComponent(prefix)}[${encodeURIComponent(prop)}]=${encodeURIComponent( + object[prop], + )}`; + } + + return; } - if (prefix === '') { - encodedString += `${encodeURIComponent(prop)}=${encodeURIComponent(object[prop])}`; - } else { - encodedString - += `${encodeURIComponent(prefix)}[${encodeURIComponent(prop)}]=${encodeURIComponent( - object[prop], - )}`; - } - - return; - } - - // Objects need special handling - encodedString += `${plgSystemWebauthnInterpolateParameters(object[prop], prop)}`; - }); - - return encodedString; -} - -/** - * Finds the first field matching a selector inside a form - * - * @param {HTMLFormElement} elForm The FORM element - * @param {String} fieldSelector The CSS selector to locate the field - * - * @returns {Element|null} NULL when no element is found - */ -function plgSystemWebauthnFindField(elForm, fieldSelector) { - const elInputs = elForm.querySelectorAll(fieldSelector); - - if (!elInputs.length) { - return null; - } + // Objects need special handling + encodedString += `${interpolateParameters(object[prop], prop)}`; + }); - return elInputs[0]; -} + return encodedString; + }; -/** - * Find a form field described by the CSS selector fieldSelector. The field must be inside a - * element which is either the outerElement itself or enclosed by outerElement. - * - * @param {Element} outerElement The element which is either our form or contains our form. - * @param {String} fieldSelector The CSS selector to locate the field - * - * @returns {null|Element} NULL when no element is found - */ -function plgSystemWebauthnLookForField(outerElement, fieldSelector) { - const elElement = outerElement.parentElement; - let elInput = null; + /** + * Finds the first field matching a selector inside a form + * + * @param {HTMLFormElement} form The FORM element + * @param {String} fieldSelector The CSS selector to locate the field + * + * @returns {Element|null} NULL when no element is found + */ + const findField = (form, fieldSelector) => { + const elInputs = form.querySelectorAll(fieldSelector); + + if (!elInputs.length) { + return null; + } - if (elElement.nodeName === 'FORM') { - elInput = plgSystemWebauthnFindField(elElement, fieldSelector); + return elInputs[0]; + }; - return elInput; - } + /** + * Find a form field described by the CSS selector fieldSelector. + * The field must be inside a element which is either the + * outerElement itself or enclosed by outerElement. + * + * @param {Element} outerElement The element which is either our form or contains our form. + * @param {String} fieldSelector The CSS selector to locate the field + * + * @returns {null|Element} NULL when no element is found + */ + const lookForField = (outerElement, fieldSelector) => { + const elElement = outerElement.parentElement; + let elInput = null; + + if (elElement.nodeName === 'FORM') { + elInput = findField(elElement, fieldSelector); + + return elInput; + } - const elForms = elElement.querySelectorAll('form'); + const elForms = elElement.querySelectorAll('form'); - if (elForms.length) { - for (let i = 0; i < elForms.length; i += 1) { - elInput = plgSystemWebauthnFindField(elForms[i], fieldSelector); + if (elForms.length) { + for (let i = 0; i < elForms.length; i += 1) { + elInput = findField(elForms[i], fieldSelector); - if (elInput !== null) { - return elInput; + if (elInput !== null) { + return elInput; + } } } - } - return null; -} + return null; + }; -/** - * A simple error handler. - * - * @param {String} message - */ -function plgSystemWebauthnHandleLoginError(message) { - alert(message); -} + /** + * A simple error handler. + * + * @param {String} message + */ + const handleLoginError = (message) => { + Joomla.renderMessages({ error: [message] }); + }; -/** - * Handles the browser response for the user interaction with the authenticator. Redirects to an - * internal page which handles the login server-side. - * - * @param { Object} publicKey Public key request options, returned from the server - * @param {String} callbackUrl The URL we will use to post back to the server. Must include - * the anti-CSRF token. - */ -function plgSystemWebauthnHandleLoginChallenge(publicKey, callbackUrl) { - function arrayToBase64String(a) { - return btoa(String.fromCharCode(...a)); - } - - function base64url2base64(input) { - let output = input - .replace(/-/g, '+') - .replace(/_/g, '/'); - const pad = output.length % 4; - if (pad) { - if (pad === 1) { - throw new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding'); + /** + * Handles the browser response for the user interaction with the authenticator. Redirects to an + * internal page which handles the login server-side. + * + * @param { Object} publicKey Public key request options, returned from the server + * @param {String} callbackUrl The URL we will use to post back to the server. Must include + * the anti-CSRF token. + */ + const handleLoginChallenge = (publicKey, callbackUrl) => { + const arrayToBase64String = (a) => btoa(String.fromCharCode(...a)); + + const base64url2base64 = (input) => { + let output = input + .replace(/-/g, '+') + .replace(/_/g, '/'); + const pad = output.length % 4; + if (pad) { + if (pad === 1) { + throw new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding'); + } + output += new Array(5 - pad).join('='); } - output += new Array(5 - pad).join('='); - } - return output; - } + return output; + }; - if (!publicKey.challenge) { - plgSystemWebauthnHandleLoginError(Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_INVALID_USERNAME')); + if (!publicKey.challenge) { + handleLoginError(Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_INVALID_USERNAME')); - return; - } + return; + } - publicKey.challenge = Uint8Array.from( - window.atob(base64url2base64(publicKey.challenge)), (c) => c.charCodeAt(0), - ); + publicKey.challenge = Uint8Array.from( + window.atob(base64url2base64(publicKey.challenge)), (c) => c.charCodeAt(0), + ); - if (publicKey.allowCredentials) { - publicKey.allowCredentials = publicKey.allowCredentials.map((data) => { - data.id = Uint8Array.from(window.atob(base64url2base64(data.id)), (c) => c.charCodeAt(0)); - return data; - }); - } - - navigator.credentials.get({ publicKey }) - .then((data) => { - const publicKeyCredential = { - id: data.id, - type: data.type, - rawId: arrayToBase64String(new Uint8Array(data.rawId)), - response: { - authenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)), - clientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)), - signature: arrayToBase64String(new Uint8Array(data.response.signature)), - userHandle: data.response.userHandle ? arrayToBase64String( - new Uint8Array(data.response.userHandle), - ) : null, - }, - }; - - // Send the response to your server - window.location = `${callbackUrl}&option=com_ajax&group=system&plugin=webauthn&` - + `format=raw&akaction=login&encoding=redirect&data=${ - btoa(JSON.stringify(publicKeyCredential))}`; - }) - .catch((error) => { - // Example: timeout, interaction refused... - plgSystemWebauthnHandleLoginError(error); - }); -} + if (publicKey.allowCredentials) { + publicKey.allowCredentials = publicKey.allowCredentials.map((data) => { + data.id = Uint8Array.from(window.atob(base64url2base64(data.id)), (c) => c.charCodeAt(0)); + return data; + }); + } -/** - * Initialize the passwordless login, going through the server to get the registered certificates - * for the user. - * - * @param {string} formId The login form's or login module's HTML ID - * @param {string} callbackUrl The URL we will use to post back to the server. Must include - * the anti-CSRF token. - * - * @returns {boolean} Always FALSE to prevent BUTTON elements from reloading the page. - */ -// eslint-disable-next-line no-unused-vars -function plgSystemWebauthnLogin(formId, callbackUrl) { - // Get the username - const elFormContainer = document.getElementById(formId); - const elUsername = plgSystemWebauthnLookForField(elFormContainer, 'input[name=username]'); - const elReturn = plgSystemWebauthnLookForField(elFormContainer, 'input[name=return]'); + navigator.credentials.get({ publicKey }) + .then((data) => { + const publicKeyCredential = { + id: data.id, + type: data.type, + rawId: arrayToBase64String(new Uint8Array(data.rawId)), + response: { + authenticatorData: arrayToBase64String(new Uint8Array(data.response.authenticatorData)), + clientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)), + signature: arrayToBase64String(new Uint8Array(data.response.signature)), + userHandle: data.response.userHandle ? arrayToBase64String( + new Uint8Array(data.response.userHandle), + ) : null, + }, + }; + + // Send the response to your server + window.location = `${callbackUrl}&option=com_ajax&group=system&plugin=webauthn&` + + `format=raw&akaction=login&encoding=redirect&data=${ + btoa(JSON.stringify(publicKeyCredential))}`; + }) + .catch((error) => { + // Example: timeout, interaction refused... + handleLoginError(error); + }); + }; - if (elUsername === null) { - alert(Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_CANNOT_FIND_USERNAME')); + /** + * Initialize the passwordless login, going through the server to get the registered certificates + * for the user. + * + * @param {string} formId The login form's or login module's HTML ID + * @param {string} callbackUrl The URL we will use to post back to the server. Must include + * the anti-CSRF token. + * + * @returns {boolean} Always FALSE to prevent BUTTON elements from reloading the page. + */ + // eslint-disable-next-line no-unused-vars + Joomla.plgSystemWebauthnLogin = (formId, callbackUrl) => { + // Get the username + const elFormContainer = document.getElementById(formId); + const elUsername = lookForField(elFormContainer, 'input[name=username]'); + const elReturn = lookForField(elFormContainer, 'input[name=return]'); + + if (elUsername === null) { + Joomla.renderMessages({ error: [Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_CANNOT_FIND_USERNAME')] }); + + return false; + } - return false; - } + const username = elUsername.value; + const returnUrl = elReturn ? elReturn.value : null; - const username = elUsername.value; - const returnUrl = elReturn ? elReturn.value : null; + // No username? We cannot proceed. We need a username to find the acceptable public keys :( + if (username === '') { + Joomla.renderMessages({ error: [Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_EMPTY_USERNAME')] }); - // No username? We cannot proceed. We need a username to find the acceptable public keys :( - if (username === '') { - alert(Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_EMPTY_USERNAME')); + return false; + } + + // Get the Public Key Credential Request Options (challenge and acceptable public keys) + const postBackData = { + option: 'com_ajax', + group: 'system', + plugin: 'webauthn', + format: 'raw', + akaction: 'challenge', + encoding: 'raw', + username, + returnUrl, + }; + + Joomla.request({ + url: callbackUrl, + method: 'POST', + data: interpolateParameters(postBackData), + onSuccess(rawResponse) { + let jsonData = {}; + + try { + jsonData = JSON.parse(rawResponse); + } catch (e) { + /** + * In case of JSON decoding failure fall through; the error will be handled in the login + * challenge handler called below. + */ + } + + handleLoginChallenge(jsonData, callbackUrl); + }, + onError: (xhr) => { + handleLoginError(`${xhr.status} ${xhr.statusText}`); + }, + }); return false; - } - - // Get the Public Key Credential Request Options (challenge and acceptable public keys) - const postBackData = { - option: 'com_ajax', - group: 'system', - plugin: 'webauthn', - format: 'raw', - akaction: 'challenge', - encoding: 'raw', - username, - returnUrl, }; - Joomla.request({ - url: callbackUrl, - method: 'POST', - data: plgSystemWebauthnInterpolateParameters(postBackData), - onSuccess(rawResponse) { - let jsonData = {}; - - try { - jsonData = JSON.parse(rawResponse); - } catch (e) { - /** - * In case of JSON decoding failure fall through; the error will be handled in the login - * challenge handler called below. - */ - } - - plgSystemWebauthnHandleLoginChallenge(jsonData, callbackUrl); - }, - onError: (xhr) => { - plgSystemWebauthnHandleLoginError(`${xhr.status} ${xhr.statusText}`); - }, + document.addEventListener('DOMContentLoaded', () => { + const loginButtons = [].slice.call(document.querySelectorAll('.plg_system_webauthn_login_button')); + if (loginButtons.length) { + loginButtons.forEach((button) => { + button.addEventListener('click', ({ currentTarget }) => { + Joomla.plgSystemWebauthnLogin(currentTarget.getAttribute('data-random-form'), currentTarget.getAttribute('data-random-url')); + }); + }); + } }); - - return false; -} +})(window, Joomla); diff --git a/build/media_source/plg_system_webauthn/js/management.es6.js b/build/media_source/plg_system_webauthn/js/management.es6.js index d8557f33635ff..2e6b710ce5917 100644 --- a/build/media_source/plg_system_webauthn/js/management.es6.js +++ b/build/media_source/plg_system_webauthn/js/management.es6.js @@ -6,350 +6,378 @@ * @license GNU General Public License version 2 or later; see LICENSE.txt */ -/** - * Converts a simple object containing query string parameters to a single, escaped query string. - * This method is a necessary evil since Joomla.request can only accept data as a string. - * - * @param object {object} A plain object containing the query parameters to pass - * @param thisParamIsThePrefix {string} Prefix for array-type parameters - * - * @returns {string} - */ -function plgSystemWebauthnInterpolateParameters(object, thisParamIsThePrefix) { - const prefix = thisParamIsThePrefix || ''; - let encodedString = ''; - - Object.keys(object).forEach((prop) => { - if (typeof object[prop] !== 'object') { - if (encodedString.length > 0) { - encodedString += '&'; - } +window.Joomla = window.Joomla || {}; + +((Joomla, document) => { + 'use strict'; + + /** + * Converts a simple object containing query string parameters to a single, escaped query string. + * This method is a necessary evil since Joomla.request can only accept data as a string. + * + * @param object {object} A plain object containing the query parameters to pass + * @param prefix {string} Prefix for array-type parameters + * + * @returns {string} + */ + const interpolateParameters = (object, prefix = '') => { + let encodedString = ''; + + Object.keys(object).forEach((prop) => { + if (typeof object[prop] !== 'object') { + if (encodedString.length > 0) { + encodedString += '&'; + } + + if (prefix === '') { + encodedString += `${encodeURIComponent(prop)}=${encodeURIComponent(object[prop])}`; + } else { + encodedString + += `${encodeURIComponent(prefix)}[${encodeURIComponent(prop)}]=${encodeURIComponent( + object[prop], + )}`; + } - if (prefix === '') { - encodedString += `${encodeURIComponent(prop)}=${encodeURIComponent(object[prop])}`; - } else { - encodedString - += `${encodeURIComponent(prefix)}[${encodeURIComponent(prop)}]=${encodeURIComponent( - object[prop], - )}`; + return; } - return; - } + // Objects need special handling + encodedString += `${interpolateParameters(object[prop], prop)}`; + }); - // Objects need special handling - encodedString += `${plgSystemWebauthnInterpolateParameters(object[prop], prop)}`; - }); + return encodedString; + }; - return encodedString; -} + /** + * A simple error handler + * + * @param {String} message + */ + const handleCreationError = (message) => { + Joomla.renderMessages({ error: [message] }); + }; -/** - * A simple error handler - * - * @param {String} message - */ -function plgSystemWebauthnHandleCreationError(message) { - alert(message); -} + /** + * Ask the user to link an authenticator using the provided public key (created server-side). + * Posts the credentials to the URL defined in post_url using AJAX. + * That URL must re-render the management interface. + * These contents will replace the element identified by the interface_selector CSS selector. + * + * @param {String} storeID CSS ID for the element storing the configuration in its + * data properties + * @param {String} interfaceSelector CSS selector for the GUI container + */ + // eslint-disable-next-line no-unused-vars + Joomla.plgSystemWebauthnCreateCredentials = (storeID, interfaceSelector) => { + // Make sure the browser supports Webauthn + if (!('credentials' in navigator)) { + Joomla.renderMessages({ error: [Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_NO_BROWSER_SUPPORT')] }); -/** - * Ask the user to link an authenticator using the provided public key (created server-side). Posts - * the credentials to the URL defined in post_url using AJAX. That URL must re-render the management - * interface. These contents will replace the element identified by the interface_selector CSS - * selector. - * - * @param {String} storeID CSS ID for the element storing the configuration in its - * data properties - * @param {String} interfaceSelector CSS selector for the GUI container - */ -// eslint-disable-next-line no-unused-vars -function plgSystemWebauthnCreateCredentials(storeID, interfaceSelector) { - // Make sure the browser supports Webauthn - if (!('credentials' in navigator)) { - alert(Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_NO_BROWSER_SUPPORT')); - - return; - } - - // Extract the configuration from the store - const elStore = document.getElementById(storeID); - - if (!elStore) { - return; - } - - const publicKey = JSON.parse(atob(elStore.dataset.public_key)); - const postURL = atob(elStore.dataset.postback_url); - - function arrayToBase64String(a) { - return btoa(String.fromCharCode(...a)); - } - - function base64url2base64(input) { - let output = input - .replace(/-/g, '+') - .replace(/_/g, '/'); - const pad = output.length % 4; - if (pad) { - if (pad === 1) { - throw new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding'); - } - output += new Array(5 - pad).join('='); + return; } - return output; - } - // Convert the public key information to a format usable by the browser's credentials manager - publicKey.challenge = Uint8Array.from( - window.atob(base64url2base64(publicKey.challenge)), (c) => c.charCodeAt(0), - ); + // Extract the configuration from the store + const elStore = document.getElementById(storeID); - publicKey.user.id = Uint8Array.from(window.atob(publicKey.user.id), (c) => c.charCodeAt(0)); + if (!elStore) { + return; + } - if (publicKey.excludeCredentials) { - publicKey.excludeCredentials = publicKey.excludeCredentials.map((data) => { - data.id = Uint8Array.from(window.atob(base64url2base64(data.id)), (c) => c.charCodeAt(0)); - return data; - }); - } - - // Ask the browser to prompt the user for their authenticator - navigator.credentials.create({ publicKey }) - .then((data) => { - const publicKeyCredential = { - id: data.id, - type: data.type, - rawId: arrayToBase64String(new Uint8Array(data.rawId)), - response: { - clientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)), - attestationObject: arrayToBase64String(new Uint8Array(data.response.attestationObject)), - }, - }; - - // Send the response to your server - const postBackData = { - option: 'com_ajax', - group: 'system', - plugin: 'webauthn', - format: 'raw', - akaction: 'create', - encoding: 'raw', - data: btoa(JSON.stringify(publicKeyCredential)), - }; - - Joomla.request({ - url: postURL, - method: 'POST', - data: plgSystemWebauthnInterpolateParameters(postBackData), - onSuccess(responseHTML) { - const elements = document.querySelectorAll(interfaceSelector); - - if (!elements) { - return; - } - - const elContainer = elements[0]; - - elContainer.outerHTML = responseHTML; - }, - onError: (xhr) => { - plgSystemWebauthnHandleCreationError(`${xhr.status} ${xhr.statusText}`); - }, - }); - }) - .catch((error) => { - // An error occurred: timeout, request to provide the authenticator refused, hardware / - // software error... - plgSystemWebauthnHandleCreationError(error); - }); -} + const publicKey = JSON.parse(atob(elStore.dataset.public_key)); + const postURL = atob(elStore.dataset.postback_url); + + const arrayToBase64String = (a) => btoa(String.fromCharCode(...a)); + + const base64url2base64 = (input) => { + let output = input + .replace(/-/g, '+') + .replace(/_/g, '/'); + const pad = output.length % 4; + if (pad) { + if (pad === 1) { + throw new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding'); + } + output += new Array(5 - pad).join('='); + } + return output; + }; -/** - * Edit label button - * - * @param {Element} that The button being clicked - * @param {String} storeID CSS ID for the element storing the configuration in its data - * properties - */ -// eslint-disable-next-line no-unused-vars -function plgSystemWebauthnEditLabel(that, storeID) { - // Extract the configuration from the store - const elStore = document.getElementById(storeID); + // Convert the public key information to a format usable by the browser's credentials manager + publicKey.challenge = Uint8Array.from( + window.atob(base64url2base64(publicKey.challenge)), (c) => c.charCodeAt(0), + ); - if (!elStore) { - return false; - } - - const postURL = atob(elStore.dataset.postback_url); - - // Find the UI elements - const elTR = that.parentElement.parentElement; - const credentialId = elTR.dataset.credential_id; - const elTDs = elTR.querySelectorAll('td'); - const elLabelTD = elTDs[0]; - const elButtonsTD = elTDs[1]; - const elButtons = elButtonsTD.querySelectorAll('button'); - const elEdit = elButtons[0]; - const elDelete = elButtons[1]; - - // Show the editor - const oldLabel = elLabelTD.innerText; - - const elInput = document.createElement('input'); - elInput.type = 'text'; - elInput.name = 'label'; - elInput.defaultValue = oldLabel; - - const elSave = document.createElement('button'); - elSave.className = 'btn btn-success btn-sm'; - elSave.innerText = Joomla.JText._('PLG_SYSTEM_WEBAUTHN_MANAGE_BTN_SAVE_LABEL'); - elSave.addEventListener('click', () => { - const elNewLabel = elInput.value; - - if (elNewLabel !== '') { - const postBackData = { - option: 'com_ajax', - group: 'system', - plugin: 'webauthn', - format: 'json', - encoding: 'json', - akaction: 'savelabel', - credential_id: credentialId, - new_label: elNewLabel, - }; - - Joomla.request({ - url: postURL, - method: 'POST', - data: plgSystemWebauthnInterpolateParameters(postBackData), - onSuccess(rawResponse) { - let result = false; - - try { - result = JSON.parse(rawResponse); - } catch (exception) { - result = (rawResponse === 'true'); - } - - if (result !== true) { - plgSystemWebauthnHandleCreationError( - Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_LABEL_NOT_SAVED'), - ); - } - - // alert(Joomla.JText._('PLG_SYSTEM_WEBAUTHN_MSG_SAVED_LABEL')); - }, - onError: (xhr) => { - plgSystemWebauthnHandleCreationError( - `${Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_LABEL_NOT_SAVED') - } -- ${xhr.status} ${xhr.statusText}`, - ); - }, + publicKey.user.id = Uint8Array.from(window.atob(publicKey.user.id), (c) => c.charCodeAt(0)); + + if (publicKey.excludeCredentials) { + publicKey.excludeCredentials = publicKey.excludeCredentials.map((data) => { + data.id = Uint8Array.from(window.atob(base64url2base64(data.id)), (c) => c.charCodeAt(0)); + return data; }); } - elLabelTD.innerText = elNewLabel; - elEdit.disabled = false; - elDelete.disabled = false; + // Ask the browser to prompt the user for their authenticator + navigator.credentials.create({ publicKey }) + .then((data) => { + const publicKeyCredential = { + id: data.id, + type: data.type, + rawId: arrayToBase64String(new Uint8Array(data.rawId)), + response: { + clientDataJSON: arrayToBase64String(new Uint8Array(data.response.clientDataJSON)), + attestationObject: arrayToBase64String(new Uint8Array(data.response.attestationObject)), + }, + }; + + // Send the response to your server + const postBackData = { + option: 'com_ajax', + group: 'system', + plugin: 'webauthn', + format: 'raw', + akaction: 'create', + encoding: 'raw', + data: btoa(JSON.stringify(publicKeyCredential)), + }; + + Joomla.request({ + url: postURL, + method: 'POST', + data: interpolateParameters(postBackData), + onSuccess(responseHTML) { + const elements = document.querySelectorAll(interfaceSelector); + + if (!elements) { + return; + } + + const elContainer = elements[0]; + + elContainer.outerHTML = responseHTML; + }, + onError: (xhr) => { + handleCreationError(`${xhr.status} ${xhr.statusText}`); + }, + }); + }) + .catch((error) => { + // An error occurred: timeout, request to provide the authenticator refused, hardware / + // software error... + handleCreationError(error); + }); + }; + + /** + * Edit label button + * + * @param {Element} that The button being clicked + * @param {String} storeID CSS ID for the element storing the configuration in its data + * properties + */ + // eslint-disable-next-line no-unused-vars + Joomla.plgSystemWebauthnEditLabel = (that, storeID) => { + // Extract the configuration from the store + const elStore = document.getElementById(storeID); + + if (!elStore) { + return false; + } - return false; - }, false); + const postURL = atob(elStore.dataset.postback_url); + + // Find the UI elements + const elTR = that.parentElement.parentElement; + const credentialId = elTR.dataset.credential_id; + const elTDs = elTR.querySelectorAll('td'); + const elLabelTD = elTDs[0]; + const elButtonsTD = elTDs[1]; + const elButtons = elButtonsTD.querySelectorAll('button'); + const elEdit = elButtons[0]; + const elDelete = elButtons[1]; + + // Show the editor + const oldLabel = elLabelTD.innerText; + + const elInput = document.createElement('input'); + elInput.type = 'text'; + elInput.name = 'label'; + elInput.defaultValue = oldLabel; + + const elSave = document.createElement('button'); + elSave.className = 'btn btn-success btn-sm'; + elSave.innerText = Joomla.JText._('PLG_SYSTEM_WEBAUTHN_MANAGE_BTN_SAVE_LABEL'); + elSave.addEventListener('click', () => { + const elNewLabel = elInput.value; + + if (elNewLabel !== '') { + const postBackData = { + option: 'com_ajax', + group: 'system', + plugin: 'webauthn', + format: 'json', + encoding: 'json', + akaction: 'savelabel', + credential_id: credentialId, + new_label: elNewLabel, + }; + + Joomla.request({ + url: postURL, + method: 'POST', + data: interpolateParameters(postBackData), + onSuccess(rawResponse) { + let result = false; + + try { + result = JSON.parse(rawResponse); + } catch (exception) { + result = (rawResponse === 'true'); + } + + if (result !== true) { + handleCreationError( + Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_LABEL_NOT_SAVED'), + ); + } + }, + onError: (xhr) => { + handleCreationError( + `${Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_LABEL_NOT_SAVED') + } -- ${xhr.status} ${xhr.statusText}`, + ); + }, + }); + } - const elCancel = document.createElement('button'); - elCancel.className = 'btn btn-danger btn-sm'; - elCancel.innerText = Joomla.JText._('PLG_SYSTEM_WEBAUTHN_MANAGE_BTN_CANCEL_LABEL'); - elCancel.addEventListener('click', () => { - elLabelTD.innerText = oldLabel; - elEdit.disabled = false; - elDelete.disabled = false; + elLabelTD.innerText = elNewLabel; + elEdit.disabled = false; + elDelete.disabled = false; - return false; - }, false); + return false; + }, false); - elLabelTD.innerHTML = ''; - elLabelTD.appendChild(elInput); - elLabelTD.appendChild(elSave); - elLabelTD.appendChild(elCancel); - elEdit.disabled = true; - elDelete.disabled = true; + const elCancel = document.createElement('button'); + elCancel.className = 'btn btn-danger btn-sm'; + elCancel.innerText = Joomla.JText._('PLG_SYSTEM_WEBAUTHN_MANAGE_BTN_CANCEL_LABEL'); + elCancel.addEventListener('click', () => { + elLabelTD.innerText = oldLabel; + elEdit.disabled = false; + elDelete.disabled = false; - return false; -} + return false; + }, false); -/** - * Delete button - * - * @param {Element} that The button being clicked - * @param {String} storeID CSS ID for the element storing the configuration in its data - * properties - */ -// eslint-disable-next-line no-unused-vars -function plgSystemWebauthnDelete(that, storeID) { - // Extract the configuration from the store - const elStore = document.getElementById(storeID); + elLabelTD.innerHTML = ''; + elLabelTD.appendChild(elInput); + elLabelTD.appendChild(elSave); + elLabelTD.appendChild(elCancel); + elEdit.disabled = true; + elDelete.disabled = true; - if (!elStore) { return false; - } - - const postURL = atob(elStore.dataset.postback_url); - - // Find the UI elements - const elTR = that.parentElement.parentElement; - const credentialId = elTR.dataset.credential_id; - const elTDs = elTR.querySelectorAll('td'); - const elButtonsTD = elTDs[1]; - const elButtons = elButtonsTD.querySelectorAll('button'); - const elEdit = elButtons[0]; - const elDelete = elButtons[1]; - - elEdit.disabled = true; - elDelete.disabled = true; - - // Delete the record - const postBackData = { - option: 'com_ajax', - group: 'system', - plugin: 'webauthn', - format: 'json', - encoding: 'json', - akaction: 'delete', - credential_id: credentialId, }; - Joomla.request({ - url: postURL, - method: 'POST', - data: plgSystemWebauthnInterpolateParameters(postBackData), - onSuccess(rawResponse) { - let result = false; - - try { - result = JSON.parse(rawResponse); - } catch (e) { - result = (rawResponse === 'true'); - } + /** + * Delete button + * + * @param {Element} that The button being clicked + * @param {String} storeID CSS ID for the element storing the configuration in its data + * properties + */ + // eslint-disable-next-line no-unused-vars + Joomla.plgSystemWebauthnDelete = (that, storeID) => { + // Extract the configuration from the store + const elStore = document.getElementById(storeID); + + if (!elStore) { + return false; + } + + const postURL = atob(elStore.dataset.postback_url); + + // Find the UI elements + const elTR = that.parentElement.parentElement; + const credentialId = elTR.dataset.credential_id; + const elTDs = elTR.querySelectorAll('td'); + const elButtonsTD = elTDs[1]; + const elButtons = elButtonsTD.querySelectorAll('button'); + const elEdit = elButtons[0]; + const elDelete = elButtons[1]; + + elEdit.disabled = true; + elDelete.disabled = true; + + // Delete the record + const postBackData = { + option: 'com_ajax', + group: 'system', + plugin: 'webauthn', + format: 'json', + encoding: 'json', + akaction: 'delete', + credential_id: credentialId, + }; + + Joomla.request({ + url: postURL, + method: 'POST', + data: interpolateParameters(postBackData), + onSuccess(rawResponse) { + let result = false; + + try { + result = JSON.parse(rawResponse); + } catch (e) { + result = (rawResponse === 'true'); + } + + if (result !== true) { + handleCreationError( + Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_NOT_DELETED'), + ); - if (result !== true) { - plgSystemWebauthnHandleCreationError( - Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_NOT_DELETED'), + return; + } + + elTR.parentElement.removeChild(elTR); + }, + onError: (xhr) => { + elEdit.disabled = false; + elDelete.disabled = false; + handleCreationError( + `${Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_NOT_DELETED') + } -- ${xhr.status} ${xhr.statusText}`, ); + }, + }); - return; - } + return false; + }; - elTR.parentElement.removeChild(elTR); - }, - onError: (xhr) => { - elEdit.disabled = false; - elDelete.disabled = false; - plgSystemWebauthnHandleCreationError( - `${Joomla.JText._('PLG_SYSTEM_WEBAUTHN_ERR_NOT_DELETED') - } -- ${xhr.status} ${xhr.statusText}`, - ); - }, - }); + document.addEventListener('DOMContentLoaded', () => { + const addButton = document.getElementById('plg_system_webauthn-manage-add'); + if (addButton) { + addButton.addEventListener('click', ({ currentTarget }) => { + Joomla.plgSystemWebauthnCreateCredentials(currentTarget.getAttribute('data-random-id'), '#plg_system_webauthn-management-interface'); + }); + } + + const editLabelButtons = [].slice.call(document.querySelectorAll('.plg_system_webauthn-manage-edit')); + if (editLabelButtons.length) { + editLabelButtons.forEach((button) => { + button.addEventListener('click', ({ currentTarget }) => { + Joomla.plgSystemWebauthnEditLabel(currentTarget, currentTarget.getAttribute('data-random-id')); + }); + }); + } - return false; -} + const deleteButtons = [].slice.call(document.querySelectorAll('.plg_system_webauthn-manage-delete')); + if (deleteButtons.length) { + deleteButtons.forEach((button) => { + button.addEventListener('click', ({ currentTarget }) => { + Joomla.plgSystemWebauthnDelete(currentTarget, currentTarget.getAttribute('data-random-id')); + }); + }); + } + }); +})(window, Joomla); diff --git a/components/com_config/src/Model/FormModel.php b/components/com_config/src/Model/FormModel.php index 0b4faa43232f4..f6b2748d4be13 100644 --- a/components/com_config/src/Model/FormModel.php +++ b/components/com_config/src/Model/FormModel.php @@ -62,7 +62,7 @@ public function checkin($pk = null) } // Check if this is the user has previously checked out the row. - if ($table->checked_out > 0 && $table->checked_out != $user->get('id') && !$user->authorise('core.admin', 'com_checkin')) + if (!is_null($table->checked_out) && $table->checked_out != $user->get('id') && !$user->authorise('core.admin', 'com_checkin')) { throw new \RuntimeException($table->getError()); } @@ -102,7 +102,7 @@ public function checkout($pk = null) } // Check if this is the user having previously checked out the row. - if ($table->checked_out > 0 && $table->checked_out != $user->get('id')) + if (!is_null($table->checked_out) && $table->checked_out != $user->get('id')) { throw new \RuntimeException(Text::_('JLIB_APPLICATION_ERROR_CHECKOUT_USER_MISMATCH')); } diff --git a/components/com_content/forms/article.xml b/components/com_content/forms/article.xml index 953761738838e..5925c669907f5 100644 --- a/components/com_content/forms/article.xml +++ b/components/com_content/forms/article.xml @@ -55,12 +55,17 @@ /> + name="state" + type="list" + label="JSTATUS" + class="custom-select-color-state" + size="1" + default="1" + > + + + + year($db->quoteName('c.created')); $query->select('DISTINCT ' . $years) - ->from( - [ - $db->quoteName('#__content', 'c'), - $db->quoteName('#__workflow_associations', 'wa'), - $db->quoteName('#__workflow_stages', 'ws'), - ] - ) - ->where( - [ - $db->quoteName('c.id') . ' = ' . $db->quoteName('wa.item_id'), - $db->quoteName('ws.id') . ' = ' . $db->quoteName('wa.stage_id'), - $db->quoteName('ws.condition') . ' = ' . ContentComponent::CONDITION_ARCHIVED, - ] - ) + ->from($db->quoteName('#__content', 'c')) + ->where($db->quoteName('c.state') . ' = ' . ContentComponent::CONDITION_ARCHIVED) ->extendWhere( 'AND', [ diff --git a/components/com_content/src/Model/ArticleModel.php b/components/com_content/src/Model/ArticleModel.php index 784891a857743..25093f1a12b99 100644 --- a/components/com_content/src/Model/ArticleModel.php +++ b/components/com_content/src/Model/ArticleModel.php @@ -138,7 +138,6 @@ public function getItem($pk = null) [ $db->quoteName('fp.featured_up'), $db->quoteName('fp.featured_down'), - $db->quoteName('ws.condition'), $db->quoteName('c.title', 'category_title'), $db->quoteName('c.alias', 'category_alias'), $db->quoteName('c.access', 'category_access'), @@ -156,16 +155,6 @@ public function getItem($pk = null) ] ) ->from($db->quoteName('#__content', 'a')) - ->join( - 'INNER', - $db->quoteName('#__workflow_associations', 'wa'), - $db->quoteName('a.id') . ' = ' . $db->quoteName('wa.item_id') - ) - ->join( - 'INNER', - $db->quoteName('#__workflow_stages', 'ws'), - $db->quoteName('wa.stage_id') . ' = ' . $db->quoteName('ws.id') - ) ->join( 'INNER', $db->quoteName('#__categories', 'c'), @@ -178,7 +167,6 @@ public function getItem($pk = null) ->where( [ $db->quoteName('a.id') . ' = :pk', - $db->quoteName('wa.extension') . ' = ' . $db->quote('com_content'), $db->quoteName('c.published') . ' > 0', ] ) @@ -222,7 +210,7 @@ public function getItem($pk = null) if (is_numeric($published)) { - $query->whereIn($db->quoteName('ws.condition'), [(int) $published, (int) $archived]); + $query->whereIn($db->quoteName('a.state'), [(int) $published, (int) $archived]); } $db->setQuery($query); @@ -235,7 +223,7 @@ public function getItem($pk = null) } // Check for published state if filter set. - if ((is_numeric($published) || is_numeric($archived)) && ($data->condition != $published && $data->condition != $archived)) + if ((is_numeric($published) || is_numeric($archived)) && ($data->state != $published && $data->state != $archived)) { throw new \Exception(Text::_('COM_CONTENT_ERROR_ARTICLE_NOT_FOUND'), 404); } diff --git a/components/com_content/src/Model/ArticlesModel.php b/components/com_content/src/Model/ArticlesModel.php index 3d264aff723a2..99593851a2386 100644 --- a/components/com_content/src/Model/ArticlesModel.php +++ b/components/com_content/src/Model/ArticlesModel.php @@ -52,7 +52,6 @@ public function __construct($config = array()) 'checked_out_time', 'a.checked_out_time', 'catid', 'a.catid', 'category_title', 'state', 'a.state', - 'stage_condition', 'ws.condition', 'access', 'a.access', 'access_level', 'created', 'a.created', 'created_by', 'a.created_by', @@ -243,13 +242,10 @@ protected function getListQuery() [ $db->quoteName('fp.featured_up'), $db->quoteName('fp.featured_down'), - $db->quoteName('wa.stage_id', 'stage_id'), - $db->quoteName('ws.title', 'state_title'), - $db->quoteName('ws.condition', 'stage_condition'), // Published/archived article in archived category is treated as archived article. If category is not published then force 0. - 'CASE WHEN ' . $db->quoteName('c.published') . ' = 2 AND ' . $db->quoteName('ws.condition') . ' > 0 THEN ' . $conditionArchived + 'CASE WHEN ' . $db->quoteName('c.published') . ' = 2 AND ' . $db->quoteName('a.state') . ' > 0 THEN ' . $conditionArchived . ' WHEN ' . $db->quoteName('c.published') . ' != 1 THEN ' . $conditionUnpublished - . ' ELSE ' . $db->quoteName('ws.condition') . ' END AS ' . $db->quoteName('state'), + . ' ELSE ' . $db->quoteName('a.state') . ' END AS ' . $db->quoteName('state'), $db->quoteName('c.title', 'category_title'), $db->quoteName('c.path', 'category_route'), $db->quoteName('c.access', 'category_access'), @@ -270,8 +266,6 @@ protected function getListQuery() ] ) ->from($db->quoteName('#__content', 'a')) - ->join('LEFT', $db->quoteName('#__workflow_associations', 'wa'), $db->quoteName('wa.item_id') . ' = ' . $db->quoteName('a.id')) - ->join('LEFT', $db->quoteName('#__workflow_stages', 'ws'), $db->quoteName('ws.id') . ' = ' . $db->quoteName('wa.stage_id')) ->join('LEFT', $db->quoteName('#__categories', 'c'), $db->quoteName('c.id') . ' = ' . $db->quoteName('a.catid')) ->join('LEFT', $db->quoteName('#__users', 'ua'), $db->quoteName('ua.id') . ' = ' . $db->quoteName('a.created_by')) ->join('LEFT', $db->quoteName('#__users', 'uam'), $db->quoteName('uam.id') . ' = ' . $db->quoteName('a.modified_by')) @@ -327,7 +321,7 @@ protected function getListQuery() // Filter by access level. if ($this->getState('filter.access', true)) { - $groups = $user->getAuthorisedViewLevels(); + $groups = $this->getState('filter.viewlevels', $user->getAuthorisedViewLevels()); $query->whereIn($db->quoteName('a.access'), $groups) ->whereIn($db->quoteName('c.access'), $groups); } @@ -341,8 +335,8 @@ protected function getListQuery() * If category is archived then article has to be published or archived. * Or categogy is published then article has to be archived. */ - $query->where('((' . $db->quoteName('c.published') . ' = 2 AND ' . $db->quoteName('ws.condition') . ' > :conditionUnpublished)' - . ' OR (' . $db->quoteName('c.published') . ' = 1 AND ' . $db->quoteName('ws.condition') . ' = :conditionArchived))' + $query->where('((' . $db->quoteName('c.published') . ' = 2 AND ' . $db->quoteName('a.state') . ' > :conditionUnpublished)' + . ' OR (' . $db->quoteName('c.published') . ' = 1 AND ' . $db->quoteName('a.state') . ' = :conditionArchived))' ) ->bind(':conditionUnpublished', $conditionUnpublished, ParameterType::INTEGER) ->bind(':conditionArchived', $conditionArchived, ParameterType::INTEGER); @@ -352,14 +346,14 @@ protected function getListQuery() $condition = (int) $condition; // Category has to be published - $query->where($db->quoteName('c.published') . ' = 1 AND ' . $db->quoteName('ws.condition') . ' = :wsCondition') - ->bind(':wsCondition', $condition, ParameterType::INTEGER); + $query->where($db->quoteName('c.published') . ' = 1 AND ' . $db->quoteName('a.state') . ' = :condition') + ->bind(':condition', $condition, ParameterType::INTEGER); } elseif (is_array($condition)) { // Category has to be published $query->where( - $db->quoteName('c.published') . ' = 1 AND ' . $db->quoteName('ws.condition') + $db->quoteName('c.published') . ' = 1 AND ' . $db->quoteName('a.state') . ' IN (' . implode(',', $query->bindArray($condition)) . ')' ); } diff --git a/components/com_content/src/Model/CategoryModel.php b/components/com_content/src/Model/CategoryModel.php index 0f7945a2b3bac..28108621ecbaa 100644 --- a/components/com_content/src/Model/CategoryModel.php +++ b/components/com_content/src/Model/CategoryModel.php @@ -173,7 +173,7 @@ protected function populateState($ordering = null, $direction = null) } else { - $this->setState('filter.condition', array(0, 1)); + $this->setState('filter.condition', [0, 1]); } // Process show_noauth parameter diff --git a/components/com_content/src/Model/FeaturedModel.php b/components/com_content/src/Model/FeaturedModel.php index f81533535272b..2a39b46dc1a62 100644 --- a/components/com_content/src/Model/FeaturedModel.php +++ b/components/com_content/src/Model/FeaturedModel.php @@ -84,7 +84,7 @@ protected function populateState($ordering = null, $direction = null) } else { - $this->setState('filter.condition', array(ContentComponent::CONDITION_UNPUBLISHED, ContentComponent::CONDITION_PUBLISHED)); + $this->setState('filter.condition', [ContentComponent::CONDITION_UNPUBLISHED, ContentComponent::CONDITION_PUBLISHED]); } // Process show_noauth parameter diff --git a/components/com_content/tmpl/article/default.php b/components/com_content/tmpl/article/default.php index e0dc72cb9a08b..3b54c1c4f2581 100644 --- a/components/com_content/tmpl/article/default.php +++ b/components/com_content/tmpl/article/default.php @@ -53,7 +53,7 @@

escape($this->item->title); ?>

- item->condition == ContentComponent::CONDITION_UNPUBLISHED) : ?> + item->state == ContentComponent::CONDITION_UNPUBLISHED) : ?> item->publish_up) > strtotime(Factory::getDate())) : ?> diff --git a/components/com_content/tmpl/category/blog_item.php b/components/com_content/tmpl/category/blog_item.php index 684404121ca6d..d2c07719042aa 100644 --- a/components/com_content/tmpl/category/blog_item.php +++ b/components/com_content/tmpl/category/blog_item.php @@ -30,7 +30,7 @@ item); ?>
- item->stage_condition == ContentComponent::CONDITION_UNPUBLISHED || strtotime($this->item->publish_up) > strtotime(Factory::getDate()) + item->state == ContentComponent::CONDITION_UNPUBLISHED || strtotime($this->item->publish_up) > strtotime(Factory::getDate()) || (!is_null($this->item->publish_down) && strtotime($this->item->publish_down) < strtotime(Factory::getDate()))) : ?>
@@ -86,7 +86,7 @@ - item->stage_condition == ContentComponent::CONDITION_UNPUBLISHED || strtotime($this->item->publish_up) > strtotime(Factory::getDate()) + item->state == ContentComponent::CONDITION_UNPUBLISHED || strtotime($this->item->publish_up) > strtotime(Factory::getDate()) || (!is_null($this->item->publish_down) && strtotime($this->item->publish_down) < strtotime(Factory::getDate()))) : ?>
diff --git a/components/com_content/tmpl/category/default_articles.php b/components/com_content/tmpl/category/default_articles.php index 522fd600e0b11..829fdd0660b50 100644 --- a/components/com_content/tmpl/category/default_articles.php +++ b/components/com_content/tmpl/category/default_articles.php @@ -180,7 +180,7 @@