├── .editorconfig
├── .env.example
├── .gitattributes
├── .gitignore
├── LICENSE.md
├── README.md
├── blueprints
├── blocks
│ └── mux-video.yml
└── files
│ └── mux-video.yml
├── classes
└── KirbyMux
│ ├── Auth.php
│ └── Methods.php
├── composer.json
├── composer.lock
├── index.css
├── index.js
├── index.php
├── package-lock.json
├── package.json
├── src
├── components
│ ├── VideoBlock.vue
│ └── VideoPlayer.vue
└── index.js
└── vendor
├── autoload.php
├── composer
├── ClassLoader.php
├── InstalledVersions.php
├── autoload_classmap.php
├── autoload_files.php
├── autoload_namespaces.php
├── autoload_psr4.php
├── autoload_real.php
├── autoload_static.php
├── installed.php
└── platform_check.php
├── getkirby
└── cms
│ ├── assets
│ └── whoops.css
│ ├── bootstrap.php
│ ├── cacert.pem
│ ├── composer.lock
│ ├── config
│ ├── aliases.php
│ ├── api
│ │ ├── authentication.php
│ │ ├── collections.php
│ │ ├── models.php
│ │ ├── models
│ │ │ ├── File.php
│ │ │ ├── FileBlueprint.php
│ │ │ ├── FileVersion.php
│ │ │ ├── Language.php
│ │ │ ├── Page.php
│ │ │ ├── PageBlueprint.php
│ │ │ ├── Role.php
│ │ │ ├── Site.php
│ │ │ ├── SiteBlueprint.php
│ │ │ ├── System.php
│ │ │ ├── Translation.php
│ │ │ ├── User.php
│ │ │ └── UserBlueprint.php
│ │ ├── routes.php
│ │ └── routes
│ │ │ ├── auth.php
│ │ │ ├── files.php
│ │ │ ├── languages.php
│ │ │ ├── lock.php
│ │ │ ├── pages.php
│ │ │ ├── roles.php
│ │ │ ├── site.php
│ │ │ ├── system.php
│ │ │ ├── translations.php
│ │ │ └── users.php
│ ├── areas
│ │ ├── account.php
│ │ ├── account
│ │ │ ├── dialogs.php
│ │ │ ├── dropdowns.php
│ │ │ └── views.php
│ │ ├── files
│ │ │ ├── dialogs.php
│ │ │ └── dropdowns.php
│ │ ├── installation.php
│ │ ├── languages.php
│ │ ├── languages
│ │ │ ├── dialogs.php
│ │ │ └── views.php
│ │ ├── login.php
│ │ ├── site.php
│ │ ├── site
│ │ │ ├── dialogs.php
│ │ │ ├── dropdowns.php
│ │ │ ├── searches.php
│ │ │ └── views.php
│ │ ├── system.php
│ │ ├── system
│ │ │ ├── dialogs.php
│ │ │ └── views.php
│ │ ├── users.php
│ │ └── users
│ │ │ ├── dialogs.php
│ │ │ ├── dropdowns.php
│ │ │ ├── searches.php
│ │ │ └── views.php
│ ├── blocks
│ │ ├── code
│ │ │ └── code.php
│ │ ├── gallery
│ │ │ └── gallery.php
│ │ ├── heading
│ │ │ └── heading.php
│ │ ├── image
│ │ │ └── image.php
│ │ ├── line
│ │ │ └── line.php
│ │ ├── list
│ │ │ └── list.php
│ │ ├── markdown
│ │ │ └── markdown.php
│ │ ├── quote
│ │ │ └── quote.php
│ │ ├── text
│ │ │ └── text.php
│ │ └── video
│ │ │ └── video.php
│ ├── components.php
│ ├── fields
│ │ ├── checkboxes.php
│ │ ├── date.php
│ │ ├── email.php
│ │ ├── files.php
│ │ ├── gap.php
│ │ ├── headline.php
│ │ ├── hidden.php
│ │ ├── info.php
│ │ ├── line.php
│ │ ├── list.php
│ │ ├── mixins
│ │ │ ├── datetime.php
│ │ │ ├── filepicker.php
│ │ │ ├── layout.php
│ │ │ ├── min.php
│ │ │ ├── options.php
│ │ │ ├── pagepicker.php
│ │ │ ├── picker.php
│ │ │ ├── upload.php
│ │ │ └── userpicker.php
│ │ ├── multiselect.php
│ │ ├── number.php
│ │ ├── pages.php
│ │ ├── radio.php
│ │ ├── range.php
│ │ ├── select.php
│ │ ├── slug.php
│ │ ├── structure.php
│ │ ├── tags.php
│ │ ├── tel.php
│ │ ├── text.php
│ │ ├── textarea.php
│ │ ├── time.php
│ │ ├── toggle.php
│ │ ├── url.php
│ │ ├── users.php
│ │ └── writer.php
│ ├── helpers.php
│ ├── methods.php
│ ├── presets
│ │ ├── files.php
│ │ ├── page.php
│ │ └── pages.php
│ ├── routes.php
│ ├── sections
│ │ ├── fields.php
│ │ ├── files.php
│ │ ├── info.php
│ │ ├── mixins
│ │ │ ├── empty.php
│ │ │ ├── headline.php
│ │ │ ├── help.php
│ │ │ ├── layout.php
│ │ │ ├── max.php
│ │ │ ├── min.php
│ │ │ ├── pagination.php
│ │ │ └── parent.php
│ │ └── pages.php
│ ├── setup.php
│ ├── tags.php
│ └── templates
│ │ └── emails
│ │ └── auth
│ │ ├── login.php
│ │ └── password-reset.php
│ ├── dependencies
│ ├── parsedown-extra
│ │ └── ParsedownExtra.php
│ ├── parsedown
│ │ └── Parsedown.php
│ └── spyc
│ │ └── Spyc.php
│ ├── kirby.pub
│ ├── panel
│ ├── dist
│ │ ├── apple-touch-icon.png
│ │ ├── css
│ │ │ └── style.css
│ │ ├── favicon.png
│ │ ├── favicon.svg
│ │ ├── img
│ │ │ └── icons.svg
│ │ └── js
│ │ │ ├── index.js
│ │ │ ├── plugins.js
│ │ │ └── vendor.js
│ ├── vite.config.js
│ └── vitest.setup.js
│ ├── router.php
│ ├── src
│ ├── Api
│ │ ├── Api.php
│ │ ├── Collection.php
│ │ └── Model.php
│ ├── Cache
│ │ ├── ApcuCache.php
│ │ ├── Cache.php
│ │ ├── FileCache.php
│ │ ├── MemCached.php
│ │ ├── MemoryCache.php
│ │ ├── NullCache.php
│ │ └── Value.php
│ ├── Cms
│ │ ├── Api.php
│ │ ├── App.php
│ │ ├── AppCaches.php
│ │ ├── AppErrors.php
│ │ ├── AppPlugins.php
│ │ ├── AppTranslations.php
│ │ ├── AppUsers.php
│ │ ├── Auth.php
│ │ ├── Auth
│ │ │ ├── Challenge.php
│ │ │ ├── EmailChallenge.php
│ │ │ └── Status.php
│ │ ├── Block.php
│ │ ├── BlockConverter.php
│ │ ├── Blocks.php
│ │ ├── Blueprint.php
│ │ ├── Collection.php
│ │ ├── Collections.php
│ │ ├── Content.php
│ │ ├── ContentLock.php
│ │ ├── ContentLocks.php
│ │ ├── ContentTranslation.php
│ │ ├── Core.php
│ │ ├── Email.php
│ │ ├── Event.php
│ │ ├── Field.php
│ │ ├── Fieldset.php
│ │ ├── Fieldsets.php
│ │ ├── File.php
│ │ ├── FileActions.php
│ │ ├── FileBlueprint.php
│ │ ├── FileModifications.php
│ │ ├── FilePermissions.php
│ │ ├── FilePicker.php
│ │ ├── FileRules.php
│ │ ├── FileVersion.php
│ │ ├── Files.php
│ │ ├── Find.php
│ │ ├── HasChildren.php
│ │ ├── HasFiles.php
│ │ ├── HasMethods.php
│ │ ├── HasSiblings.php
│ │ ├── Html.php
│ │ ├── Ingredients.php
│ │ ├── Item.php
│ │ ├── Items.php
│ │ ├── Language.php
│ │ ├── LanguageRouter.php
│ │ ├── LanguageRoutes.php
│ │ ├── LanguageRules.php
│ │ ├── Languages.php
│ │ ├── Layout.php
│ │ ├── LayoutColumn.php
│ │ ├── LayoutColumns.php
│ │ ├── Layouts.php
│ │ ├── Loader.php
│ │ ├── Media.php
│ │ ├── Model.php
│ │ ├── ModelPermissions.php
│ │ ├── ModelWithContent.php
│ │ ├── Nest.php
│ │ ├── NestCollection.php
│ │ ├── NestObject.php
│ │ ├── Page.php
│ │ ├── PageActions.php
│ │ ├── PageBlueprint.php
│ │ ├── PagePermissions.php
│ │ ├── PagePicker.php
│ │ ├── PageRules.php
│ │ ├── PageSiblings.php
│ │ ├── Pages.php
│ │ ├── Pagination.php
│ │ ├── Permissions.php
│ │ ├── Picker.php
│ │ ├── Plugin.php
│ │ ├── PluginAssets.php
│ │ ├── R.php
│ │ ├── Responder.php
│ │ ├── Response.php
│ │ ├── Role.php
│ │ ├── Roles.php
│ │ ├── S.php
│ │ ├── Search.php
│ │ ├── Section.php
│ │ ├── Site.php
│ │ ├── SiteActions.php
│ │ ├── SiteBlueprint.php
│ │ ├── SitePermissions.php
│ │ ├── SiteRules.php
│ │ ├── Structure.php
│ │ ├── StructureObject.php
│ │ ├── System.php
│ │ ├── Template.php
│ │ ├── Translation.php
│ │ ├── Translations.php
│ │ ├── Url.php
│ │ ├── User.php
│ │ ├── UserActions.php
│ │ ├── UserBlueprint.php
│ │ ├── UserPermissions.php
│ │ ├── UserPicker.php
│ │ ├── UserRules.php
│ │ ├── Users.php
│ │ └── Visitor.php
│ ├── Data
│ │ ├── Data.php
│ │ ├── Handler.php
│ │ ├── Json.php
│ │ ├── PHP.php
│ │ ├── Txt.php
│ │ ├── Xml.php
│ │ └── Yaml.php
│ ├── Database
│ │ ├── Database.php
│ │ ├── Db.php
│ │ ├── Query.php
│ │ ├── Sql.php
│ │ └── Sql
│ │ │ ├── Mysql.php
│ │ │ └── Sqlite.php
│ ├── Email
│ │ ├── Body.php
│ │ ├── Email.php
│ │ └── PHPMailer.php
│ ├── Exception
│ │ ├── BadMethodCallException.php
│ │ ├── DuplicateException.php
│ │ ├── ErrorPageException.php
│ │ ├── Exception.php
│ │ ├── InvalidArgumentException.php
│ │ ├── LogicException.php
│ │ ├── NotFoundException.php
│ │ └── PermissionException.php
│ ├── Filesystem
│ │ ├── Asset.php
│ │ ├── Dir.php
│ │ ├── F.php
│ │ ├── File.php
│ │ ├── Filename.php
│ │ ├── IsFile.php
│ │ └── Mime.php
│ ├── Form
│ │ ├── Field.php
│ │ ├── Field
│ │ │ ├── BlocksField.php
│ │ │ └── LayoutField.php
│ │ ├── FieldClass.php
│ │ ├── Fields.php
│ │ ├── Form.php
│ │ ├── Mixin
│ │ │ ├── EmptyState.php
│ │ │ ├── Max.php
│ │ │ └── Min.php
│ │ ├── Options.php
│ │ ├── OptionsApi.php
│ │ ├── OptionsQuery.php
│ │ └── Validations.php
│ ├── Http
│ │ ├── Cookie.php
│ │ ├── Exceptions
│ │ │ └── NextRouteException.php
│ │ ├── Header.php
│ │ ├── Idn.php
│ │ ├── Params.php
│ │ ├── Path.php
│ │ ├── Query.php
│ │ ├── Remote.php
│ │ ├── Request.php
│ │ ├── Request
│ │ │ ├── Auth
│ │ │ │ ├── BasicAuth.php
│ │ │ │ └── BearerAuth.php
│ │ │ ├── Body.php
│ │ │ ├── Data.php
│ │ │ ├── Files.php
│ │ │ └── Query.php
│ │ ├── Response.php
│ │ ├── Route.php
│ │ ├── Router.php
│ │ ├── Server.php
│ │ ├── Uri.php
│ │ ├── Url.php
│ │ └── Visitor.php
│ ├── Image
│ │ ├── Camera.php
│ │ ├── Darkroom.php
│ │ ├── Darkroom
│ │ │ ├── GdLib.php
│ │ │ └── ImageMagick.php
│ │ ├── Dimensions.php
│ │ ├── Exif.php
│ │ ├── Image.php
│ │ └── Location.php
│ ├── Panel
│ │ ├── Dialog.php
│ │ ├── Document.php
│ │ ├── Dropdown.php
│ │ ├── Field.php
│ │ ├── File.php
│ │ ├── Home.php
│ │ ├── Json.php
│ │ ├── Model.php
│ │ ├── Page.php
│ │ ├── Panel.php
│ │ ├── Plugins.php
│ │ ├── Redirect.php
│ │ ├── Search.php
│ │ ├── Site.php
│ │ ├── User.php
│ │ └── View.php
│ ├── Parsley
│ │ ├── Element.php
│ │ ├── Inline.php
│ │ ├── Parsley.php
│ │ ├── Schema.php
│ │ └── Schema
│ │ │ ├── Blocks.php
│ │ │ └── Plain.php
│ ├── Sane
│ │ ├── DomHandler.php
│ │ ├── Handler.php
│ │ ├── Html.php
│ │ ├── Sane.php
│ │ ├── Svg.php
│ │ ├── Svgz.php
│ │ └── Xml.php
│ ├── Session
│ │ ├── AutoSession.php
│ │ ├── FileSessionStore.php
│ │ ├── Session.php
│ │ ├── SessionData.php
│ │ ├── SessionStore.php
│ │ └── Sessions.php
│ ├── Text
│ │ ├── KirbyTag.php
│ │ ├── KirbyTags.php
│ │ ├── Markdown.php
│ │ └── SmartyPants.php
│ └── Toolkit
│ │ ├── A.php
│ │ ├── Collection.php
│ │ ├── Component.php
│ │ ├── Config.php
│ │ ├── Controller.php
│ │ ├── Date.php
│ │ ├── Dom.php
│ │ ├── Escape.php
│ │ ├── Facade.php
│ │ ├── Html.php
│ │ ├── I18n.php
│ │ ├── Iterator.php
│ │ ├── Locale.php
│ │ ├── Obj.php
│ │ ├── Pagination.php
│ │ ├── Properties.php
│ │ ├── Query.php
│ │ ├── Silo.php
│ │ ├── Str.php
│ │ ├── Tpl.php
│ │ ├── V.php
│ │ ├── View.php
│ │ └── Xml.php
│ └── views
│ ├── browser.php
│ ├── fatal.php
│ ├── panel.php
│ ├── php.php
│ └── snippets
│ ├── footer.php
│ └── header.php
├── graham-campbell
└── result-type
│ └── src
│ ├── Error.php
│ ├── Result.php
│ └── Success.php
├── guzzlehttp
├── guzzle
│ └── src
│ │ ├── BodySummarizer.php
│ │ ├── BodySummarizerInterface.php
│ │ ├── Client.php
│ │ ├── ClientInterface.php
│ │ ├── ClientTrait.php
│ │ ├── Cookie
│ │ ├── CookieJar.php
│ │ ├── CookieJarInterface.php
│ │ ├── FileCookieJar.php
│ │ ├── SessionCookieJar.php
│ │ └── SetCookie.php
│ │ ├── Exception
│ │ ├── BadResponseException.php
│ │ ├── ClientException.php
│ │ ├── ConnectException.php
│ │ ├── GuzzleException.php
│ │ ├── InvalidArgumentException.php
│ │ ├── RequestException.php
│ │ ├── ServerException.php
│ │ ├── TooManyRedirectsException.php
│ │ └── TransferException.php
│ │ ├── Handler
│ │ ├── CurlFactory.php
│ │ ├── CurlFactoryInterface.php
│ │ ├── CurlHandler.php
│ │ ├── CurlMultiHandler.php
│ │ ├── EasyHandle.php
│ │ ├── HeaderProcessor.php
│ │ ├── MockHandler.php
│ │ ├── Proxy.php
│ │ └── StreamHandler.php
│ │ ├── HandlerStack.php
│ │ ├── MessageFormatter.php
│ │ ├── MessageFormatterInterface.php
│ │ ├── Middleware.php
│ │ ├── Pool.php
│ │ ├── PrepareBodyMiddleware.php
│ │ ├── RedirectMiddleware.php
│ │ ├── RequestOptions.php
│ │ ├── RetryMiddleware.php
│ │ ├── TransferStats.php
│ │ ├── Utils.php
│ │ ├── functions.php
│ │ └── functions_include.php
├── promises
│ ├── Makefile
│ └── src
│ │ ├── AggregateException.php
│ │ ├── CancellationException.php
│ │ ├── Coroutine.php
│ │ ├── Create.php
│ │ ├── Each.php
│ │ ├── EachPromise.php
│ │ ├── FulfilledPromise.php
│ │ ├── Is.php
│ │ ├── Promise.php
│ │ ├── PromiseInterface.php
│ │ ├── PromisorInterface.php
│ │ ├── RejectedPromise.php
│ │ ├── RejectionException.php
│ │ ├── TaskQueue.php
│ │ ├── TaskQueueInterface.php
│ │ ├── Utils.php
│ │ ├── functions.php
│ │ └── functions_include.php
└── psr7
│ └── src
│ ├── AppendStream.php
│ ├── BufferStream.php
│ ├── CachingStream.php
│ ├── DroppingStream.php
│ ├── Exception
│ └── MalformedUriException.php
│ ├── FnStream.php
│ ├── Header.php
│ ├── HttpFactory.php
│ ├── InflateStream.php
│ ├── LazyOpenStream.php
│ ├── LimitStream.php
│ ├── Message.php
│ ├── MessageTrait.php
│ ├── MimeType.php
│ ├── MultipartStream.php
│ ├── NoSeekStream.php
│ ├── PumpStream.php
│ ├── Query.php
│ ├── Request.php
│ ├── Response.php
│ ├── Rfc7230.php
│ ├── ServerRequest.php
│ ├── Stream.php
│ ├── StreamDecoratorTrait.php
│ ├── StreamWrapper.php
│ ├── UploadedFile.php
│ ├── Uri.php
│ ├── UriNormalizer.php
│ ├── UriResolver.php
│ └── Utils.php
├── muxinc
└── mux-php
│ ├── MuxPhp
│ ├── Api
│ │ ├── AssetsApi.php
│ │ ├── DeliveryUsageApi.php
│ │ ├── DimensionsApi.php
│ │ ├── DirectUploadsApi.php
│ │ ├── ErrorsApi.php
│ │ ├── ExportsApi.php
│ │ ├── FiltersApi.php
│ │ ├── IncidentsApi.php
│ │ ├── LiveStreamsApi.php
│ │ ├── MetricsApi.php
│ │ ├── PlaybackIDApi.php
│ │ ├── PlaybackRestrictionsApi.php
│ │ ├── RealTimeApi.php
│ │ ├── URLSigningKeysApi.php
│ │ └── VideoViewsApi.php
│ ├── ApiException.php
│ ├── Configuration.php
│ ├── HeaderSelector.php
│ ├── Models
│ │ ├── AbridgedVideoView.php
│ │ ├── Asset.php
│ │ ├── AssetErrors.php
│ │ ├── AssetMaster.php
│ │ ├── AssetNonStandardInputReasons.php
│ │ ├── AssetRecordingTimes.php
│ │ ├── AssetResponse.php
│ │ ├── AssetStaticRenditions.php
│ │ ├── AssetStaticRenditionsFiles.php
│ │ ├── BreakdownValue.php
│ │ ├── CreateAssetRequest.php
│ │ ├── CreateLiveStreamRequest.php
│ │ ├── CreatePlaybackIDRequest.php
│ │ ├── CreatePlaybackIDResponse.php
│ │ ├── CreatePlaybackRestrictionRequest.php
│ │ ├── CreateSimulcastTargetRequest.php
│ │ ├── CreateTrackRequest.php
│ │ ├── CreateTrackResponse.php
│ │ ├── CreateUploadRequest.php
│ │ ├── DeliveryReport.php
│ │ ├── DimensionValue.php
│ │ ├── DisableLiveStreamResponse.php
│ │ ├── EnableLiveStreamResponse.php
│ │ ├── Error.php
│ │ ├── ExportDate.php
│ │ ├── ExportFile.php
│ │ ├── FilterValue.php
│ │ ├── GetAssetInputInfoResponse.php
│ │ ├── GetAssetOrLiveStreamIdResponse.php
│ │ ├── GetAssetOrLiveStreamIdResponseData.php
│ │ ├── GetAssetOrLiveStreamIdResponseDataObject.php
│ │ ├── GetAssetPlaybackIDResponse.php
│ │ ├── GetLiveStreamPlaybackIDResponse.php
│ │ ├── GetMetricTimeseriesDataResponse.php
│ │ ├── GetOverallValuesResponse.php
│ │ ├── GetRealTimeBreakdownResponse.php
│ │ ├── GetRealTimeHistogramTimeseriesResponse.php
│ │ ├── GetRealTimeHistogramTimeseriesResponseMeta.php
│ │ ├── GetRealTimeTimeseriesResponse.php
│ │ ├── Incident.php
│ │ ├── IncidentBreakdown.php
│ │ ├── IncidentNotification.php
│ │ ├── IncidentNotificationRule.php
│ │ ├── IncidentResponse.php
│ │ ├── InputFile.php
│ │ ├── InputInfo.php
│ │ ├── InputSettings.php
│ │ ├── InputSettingsOverlaySettings.php
│ │ ├── InputTrack.php
│ │ ├── Insight.php
│ │ ├── ListAllMetricValuesResponse.php
│ │ ├── ListAssetsResponse.php
│ │ ├── ListBreakdownValuesResponse.php
│ │ ├── ListDeliveryUsageResponse.php
│ │ ├── ListDimensionValuesResponse.php
│ │ ├── ListDimensionsResponse.php
│ │ ├── ListErrorsResponse.php
│ │ ├── ListExportsResponse.php
│ │ ├── ListFilterValuesResponse.php
│ │ ├── ListFiltersResponse.php
│ │ ├── ListFiltersResponseData.php
│ │ ├── ListIncidentsResponse.php
│ │ ├── ListInsightsResponse.php
│ │ ├── ListLiveStreamsResponse.php
│ │ ├── ListPlaybackRestrictionsResponse.php
│ │ ├── ListRealTimeDimensionsResponse.php
│ │ ├── ListRealTimeDimensionsResponseData.php
│ │ ├── ListRealTimeMetricsResponse.php
│ │ ├── ListRelatedIncidentsResponse.php
│ │ ├── ListSigningKeysResponse.php
│ │ ├── ListUploadsResponse.php
│ │ ├── ListVideoViewExportsResponse.php
│ │ ├── ListVideoViewsResponse.php
│ │ ├── LiveStream.php
│ │ ├── LiveStreamEmbeddedSubtitleSettings.php
│ │ ├── LiveStreamResponse.php
│ │ ├── LiveStreamStatus.php
│ │ ├── Metric.php
│ │ ├── ModelInterface.php
│ │ ├── NotificationRule.php
│ │ ├── OverallValues.php
│ │ ├── PlaybackID.php
│ │ ├── PlaybackPolicy.php
│ │ ├── PlaybackRestriction.php
│ │ ├── PlaybackRestrictionResponse.php
│ │ ├── RealTimeBreakdownValue.php
│ │ ├── RealTimeHistogramTimeseriesBucket.php
│ │ ├── RealTimeHistogramTimeseriesBucketValues.php
│ │ ├── RealTimeHistogramTimeseriesDatapoint.php
│ │ ├── RealTimeTimeseriesDatapoint.php
│ │ ├── ReferrerDomainRestriction.php
│ │ ├── Score.php
│ │ ├── SignalLiveStreamCompleteResponse.php
│ │ ├── SigningKey.php
│ │ ├── SigningKeyResponse.php
│ │ ├── SimulcastTarget.php
│ │ ├── SimulcastTargetResponse.php
│ │ ├── Track.php
│ │ ├── UpdateAssetMP4SupportRequest.php
│ │ ├── UpdateAssetMasterAccessRequest.php
│ │ ├── UpdateAssetRequest.php
│ │ ├── UpdateLiveStreamEmbeddedSubtitlesRequest.php
│ │ ├── UpdateLiveStreamRequest.php
│ │ ├── UpdateReferrerDomainRestrictionRequest.php
│ │ ├── Upload.php
│ │ ├── UploadError.php
│ │ ├── UploadResponse.php
│ │ ├── VideoView.php
│ │ ├── VideoViewEvent.php
│ │ └── VideoViewResponse.php
│ └── ObjectSerializer.php
│ ├── gen
│ ├── Makefile
│ ├── templates
│ │ ├── ApiException.mustache
│ │ ├── Configuration.mustache
│ │ ├── HeaderSelector.mustache
│ │ ├── ModelInterface.mustache
│ │ ├── ObjectSerializer.mustache
│ │ ├── README.mustache
│ │ ├── api.mustache
│ │ ├── api_doc.mustache
│ │ ├── api_test.mustache
│ │ ├── composer.mustache
│ │ ├── git_push.sh.mustache
│ │ ├── gitignore
│ │ ├── model.mustache
│ │ ├── model_doc.mustache
│ │ ├── model_enum.mustache
│ │ ├── model_generic.mustache
│ │ ├── model_test.mustache
│ │ ├── partial_header.mustache
│ │ ├── php_doc_auth_partial.mustache
│ │ └── phpunit.xml.mustache
│ └── yarn.lock
│ └── test.sh
├── phpoption
└── phpoption
│ ├── Makefile
│ └── src
│ └── PhpOption
│ ├── LazyOption.php
│ ├── None.php
│ ├── Option.php
│ └── Some.php
├── psr
├── http-client
│ └── src
│ │ ├── ClientExceptionInterface.php
│ │ ├── ClientInterface.php
│ │ ├── NetworkExceptionInterface.php
│ │ └── RequestExceptionInterface.php
├── http-factory
│ └── src
│ │ ├── RequestFactoryInterface.php
│ │ ├── ResponseFactoryInterface.php
│ │ ├── ServerRequestFactoryInterface.php
│ │ ├── StreamFactoryInterface.php
│ │ ├── UploadedFileFactoryInterface.php
│ │ └── UriFactoryInterface.php
└── http-message
│ └── src
│ ├── MessageInterface.php
│ ├── RequestInterface.php
│ ├── ResponseInterface.php
│ ├── ServerRequestInterface.php
│ ├── StreamInterface.php
│ ├── UploadedFileInterface.php
│ └── UriInterface.php
├── ralouphie
└── getallheaders
│ └── src
│ └── getallheaders.php
├── symfony
├── deprecation-contracts
│ └── function.php
├── polyfill-ctype
│ ├── Ctype.php
│ ├── bootstrap.php
│ └── bootstrap80.php
├── polyfill-mbstring
│ ├── Mbstring.php
│ ├── Resources
│ │ └── unidata
│ │ │ ├── lowerCase.php
│ │ │ ├── titleCaseRegexp.php
│ │ │ └── upperCase.php
│ ├── bootstrap.php
│ └── bootstrap80.php
└── polyfill-php80
│ ├── Php80.php
│ ├── PhpToken.php
│ ├── Resources
│ └── stubs
│ │ ├── Attribute.php
│ │ ├── PhpToken.php
│ │ ├── Stringable.php
│ │ ├── UnhandledMatchError.php
│ │ └── ValueError.php
│ └── bootstrap.php
└── vlucas
└── phpdotenv
└── src
├── Dotenv.php
├── Exception
├── ExceptionInterface.php
├── InvalidEncodingException.php
├── InvalidFileException.php
├── InvalidPathException.php
└── ValidationException.php
├── Loader
├── Loader.php
├── LoaderInterface.php
└── Resolver.php
├── Parser
├── Entry.php
├── EntryParser.php
├── Lexer.php
├── Lines.php
├── Parser.php
├── ParserInterface.php
└── Value.php
├── Repository
├── Adapter
│ ├── AdapterInterface.php
│ ├── ApacheAdapter.php
│ ├── ArrayAdapter.php
│ ├── EnvConstAdapter.php
│ ├── GuardedWriter.php
│ ├── ImmutableWriter.php
│ ├── MultiReader.php
│ ├── MultiWriter.php
│ ├── PutenvAdapter.php
│ ├── ReaderInterface.php
│ ├── ReplacingWriter.php
│ ├── ServerConstAdapter.php
│ └── WriterInterface.php
├── AdapterRepository.php
├── RepositoryBuilder.php
└── RepositoryInterface.php
├── Store
├── File
│ ├── Paths.php
│ └── Reader.php
├── FileStore.php
├── StoreBuilder.php
├── StoreInterface.php
└── StringStore.php
├── Util
├── Regex.php
└── Str.php
└── Validator.php
/.editorconfig:
--------------------------------------------------------------------------------
1 | # This file is for unifying the coding style for different editors and IDEs
2 | # editorconfig.org
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | end_of_line = lf
9 | insert_final_newline = true
10 | trim_trailing_whitespace = true
11 |
12 | [*.php]
13 | indent_size = 4
14 |
15 | [*.md,*.txt]
16 | trim_trailing_whitespace = false
17 | insert_final_newline = false
18 |
19 | [composer.json]
20 | indent_size = 4
21 |
--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
1 | MUX_TOKEN_ID=
2 | MUX_TOKEN_SECRET=
3 | MUX_DEV=true
4 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Note: You need to uncomment the lines you want to use; the other lines can be deleted
2 |
3 | # Git
4 | # .gitattributes export-ignore
5 | # .gitignore export-ignore
6 |
7 | # Tests
8 | # /.coveralls.yml export-ignore
9 | # /.travis.yml export-ignore
10 | # /phpunit.xml.dist export-ignore
11 | # /tests/ export-ignore
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS files
2 | .DS_Store
3 |
4 | # npm modules
5 | /node_modules
6 |
7 | # Parcel cache folder
8 | .cache
9 |
10 | # Files of Composer dependencies that are not needed for the plugin
11 | /vendor/**/.*
12 | /vendor/**/*.json
13 | /vendor/**/*.txt
14 | /vendor/**/*.md
15 | /vendor/**/*.yml
16 | /vendor/**/*.yaml
17 | /vendor/**/*.xml
18 | /vendor/**/*.dist
19 | /vendor/**/readme.php
20 | /vendor/**/LICENSE
21 | /vendor/**/COPYING
22 | /vendor/**/VERSION
23 | /vendor/**/docs/*
24 | /vendor/**/example/*
25 | /vendor/**/examples/*
26 | /vendor/**/test/*
27 | /vendor/**/tests/*
28 | /vendor/**/php4/*
29 | /vendor/getkirby/composer-installer
30 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Robin Scholz
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/blueprints/blocks/mux-video.yml:
--------------------------------------------------------------------------------
1 | name: field.blocks.video.name
2 | icon: video
3 | fields:
4 | video:
5 | label: field.blocks.video.name
6 | type: files
7 | multiple: false
8 | query: page.files.template('mux-video')
9 | image:
10 | back: black
11 | uploads:
12 | template: mux-video
13 | caption:
14 | label: field.blocks.video.caption
15 | type: writer
16 | inline: true
17 | thumbnail:
18 | label: field.blocks.mux-video.thumbnail
19 | help: fields.blocks.mux-video.thumbnail.help
20 | type: number
21 | default: 0
22 |
--------------------------------------------------------------------------------
/blueprints/files/mux-video.yml:
--------------------------------------------------------------------------------
1 | title:
2 | de: Mux video
3 | en: Mux video
4 |
5 | accept:
6 | mime: video/*
7 | type: video
8 |
9 | fields:
10 | mux:
11 | type: hidden
12 |
--------------------------------------------------------------------------------
/classes/KirbyMux/Auth.php:
--------------------------------------------------------------------------------
1 | setUsername($_ENV['MUX_TOKEN_ID'])
14 | ->setPassword($_ENV['MUX_TOKEN_SECRET']);
15 |
16 | // API client initialization
17 | $assetsApi = new MuxPhp\Api\AssetsApi(
18 | new GuzzleHttp\Client(),
19 | $config
20 | );
21 |
22 | return $assetsApi;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/classes/KirbyMux/Methods.php:
--------------------------------------------------------------------------------
1 | $file]);
12 | $createAssetRequest = new MuxPhp\Models\CreateAssetRequest(["input" => $input, "playback_policy" => [MuxPhp\Models\PlaybackPolicy::_PUBLIC] ]);
13 | $result = $assetsApi->createAsset($createAssetRequest);
14 |
15 | return $result;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "robinscholz/kirby-mux",
3 | "description": "Upload videos directly to mux",
4 | "type": "kirby-plugin",
5 | "keywords": [
6 | "kirby",
7 | "mux",
8 | "video",
9 | "stream"
10 | ],
11 | "license": "MIT",
12 | "homepage": "https://github.com/robinscholz/kirby-mux#readme",
13 | "authors": [
14 | {
15 | "name": "Robin Scholz",
16 | "email": "dev@studioscholz.info",
17 | "homepage": "https://studioscholz.info"
18 | }
19 | ],
20 | "require": {
21 | "php": ">=7.4.0",
22 | "getkirby/composer-installer": "^1.2",
23 | "muxinc/mux-php": "^3.3",
24 | "vlucas/phpdotenv": "^5.4"
25 | },
26 | "require-dev": {
27 | "getkirby/cms": "^3.6"
28 | },
29 | "autoload": {
30 | "psr-4": {
31 | "KirbyMux\\": "classes/KirbyMux/"
32 | }
33 | },
34 | "scripts": {
35 | "dist": "composer install --no-dev --optimize-autoloader"
36 | },
37 | "config": {
38 | "optimize-autoloader": true
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/index.css:
--------------------------------------------------------------------------------
1 | .video-player[data-v-d38eb820]{position:relative;display:flex}.thumb[data-v-d38eb820]{width:100%;position:absolute;top:0;left:0;right:0;bottom:0;z-index:10}.overlay[data-v-d38eb820]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;z-index:20}.overlay__inner[data-v-d38eb820]{width:56px;height:42px;padding-left:3px;background:#000;border:0;display:flex;color:#fff;align-items:center;justify-content:center;transition:width .15s ease-out,height .15s ease-out;cursor:pointer}.overlay__inner svg[data-v-d38eb820]{width:14px;height:auto}.overlay__inner[data-v-d38eb820]:active{width:53.333px;height:40px}video[data-v-d38eb820]{width:100%;cursor:pointer}
2 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "kirby-mux",
3 | "lockfileVersion": 2,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "dependencies": {
8 | "hls.js": "^1.1.4"
9 | }
10 | },
11 | "node_modules/hls.js": {
12 | "version": "1.1.5",
13 | "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.1.5.tgz",
14 | "integrity": "sha512-mQX5TSNtJEzGo5HPpvcQgCu+BWoKDQM6YYtg/KbgWkmVAcqOCvSTi0SuqG2ZJLXxIzdnFcKU2z7Mrw/YQWhPOA=="
15 | }
16 | },
17 | "dependencies": {
18 | "hls.js": {
19 | "version": "1.1.5",
20 | "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.1.5.tgz",
21 | "integrity": "sha512-mQX5TSNtJEzGo5HPpvcQgCu+BWoKDQM6YYtg/KbgWkmVAcqOCvSTi0SuqG2ZJLXxIzdnFcKU2z7Mrw/YQWhPOA=="
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.3.0",
3 | "scripts": {
4 | "dev": "npx -y kirbyup src/index.js --watch",
5 | "build": "npx -y kirbyup src/index.js"
6 | },
7 | "dependencies": {
8 | "hls.js": "^1.1.4"
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/VideoBlock.vue:
--------------------------------------------------------------------------------
1 |
2 |
= $block->code()->html(false) ?>
3 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/config/blocks/gallery/gallery.php:
--------------------------------------------------------------------------------
1 |
2 | 3 | = $block->text() ?> 4 | citation()->isNotEmpty()): ?> 5 | 8 | 9 |10 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/text/text.php: -------------------------------------------------------------------------------- 1 | 2 | = $block->text(); 3 | -------------------------------------------------------------------------------- /vendor/getkirby/cms/config/blocks/video/video.php: -------------------------------------------------------------------------------- 1 | 2 | url())): ?> 3 |
21 | * // put an item in the cache for 15 minutes
22 | * $cache->set('value', 'my value', 15);
23 | *
24 | *
25 | * @param string $key
26 | * @param mixed $value
27 | * @param int $minutes
28 | * @return bool
29 | */
30 | public function set(string $key, $value, int $minutes = 0): bool
31 | {
32 | return true;
33 | }
34 |
35 | /**
36 | * Internal method to retrieve the raw cache value;
37 | * needs to return a Value object or null if not found
38 | *
39 | * @param string $key
40 | * @return \Kirby\Cache\Value|null
41 | */
42 | public function retrieve(string $key)
43 | {
44 | return null;
45 | }
46 |
47 | /**
48 | * Removes an item from the cache and returns
49 | * whether the operation was successful
50 | *
51 | * @param string $key
52 | * @return bool
53 | */
54 | public function remove(string $key): bool
55 | {
56 | return true;
57 | }
58 |
59 | /**
60 | * Flushes the entire cache and returns
61 | * whether the operation was successful
62 | *
63 | * @return bool
64 | */
65 | public function flush(): bool
66 | {
67 | return true;
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/FilePermissions.php:
--------------------------------------------------------------------------------
1 |
10 | * @link https://getkirby.com
11 | * @copyright Bastian Allgeier GmbH
12 | * @license https://getkirby.com/license
13 | */
14 | class FilePermissions extends ModelPermissions
15 | {
16 | protected $category = 'files';
17 | }
18 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/Html.php:
--------------------------------------------------------------------------------
1 |
12 | * @link https://getkirby.com
13 | * @copyright Bastian Allgeier GmbH
14 | * @license https://getkirby.com/license
15 | */
16 | class Html extends \Kirby\Toolkit\Html
17 | {
18 | /**
19 | * Generates an `a` tag with an absolute Url
20 | *
21 | * @param string|null $href Relative or absolute Url
22 | * @param string|array|null $text If `null`, the link will be used as link text. If an array is passed, each element will be added unencoded
23 | * @param array $attr Additional attributes for the a tag.
24 | * @return string
25 | */
26 | public static function link(string $href = null, $text = null, array $attr = []): string
27 | {
28 | return parent::link(Url::to($href), $text, $attr);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/LayoutColumns.php:
--------------------------------------------------------------------------------
1 |
11 | * @link https://getkirby.com
12 | * @copyright Bastian Allgeier GmbH
13 | * @license https://getkirby.com/license
14 | */
15 | class LayoutColumns extends Items
16 | {
17 | const ITEM_CLASS = '\Kirby\Cms\LayoutColumn';
18 | }
19 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/Nest.php:
--------------------------------------------------------------------------------
1 |
15 | * @link https://getkirby.com
16 | * @copyright Bastian Allgeier GmbH
17 | * @license https://getkirby.com/license
18 | */
19 | class Nest
20 | {
21 | /**
22 | * @param $data
23 | * @param null $parent
24 | * @return mixed
25 | */
26 | public static function create($data, $parent = null)
27 | {
28 | if (is_scalar($data) === true) {
29 | return new Field($parent, $data, $data);
30 | }
31 |
32 | $result = [];
33 |
34 | foreach ($data as $key => $value) {
35 | if (is_array($value) === true) {
36 | $result[$key] = static::create($value, $parent);
37 | } elseif (is_scalar($value) === true) {
38 | $result[$key] = new Field($parent, $key, $value);
39 | }
40 | }
41 |
42 | if (is_int(key($data))) {
43 | return new NestCollection($result);
44 | } else {
45 | return new NestObject($result);
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/NestCollection.php:
--------------------------------------------------------------------------------
1 |
13 | * @link https://getkirby.com
14 | * @copyright Bastian Allgeier GmbH
15 | * @license https://getkirby.com/license
16 | */
17 | class NestCollection extends BaseCollection
18 | {
19 | /**
20 | * Converts all objects in the collection
21 | * to an array. This can also take a callback
22 | * function to further modify the array result.
23 | *
24 | * @param \Closure|null $map
25 | * @return array
26 | */
27 | public function toArray(Closure $map = null): array
28 | {
29 | return parent::toArray($map ?? fn ($object) => $object->toArray());
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/NestObject.php:
--------------------------------------------------------------------------------
1 |
12 | * @link https://getkirby.com
13 | * @copyright Bastian Allgeier GmbH
14 | * @license https://getkirby.com/license
15 | */
16 | class NestObject extends Obj
17 | {
18 | /**
19 | * Converts the object to an array
20 | *
21 | * @return array
22 | */
23 | public function toArray(): array
24 | {
25 | $result = [];
26 |
27 | foreach ((array)$this as $key => $value) {
28 | if (is_a($value, 'Kirby\Cms\Field') === true) {
29 | $result[$key] = $value->value();
30 | continue;
31 | }
32 |
33 | if (is_object($value) === true && method_exists($value, 'toArray')) {
34 | $result[$key] = $value->toArray();
35 | continue;
36 | }
37 |
38 | $result[$key] = $value;
39 | }
40 |
41 | return $result;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/PagePermissions.php:
--------------------------------------------------------------------------------
1 |
10 | * @link https://getkirby.com
11 | * @copyright Bastian Allgeier GmbH
12 | * @license https://getkirby.com/license
13 | */
14 | class PagePermissions extends ModelPermissions
15 | {
16 | /**
17 | * @var string
18 | */
19 | protected $category = 'pages';
20 |
21 | /**
22 | * @return bool
23 | */
24 | protected function canChangeSlug(): bool
25 | {
26 | return $this->model->isHomeOrErrorPage() !== true;
27 | }
28 |
29 | /**
30 | * @return bool
31 | */
32 | protected function canChangeStatus(): bool
33 | {
34 | return $this->model->isErrorPage() !== true;
35 | }
36 |
37 | /**
38 | * @return bool
39 | */
40 | protected function canChangeTemplate(): bool
41 | {
42 | if ($this->model->isHomeOrErrorPage() === true) {
43 | return false;
44 | }
45 |
46 | if (count($this->model->blueprints()) <= 1) {
47 | return false;
48 | }
49 |
50 | return true;
51 | }
52 |
53 | /**
54 | * @return bool
55 | */
56 | protected function canDelete(): bool
57 | {
58 | return $this->model->isHomeOrErrorPage() !== true;
59 | }
60 |
61 | /**
62 | * @return bool
63 | */
64 | protected function canSort(): bool
65 | {
66 | if ($this->model->isErrorPage() === true) {
67 | return false;
68 | }
69 |
70 | if ($this->model->isListed() !== true) {
71 | return false;
72 | }
73 |
74 | if ($this->model->blueprint()->num() !== 'default') {
75 | return false;
76 | }
77 |
78 | return true;
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/R.php:
--------------------------------------------------------------------------------
1 |
12 | * @link https://getkirby.com
13 | * @copyright Bastian Allgeier GmbH
14 | * @license https://getkirby.com/license
15 | */
16 | class R extends Facade
17 | {
18 | /**
19 | * @return \Kirby\Http\Request
20 | */
21 | public static function instance()
22 | {
23 | return App::instance()->request();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/Response.php:
--------------------------------------------------------------------------------
1 |
11 | * @link https://getkirby.com
12 | * @copyright Bastian Allgeier GmbH
13 | * @license https://getkirby.com/license
14 | */
15 | class Response extends \Kirby\Http\Response
16 | {
17 | /**
18 | * Adjusted redirect creation which
19 | * parses locations with the Url::to method
20 | * first.
21 | *
22 | * @param string $location
23 | * @param int $code
24 | * @return static
25 | */
26 | public static function redirect(string $location = '/', int $code = 302)
27 | {
28 | return parent::redirect(Url::to($location), $code);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/S.php:
--------------------------------------------------------------------------------
1 |
12 | * @link https://getkirby.com
13 | * @copyright Bastian Allgeier GmbH
14 | * @license https://getkirby.com/license
15 | */
16 | class S extends Facade
17 | {
18 | /**
19 | * @return \Kirby\Session\Session
20 | */
21 | public static function instance()
22 | {
23 | return App::instance()->session();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/SiteBlueprint.php:
--------------------------------------------------------------------------------
1 |
11 | * @link https://getkirby.com
12 | * @copyright Bastian Allgeier GmbH
13 | * @license https://getkirby.com/license
14 | */
15 | class SiteBlueprint extends Blueprint
16 | {
17 | /**
18 | * Creates a new page blueprint object
19 | * with the given props
20 | *
21 | * @param array $props
22 | */
23 | public function __construct(array $props)
24 | {
25 | parent::__construct($props);
26 |
27 | // normalize all available page options
28 | $this->props['options'] = $this->normalizeOptions(
29 | $props['options'] ?? true,
30 | // defaults
31 | [
32 | 'changeTitle' => null,
33 | 'update' => null,
34 | ],
35 | // aliases
36 | [
37 | 'title' => 'changeTitle',
38 | ]
39 | );
40 | }
41 |
42 | /**
43 | * Returns the preview settings
44 | * The preview setting controls the "Open"
45 | * button in the panel and redirects it to a
46 | * different URL if necessary.
47 | *
48 | * @return string|bool
49 | */
50 | public function preview()
51 | {
52 | $preview = $this->props['options']['preview'] ?? true;
53 |
54 | if (is_string($preview) === true) {
55 | return $this->model->toString($preview);
56 | }
57 |
58 | return $preview;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/SitePermissions.php:
--------------------------------------------------------------------------------
1 |
10 | * @link https://getkirby.com
11 | * @copyright Bastian Allgeier GmbH
12 | * @license https://getkirby.com/license
13 | */
14 | class SitePermissions extends ModelPermissions
15 | {
16 | protected $category = 'site';
17 | }
18 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/UserBlueprint.php:
--------------------------------------------------------------------------------
1 |
11 | * @link https://getkirby.com
12 | * @copyright Bastian Allgeier GmbH
13 | * @license https://getkirby.com/license
14 | */
15 | class UserBlueprint extends Blueprint
16 | {
17 | /**
18 | * UserBlueprint constructor.
19 | *
20 | * @param array $props
21 | * @throws \Kirby\Exception\InvalidArgumentException
22 | */
23 | public function __construct(array $props)
24 | {
25 | // normalize and translate the description
26 | $props['description'] = $this->i18n($props['description'] ?? null);
27 |
28 | // register the other props
29 | parent::__construct($props);
30 |
31 | // normalize all available page options
32 | $this->props['options'] = $this->normalizeOptions(
33 | $props['options'] ?? true,
34 | // defaults
35 | [
36 | 'create' => null,
37 | 'changeEmail' => null,
38 | 'changeLanguage' => null,
39 | 'changeName' => null,
40 | 'changePassword' => null,
41 | 'changeRole' => null,
42 | 'delete' => null,
43 | 'update' => null,
44 | ]
45 | );
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/UserPermissions.php:
--------------------------------------------------------------------------------
1 |
10 | * @link https://getkirby.com
11 | * @copyright Bastian Allgeier GmbH
12 | * @license https://getkirby.com/license
13 | */
14 | class UserPermissions extends ModelPermissions
15 | {
16 | /**
17 | * @var string
18 | */
19 | protected $category = 'users';
20 |
21 | /**
22 | * UserPermissions constructor
23 | *
24 | * @param \Kirby\Cms\Model $model
25 | */
26 | public function __construct(Model $model)
27 | {
28 | parent::__construct($model);
29 |
30 | // change the scope of the permissions, when the current user is this user
31 | $this->category = $this->user && $this->user->is($model) ? 'user' : 'users';
32 | }
33 |
34 | /**
35 | * @return bool
36 | */
37 | protected function canChangeRole(): bool
38 | {
39 | return $this->model->roles()->count() > 1;
40 | }
41 |
42 | /**
43 | * @return bool
44 | */
45 | protected function canCreate(): bool
46 | {
47 | // the admin can always create new users
48 | if ($this->user->isAdmin() === true) {
49 | return true;
50 | }
51 |
52 | // users who are not admins cannot create admins
53 | if ($this->model->isAdmin() === true) {
54 | return false;
55 | }
56 |
57 | return true;
58 | }
59 |
60 | /**
61 | * @return bool
62 | */
63 | protected function canDelete(): bool
64 | {
65 | return $this->model->isLastAdmin() !== true;
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Cms/Visitor.php:
--------------------------------------------------------------------------------
1 |
12 | * @link https://getkirby.com
13 | * @copyright Bastian Allgeier GmbH
14 | * @license https://getkirby.com/license
15 | */
16 | class Visitor extends Facade
17 | {
18 | /**
19 | * @return \Kirby\Http\Visitor
20 | */
21 | public static function instance()
22 | {
23 | return App::instance()->visitor();
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Data/Handler.php:
--------------------------------------------------------------------------------
1 |
15 | * @link https://getkirby.com
16 | * @copyright Bastian Allgeier GmbH
17 | * @license https://opensource.org/licenses/MIT
18 | */
19 | abstract class Handler
20 | {
21 | /**
22 | * Parses an encoded string and returns a multi-dimensional array
23 | *
24 | * Needs to throw an Exception if the file can't be parsed.
25 | *
26 | * @param mixed $string
27 | * @return array
28 | */
29 | abstract public static function decode($string): array;
30 |
31 | /**
32 | * Converts an array to an encoded string
33 | *
34 | * @param mixed $data
35 | * @return string
36 | */
37 | abstract public static function encode($data): string;
38 |
39 | /**
40 | * Reads data from a file
41 | *
42 | * @param string $file
43 | * @return array
44 | */
45 | public static function read(string $file): array
46 | {
47 | $contents = F::read($file);
48 | if ($contents === false) {
49 | throw new Exception('The file "' . $file . '" does not exist');
50 | }
51 |
52 | return static::decode($contents);
53 | }
54 |
55 | /**
56 | * Writes data to a file
57 | *
58 | * @param string $file
59 | * @param mixed $data
60 | * @return bool
61 | */
62 | public static function write(string $file = null, $data = []): bool
63 | {
64 | return F::write($file, static::encode($data));
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Data/Json.php:
--------------------------------------------------------------------------------
1 |
12 | * @link https://getkirby.com
13 | * @copyright Bastian Allgeier GmbH
14 | * @license https://opensource.org/licenses/MIT
15 | */
16 | class Json extends Handler
17 | {
18 | /**
19 | * Converts an array to an encoded JSON string
20 | *
21 | * @param mixed $data
22 | * @return string
23 | */
24 | public static function encode($data): string
25 | {
26 | return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
27 | }
28 |
29 | /**
30 | * Parses an encoded JSON string and returns a multi-dimensional array
31 | *
32 | * @param mixed $string
33 | * @return array
34 | */
35 | public static function decode($string): array
36 | {
37 | if ($string === null || $string === '') {
38 | return [];
39 | }
40 |
41 | if (is_array($string) === true) {
42 | return $string;
43 | }
44 |
45 | if (is_string($string) === false) {
46 | throw new InvalidArgumentException('Invalid JSON data; please pass a string');
47 | }
48 |
49 | $result = json_decode($string, true);
50 |
51 | if (is_array($result) === true) {
52 | return $result;
53 | } else {
54 | throw new InvalidArgumentException('JSON string is invalid');
55 | }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Exception/BadMethodCallException.php:
--------------------------------------------------------------------------------
1 |
11 | * @link https://getkirby.com
12 | * @copyright Bastian Allgeier GmbH
13 | * @license https://opensource.org/licenses/MIT
14 | */
15 | class BadMethodCallException extends Exception
16 | {
17 | protected static $defaultKey = 'invalidMethod';
18 | protected static $defaultFallback = 'The method "{ method }" does not exist';
19 | protected static $defaultHttpCode = 400;
20 | protected static $defaultData = ['method' => null];
21 | }
22 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Exception/DuplicateException.php:
--------------------------------------------------------------------------------
1 |
12 | * @link https://getkirby.com
13 | * @copyright Bastian Allgeier GmbH
14 | * @license https://opensource.org/licenses/MIT
15 | */
16 | class DuplicateException extends Exception
17 | {
18 | protected static $defaultKey = 'duplicate';
19 | protected static $defaultFallback = 'The entry exists';
20 | protected static $defaultHttpCode = 400;
21 | }
22 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Exception/ErrorPageException.php:
--------------------------------------------------------------------------------
1 |
12 | * @link https://getkirby.com
13 | * @copyright Bastian Allgeier GmbH
14 | * @license https://opensource.org/licenses/MIT
15 | */
16 | class ErrorPageException extends Exception
17 | {
18 | protected static $defaultKey = 'errorPage';
19 | protected static $defaultFallback = 'Triggered error page';
20 | protected static $defaultHttpCode = 404;
21 | }
22 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Exception/InvalidArgumentException.php:
--------------------------------------------------------------------------------
1 |
11 | * @link https://getkirby.com
12 | * @copyright Bastian Allgeier GmbH
13 | * @license https://opensource.org/licenses/MIT
14 | */
15 | class InvalidArgumentException extends Exception
16 | {
17 | protected static $defaultKey = 'invalidArgument';
18 | protected static $defaultFallback = 'Invalid argument "{ argument }" in method "{ method }"';
19 | protected static $defaultHttpCode = 400;
20 | protected static $defaultData = ['argument' => null, 'method' => null];
21 | }
22 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Exception/LogicException.php:
--------------------------------------------------------------------------------
1 |
11 | * @link https://getkirby.com
12 | * @copyright Bastian Allgeier GmbH
13 | * @license https://opensource.org/licenses/MIT
14 | */
15 | class LogicException extends Exception
16 | {
17 | protected static $defaultKey = 'logic';
18 | protected static $defaultFallback = 'This task cannot be finished';
19 | protected static $defaultHttpCode = 400;
20 | }
21 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Exception/NotFoundException.php:
--------------------------------------------------------------------------------
1 |
11 | * @link https://getkirby.com
12 | * @copyright Bastian Allgeier GmbH
13 | * @license https://opensource.org/licenses/MIT
14 | */
15 | class NotFoundException extends Exception
16 | {
17 | protected static $defaultKey = 'notFound';
18 | protected static $defaultFallback = 'Not found';
19 | protected static $defaultHttpCode = 404;
20 | }
21 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Exception/PermissionException.php:
--------------------------------------------------------------------------------
1 |
12 | * @link https://getkirby.com
13 | * @copyright Bastian Allgeier GmbH
14 | * @license https://opensource.org/licenses/MIT
15 | */
16 | class PermissionException extends Exception
17 | {
18 | protected static $defaultKey = 'permission';
19 | protected static $defaultFallback = 'You are not allowed to do this';
20 | protected static $defaultHttpCode = 403;
21 | }
22 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Form/Fields.php:
--------------------------------------------------------------------------------
1 |
13 | * @link https://getkirby.com
14 | * @copyright Bastian Allgeier GmbH
15 | * @license https://opensource.org/licenses/MIT
16 | */
17 | class Fields extends Collection
18 | {
19 | /**
20 | * Internal setter for each object in the Collection.
21 | * This takes care of validation and of setting
22 | * the collection prop on each object correctly.
23 | *
24 | * @param string $name
25 | * @param object|array $field
26 | * @return $this
27 | */
28 | public function __set(string $name, $field)
29 | {
30 | if (is_array($field) === true) {
31 | // use the array key as name if the name is not set
32 | $field['name'] ??= $name;
33 | $field = Field::factory($field['type'], $field, $this);
34 | }
35 |
36 | return parent::__set($field->name(), $field);
37 | }
38 |
39 | /**
40 | * Converts the fields collection to an
41 | * array and also does that for every
42 | * included field.
43 | *
44 | * @param \Closure|null $map
45 | * @return array
46 | */
47 | public function toArray(Closure $map = null): array
48 | {
49 | $array = [];
50 |
51 | foreach ($this as $field) {
52 | $array[$field->name()] = $field->toArray();
53 | }
54 |
55 | return $array;
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Form/Mixin/EmptyState.php:
--------------------------------------------------------------------------------
1 | empty = $this->i18n($empty);
12 | }
13 |
14 | public function empty(): ?string
15 | {
16 | return $this->stringTemplate($this->empty);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Form/Mixin/Max.php:
--------------------------------------------------------------------------------
1 | max;
12 | }
13 |
14 | protected function setMax(int $max = null)
15 | {
16 | $this->max = $max;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Form/Mixin/Min.php:
--------------------------------------------------------------------------------
1 | min;
12 | }
13 |
14 | protected function setMin(int $min = null)
15 | {
16 | $this->min = $min;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Http/Exceptions/NextRouteException.php:
--------------------------------------------------------------------------------
1 |
10 | * @link https://getkirby.com
11 | * @copyright Bastian Allgeier GmbH
12 | * @license https://opensource.org/licenses/MIT
13 | */
14 | class NextRouteException extends \Exception
15 | {
16 | }
17 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Http/Path.php:
--------------------------------------------------------------------------------
1 |
14 | * @link https://getkirby.com
15 | * @copyright Bastian Allgeier GmbH
16 | * @license https://opensource.org/licenses/MIT
17 | */
18 | class Path extends Collection
19 | {
20 | public function __construct($items)
21 | {
22 | if (is_string($items) === true) {
23 | $items = Str::split($items, '/');
24 | }
25 |
26 | parent::__construct($items ?? []);
27 | }
28 |
29 | public function __toString(): string
30 | {
31 | return $this->toString();
32 | }
33 |
34 | public function toString(bool $leadingSlash = false, bool $trailingSlash = false): string
35 | {
36 | if (empty($this->data) === true) {
37 | return '';
38 | }
39 |
40 | $path = implode('/', $this->data);
41 |
42 | $leadingSlash = $leadingSlash === true ? '/' : null;
43 | $trailingSlash = $trailingSlash === true ? '/' : null;
44 |
45 | return $leadingSlash . $path . $trailingSlash;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Http/Query.php:
--------------------------------------------------------------------------------
1 |
14 | * @link https://getkirby.com
15 | * @copyright Bastian Allgeier GmbH
16 | * @license https://opensource.org/licenses/MIT
17 | */
18 | class Query extends Obj
19 | {
20 | public function __construct($query)
21 | {
22 | if (is_string($query) === true) {
23 | parse_str(ltrim($query, '?'), $query);
24 | }
25 |
26 | parent::__construct($query ?? []);
27 | }
28 |
29 | public function isEmpty(): bool
30 | {
31 | return empty((array)$this) === true;
32 | }
33 |
34 | public function isNotEmpty(): bool
35 | {
36 | return empty((array)$this) === false;
37 | }
38 |
39 | public function __toString(): string
40 | {
41 | return $this->toString();
42 | }
43 |
44 | public function toString($questionMark = false): string
45 | {
46 | $query = http_build_query($this, '', '&', PHP_QUERY_RFC3986);
47 |
48 | if (empty($query) === true) {
49 | return '';
50 | }
51 |
52 | if ($questionMark === true) {
53 | $query = '?' . $query;
54 | }
55 |
56 | return $query;
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Http/Request/Auth/BasicAuth.php:
--------------------------------------------------------------------------------
1 | credentials = base64_decode($token);
35 | $this->username = Str::before($this->credentials, ':');
36 | $this->password = Str::after($this->credentials, ':');
37 | }
38 |
39 | /**
40 | * Returns the entire unencoded credentials string
41 | *
42 | * @return string
43 | */
44 | public function credentials(): string
45 | {
46 | return $this->credentials;
47 | }
48 |
49 | /**
50 | * Returns the password
51 | *
52 | * @return string|null
53 | */
54 | public function password(): ?string
55 | {
56 | return $this->password;
57 | }
58 |
59 | /**
60 | * Returns the authentication type
61 | *
62 | * @return string
63 | */
64 | public function type(): string
65 | {
66 | return 'basic';
67 | }
68 |
69 | /**
70 | * Returns the username
71 | *
72 | * @return string|null
73 | */
74 | public function username(): ?string
75 | {
76 | return $this->username;
77 | }
78 | }
79 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Http/Request/Auth/BearerAuth.php:
--------------------------------------------------------------------------------
1 | token = $token;
23 | }
24 |
25 | /**
26 | * Converts the object to a string
27 | *
28 | * @return string
29 | */
30 | public function __toString(): string
31 | {
32 | return ucfirst($this->type()) . ' ' . $this->token();
33 | }
34 |
35 | /**
36 | * Returns the authentication token
37 | *
38 | * @return string
39 | */
40 | public function token(): string
41 | {
42 | return $this->token;
43 | }
44 |
45 | /**
46 | * Returns the auth type
47 | *
48 | * @return string
49 | */
50 | public function type(): string
51 | {
52 | return 'bearer';
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Panel/Dialog.php:
--------------------------------------------------------------------------------
1 |
13 | * @link https://getkirby.com
14 | * @copyright Bastian Allgeier GmbH
15 | * @license https://getkirby.com/license
16 | */
17 | class Dialog extends Json
18 | {
19 | protected static $key = '$dialog';
20 |
21 | /**
22 | * Renders dialogs
23 | *
24 | * @param mixed $data
25 | * @param array $options
26 | * @return \Kirby\Http\Response
27 | */
28 | public static function response($data, array $options = [])
29 | {
30 | // interpret true as success
31 | if ($data === true) {
32 | $data = [
33 | 'code' => 200
34 | ];
35 | }
36 |
37 | return parent::response($data, $options);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Panel/Redirect.php:
--------------------------------------------------------------------------------
1 |
15 | * @link https://getkirby.com
16 | * @copyright Bastian Allgeier GmbH
17 | * @license https://getkirby.com/license
18 | */
19 | class Redirect extends Exception
20 | {
21 | /**
22 | * Returns the HTTP code for the redirect
23 | *
24 | * @return int
25 | */
26 | public function code(): int
27 | {
28 | $codes = [301, 302, 303, 307, 308];
29 |
30 | if (in_array($this->getCode(), $codes) === true) {
31 | return $this->getCode();
32 | }
33 |
34 | return 302;
35 | }
36 |
37 | /**
38 | * Returns the URL for the redirect
39 | *
40 | * @return string
41 | */
42 | public function location(): string
43 | {
44 | return $this->getMessage();
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Panel/Search.php:
--------------------------------------------------------------------------------
1 |
13 | * @link https://getkirby.com
14 | * @copyright Bastian Allgeier GmbH
15 | * @license https://getkirby.com/license
16 | */
17 | class Search extends Json
18 | {
19 | protected static $key = '$search';
20 |
21 | /**
22 | * @param mixed $data
23 | * @param array $options
24 | * @return \Kirby\Http\Response
25 | */
26 | public static function response($data, array $options = [])
27 | {
28 | if (is_array($data) === true) {
29 | $data = [
30 | 'results' => $data
31 | ];
32 | }
33 |
34 | return parent::response($data, $options);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Parsley/Schema.php:
--------------------------------------------------------------------------------
1 | ,
12 | * @link https://getkirby.com
13 | * @copyright Bastian Allgeier GmbH
14 | * @license https://getkirby.com/license
15 | */
16 | class Schema
17 | {
18 | /**
19 | * Returns the fallback block when no
20 | * other block type can be detected
21 | *
22 | * @param \Kirby\Parsley\Element|string $element
23 | * @return array|null
24 | */
25 | public function fallback($element): ?array
26 | {
27 | return null;
28 | }
29 |
30 | /**
31 | * Returns a list of allowed inline marks
32 | * and their parsing rules
33 | *
34 | * @return array
35 | */
36 | public function marks(): array
37 | {
38 | return [];
39 | }
40 |
41 | /**
42 | * Returns a list of allowed nodes and
43 | * their parsing rules
44 | *
45 | * @return array
46 | */
47 | public function nodes(): array
48 | {
49 | return [];
50 | }
51 |
52 | /**
53 | * Returns a list of all elements that should be
54 | * skipped and not be parsed at all
55 | *
56 | * @return array
57 | */
58 | public function skip(): array
59 | {
60 | return [];
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Parsley/Schema/Plain.php:
--------------------------------------------------------------------------------
1 | ,
17 | * @link https://getkirby.com
18 | * @copyright Bastian Allgeier GmbH
19 | * @license https://getkirby.com/license
20 | */
21 | class Plain extends Schema
22 | {
23 | /**
24 | * Creates the fallback block type
25 | * if no other block can be found
26 | *
27 | * @param \Kirby\Parsley\Element|string $element
28 | * @return array|null
29 | */
30 | public function fallback($element): ?array
31 | {
32 | if (is_a($element, Element::class) === true) {
33 | $text = $element->innerText();
34 | } elseif (is_string($element) === true) {
35 | $text = trim($element);
36 |
37 | if (Str::length($text) === 0) {
38 | return null;
39 | }
40 | } else {
41 | return null;
42 | }
43 |
44 | return [
45 | 'content' => [
46 | 'text' => $text
47 | ],
48 | 'type' => 'text',
49 | ];
50 | }
51 |
52 | /**
53 | * Returns a list of all elements that
54 | * should be skipped during parsing
55 | *
56 | * @return array
57 | */
58 | public function skip(): array
59 | {
60 | return [
61 | 'base',
62 | 'link',
63 | 'meta',
64 | 'script',
65 | 'style',
66 | 'title'
67 | ];
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Toolkit/Config.php:
--------------------------------------------------------------------------------
1 |
11 | * @link https://getkirby.com
12 | * @copyright Bastian Allgeier GmbH
13 | * @license https://opensource.org/licenses/MIT
14 | */
15 | class Config extends Silo
16 | {
17 | /**
18 | * @var array
19 | */
20 | public static $data = [];
21 | }
22 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Toolkit/Controller.php:
--------------------------------------------------------------------------------
1 |
16 | * @link https://getkirby.com
17 | * @copyright Bastian Allgeier GmbH
18 | * @license https://opensource.org/licenses/MIT
19 | */
20 | class Controller
21 | {
22 | protected $function;
23 |
24 | public function __construct(Closure $function)
25 | {
26 | $this->function = $function;
27 | }
28 |
29 | public function arguments(array $data = []): array
30 | {
31 | $info = new ReflectionFunction($this->function);
32 | $args = [];
33 |
34 | foreach ($info->getParameters() as $parameter) {
35 | $name = $parameter->getName();
36 | $args[] = $data[$name] ?? null;
37 | }
38 |
39 | return $args;
40 | }
41 |
42 | public function call($bind = null, $data = [])
43 | {
44 | $args = $this->arguments($data);
45 |
46 | if ($bind === null) {
47 | return call_user_func($this->function, ...$args);
48 | }
49 |
50 | return $this->function->call($bind, ...$args);
51 | }
52 |
53 | public static function load(string $file)
54 | {
55 | if (is_file($file) === false) {
56 | return null;
57 | }
58 |
59 | $function = F::load($file);
60 |
61 | if (is_a($function, 'Closure') === false) {
62 | return null;
63 | }
64 |
65 | return new static($function);
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Toolkit/Facade.php:
--------------------------------------------------------------------------------
1 |
11 | * @link https://getkirby.com
12 | * @copyright Bastian Allgeier GmbH
13 | * @license https://opensource.org/licenses/MIT
14 | */
15 | abstract class Facade
16 | {
17 | /**
18 | * Returns the instance that should be
19 | * available statically
20 | *
21 | * @return mixed
22 | */
23 | abstract public static function instance();
24 |
25 | /**
26 | * Proxy for all public instance calls
27 | *
28 | * @param string $method
29 | * @param array $args
30 | * @return mixed
31 | */
32 | public static function __callStatic(string $method, array $args = null)
33 | {
34 | return static::instance()->$method(...$args);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/src/Toolkit/Tpl.php:
--------------------------------------------------------------------------------
1 |
13 | * @link https://getkirby.com
14 | * @copyright Bastian Allgeier GmbH
15 | * @license https://opensource.org/licenses/MIT
16 | */
17 | class Tpl
18 | {
19 | /**
20 | * Renders the template
21 | *
22 | * @param string|null $file
23 | * @param array $data
24 | * @return string
25 | * @throws Throwable
26 | */
27 | public static function load(?string $file = null, array $data = []): string
28 | {
29 | if ($file === null || is_file($file) === false) {
30 | return '';
31 | }
32 |
33 | ob_start();
34 |
35 | $exception = null;
36 | try {
37 | F::load($file, null, $data);
38 | } catch (Throwable $e) {
39 | $exception = $e;
40 | }
41 |
42 | $content = ob_get_contents();
43 | ob_end_clean();
44 |
45 | if ($exception === null) {
46 | return $content;
47 | }
48 |
49 | throw $exception;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/vendor/getkirby/cms/views/browser.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | 4 | We are really sorry, but your browser does not support 5 | all features required for the Kirby Panel. 6 |
7 | 8 |
10 | Fetch
11 | We use Javascript's new Fetch API. You can find a list of supported browsers for this feature on
12 | caniuse.com
13 |
15 | CSS Grid
16 | We use CSS Grids for all our layouts. You can find a list of supported browsers for this feature on
17 | caniuse.com
18 |
4 | This page is currently offline due to an unexpected error. We are very sorry for the inconvenience and will fix it as soon as possible. 5 |
6 |
7 | Advice for developers and administrators:
8 | Enable debug mode to get further information about the error.
9 |
4 | This page is currently offline. We are very sorry for the inconvenience and will fix it as soon as possible. 5 |
6 |
7 | Advice for developers and administrators:
8 | Change the PHP version to one supported by your version of Kirby
9 |