diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md index 93371ef5fbd9a235b2aeadff146de809bff2af98..7819536eaf89e9a67ebb057c36258632c848258d 100644 --- a/DEPENDENCIES.md +++ b/DEPENDENCIES.md @@ -39,8 +39,6 @@ Javascript dependencies: ([MIT License](https://github.com/rollup/rollup/blob/master/LICENSE.md)) - [tailwindcss](https://tailwindcss.com/) ([MIT License](https://github.com/tailwindcss/tailwindcss/blob/master/LICENSE)) -- [ProseMirror](https://prosemirror.net/) - ([MIT License](https://github.com/ProseMirror/prosemirror/blob/master/LICENSE)) - [amCharts 4](https://github.com/amcharts/amcharts4) ([Free amCharts license](https://github.com/amcharts/amcharts4/blob/master/dist/script/LICENSE)) - [Choices.js](https://joshuajohnson.co.uk/Choices/) diff --git a/app/Helpers/form_helper.php b/app/Helpers/form_helper.php index e80bfd40fc0cb41b5af05ebeb46836b8cf451eec..49eb58026921d8e88cfcd5be52e0fc4b8cc35520 100644 --- a/app/Helpers/form_helper.php +++ b/app/Helpers/form_helper.php @@ -226,7 +226,8 @@ if (! function_exists('form_dropdown')) { } $form .= "</optgroup>\n"; } else { - $form .= '<option value="' . htmlspecialchars($key) . '"' + /** @noRector RecastingRemovalRector */ + $form .= '<option value="' . htmlspecialchars((string) $key) . '"' . (in_array($key, $selected, true) ? ' selected="selected"' : '') . '>' . $val . "</option>\n"; } diff --git a/app/Helpers/rss_helper.php b/app/Helpers/rss_helper.php index 8ef681922dfc34e320747c93a718b3238c90c781..764c3bf320b8580ca73a657a89d2be8cf6dacae7 100644 --- a/app/Helpers/rss_helper.php +++ b/app/Helpers/rss_helper.php @@ -51,7 +51,7 @@ if (! function_exists('get_rss_feed')) { $channel->addChild('docs', 'https://cyber.harvard.edu/rss/rss.html'); $channel->addChild('guid', $podcast->guid, $podcastNamespace); - $channel->addChild('title', $podcast->title); + $channel->addChild('title', $podcast->title, null, false); $channel->addChildWithCDATA('description', $podcast->description_html); $itunesImage = $channel->addChild('image', null, $itunesNamespace); @@ -189,7 +189,7 @@ if (! function_exists('get_rss_feed')) { $image = $channel->addChild('image'); $image->addChild('url', $podcast->image->feed_url); - $image->addChild('title', $podcast->title); + $image->addChild('title', $podcast->title, null, false); $image->addChild('link', $podcast->link); if ($podcast->custom_rss !== null) { @@ -200,7 +200,7 @@ if (! function_exists('get_rss_feed')) { foreach ($episodes as $episode) { $item = $channel->addChild('item'); - $item->addChild('title', $episode->title); + $item->addChild('title', $episode->title, null, false); $enclosure = $item->addChild('enclosure'); $enclosure->addAttribute( diff --git a/app/Libraries/SimpleRSSElement.php b/app/Libraries/SimpleRSSElement.php index 84944700ce102b0998d39ac7d094194d67036ed8..8378c052a6578c4491a4bca4bb9369ae048ba239 100644 --- a/app/Libraries/SimpleRSSElement.php +++ b/app/Libraries/SimpleRSSElement.php @@ -29,8 +29,12 @@ class SimpleRSSElement extends SimpleXMLElement if ($newChild !== null) { $node = dom_import_simplexml($newChild); - $no = $node->ownerDocument; - $node->appendChild($no->createCDATASection($value)); + if ($node !== null) { + $no = $node->ownerDocument; + if ($no !== null) { + $node->appendChild($no->createCDATASection($value)); + } + } } return $newChild; @@ -43,17 +47,29 @@ class SimpleRSSElement extends SimpleXMLElement * @param string $name — The name of the child element to add. * @param string $value — [optional] If specified, the value of the child element. * @param string $namespace [optional] If specified, the namespace to which the child element belongs. + * @param boolean $escape [optional] The value is escaped by default, can be set to false. * * @return static The addChild method returns a SimpleXMLElement object representing the child added to the XML node. */ - public function addChild($name, $value = null, $namespace = null) + public function addChild($name, $value = null, $namespace = null, $escape = true) { $newChild = parent::addChild($name, '', $namespace); if ($newChild !== null) { $node = dom_import_simplexml($newChild); - $no = $node->ownerDocument; - $node->appendChild($no->createTextNode((string) esc($value))); + if ($node !== null) { + $no = $node->ownerDocument; + $value = $escape ? esc($value ?? '') : $value ?? ''; + if ($no === null) { + return $newChild; + } + if (is_array($value)) { + return $newChild; + } + /** @noRector RecastingRemovalRector */ + $node->appendChild($no->createTextNode((string) $value)); + return $newChild; + } } return $newChild; diff --git a/app/Resources/js/typings.d.ts b/app/Resources/js/typings.d.ts index fe9d4f5119ca50b95ca2fae5955c780d4d209d9c..f850e707d0aa27627a8ae931fb502ac4755d4556 100644 --- a/app/Resources/js/typings.d.ts +++ b/app/Resources/js/typings.d.ts @@ -1,3 +1 @@ -declare module "prosemirror-markdown"; -declare module "prosemirror-example-setup"; declare module "leaflet.markercluster"; diff --git a/app/Resources/types/js/admin.d.ts b/app/Resources/types/js/admin.d.ts deleted file mode 100644 index 4efc2a2c3d7fde1cd74eba27d254dee989845811..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/admin.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import "@github/markdown-toolbar-element"; -import "./modules/markdown-preview"; -import "./modules/markdown-write-preview"; diff --git a/app/Resources/types/js/charts.d.ts b/app/Resources/types/js/charts.d.ts deleted file mode 100644 index c3fee8a1756492cfc0126938267cc56720202a8a..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/charts.d.ts +++ /dev/null @@ -1 +0,0 @@ -import "core-js"; diff --git a/app/Resources/types/js/install.d.ts b/app/Resources/types/js/install.d.ts deleted file mode 100644 index cb0ff5c3b541f646105198ee23ac0fc3d805023e..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/install.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/app/Resources/types/js/map.d.ts b/app/Resources/types/js/map.d.ts deleted file mode 100644 index c3fee8a1756492cfc0126938267cc56720202a8a..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/map.d.ts +++ /dev/null @@ -1 +0,0 @@ -import "core-js"; diff --git a/app/Resources/types/js/modules/Charts.d.ts b/app/Resources/types/js/modules/Charts.d.ts deleted file mode 100644 index 2e5108cffcd5b9cc4e9d47df8cb58165bc8c67eb..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Charts.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const DrawCharts: () => void; -export default DrawCharts; diff --git a/app/Resources/types/js/modules/ClientTimezone.d.ts b/app/Resources/types/js/modules/ClientTimezone.d.ts deleted file mode 100644 index 344446323e4aa35c94e30e1aa1f632dc982edf8f..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/ClientTimezone.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const ClientTimezone: () => void; -export default ClientTimezone; diff --git a/app/Resources/types/js/modules/Clipboard.d.ts b/app/Resources/types/js/modules/Clipboard.d.ts deleted file mode 100644 index 9500a96e980fe04a8e93ffa670c5312bc68149f8..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Clipboard.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const Clipboard: () => void; -export default Clipboard; diff --git a/app/Resources/types/js/modules/DateTimePicker.d.ts b/app/Resources/types/js/modules/DateTimePicker.d.ts deleted file mode 100644 index 9612d4033c9c1bf70706feffbcf577354161a282..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/DateTimePicker.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import "flatpickr/dist/flatpickr.min.css"; -declare const DateTimePicker: () => void; -export default DateTimePicker; diff --git a/app/Resources/types/js/modules/Dropdown.d.ts b/app/Resources/types/js/modules/Dropdown.d.ts deleted file mode 100644 index 5395e5640d74e9802c73140ca8fc81b540ef64a7..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Dropdown.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const Dropdown: () => void; -export default Dropdown; diff --git a/app/Resources/types/js/modules/EpisodesMap.d.ts b/app/Resources/types/js/modules/EpisodesMap.d.ts deleted file mode 100644 index 67f900a5f7db1298e7bcfe5f4d8424644144efdc..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/EpisodesMap.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import "leaflet.markercluster/dist/MarkerCluster.css"; -import "leaflet.markercluster/dist/MarkerCluster.Default.css"; -import "leaflet/dist/leaflet.css"; -declare const DrawEpisodesMaps: () => void; -export default DrawEpisodesMaps; diff --git a/app/Resources/types/js/modules/Map.d.ts b/app/Resources/types/js/modules/Map.d.ts deleted file mode 100644 index 4fe78599f5153026ab288aee08be606ecb979850..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Map.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const DrawMaps: () => void; -export default DrawMaps; diff --git a/app/Resources/types/js/modules/Modal.d.ts b/app/Resources/types/js/modules/Modal.d.ts deleted file mode 100644 index 99d06ce4104272ecc14e036084784bce849d9977..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Modal.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const Modal: () => void; -export default Modal; diff --git a/app/Resources/types/js/modules/MultiSelect.d.ts b/app/Resources/types/js/modules/MultiSelect.d.ts deleted file mode 100644 index 0f708a2470ad8c3a54620981abb9637d3019d834..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/MultiSelect.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const MultiSelect: () => void; -export default MultiSelect; diff --git a/app/Resources/types/js/modules/PublishMessageWarning.d.ts b/app/Resources/types/js/modules/PublishMessageWarning.d.ts deleted file mode 100644 index c9a7b80fcc2a0f79803394371d8917ad09cde71a..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/PublishMessageWarning.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const PublishMessageWarning: () => void; -export default PublishMessageWarning; diff --git a/app/Resources/types/js/modules/Select.d.ts b/app/Resources/types/js/modules/Select.d.ts deleted file mode 100644 index a1bd61c89001b2ed3491f90f5f9c5dfedef288ab..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Select.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const Select: () => void; -export default Select; diff --git a/app/Resources/types/js/modules/SidebarToggler.d.ts b/app/Resources/types/js/modules/SidebarToggler.d.ts deleted file mode 100644 index 53739967ef90d3749ca9a09b7222bc88b2d368ae..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/SidebarToggler.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const SidebarToggler: () => void; -export default SidebarToggler; diff --git a/app/Resources/types/js/modules/Slugify.d.ts b/app/Resources/types/js/modules/Slugify.d.ts deleted file mode 100644 index 532945fd78b828b6dade63e14add863b5848f764..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Slugify.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const Slugify: () => void; -export default Slugify; diff --git a/app/Resources/types/js/modules/Soundbites.d.ts b/app/Resources/types/js/modules/Soundbites.d.ts deleted file mode 100644 index b35a42567dfddc995e17702703f766a2a402f7e7..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Soundbites.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const Soundbites: () => void; -export default Soundbites; diff --git a/app/Resources/types/js/modules/ThemePicker.d.ts b/app/Resources/types/js/modules/ThemePicker.d.ts deleted file mode 100644 index 385f044b81999ce4907ec42d5a1e09953128fe40..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/ThemePicker.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const ThemePicker: () => void; -export default ThemePicker; diff --git a/app/Resources/types/js/modules/Time.d.ts b/app/Resources/types/js/modules/Time.d.ts deleted file mode 100644 index e04a63d4c015bbdbf4b50a65f1c40fa7535c1222..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Time.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const Time: () => void; -export default Time; diff --git a/app/Resources/types/js/modules/Toggler.d.ts b/app/Resources/types/js/modules/Toggler.d.ts deleted file mode 100644 index 3157ee548480f49288af19b4994b288f2592b487..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Toggler.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const Toggler: () => void; -export default Toggler; diff --git a/app/Resources/types/js/modules/Tooltip.d.ts b/app/Resources/types/js/modules/Tooltip.d.ts deleted file mode 100644 index d733d7a310ca0b51fba5a650ff9bce7551cc24fb..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/Tooltip.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const Tooltip: () => void; -export default Tooltip; diff --git a/app/Resources/types/js/modules/markdown-preview.d.ts b/app/Resources/types/js/modules/markdown-preview.d.ts deleted file mode 100644 index 2132ecefd180b001b4e1fd0bbd81d564052cfa60..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/markdown-preview.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import MarkdownToolbarElement from "@github/markdown-toolbar-element"; -import { LitElement, TemplateResult } from "lit"; -export declare class MarkdownPreview extends LitElement { - for: string; - _textarea: HTMLTextAreaElement; - _markdownToolbar: MarkdownToolbarElement; - _show: boolean; - connectedCallback(): void; - hide(): void; - show(): void; - markdownToHtml(): string; - render(): TemplateResult<1>; -} diff --git a/app/Resources/types/js/modules/markdown-write-preview.d.ts b/app/Resources/types/js/modules/markdown-write-preview.d.ts deleted file mode 100644 index 1f646a9bd14830d2d2171765ad30037c6bab0485..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/modules/markdown-write-preview.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { LitElement, TemplateResult } from "lit"; -import { MarkdownPreview } from "./markdown-preview"; -export declare class MarkdownWritePreview extends LitElement { - for: string; - _textarea: HTMLTextAreaElement | null; - _markdownPreview: MarkdownPreview; - _write: NodeListOf<HTMLButtonElement>; - _preview: NodeListOf<HTMLButtonElement>; - connectedCallback(): void; - write(): void; - preview(): void; - render(): TemplateResult<1>; -} diff --git a/app/Resources/types/js/podcast.d.ts b/app/Resources/types/js/podcast.d.ts deleted file mode 100644 index cb0ff5c3b541f646105198ee23ac0fc3d805023e..0000000000000000000000000000000000000000 --- a/app/Resources/types/js/podcast.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/tsconfig.json b/tsconfig.json index 5f495c6b050db12ff9e4871d61deb52cdf4eab8f..b56093e0df1a007d0ec979d70c3b8787dd4800ab 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,15 +2,8 @@ "compilerOptions": { /* Basic Options */ "module": "esnext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, - "lib": [ - "DOM", - "DOM.Iterable", - "ESNext" - ] /* Specify library files to be included in the compilation. */, - "declaration": true, - "emitDeclarationOnly": true, - "outDir": "app/Resources/types", - "rootDir": "app/Resources", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "noEmit": true, /* Strict Type-Checking Options */ "strict": true /* Enable all strict type-checking options. */,