├── .gitignore ├── .htaccess ├── assets ├── avatars │ └── index.html ├── css │ └── index.css ├── fonts │ ├── montserrat-400.woff │ ├── montserrat-700.woff │ ├── montserrat-license.txt │ ├── vesperlibre-400.woff │ ├── vesperlibre-500.woff │ ├── vesperlibre-700.woff │ └── vesperlibre-license.txt └── images │ ├── arrow-left.svg │ ├── arrow-right.svg │ └── logo.svg ├── content ├── 1-projects │ ├── 1-project-a │ │ ├── closeup.jpg │ │ ├── closeup.jpg.en.txt │ │ ├── creative-tools.jpg │ │ ├── creative-tools.jpg.en.txt │ │ ├── folding-rule.jpg │ │ ├── folding-rule.jpg.en.txt │ │ ├── project.de.txt │ │ └── project.en.txt │ ├── 2-project-b │ │ ├── project.de.txt │ │ ├── project.en.txt │ │ ├── room.jpg │ │ └── table.jpg │ ├── 3-project-c │ │ ├── camera.jpg │ │ ├── project.de.txt │ │ └── project.en.txt │ ├── 4-project-d │ │ ├── letters.jpg │ │ ├── project.de.txt │ │ └── project.en.txt │ ├── 5-project-e │ │ ├── project.de.txt │ │ ├── project.en.txt │ │ └── typewriter.jpg │ ├── projects.de.txt │ └── projects.en.txt ├── 2-blog │ ├── 20160802-extending-kirby │ │ ├── article.en.txt │ │ └── extending.png │ ├── 20160803-licensing-kirby │ │ ├── article.en.txt │ │ └── licensing.png │ ├── 20160804-content-in-kirby │ │ ├── article.en.txt │ │ └── content.png │ ├── blog.de.txt │ └── blog.en.txt ├── 3-about │ ├── 0-bob-meowerly │ │ ├── bob-meowerly.jpg │ │ ├── team.de.txt │ │ └── team.en.txt │ ├── 0-brad-kitt │ │ ├── brad-kitt.jpg │ │ ├── team.de.txt │ │ └── team.en.txt │ ├── 0-cat-winslet │ │ ├── cat-winslet.jpg │ │ ├── team.de.txt │ │ └── team.en.txt │ ├── 0-hunter-s-tomcat │ │ ├── hunter-s-tomcat.jpg │ │ ├── team.de.txt │ │ └── team.en.txt │ ├── about.de.txt │ └── about.en.txt ├── 4-contact │ ├── contact.de.txt │ ├── contact.en.txt │ ├── contact.svg │ ├── docs.svg │ ├── forum.svg │ └── github.svg ├── error │ ├── error.de.txt │ └── error.en.txt ├── home │ ├── home.de.txt │ └── home.en.txt ├── site.de.txt └── site.en.txt ├── index.php ├── kirby ├── .gitignore ├── .travis.yml ├── bootstrap.php ├── branches │ ├── default.php │ ├── multilang.php │ └── multilang │ │ ├── content.php │ │ ├── field.php │ │ ├── file.php │ │ ├── language.php │ │ ├── languages.php │ │ ├── page.php │ │ └── site.php ├── classmap.php ├── composer.json ├── composer.lock ├── composer.php ├── core │ ├── asset.php │ ├── avatar.php │ ├── children.php │ ├── content.php │ ├── field.php │ ├── file.php │ ├── files.php │ ├── kirbytag.php │ ├── kirbytext.php │ ├── page.php │ ├── pages.php │ ├── role.php │ ├── roles.php │ ├── site.php │ ├── user.php │ └── users.php ├── extensions │ ├── methods.php │ └── tags.php ├── helpers.php ├── kirby.php ├── kirby │ ├── component.php │ ├── component │ │ ├── css.php │ │ ├── js.php │ │ ├── markdown.php │ │ ├── response.php │ │ ├── smartypants.php │ │ ├── snippet.php │ │ ├── template.php │ │ ├── thumb.php │ │ └── tinyurl.php │ ├── errorhandling.php │ ├── event.php │ ├── registry.php │ ├── registry │ │ ├── blueprint.php │ │ ├── component.php │ │ ├── controller.php │ │ ├── entry.php │ │ ├── field.php │ │ ├── hook.php │ │ ├── method.php │ │ ├── model.php │ │ ├── option.php │ │ ├── role.php │ │ ├── route.php │ │ ├── snippet.php │ │ ├── tag.php │ │ ├── template.php │ │ └── widget.php │ ├── request.php │ ├── request │ │ ├── params.php │ │ ├── path.php │ │ └── query.php │ ├── roots.php │ ├── traits │ │ └── image.php │ └── urls.php ├── lib │ ├── pageextension.php │ └── structure.php ├── license.md ├── phpunit.xml ├── readme.md ├── system.php ├── test │ ├── ContentTest.php │ ├── FieldTest.php │ ├── FileTest.php │ ├── FilesTest.php │ ├── KirbyTest.php │ ├── KirbytextTest.php │ ├── ModelsTest.php │ ├── PageTest.php │ ├── PagesTest.php │ ├── RegistryEntryTest.php │ ├── RegistryTest.php │ ├── RoleTest.php │ ├── RootsTest.php │ ├── SiteTest.php │ ├── UrlsTest.php │ ├── UsersTest.php │ ├── etc │ │ ├── content │ │ │ ├── 1-a │ │ │ │ ├── a.txt │ │ │ │ └── test.js │ │ │ ├── 2-b │ │ │ │ └── b.txt │ │ │ ├── error │ │ │ │ └── error.txt │ │ │ ├── home │ │ │ │ └── home.txt │ │ │ ├── site.txt │ │ │ └── tests │ │ │ │ ├── field-name-test │ │ │ │ └── test.txt │ │ │ │ └── file-extension-case-test │ │ │ │ ├── a.JSON │ │ │ │ └── b.json │ │ ├── kirbytext │ │ │ ├── gist │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── image-with-alt │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── image-with-caption │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── image-with-link-popup │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── image-with-link │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── image │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── input-with-placeholder │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── link-with-class │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── link-with-link-as-text │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── link-with-popup │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── link-with-rel │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── link-with-target │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── link-without-text │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── link │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── multiline-parenthesis │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── non-matching-parenthesises │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── script-tag │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── tag-in-parenthesis │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── tel │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── twitter │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ ├── vimeo │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ │ └── youtube │ │ │ │ ├── expected.html │ │ │ │ └── test.txt │ │ └── site │ │ │ ├── accounts │ │ │ └── test.php │ │ │ ├── cache │ │ │ └── .gitkeep │ │ │ ├── config │ │ │ └── config.php │ │ │ ├── models │ │ │ └── a.php │ │ │ ├── plugins │ │ │ ├── a │ │ │ │ └── a.php │ │ │ └── b.php │ │ │ └── tags │ │ │ ├── a.php │ │ │ └── b.php │ └── lib │ │ ├── bootstrap.php │ │ └── testcase.php ├── vendor │ ├── autoload.php │ ├── composer │ │ ├── ClassLoader.php │ │ ├── InstalledVersions.php │ │ ├── LICENSE │ │ ├── autoload_classmap.php │ │ ├── autoload_files.php │ │ ├── autoload_namespaces.php │ │ ├── autoload_psr4.php │ │ ├── autoload_real.php │ │ ├── autoload_static.php │ │ ├── installed.json │ │ ├── installed.php │ │ └── platform_check.php │ ├── erusev │ │ ├── parsedown-extra │ │ │ ├── .travis.yml │ │ │ ├── LICENSE.txt │ │ │ ├── ParsedownExtra.php │ │ │ ├── README.md │ │ │ ├── composer.json │ │ │ ├── phpunit.xml.dist │ │ │ └── test │ │ │ │ ├── ParsedownExtraTest.php │ │ │ │ ├── bootstrap.php │ │ │ │ └── data │ │ │ │ ├── abbreviation.html │ │ │ │ ├── abbreviation.md │ │ │ │ ├── compound_footnote.html │ │ │ │ ├── compound_footnote.md │ │ │ │ ├── definition_list.html │ │ │ │ ├── definition_list.md │ │ │ │ ├── footnote.html │ │ │ │ ├── footnote.md │ │ │ │ ├── markdown_inside_markup.html │ │ │ │ ├── markdown_inside_markup.md │ │ │ │ ├── special_attributes.html │ │ │ │ └── special_attributes.md │ │ └── parsedown │ │ │ ├── LICENSE.txt │ │ │ ├── Parsedown.php │ │ │ ├── README.md │ │ │ └── composer.json │ ├── filp │ │ └── whoops │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE.md │ │ │ ├── composer.json │ │ │ └── src │ │ │ └── Whoops │ │ │ ├── Exception │ │ │ ├── ErrorException.php │ │ │ ├── Formatter.php │ │ │ ├── Frame.php │ │ │ ├── FrameCollection.php │ │ │ └── Inspector.php │ │ │ ├── Handler │ │ │ ├── CallbackHandler.php │ │ │ ├── Handler.php │ │ │ ├── HandlerInterface.php │ │ │ ├── JsonResponseHandler.php │ │ │ ├── PlainTextHandler.php │ │ │ ├── PrettyPageHandler.php │ │ │ └── XmlResponseHandler.php │ │ │ ├── Resources │ │ │ ├── css │ │ │ │ └── whoops.base.css │ │ │ ├── js │ │ │ │ ├── clipboard.min.js │ │ │ │ ├── prettify.min.js │ │ │ │ ├── whoops.base.js │ │ │ │ └── zepto.min.js │ │ │ └── views │ │ │ │ ├── env_details.html.php │ │ │ │ ├── frame_code.html.php │ │ │ │ ├── frame_list.html.php │ │ │ │ ├── frames_container.html.php │ │ │ │ ├── frames_description.html.php │ │ │ │ ├── header.html.php │ │ │ │ ├── header_outer.html.php │ │ │ │ ├── layout.html.php │ │ │ │ ├── panel_details.html.php │ │ │ │ ├── panel_details_outer.html.php │ │ │ │ ├── panel_left.html.php │ │ │ │ └── panel_left_outer.html.php │ │ │ ├── Run.php │ │ │ ├── RunInterface.php │ │ │ └── Util │ │ │ ├── HtmlDumperOutput.php │ │ │ ├── Misc.php │ │ │ ├── SystemFacade.php │ │ │ └── TemplateHelper.php │ ├── getkirby │ │ └── toolkit │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── bootstrap.php │ │ │ ├── composer.json │ │ │ ├── helpers.php │ │ │ ├── lib │ │ │ ├── a.php │ │ │ ├── bitmask.php │ │ │ ├── brick.php │ │ │ ├── c.php │ │ │ ├── cache.php │ │ │ ├── cache │ │ │ │ ├── driver.php │ │ │ │ ├── driver │ │ │ │ │ ├── apc.php │ │ │ │ │ ├── file.php │ │ │ │ │ ├── memcached.php │ │ │ │ │ ├── mock.php │ │ │ │ │ └── session.php │ │ │ │ └── value.php │ │ │ ├── collection.php │ │ │ ├── cookie.php │ │ │ ├── crypt.php │ │ │ ├── data.php │ │ │ ├── database.php │ │ │ ├── database │ │ │ │ └── query.php │ │ │ ├── db.php │ │ │ ├── detect.php │ │ │ ├── dimensions.php │ │ │ ├── dir.php │ │ │ ├── email.php │ │ │ ├── embed.php │ │ │ ├── error.php │ │ │ ├── errorreporting.php │ │ │ ├── escape.php │ │ │ ├── exif.php │ │ │ ├── exif │ │ │ │ ├── camera.php │ │ │ │ └── location.php │ │ │ ├── f.php │ │ │ ├── folder.php │ │ │ ├── header.php │ │ │ ├── html.php │ │ │ ├── i.php │ │ │ ├── l.php │ │ │ ├── media.php │ │ │ ├── obj.php │ │ │ ├── pagination.php │ │ │ ├── password.php │ │ │ ├── r.php │ │ │ ├── redirect.php │ │ │ ├── remote.php │ │ │ ├── response.php │ │ │ ├── router.php │ │ │ ├── s.php │ │ │ ├── server.php │ │ │ ├── silo.php │ │ │ ├── sql.php │ │ │ ├── str.php │ │ │ ├── system.php │ │ │ ├── thumb.php │ │ │ ├── timer.php │ │ │ ├── toolkit.php │ │ │ ├── tpl.php │ │ │ ├── upload.php │ │ │ ├── url.php │ │ │ ├── v.php │ │ │ ├── visitor.php │ │ │ ├── xml.php │ │ │ └── yaml.php │ │ │ ├── phpunit.xml │ │ │ ├── readme.md │ │ │ ├── test │ │ │ ├── ATest.php │ │ │ ├── BitmaskTest.php │ │ │ ├── CTest.php │ │ │ ├── CollectionTest.php │ │ │ ├── DbTest.php │ │ │ ├── DimensionsTest.php │ │ │ ├── DirTest.php │ │ │ ├── EmbedTest.php │ │ │ ├── ErrorReportingTest.php │ │ │ ├── FTest.php │ │ │ ├── HTMLTest.php │ │ │ ├── HeaderTest.php │ │ │ ├── HelpersTest.php │ │ │ ├── LTest.php │ │ │ ├── MediaTest.php │ │ │ ├── ObjTest.php │ │ │ ├── PaginationTest.php │ │ │ ├── PasswordTest.php │ │ │ ├── RTest.php │ │ │ ├── ServerTest.php │ │ │ ├── StrTest.php │ │ │ ├── SystemTest.php │ │ │ ├── TimerTest.php │ │ │ ├── UrlTest.php │ │ │ ├── VTest.php │ │ │ ├── VisitorTest.php │ │ │ ├── XmlTest.php │ │ │ ├── etc │ │ │ │ ├── content.php │ │ │ │ ├── images │ │ │ │ │ └── favicon.png │ │ │ │ └── system │ │ │ │ │ ├── executable.sh │ │ │ │ │ └── nonexecutable.sh │ │ │ └── lib │ │ │ │ └── bootstrap.php │ │ │ └── vendors │ │ │ ├── abeautifulsite │ │ │ └── SimpleImage.php │ │ │ ├── mimereader │ │ │ └── mimereader.php │ │ │ ├── truebv │ │ │ └── punycode.php │ │ │ └── yaml │ │ │ └── yaml.php │ ├── michelf │ │ └── php-smartypants │ │ │ ├── License.md │ │ │ ├── Michelf │ │ │ ├── SmartyPants.inc.php │ │ │ ├── SmartyPants.php │ │ │ ├── SmartyPantsTypographer.inc.php │ │ │ └── SmartyPantsTypographer.php │ │ │ ├── Readme.md │ │ │ ├── Readme.php │ │ │ └── composer.json │ └── psr │ │ └── log │ │ ├── LICENSE │ │ ├── Psr │ │ └── Log │ │ │ ├── AbstractLogger.php │ │ │ ├── InvalidArgumentException.php │ │ │ ├── LogLevel.php │ │ │ ├── LoggerAwareInterface.php │ │ │ ├── LoggerAwareTrait.php │ │ │ ├── LoggerInterface.php │ │ │ ├── LoggerTrait.php │ │ │ ├── NullLogger.php │ │ │ └── Test │ │ │ ├── DummyTest.php │ │ │ ├── LoggerInterfaceTest.php │ │ │ └── TestLogger.php │ │ ├── README.md │ │ └── composer.json └── views │ └── fatal.php ├── license.md ├── panel ├── .gitignore ├── .tx │ └── config ├── app │ ├── bootstrap.php │ ├── config │ │ └── routes.php │ ├── controllers │ │ ├── assets.php │ │ ├── auth.php │ │ ├── autocomplete.php │ │ ├── avatars.php │ │ ├── dashboard.php │ │ ├── error.php │ │ ├── field.php │ │ ├── files.php │ │ ├── installation.php │ │ ├── options.php │ │ ├── pages.php │ │ ├── search.php │ │ ├── subpages.php │ │ └── users.php │ ├── fields │ │ ├── base │ │ │ └── base.php │ │ ├── checkbox │ │ │ └── checkbox.php │ │ ├── checkboxes │ │ │ └── checkboxes.php │ │ ├── date │ │ │ ├── assets │ │ │ │ └── js │ │ │ │ │ └── date.js │ │ │ └── date.php │ │ ├── datetime │ │ │ └── datetime.php │ │ ├── email │ │ │ └── email.php │ │ ├── filename │ │ │ └── filename.php │ │ ├── headline │ │ │ ├── assets │ │ │ │ └── css │ │ │ │ │ └── headline.css │ │ │ └── headline.php │ │ ├── hidden │ │ │ └── hidden.php │ │ ├── image │ │ │ ├── assets │ │ │ │ ├── css │ │ │ │ │ └── image.css │ │ │ │ └── js │ │ │ │ │ └── image.js │ │ │ └── image.php │ │ ├── info │ │ │ └── info.php │ │ ├── input │ │ │ └── input.php │ │ ├── inputlist │ │ │ └── inputlist.php │ │ ├── line │ │ │ └── line.php │ │ ├── number │ │ │ └── number.php │ │ ├── page │ │ │ └── page.php │ │ ├── password │ │ │ └── password.php │ │ ├── radio │ │ │ └── radio.php │ │ ├── select │ │ │ └── select.php │ │ ├── structure │ │ │ ├── assets │ │ │ │ ├── css │ │ │ │ │ └── structure.css │ │ │ │ └── js │ │ │ │ │ └── structure.js │ │ │ ├── controller.php │ │ │ ├── forms │ │ │ │ ├── add.php │ │ │ │ ├── delete.php │ │ │ │ └── update.php │ │ │ ├── structure.php │ │ │ ├── styles │ │ │ │ ├── items.php │ │ │ │ └── table.php │ │ │ ├── template.php │ │ │ └── views │ │ │ │ ├── add.php │ │ │ │ ├── delete.php │ │ │ │ └── update.php │ │ ├── tags │ │ │ └── tags.php │ │ ├── tel │ │ │ └── tel.php │ │ ├── text │ │ │ ├── assets │ │ │ │ ├── css │ │ │ │ │ └── counter.css │ │ │ │ └── js │ │ │ │ │ └── counter.js │ │ │ └── text.php │ │ ├── textarea │ │ │ ├── assets │ │ │ │ └── js │ │ │ │ │ └── editor.js │ │ │ ├── buttons.php │ │ │ ├── controller.php │ │ │ ├── forms │ │ │ │ ├── email.php │ │ │ │ └── link.php │ │ │ ├── textarea.php │ │ │ └── views │ │ │ │ ├── email.php │ │ │ │ └── link.php │ │ ├── time │ │ │ └── time.php │ │ ├── title │ │ │ └── title.php │ │ ├── toggle │ │ │ └── toggle.php │ │ ├── url │ │ │ ├── assets │ │ │ │ └── js │ │ │ │ │ └── url.js │ │ │ └── url.php │ │ └── user │ │ │ └── user.php │ ├── forms │ │ ├── auth │ │ │ └── login.php │ │ ├── avatars │ │ │ └── delete.php │ │ ├── editor │ │ │ ├── email.php │ │ │ └── link.php │ │ ├── files │ │ │ ├── delete.php │ │ │ └── edit.php │ │ ├── installation │ │ │ ├── check.php │ │ │ └── signup.php │ │ ├── pages │ │ │ ├── add.php │ │ │ ├── delete.php │ │ │ ├── edit.php │ │ │ ├── template.php │ │ │ ├── toggle.php │ │ │ └── url.php │ │ └── users │ │ │ ├── delete.php │ │ │ └── user.php │ ├── helpers.php │ ├── layouts │ │ ├── app.php │ │ ├── base.php │ │ └── fatal.php │ ├── snippets │ │ ├── breadcrumb.php │ │ ├── favicon.php │ │ ├── languages.php │ │ ├── menu.php │ │ ├── meta.php │ │ ├── pages │ │ │ ├── sidebar.php │ │ │ └── sidebar │ │ │ │ ├── file.php │ │ │ │ ├── files.php │ │ │ │ ├── menu.php │ │ │ │ ├── subpage.php │ │ │ │ └── subpages.php │ │ ├── pagination.php │ │ ├── search.php │ │ ├── subpages │ │ │ └── subpage.php │ │ ├── template.php │ │ └── uploader.php │ ├── src │ │ ├── panel.php │ │ └── panel │ │ │ ├── autocomplete.php │ │ │ ├── collections │ │ │ ├── children.php │ │ │ ├── files.php │ │ │ └── users.php │ │ │ ├── controllers │ │ │ ├── base.php │ │ │ └── field.php │ │ │ ├── errorhandling.php │ │ │ ├── event.php │ │ │ ├── exceptions │ │ │ └── permissions.php │ │ │ ├── form.php │ │ │ ├── form │ │ │ ├── fieldoptions.php │ │ │ └── plugins.php │ │ │ ├── installer.php │ │ │ ├── layout.php │ │ │ ├── login.php │ │ │ ├── models │ │ │ ├── file.php │ │ │ ├── file │ │ │ │ ├── menu.php │ │ │ │ ├── options.php │ │ │ │ └── ui.php │ │ │ ├── page.php │ │ │ ├── page │ │ │ │ ├── addbutton.php │ │ │ │ ├── blueprint.php │ │ │ │ ├── blueprint │ │ │ │ │ ├── field.php │ │ │ │ │ ├── fields.php │ │ │ │ │ ├── files.php │ │ │ │ │ ├── options.php │ │ │ │ │ └── pages.php │ │ │ │ ├── changes.php │ │ │ │ ├── menu.php │ │ │ │ ├── options.php │ │ │ │ ├── sidebar.php │ │ │ │ ├── sorter.php │ │ │ │ ├── ui.php │ │ │ │ └── uploader.php │ │ │ ├── site.php │ │ │ ├── site │ │ │ │ ├── options.php │ │ │ │ └── ui.php │ │ │ ├── user.php │ │ │ └── user │ │ │ │ ├── avatar.php │ │ │ │ ├── avatar │ │ │ │ └── ui.php │ │ │ │ ├── blueprint.php │ │ │ │ ├── history.php │ │ │ │ └── ui.php │ │ │ ├── roots.php │ │ │ ├── search.php │ │ │ ├── snippet.php │ │ │ ├── structure.php │ │ │ ├── structure │ │ │ └── store.php │ │ │ ├── topbar.php │ │ │ ├── translation.php │ │ │ ├── upload.php │ │ │ ├── urls.php │ │ │ ├── view.php │ │ │ └── widgets.php │ ├── topbars │ │ ├── error.php │ │ └── user.php │ ├── translations │ │ ├── ar │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── bg │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── ca │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── cs │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── da │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── de │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── el │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── en │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── es_419 │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── es_ES │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── fa │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── fi │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── fr │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── hu │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── id │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── it │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── ja │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── ko │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── nb │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── nl │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── pl │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── pt_BR │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── pt_PT │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── readme.md │ │ ├── ro │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── ru │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── sv_SE │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── tr │ │ │ ├── core.json │ │ │ └── package.json │ │ ├── zh_CN │ │ │ ├── core.json │ │ │ └── package.json │ │ └── zh_TW │ │ │ ├── core.json │ │ │ └── package.json │ ├── views │ │ ├── auth │ │ │ ├── block.php │ │ │ ├── error.php │ │ │ └── login.php │ │ ├── avatars │ │ │ └── delete.php │ │ ├── dashboard │ │ │ └── index.php │ │ ├── error │ │ │ ├── index.php │ │ │ └── modal.php │ │ ├── files │ │ │ ├── delete.php │ │ │ ├── edit.php │ │ │ └── index.php │ │ ├── installation │ │ │ └── index.php │ │ ├── options │ │ │ └── index.php │ │ ├── pages │ │ │ ├── add.php │ │ │ ├── delete.php │ │ │ ├── edit.php │ │ │ ├── template.php │ │ │ ├── toggle.php │ │ │ └── url.php │ │ ├── search │ │ │ └── results.php │ │ ├── subpages │ │ │ └── index.php │ │ └── users │ │ │ ├── delete.php │ │ │ ├── edit.php │ │ │ └── index.php │ └── widgets │ │ ├── account │ │ ├── account.html.php │ │ └── account.php │ │ ├── history │ │ ├── history.html.php │ │ └── history.php │ │ ├── license │ │ ├── license.html.php │ │ └── license.php │ │ ├── pages │ │ ├── pages.html.php │ │ └── pages.php │ │ └── site │ │ ├── site.html.php │ │ └── site.php ├── assets │ ├── css │ │ ├── form.css │ │ ├── form.min.css │ │ ├── panel.css │ │ └── panel.min.css │ ├── fonts │ │ ├── fontawesome-webfont.woff │ │ ├── fontawesome-webfont.woff2 │ │ ├── sourcesanspro-400-italic.woff │ │ ├── sourcesanspro-400-italic.woff2 │ │ ├── sourcesanspro-400.woff │ │ ├── sourcesanspro-400.woff2 │ │ ├── sourcesanspro-600.woff │ │ └── sourcesanspro-600.woff2 │ ├── images │ │ ├── avatar.png │ │ ├── hint.arrows.png │ │ ├── loader.black.gif │ │ ├── loader.white.gif │ │ ├── pattern.png │ │ └── placeholder.png │ ├── js │ │ ├── dist │ │ │ ├── app.js │ │ │ ├── app.min.js │ │ │ ├── form.js │ │ │ ├── form.min.js │ │ │ ├── panel.js │ │ │ └── panel.min.js │ │ └── src │ │ │ ├── app.js │ │ │ ├── components │ │ │ ├── breadcrumb.js │ │ │ ├── content.js │ │ │ ├── delay.js │ │ │ ├── dropdown.js │ │ │ ├── focus.js │ │ │ ├── form.js │ │ │ ├── message.js │ │ │ ├── modal.js │ │ │ ├── search.js │ │ │ ├── shortcuts.js │ │ │ ├── sidebar.js │ │ │ └── uploader.js │ │ │ ├── jquery │ │ │ ├── jquery.js │ │ │ └── plugins │ │ │ │ ├── jquery.autocomplete.js │ │ │ │ ├── jquery.autosize.js │ │ │ │ ├── jquery.center.js │ │ │ │ ├── jquery.context.js │ │ │ │ ├── jquery.drop.js │ │ │ │ ├── jquery.dropload.js │ │ │ │ ├── jquery.editorHelpers.js │ │ │ │ ├── jquery.fakefocus.js │ │ │ │ ├── jquery.filedrop.js │ │ │ │ ├── jquery.filereader.js │ │ │ │ ├── jquery.hotkeys.js │ │ │ │ ├── jquery.passwordsuggestion.js │ │ │ │ ├── jquery.serializeobject.js │ │ │ │ ├── jquery.slug.js │ │ │ │ ├── jquery.tags.js │ │ │ │ ├── jquery.token.js │ │ │ │ ├── jquery.ui.js │ │ │ │ ├── jquery.ui.touch.js │ │ │ │ └── jquery.upload.js │ │ │ └── plugins │ │ │ ├── moment.js │ │ │ ├── nprogress.js │ │ │ └── pikaday.js │ └── scss │ │ ├── components │ │ ├── _autocomplete.scss │ │ ├── _avatar.scss │ │ ├── _body.scss │ │ ├── _breadcrumb.scss │ │ ├── _btn.scss │ │ ├── _counter.scss │ │ ├── _dashboard.scss │ │ ├── _debugger.scss │ │ ├── _dragula.scss │ │ ├── _dropdown.scss │ │ ├── _dropload.scss │ │ ├── _dropzone.scss │ │ ├── _file.scss │ │ ├── _files.scss │ │ ├── _fileselector.scss │ │ ├── _fileview.scss │ │ ├── _fonts.scss │ │ ├── _form.scss │ │ ├── _grid.scss │ │ ├── _headlines.scss │ │ ├── _hgroup.scss │ │ ├── _icon.scss │ │ ├── _instruction.scss │ │ ├── _items.scss │ │ ├── _languages.scss │ │ ├── _main.scss │ │ ├── _message.scss │ │ ├── _misc.scss │ │ ├── _modal.scss │ │ ├── _nav.scss │ │ ├── _nprogress.scss │ │ ├── _pagination.scss │ │ ├── _pikaday.scss │ │ ├── _reset.scss │ │ ├── _search.scss │ │ ├── _shiv.scss │ │ ├── _sidebar.scss │ │ ├── _subpages.scss │ │ ├── _tags.scss │ │ ├── _text.scss │ │ ├── _topbar.scss │ │ └── _typography.scss │ │ ├── fontawesome │ │ ├── _animated.scss │ │ ├── _bordered-pulled.scss │ │ ├── _core.scss │ │ ├── _fixed-width.scss │ │ ├── _fontawesome.scss │ │ ├── _icons.scss │ │ ├── _larger.scss │ │ ├── _list.scss │ │ ├── _mixins.scss │ │ ├── _path.scss │ │ ├── _rotated-flipped.scss │ │ ├── _screen-reader.scss │ │ ├── _stacked.scss │ │ └── _variables.scss │ │ └── panel.scss ├── composer.json ├── gulpfile.js ├── index.php ├── license.md ├── package.json ├── phpunit.xml ├── readme.md └── tests │ ├── dummy │ ├── images │ │ └── forrest.jpg │ └── site │ │ └── blueprints │ │ ├── alphabet.php │ │ ├── blog.php │ │ └── default.php │ ├── lib │ ├── bootstrap.php │ └── testcase.php │ └── tests │ ├── AutocompleteTest.php │ ├── ChangesTest.php │ ├── FileModelTest.php │ ├── HistoryTest.php │ ├── NumberingTest.php │ ├── PageModelTest.php │ ├── PanelTest.php │ ├── SiteModelTest.php │ ├── StructureTest.php │ └── UserModelTest.php ├── readme.md ├── site ├── accounts │ └── index.html ├── blueprints │ ├── about.yml │ ├── article.yml │ ├── blog.yml │ ├── contact.yml │ ├── default.yml │ ├── error.yml │ ├── home.yml │ ├── project.yml │ ├── projects.yml │ ├── site.yml │ └── team.yml ├── cache │ └── index.html ├── config │ └── config.php ├── controllers │ └── blog.php ├── languages │ ├── de.php │ └── en.php ├── plugins │ └── index.html ├── snippets │ ├── coverimage.php │ ├── footer.php │ ├── header.php │ ├── languages.php │ ├── menu.php │ ├── pagination.php │ ├── prevnext.php │ └── showcase.php └── templates │ ├── about.php │ ├── article.php │ ├── blog.php │ ├── contact.php │ ├── default.php │ ├── home.php │ ├── project.php │ └── projects.php └── thumbs └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | # System files 2 | # ------------ 3 | 4 | Icon 5 | .DS_Store 6 | 7 | # Temporary files 8 | # --------------- 9 | 10 | /thumbs/* 11 | !/thumbs/index.html 12 | 13 | /site/cache/* 14 | !/site/cache/index.html 15 | 16 | # -------------SECURITY------------- 17 | # NEVER publish these files via Git! 18 | # -------------SECURITY------------- 19 | 20 | # Kirby accounts 21 | /site/accounts/* 22 | !/site/accounts/index.html 23 | 24 | # Avatars 25 | /assets/avatars/* 26 | !/assets/avatars/index.html 27 | -------------------------------------------------------------------------------- /assets/avatars/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/assets/avatars/index.html -------------------------------------------------------------------------------- /assets/fonts/montserrat-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/assets/fonts/montserrat-400.woff -------------------------------------------------------------------------------- /assets/fonts/montserrat-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/assets/fonts/montserrat-700.woff -------------------------------------------------------------------------------- /assets/fonts/vesperlibre-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/assets/fonts/vesperlibre-400.woff -------------------------------------------------------------------------------- /assets/fonts/vesperlibre-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/assets/fonts/vesperlibre-500.woff -------------------------------------------------------------------------------- /assets/fonts/vesperlibre-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/assets/fonts/vesperlibre-700.woff -------------------------------------------------------------------------------- /assets/images/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/images/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/images/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /content/1-projects/1-project-a/closeup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/1-projects/1-project-a/closeup.jpg -------------------------------------------------------------------------------- /content/1-projects/1-project-a/closeup.jpg.en.txt: -------------------------------------------------------------------------------- 1 | Sort: 2 -------------------------------------------------------------------------------- /content/1-projects/1-project-a/creative-tools.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/1-projects/1-project-a/creative-tools.jpg -------------------------------------------------------------------------------- /content/1-projects/1-project-a/creative-tools.jpg.en.txt: -------------------------------------------------------------------------------- 1 | Sort: 1 -------------------------------------------------------------------------------- /content/1-projects/1-project-a/folding-rule.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/1-projects/1-project-a/folding-rule.jpg -------------------------------------------------------------------------------- /content/1-projects/1-project-a/folding-rule.jpg.en.txt: -------------------------------------------------------------------------------- 1 | Sort: 3 -------------------------------------------------------------------------------- /content/1-projects/1-project-a/project.de.txt: -------------------------------------------------------------------------------- 1 | Title: Projekt A 2 | 3 | ---- 4 | 5 | Year: 2014 6 | 7 | ---- 8 | 9 | Text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 10 | -------------------------------------------------------------------------------- /content/1-projects/1-project-a/project.en.txt: -------------------------------------------------------------------------------- 1 | Title: Project A 2 | 3 | ---- 4 | 5 | Year: 2014 6 | 7 | ---- 8 | 9 | Text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 10 | -------------------------------------------------------------------------------- /content/1-projects/2-project-b/project.de.txt: -------------------------------------------------------------------------------- 1 | Title: Projekt B 2 | 3 | ---- 4 | 5 | Year: 2013 6 | 7 | ---- 8 | 9 | Text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 10 | -------------------------------------------------------------------------------- /content/1-projects/2-project-b/project.en.txt: -------------------------------------------------------------------------------- 1 | Title: Project B 2 | 3 | ---- 4 | 5 | Year: 2013 6 | 7 | ---- 8 | 9 | Text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 10 | -------------------------------------------------------------------------------- /content/1-projects/2-project-b/room.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/1-projects/2-project-b/room.jpg -------------------------------------------------------------------------------- /content/1-projects/2-project-b/table.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/1-projects/2-project-b/table.jpg -------------------------------------------------------------------------------- /content/1-projects/3-project-c/camera.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/1-projects/3-project-c/camera.jpg -------------------------------------------------------------------------------- /content/1-projects/3-project-c/project.de.txt: -------------------------------------------------------------------------------- 1 | Title: Projekt C 2 | 3 | ---- 4 | 5 | Year: 2012 6 | 7 | ---- 8 | 9 | Text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 10 | -------------------------------------------------------------------------------- /content/1-projects/3-project-c/project.en.txt: -------------------------------------------------------------------------------- 1 | Title: Project C 2 | 3 | ---- 4 | 5 | Year: 2012 6 | 7 | ---- 8 | 9 | Text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 10 | -------------------------------------------------------------------------------- /content/1-projects/4-project-d/letters.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/1-projects/4-project-d/letters.jpg -------------------------------------------------------------------------------- /content/1-projects/4-project-d/project.de.txt: -------------------------------------------------------------------------------- 1 | Title: Projekt D 2 | 3 | ---- 4 | 5 | Year: 2013 6 | 7 | ---- 8 | 9 | Text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 10 | -------------------------------------------------------------------------------- /content/1-projects/4-project-d/project.en.txt: -------------------------------------------------------------------------------- 1 | Title: Project D 2 | 3 | ---- 4 | 5 | Year: 2013 6 | 7 | ---- 8 | 9 | Text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 10 | -------------------------------------------------------------------------------- /content/1-projects/5-project-e/project.de.txt: -------------------------------------------------------------------------------- 1 | Title: Projekt E 2 | 3 | ---- 4 | 5 | Year: 2012 6 | 7 | ---- 8 | 9 | Text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 10 | -------------------------------------------------------------------------------- /content/1-projects/5-project-e/project.en.txt: -------------------------------------------------------------------------------- 1 | Title: Project E 2 | 3 | ---- 4 | 5 | Year: 2012 6 | 7 | ---- 8 | 9 | Text: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. 10 | -------------------------------------------------------------------------------- /content/1-projects/5-project-e/typewriter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/1-projects/5-project-e/typewriter.jpg -------------------------------------------------------------------------------- /content/1-projects/projects.de.txt: -------------------------------------------------------------------------------- 1 | Title: Projekte 2 | 3 | ---- 4 | 5 | Text: Das Portfolio-Layout kann zum Beispiel dafür verwendet werden, um aktuelle Design-Projekte oder deine Lieblingsrezepte zu zeigen. Oder vielleicht etwas völlig anderes? Alle Projekte sind Unterseiten der projects-Seite and werden im projects.php-Snippet geladen. -------------------------------------------------------------------------------- /content/1-projects/projects.en.txt: -------------------------------------------------------------------------------- 1 | Title: Projects 2 | 3 | ---- 4 | 5 | Text: This portfolio layout might be used to showcase your latest design work, a collection of your favorite recipes or maybe something completely different? All projects are subpages of the projects page and are fetched by a snippet file called showcase.php. 6 | -------------------------------------------------------------------------------- /content/2-blog/20160802-extending-kirby/extending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/2-blog/20160802-extending-kirby/extending.png -------------------------------------------------------------------------------- /content/2-blog/20160803-licensing-kirby/licensing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/2-blog/20160803-licensing-kirby/licensing.png -------------------------------------------------------------------------------- /content/2-blog/20160804-content-in-kirby/content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/2-blog/20160804-content-in-kirby/content.png -------------------------------------------------------------------------------- /content/2-blog/blog.de.txt: -------------------------------------------------------------------------------- 1 | Title: Blog 2 | 3 | ---- 4 | 5 | Text: Blogging mit Kirby ist einfach und macht Spaß. Dieses Beispiel-Blog zeigt, wie man mit Kirby und wenigen Zeilen Code seine eigene Blogengine bauen kann. Tags, Kategorien oder was auch immer du noch gerne zusätzlich hättest, lässt sich jederzeit ergänzen. -------------------------------------------------------------------------------- /content/2-blog/blog.en.txt: -------------------------------------------------------------------------------- 1 | Title: Blog 2 | 3 | ---- 4 | 5 | Text: Blogging with Kirby is as easy as it’s fun. This simple blog shows just a basic implementation of a blogging engine, realized with only a few lines of code. It can easily be extended with tags, categories or whatever feature you need. 6 | 7 | ---- 8 | 9 | Perpage: 2 -------------------------------------------------------------------------------- /content/3-about/0-bob-meowerly/bob-meowerly.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/3-about/0-bob-meowerly/bob-meowerly.jpg -------------------------------------------------------------------------------- /content/3-about/0-bob-meowerly/team.de.txt: -------------------------------------------------------------------------------- 1 | Title: Bob Meowerly 2 | 3 | ---- 4 | 5 | About: Bob hat diese Firma zusammen mit einem Freund in einer Garage irgendwo in Kalifornien gegründet. 6 | 7 | ---- 8 | 9 | Position: MEOW 10 | 11 | ---- 12 | 13 | Phone: +49 12345 568-90 14 | 15 | ---- 16 | 17 | Email: bob@example.com -------------------------------------------------------------------------------- /content/3-about/0-bob-meowerly/team.en.txt: -------------------------------------------------------------------------------- 1 | Title: Bob Meowerly 2 | 3 | ---- 4 | 5 | About: He was the one who founded this company together with a friend in a garage, somewhere in California. 6 | 7 | ---- 8 | 9 | Position: MEOW 10 | 11 | ---- 12 | 13 | Phone: +49 12345 568-90 14 | 15 | ---- 16 | 17 | Email: bob@example.com 18 | -------------------------------------------------------------------------------- /content/3-about/0-brad-kitt/brad-kitt.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/3-about/0-brad-kitt/brad-kitt.jpg -------------------------------------------------------------------------------- /content/3-about/0-brad-kitt/team.de.txt: -------------------------------------------------------------------------------- 1 | Title: Brad Kitt 2 | 3 | ---- 4 | 5 | About: Über Jahre konnte Brad Erfahrung in großen SaaS (Schnurren as a Service) Firmen sammeln. 6 | 7 | ---- 8 | 9 | Position: Katering 10 | 11 | ---- 12 | 13 | Phone: +49 12345 568-60 14 | 15 | ---- 16 | 17 | Email: brad@example.com 18 | -------------------------------------------------------------------------------- /content/3-about/0-brad-kitt/team.en.txt: -------------------------------------------------------------------------------- 1 | Title: Brad Kitt 2 | 3 | ---- 4 | 5 | About: An experienced business cat who makes sure that everyone in the company always stays happy. 6 | 7 | ---- 8 | 9 | Position: Yarn Supply 10 | 11 | ---- 12 | 13 | Phone: +49 12345 568-60 14 | 15 | ---- 16 | 17 | Email: brad@example.com 18 | -------------------------------------------------------------------------------- /content/3-about/0-cat-winslet/cat-winslet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/3-about/0-cat-winslet/cat-winslet.jpg -------------------------------------------------------------------------------- /content/3-about/0-cat-winslet/team.de.txt: -------------------------------------------------------------------------------- 1 | Title: Cat Winslet 2 | 3 | ---- 4 | 5 | About: Cat hat zuvor in diversen gehobenen Positionen auf Kratzbäumen weltweit gearbeitet. 6 | 7 | ---- 8 | 9 | Position: Mausendienst 10 | 11 | ---- 12 | 13 | Phone: +49 12345 568-34 14 | 15 | ---- 16 | 17 | Email: cat@example.com 18 | -------------------------------------------------------------------------------- /content/3-about/0-cat-winslet/team.en.txt: -------------------------------------------------------------------------------- 1 | Title: Cat Winslet 2 | 3 | ---- 4 | 5 | About: Cat had been working in leading positions in different companies for some years, until she joined *us*. 6 | 7 | ---- 8 | 9 | Position: Purring Services 10 | 11 | ---- 12 | 13 | Phone: +49 12345 568-34 14 | 15 | ---- 16 | 17 | Email: cat@example.com 18 | -------------------------------------------------------------------------------- /content/3-about/0-hunter-s-tomcat/hunter-s-tomcat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/content/3-about/0-hunter-s-tomcat/hunter-s-tomcat.jpg -------------------------------------------------------------------------------- /content/3-about/0-hunter-s-tomcat/team.de.txt: -------------------------------------------------------------------------------- 1 | Title: Hunter S. Tomcat 2 | 3 | ---- 4 | 5 | About: Auf den ersten Blick eine nette kleine Katze, auf den zweiten Blick ein knallharter Papiertiger. 6 | 7 | ---- 8 | 9 | Position: Papiertiger 10 | 11 | ---- 12 | 13 | Phone: +49 12345 568-25 14 | 15 | ---- 16 | 17 | Email: hunter@example.com 18 | -------------------------------------------------------------------------------- /content/3-about/0-hunter-s-tomcat/team.en.txt: -------------------------------------------------------------------------------- 1 | Title: Hunter S. Tomcat 2 | 3 | ---- 4 | 5 | About: At first sight, hunter may look like a nice cat. But since he joined us, we didn’t need any other lawyer anymore … 6 | 7 | ---- 8 | 9 | Position: Master of Claws 10 | 11 | ---- 12 | 13 | Phone: +49 12345 568-25 14 | 15 | ---- 16 | 17 | Email: hunter@example.com 18 | -------------------------------------------------------------------------------- /content/3-about/about.de.txt: -------------------------------------------------------------------------------- 1 | Title: Über uns 2 | 3 | ---- 4 | 5 | Intro: Diese Seite demonstriert, wie man Unterseiten dafür verwenden kann, um zum Beispiel Inhalte für Team-Mitglieder zu speichern und abzurufen. Dieser Ansatz ist vor allem dann sinnvoll, wenn du viele verschiedene Inhalte strukturieren und mit zusätzlichen Bildern und Dateien versehen willst. 6 | 7 | ---- 8 | 9 | Text: Du kannst Unterseiten auch dafür verwenden, um (link: https://getkirby.com/docs/cookbook/one-pager text: One-Pager)-Seiten umzusetzen, die viele verschiedene Inhaltsbereiche umfassen. 10 | 11 | ---- 12 | 13 | Url-key: ueber-uns -------------------------------------------------------------------------------- /content/3-about/about.en.txt: -------------------------------------------------------------------------------- 1 | Title: About 2 | 3 | ---- 4 | 5 | Intro: This page demonstrates how you can utilize subpages to store content, like our team members shown below. This approach is especially useful when you have to handle a large number of datasets, many different kinds of data (like page sections) or very complex data with a lot of media files or fields. 6 | 7 | ---- 8 | 9 | Text: The approach of using subpages for storing content sections of a page can also be very useful for creating a (link: https://getkirby.com/docs/cookbook/one-pager text: one-page) website, featuring very different kinds of content. 10 | -------------------------------------------------------------------------------- /content/4-contact/contact.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /content/4-contact/docs.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /content/4-contact/forum.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /content/error/error.de.txt: -------------------------------------------------------------------------------- 1 | Title: Fehler 2 | 3 | ---- 4 | 5 | Intro: Die Seite konnte nicht gefunden werden. 6 | 7 | ---- 8 | 9 | Text: Nun ja, manchmal können Dinge schiefgehen und vielleicht hast du dich bei einer URL vertippt, einen kaputten Link angeklickt oder dein Computer möchte dich einfach nerven. Egal … bleib ruhig und schau dir doch stattdessen unsere wunderschöne (link: / text: Startseite) an. -------------------------------------------------------------------------------- /content/error/error.en.txt: -------------------------------------------------------------------------------- 1 | Title: Error 2 | 3 | ---- 4 | 5 | Intro: The page has not been found. 6 | 7 | ---- 8 | 9 | Text: Well, stuff can go wrong sometimes and maybe you mistyped a URL, tapped/clicked on a broken link or your computer just wants to drive you nuts. Anyway … keep calm and take a look at our beautiful (link: / text: homepage) instead. 10 | -------------------------------------------------------------------------------- /content/home/home.de.txt: -------------------------------------------------------------------------------- 1 | Title: Willkommen 2 | 3 | ---- 4 | 5 | Intro: Yay! Die Installation von Kirby hat geklappt :-) 6 | 7 | ---- 8 | 9 | Text: 10 | 11 | ## Los geht's 12 | 13 | - Gehe zum (link: panel text: Panel), um Kirby's Admin-Oberfläche auszuprobieren. 14 | - Schaue dir die (link: http://getkirby.com/docs text: Dokumentation) an und starte mit deiner eigenen Seite. 15 | - Folge (twitter: @getkirby) auf Twitter, um immer auf dem Laufenden zu bleiben. 16 | - Besuche das (link: http://forum.getkirby.com text: Forum), um dich mit anderen Kirby-Benutzern auszutauschen. 17 | - Melde dich für unseren monatlichen (link: https://getkirby.com/#kosmos text: Kirby Kosmos-Newsletter) an. 18 | - (link: https://getkirby.com/support text: Schreib uns), wenn du Hilfe brauchst. 19 | 20 | **Viel Spaß mit Kirby!** -------------------------------------------------------------------------------- /content/home/home.en.txt: -------------------------------------------------------------------------------- 1 | Title: Home 2 | 3 | ---- 4 | 5 | Intro: Yay! If you are seeing this, the installation of Kirby worked. :-) 6 | 7 | ---- 8 | 9 | Text: 10 | 11 | ## Get started 12 | 13 | - Go to the (link: panel text: Panel) to give Kirby's admin interface a try 14 | - Check out the (link: http://getkirby.com/docs text: docs) and start building your own site 15 | - Follow (twitter: @getkirby) on Twitter for updates 16 | - Visit the (link: http://forum.getkirby.com text: forum) to connect with other Kirby users 17 | - Sign up to (link: (link: https://getkirby.com/#kosmos text: Kirby Kosmos), our monthly newsletter 18 | - (link: http://getkirby.com/support text: Get in contact) if you need support. 19 | 20 | **Have fun with Kirby!** 21 | -------------------------------------------------------------------------------- /content/site.de.txt: -------------------------------------------------------------------------------- 1 | Title: Kirby Sprachen-Kit 2 | 3 | ---- 4 | 5 | Description: Dies ist Kirby's Sprachen-Kit. 6 | 7 | ---- 8 | 9 | Copyright: © 2009–(date: Year) (link: http://getkirby.com text: Das Kirby-Team) -------------------------------------------------------------------------------- /content/site.en.txt: -------------------------------------------------------------------------------- 1 | Title: Kirby Langkit 2 | 3 | ---- 4 | 5 | Description: This is Kirby's Langkit. 6 | 7 | ---- 8 | 9 | Copyright: © 2009–(date: Year) (link: http://getkirby.com text: The Kirby Team) -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | launch(); -------------------------------------------------------------------------------- /kirby/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /vendor/**/.git -------------------------------------------------------------------------------- /kirby/.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | sudo: false 3 | php: 4 | - 7.2 5 | - 7.3 6 | - 7.4 7 | matrix: 8 | fast_finish: true 9 | -------------------------------------------------------------------------------- /kirby/bootstrap.php: -------------------------------------------------------------------------------- 1 | page->site(); 16 | 17 | // use current language if $lang not set 18 | if(is_null($lang)) $lang = $site->language()->code(); 19 | 20 | // if language is default/fallback language 21 | if($site->language($lang)->default()) return true; 22 | 23 | $current = $this->page->content($lang); 24 | $default = $this->page->content($site->defaultLanguage->code); 25 | 26 | $field = $current->get($this->key); 27 | $untranslated = $default->get($this->key)->value(); 28 | 29 | return $field->isNotEmpty() && $field->value() !== $untranslated; 30 | 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /kirby/branches/multilang/languages.php: -------------------------------------------------------------------------------- 1 | site = $site; 14 | } 15 | 16 | public function find($code) { 17 | return isset($this->data[$code]) ? $this->data[$code] : null; 18 | } 19 | 20 | public function codes() { 21 | return $this->keys(); 22 | } 23 | 24 | public function findDefault() { 25 | return $this->site->defaultLanguage(); 26 | } 27 | 28 | public function __debuginfo() { 29 | return array_keys($this->data); 30 | } 31 | 32 | } -------------------------------------------------------------------------------- /kirby/composer.php: -------------------------------------------------------------------------------- 1 | kirby = kirby::instance(); 11 | if(is_a($path, 'Media')) { 12 | parent::__construct($path->root(), $path->url()); 13 | } else { 14 | parent::__construct( 15 | url::isAbsolute($path) ? null : $this->kirby->roots()->index() . DS . ltrim($path, DS), 16 | url::makeAbsolute($path) 17 | ); 18 | } 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /kirby/core/avatar.php: -------------------------------------------------------------------------------- 1 | user = $user; 14 | 15 | // this should rather be coming from the user object 16 | $this->kirby = kirby::instance(); 17 | 18 | // try to find the avatar 19 | if($file = f::resolve($this->kirby->roots()->avatars() . DS . $user->username(), ['jpg', 'jpeg', 'gif', 'png'])) { 20 | $filename = f::filename($file); 21 | } else { 22 | $filename = $user->username() . '.jpg'; 23 | $file = $this->kirby->roots()->avatars() . DS . $filename; 24 | } 25 | 26 | parent::__construct($file, $this->kirby->urls()->avatars() . '/' . $filename); 27 | 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /kirby/kirby/component.php: -------------------------------------------------------------------------------- 1 | kirby = $kirby; 13 | } 14 | 15 | public function defaults() { 16 | return []; 17 | } 18 | 19 | public function configure() { 20 | 21 | } 22 | 23 | public function kirby() { 24 | return $this->kirby; 25 | } 26 | 27 | } -------------------------------------------------------------------------------- /kirby/kirby/component/response.php: -------------------------------------------------------------------------------- 1 | 10 | * @link http://getkirby.com 11 | * @copyright Bastian Allgeier 12 | * @license http://getkirby.com/license 13 | */ 14 | class Response extends \Kirby\Component { 15 | 16 | /** 17 | * Builds and return the response by various input 18 | * 19 | * @param mixed $response 20 | * @return mixed 21 | */ 22 | public function make($response) { 23 | 24 | if(is_string($response)) { 25 | return $this->kirby->render(page($response)); 26 | } else if(is_array($response)) { 27 | return $this->kirby->render(page($response[0]), $response[1]); 28 | } else if(is_a($response, 'Page')) { 29 | return $this->kirby->render($response); 30 | } else if(is_a($response, 'Response')) { 31 | return $response; 32 | } else { 33 | return null; 34 | } 35 | 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /kirby/kirby/registry/hook.php: -------------------------------------------------------------------------------- 1 | 10 | * @link http://getkirby.com 11 | * @copyright Bastian Allgeier 12 | * @license http://getkirby.com/license 13 | */ 14 | class Hook extends Entry { 15 | 16 | /** 17 | * Registers a new hook 18 | * 19 | * This will directly call the $kirby->hook() method 20 | * A hook has to be a valid closure 21 | * 22 | * @param string $name 23 | * @param Closure $callback 24 | * @return Closure 25 | */ 26 | public function set($name, $callback) { 27 | return $this->kirby->hook($name, $callback); 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /kirby/kirby/registry/route.php: -------------------------------------------------------------------------------- 1 | 10 | * @link http://getkirby.com 11 | * @copyright Bastian Allgeier 12 | * @license http://getkirby.com/license 13 | */ 14 | class Route extends Entry { 15 | 16 | /** 17 | * Registers a new route 18 | * 19 | * This will directly add a route to 20 | * Kirby's route system, by calling $kirby->routes() 21 | * 22 | * @param string $attr 23 | */ 24 | public function set($attr) { 25 | $this->kirby->routes([$attr]); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /kirby/kirby/registry/tag.php: -------------------------------------------------------------------------------- 1 | 13 | * @link http://getkirby.com 14 | * @copyright Bastian Allgeier 15 | * @license http://getkirby.com/license 16 | */ 17 | class Tag extends Entry { 18 | 19 | /** 20 | * Registers a new kirby tag array 21 | * 22 | * This will directly add the tag to the 23 | * kirbytext::$tags array. 24 | * 25 | * @param string $name 26 | * @param array $tag 27 | */ 28 | public function set($name, $tag) { 29 | kirbytext::$tags[$name] = $tag; 30 | } 31 | 32 | /** 33 | * Retreives a registered kirby tag 34 | * 35 | * @param string $name 36 | * @return array 37 | */ 38 | public function get($name) { 39 | return a::get(kirbytext::$tags, $name); 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /kirby/kirby/request/params.php: -------------------------------------------------------------------------------- 1 | toArray()); 12 | } 13 | 14 | } -------------------------------------------------------------------------------- /kirby/kirby/request/path.php: -------------------------------------------------------------------------------- 1 | data); 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /kirby/kirby/request/query.php: -------------------------------------------------------------------------------- 1 | parent(), $page->dirname()); 13 | } else { 14 | throw new Exception('The page could not be found'); 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /kirby/lib/structure.php: -------------------------------------------------------------------------------- 1 | data[$key])) { 10 | return $this->data[$key]; 11 | } else { 12 | $lowerkeys = array_change_key_case($this->data, CASE_LOWER); 13 | $lowerkey = strtolower($key); 14 | if(isset($lowerkeys[$lowerkey])) { 15 | return $lowerkeys[$lowerkey]; 16 | } 17 | } 18 | 19 | return new Field($this->page, $key, null); 20 | 21 | } 22 | 23 | /** 24 | * Get formatted date fields 25 | * 26 | * @param string $format 27 | * @param string $field 28 | * @return string 29 | */ 30 | public function date($format = null, $field = 'date') { 31 | 32 | if($timestamp = strtotime($this->get($field))) { 33 | if(is_null($format)) { 34 | return $timestamp; 35 | } else { 36 | return kirby()->options['date.handler']($format, $timestamp); 37 | } 38 | } 39 | 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /kirby/phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | test 5 | 6 | 7 | -------------------------------------------------------------------------------- /kirby/readme.md: -------------------------------------------------------------------------------- 1 | # Kirby v2 Core 2 | 3 | Please refer to the [Kirby Starterkit](http://github.com/getkirby-v2/starterkit) 4 | for a complete installation of Kirby 2. 5 | 6 | ## Kirby 2 - EOL 7 | 8 | Kirby 2 is an old version of Kirby CMS. We are supporting it with security updates until December 31st, 2020. 9 | 10 | For the latest version of Kirby, check out https://getkirby.com 11 | 12 | ## Author 13 | Bastian Allgeier 14 | 15 | 16 | ## Website 17 | 18 | 19 | ## License 20 | 21 | -------------------------------------------------------------------------------- /kirby/system.php: -------------------------------------------------------------------------------- 1 | roots->index = $root; 17 | $kirby->roots->site = $rootSite; 18 | $kirby->roots->content = $rootContent; 19 | 20 | // render 21 | echo $kirby->launch(); -------------------------------------------------------------------------------- /kirby/test/ModelsTest.php: -------------------------------------------------------------------------------- 1 | true)); 10 | $kirby->roots->content = TEST_ROOT_ETC . DS . 'content'; 11 | $kirby->roots->site = TEST_ROOT_ETC . DS . 'site'; 12 | 13 | // autoload all models 14 | $kirby->models(); 15 | 16 | $site = new Site($kirby); 17 | $a = $site->find('a'); 18 | 19 | $this->assertInstanceOf('Page', $a); 20 | $this->assertInstanceOf('APage', $a); 21 | $this->assertEquals('test', $a->customTestMethod()); 22 | 23 | $b = $site->find('b'); 24 | 25 | $this->assertInstanceOf('Page', $b); 26 | $this->assertFalse(is_a($b, 'APage')); 27 | $this->assertFalse('test' == $b->customTestMethod()); 28 | 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /kirby/test/RegistryEntryTest.php: -------------------------------------------------------------------------------- 1 | kirbyInstance()); 9 | } 10 | 11 | public function testConstruct() { 12 | 13 | $kirby = $this->kirbyInstance(); 14 | $registry = new Kirby\Registry($kirby); 15 | $entry = new Kirby\Registry\Entry($registry, 'subtype'); 16 | 17 | $this->assertInstanceOf('Kirby', $kirby); 18 | $this->assertInstanceOf('Kirby\\Registry', $entry->registry()); 19 | $this->assertEquals('subtype', $entry->subtype()); 20 | 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /kirby/test/etc/content/1-a/a.txt: -------------------------------------------------------------------------------- 1 | Title: A 2 | ---- 3 | Date: 2012-12-12 4 | ---- 5 | Created: 2012-12-12 6 | ---- -------------------------------------------------------------------------------- /kirby/test/etc/content/1-a/test.js: -------------------------------------------------------------------------------- 1 | alert('hello'); -------------------------------------------------------------------------------- /kirby/test/etc/content/2-b/b.txt: -------------------------------------------------------------------------------- 1 | Title: B -------------------------------------------------------------------------------- /kirby/test/etc/content/error/error.txt: -------------------------------------------------------------------------------- 1 | Title: Error -------------------------------------------------------------------------------- /kirby/test/etc/content/home/home.txt: -------------------------------------------------------------------------------- 1 | Title: Home -------------------------------------------------------------------------------- /kirby/test/etc/content/site.txt: -------------------------------------------------------------------------------- 1 | Title: Kirby 2 | 3 | ---- 4 | 5 | Author: Bastian Allgeier GmbH 6 | 7 | ---- 8 | 9 | Description: This is a Kirby test file 10 | 11 | ---- 12 | 13 | Keywords: Kirby, CMS, file-based 14 | 15 | ---- 16 | 17 | Copyright: © 2009-(date: Year) (link: http://getkirby.com text: Kirby) -------------------------------------------------------------------------------- /kirby/test/etc/content/tests/field-name-test/test.txt: -------------------------------------------------------------------------------- 1 | CamelCase: test 2 | ---- 3 | lowercase: test 4 | ---- 5 | UPPERCASE: test 6 | ---- 7 | Name-With-Dashes: test 8 | ---- 9 | Name_With_Underscores: test -------------------------------------------------------------------------------- /kirby/test/etc/content/tests/file-extension-case-test/a.JSON: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/kirby/test/etc/content/tests/file-extension-case-test/a.JSON -------------------------------------------------------------------------------- /kirby/test/etc/content/tests/file-extension-case-test/b.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/kirby/test/etc/content/tests/file-extension-case-test/b.json -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/gist/expected.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/gist/test.txt: -------------------------------------------------------------------------------- 1 | (gist: https://gist.github.com/bastianallgeier/deae448c5913d79809a6) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/image-with-alt/expected.html: -------------------------------------------------------------------------------- 1 |
Kirby
-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/image-with-alt/test.txt: -------------------------------------------------------------------------------- 1 | (image: http://getkirby.com/image.jpg alt: Kirby) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/image-with-caption/expected.html: -------------------------------------------------------------------------------- 1 |
Kirby
-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/image-with-caption/test.txt: -------------------------------------------------------------------------------- 1 | (image: http://getkirby.com/image.jpg caption: Kirby) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/image-with-link-popup/expected.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/image-with-link-popup/test.txt: -------------------------------------------------------------------------------- 1 | (image: http://getkirby.com/image.jpg link: http://getkirby.com popup: true) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/image-with-link/expected.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/image-with-link/test.txt: -------------------------------------------------------------------------------- 1 | (image: http://getkirby.com/image.jpg link: http://getkirby.com) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/image/expected.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/image/test.txt: -------------------------------------------------------------------------------- 1 | (image: http://getkirby.com/image.jpg) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/input-with-placeholder/expected.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/input-with-placeholder/test.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-with-class/expected.html: -------------------------------------------------------------------------------- 1 |

Kirby

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-with-class/test.txt: -------------------------------------------------------------------------------- 1 | (link: http://getkirby.com text: Kirby class: link) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-with-link-as-text/expected.html: -------------------------------------------------------------------------------- 1 |

getkirby.com

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-with-link-as-text/test.txt: -------------------------------------------------------------------------------- 1 | (link: http://getkirby.com text: http://getkirby.com) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-with-popup/expected.html: -------------------------------------------------------------------------------- 1 |

Kirby

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-with-popup/test.txt: -------------------------------------------------------------------------------- 1 | (link: http://getkirby.com text: Kirby popup: yes) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-with-rel/expected.html: -------------------------------------------------------------------------------- 1 |

Kirby

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-with-rel/test.txt: -------------------------------------------------------------------------------- 1 | (link: http://getkirby.com text: Kirby rel: me) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-with-target/expected.html: -------------------------------------------------------------------------------- 1 |

Kirby

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-with-target/test.txt: -------------------------------------------------------------------------------- 1 | (link: http://getkirby.com text: Kirby target: _blank) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-without-text/expected.html: -------------------------------------------------------------------------------- 1 |

getkirby.com

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link-without-text/test.txt: -------------------------------------------------------------------------------- 1 | (link: http://getkirby.com) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link/expected.html: -------------------------------------------------------------------------------- 1 |

Kirby

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/link/test.txt: -------------------------------------------------------------------------------- 1 | (link: http://getkirby.com text: Kirby) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/multiline-parenthesis/expected.html: -------------------------------------------------------------------------------- 1 |

(
2 | multi line parenthesis
3 | should be rendered correctly
4 | )

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/multiline-parenthesis/test.txt: -------------------------------------------------------------------------------- 1 | ( 2 | multi line parenthesis 3 | should be rendered correctly 4 | ) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/non-matching-parenthesises/expected.html: -------------------------------------------------------------------------------- 1 |

lorem ipsum

2 |

(lorem ipsum)

3 |

lorem ipsum

4 |

(

5 |

lorem ipsum

6 |

(lorem ipsum)

7 |

lorem ipsum

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/non-matching-parenthesises/test.txt: -------------------------------------------------------------------------------- 1 | lorem ipsum 2 | 3 | (lorem ipsum) 4 | 5 | lorem ipsum 6 | 7 | ( 8 | 9 | lorem ipsum 10 | 11 | (lorem ipsum) 12 | 13 | lorem ipsum -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/tag-in-parenthesis/expected.html: -------------------------------------------------------------------------------- 1 |

(test Kirby)

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/tag-in-parenthesis/test.txt: -------------------------------------------------------------------------------- 1 | (test (link: http://getkirby.com text: Kirby class: link)) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/tel/expected.html: -------------------------------------------------------------------------------- 1 |

+49 789 22323

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/tel/test.txt: -------------------------------------------------------------------------------- 1 | (tel: +49 789 22323) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/twitter/expected.html: -------------------------------------------------------------------------------- 1 |

@bastianallgeier

-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/twitter/test.txt: -------------------------------------------------------------------------------- 1 | (twitter: bastianallgeier) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/vimeo/expected.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/vimeo/test.txt: -------------------------------------------------------------------------------- 1 | (vimeo: https://vimeo.com/115805751) -------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/youtube/expected.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /kirby/test/etc/kirbytext/youtube/test.txt: -------------------------------------------------------------------------------- 1 | (youtube: https://www.youtube.com/watch?v=VhP7ZzZysQg) -------------------------------------------------------------------------------- /kirby/test/etc/site/accounts/test.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | username: test 4 | email: test@getkirby.com 5 | password: > 6 | $2a$10$kpBxQZ4Ib4hCLGDa7T3GYOpdR1JdB7dA2yXBorVJJrjBE8MRs.hQy 7 | language: en 8 | role: admin 9 | firstname: Test 10 | lastname: User -------------------------------------------------------------------------------- /kirby/test/etc/site/cache/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/kirby/test/etc/site/cache/.gitkeep -------------------------------------------------------------------------------- /kirby/test/etc/site/config/config.php: -------------------------------------------------------------------------------- 1 | roots->content = TEST_ROOT_ETC . DS . 'content'; 11 | $kirby->roots->accounts = TEST_ROOT_ETC . DS . 'site' . DS . 'accounts'; 12 | return $kirby; 13 | 14 | } 15 | 16 | public function siteInstance($kirby = null, $options = array()) { 17 | 18 | $kirby = !is_null($kirby) ? $kirby : $this->kirbyInstance($options); 19 | $site = new Site($kirby); 20 | 21 | return $site; 22 | 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /kirby/vendor/autoload.php: -------------------------------------------------------------------------------- 1 | $vendorDir . '/getkirby/toolkit/bootstrap.php', 10 | '4d43cb4a92fc9083dc76dd8887c0a0ef' => $baseDir . '/composer.php', 11 | ); 12 | -------------------------------------------------------------------------------- /kirby/vendor/composer/autoload_namespaces.php: -------------------------------------------------------------------------------- 1 | array($vendorDir . '/erusev/parsedown-extra'), 10 | 'Parsedown' => array($vendorDir . '/erusev/parsedown'), 11 | 'Michelf' => array($vendorDir . '/michelf/php-smartypants'), 12 | ); 13 | -------------------------------------------------------------------------------- /kirby/vendor/composer/autoload_psr4.php: -------------------------------------------------------------------------------- 1 | array($vendorDir . '/filp/whoops/src/Whoops'), 10 | 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), 11 | ); 12 | -------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 5.6 5 | - 5.5 6 | - 5.4 7 | - 5.3 8 | 9 | install: 10 | - composer self-update 11 | - composer install -------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "erusev/parsedown-extra", 3 | "description": "An extension of Parsedown that adds support for Markdown Extra.", 4 | "keywords": ["markdown", "markdown extra", "parser", "parsedown"], 5 | "homepage": "https://github.com/erusev/parsedown-extra", 6 | "type": "library", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "Emanuil Rusev", 11 | "email": "hello@erusev.com", 12 | "homepage": "http://erusev.com" 13 | } 14 | ], 15 | "require": { 16 | "erusev/parsedown": "~1.4" 17 | }, 18 | "autoload": { 19 | "psr-0": {"ParsedownExtra": ""} 20 | } 21 | } -------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | test/ParsedownExtraTest.php 6 | 7 | 8 | -------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/ParsedownExtraTest.php: -------------------------------------------------------------------------------- 1 | The HTML specification 2 | is maintained by the W3C. 3 | The abbreviation ML is contained in the abbreviation HTML.

-------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/data/abbreviation.md: -------------------------------------------------------------------------------- 1 | The HTML specification 2 | is maintained by the W3C. 3 | The abbreviation ML is contained in the abbreviation HTML. 4 | 5 | *[HTML]: Hyper Text Markup Language 6 | *[W3C]: World Wide Web Consortium 7 | *[ML]: Markup Language -------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/data/compound_footnote.html: -------------------------------------------------------------------------------- 1 |

footnote 1 and another one 2

2 |
3 |
4 |
    5 |
  1. 6 |

    line 1 7 | line 2

    8 |
    9 |

    quote

    10 |
    11 |

    another paragraph 

    12 |
  2. 13 |
  3. 14 |

    paragraph

    15 |

    another paragraph 

    16 |
  4. 17 |
18 |
-------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/data/compound_footnote.md: -------------------------------------------------------------------------------- 1 | footnote [^1] and another one [^2] 2 | 3 | [^1]: line 1 4 | line 2 5 | 6 | > quote 7 | 8 | another paragraph 9 | 10 | [^2]: 11 | paragraph 12 | 13 | another paragraph 14 | -------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/data/definition_list.html: -------------------------------------------------------------------------------- 1 |
2 |
Term 1
3 |
one
4 |
two 5 | extra line
6 |
Term 2
7 |

lazy 8 | line

9 |

multiple

10 |

paragraphs

11 |

nested

12 |
code block
13 |
14 |

quote 15 | block

16 |
17 |
-------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/data/definition_list.md: -------------------------------------------------------------------------------- 1 | Term 1 2 | : one 3 | : two 4 | extra line 5 | 6 | Term 2 7 | 8 | : lazy 9 | line 10 | 11 | : multiple 12 | 13 | paragraphs 14 | 15 | : nested 16 | 17 | code block 18 | 19 | > quote 20 | > block -------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/data/footnote.md: -------------------------------------------------------------------------------- 1 | first [^1] second [^2]. 2 | 3 | [^1]: one 4 | [^2]: two 5 | 6 | first [^a] second [^b]. 7 | 8 | [^a]: one 9 | [^b]: two 10 | 11 | second time [^1] -------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/data/markdown_inside_markup.html: -------------------------------------------------------------------------------- 1 |
2 |

markdown

3 |

This is another paragraph. It contains inline markup.

4 |
5 | _no markdown_ 6 |
7 |
8 |
9 |
10 |

markdown

11 |
12 |

markdown

13 |
14 |
15 |
16 |
17 | _no markdown_ 18 |
19 |

markdown

20 |
21 |
22 |
23 |
24 | _no markdown_ 25 |
-------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/data/markdown_inside_markup.md: -------------------------------------------------------------------------------- 1 |
2 | _markdown_ 3 | 4 | This is another paragraph. It contains inline markup. 5 |
6 | _no markdown_ 7 |
8 |
9 | 10 | --- 11 | 12 |
13 | _markdown_ 14 |
15 | _markdown_ 16 |
17 |
18 | 19 | --- 20 | 21 |
22 | _no markdown_ 23 |
24 | _markdown_ 25 |
26 |
27 | 28 | --- 29 | 30 |
31 | _no markdown_ 32 |
-------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/data/special_attributes.html: -------------------------------------------------------------------------------- 1 |

Header 1

2 |

Header 2

3 |

The Site

4 |

The Site

5 |

link

6 |

-------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown-extra/test/data/special_attributes.md: -------------------------------------------------------------------------------- 1 | Header 1 {#header1} 2 | ======== 3 | 4 | ## Header 2 ## {#header2} 5 | 6 | ## The Site ## {.main} 7 | 8 | ## The Site ## {.main .shine #the-site} 9 | 10 | [link](http://parsedown.org) {.primary #link .upper-case} 11 | 12 | ![logo](/md.png) {#logo .big} -------------------------------------------------------------------------------- /kirby/vendor/erusev/parsedown/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "erusev/parsedown", 3 | "description": "Parser for Markdown.", 4 | "keywords": ["markdown", "parser"], 5 | "homepage": "http://parsedown.org", 6 | "type": "library", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "Emanuil Rusev", 11 | "email": "hello@erusev.com", 12 | "homepage": "http://erusev.com" 13 | } 14 | ], 15 | "require": { 16 | "php": ">=5.3.0", 17 | "ext-mbstring": "*" 18 | }, 19 | "require-dev": { 20 | "phpunit/phpunit": "^4.8.35" 21 | }, 22 | "autoload": { 23 | "psr-0": {"Parsedown": ""} 24 | }, 25 | "autoload-dev": { 26 | "psr-0": { 27 | "TestParsedown": "test/", 28 | "ParsedownTest": "test/", 29 | "CommonMarkTest": "test/", 30 | "CommonMarkTestWeak": "test/" 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # 2.1.0 2 | 3 | * Add a `SystemFacade` to allow clients to override Whoops behavior. 4 | * Show frame arguments in `PrettyPageHandler`. 5 | * Highlight the line with the error. 6 | * Add icons to search on Google and Stack Overflow. 7 | 8 | # 2.0.0 9 | 10 | Backwards compatibility breaking changes: 11 | 12 | * `Run` class is now `final`. If you inherited from `Run`, please now instead use a custom `SystemFacade` injected into the `Run` constructor, or contribute your changes to our core. 13 | * PHP < 5.5 support dropped. 14 | -------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Exception/ErrorException.php: -------------------------------------------------------------------------------- 1 | 5 | */ 6 | 7 | namespace Whoops\Exception; 8 | 9 | use ErrorException as BaseErrorException; 10 | 11 | /** 12 | * Wraps ErrorException; mostly used for typing (at least now) 13 | * to easily cleanup the stack trace of redundant info. 14 | */ 15 | class ErrorException extends BaseErrorException 16 | { 17 | } 18 | -------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Handler/HandlerInterface.php: -------------------------------------------------------------------------------- 1 | 5 | */ 6 | 7 | namespace Whoops\Handler; 8 | 9 | use Whoops\Exception\Inspector; 10 | use Whoops\RunInterface; 11 | 12 | interface HandlerInterface 13 | { 14 | /** 15 | * @return int|null A handler may return nothing, or a Handler::HANDLE_* constant 16 | */ 17 | public function handle(); 18 | 19 | /** 20 | * @param RunInterface $run 21 | * @return void 22 | */ 23 | public function setRun(RunInterface $run); 24 | 25 | /** 26 | * @param \Throwable $exception 27 | * @return void 28 | */ 29 | public function setException($exception); 30 | 31 | /** 32 | * @param Inspector $inspector 33 | * @return void 34 | */ 35 | public function setInspector(Inspector $inspector); 36 | } 37 | -------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Resources/views/frames_container.html.php: -------------------------------------------------------------------------------- 1 |
2 | render($frame_list) ?> 3 |
-------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Resources/views/frames_description.html.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | Application frames (countIsApplication() ?>) 6 | 7 | 8 | 9 | Application frames (countIsApplication() ?>) 10 | 11 | 12 | 13 | All frames () 14 | 15 | 16 | 17 | Stack frames () 18 | 19 | 20 |
21 | -------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Resources/views/header_outer.html.php: -------------------------------------------------------------------------------- 1 |
2 | render($header) ?> 3 |
4 | -------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Resources/views/layout.html.php: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | <?php echo $tpl->escape($page_title) ?> 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 | 20 | render($panel_left_outer) ?> 21 | 22 | render($panel_details_outer) ?> 23 | 24 |
25 |
26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_details.html.php: -------------------------------------------------------------------------------- 1 | render($frame_code) ?> 2 | render($env_details) ?> -------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_details_outer.html.php: -------------------------------------------------------------------------------- 1 |
2 | render($panel_details) ?> 3 |
-------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_left.html.php: -------------------------------------------------------------------------------- 1 | render($header_outer) ?> 2 | render($frames_description) ?> 3 | render($frames_container) ?> -------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Resources/views/panel_left_outer.html.php: -------------------------------------------------------------------------------- 1 |
2 | render($panel_left) ?> 3 |
-------------------------------------------------------------------------------- /kirby/vendor/filp/whoops/src/Whoops/Util/HtmlDumperOutput.php: -------------------------------------------------------------------------------- 1 | 5 | */ 6 | 7 | namespace Whoops\Util; 8 | 9 | /** 10 | * Used as output callable for Symfony\Component\VarDumper\Dumper\HtmlDumper::dump() 11 | * 12 | * @see TemplateHelper::dump() 13 | */ 14 | class HtmlDumperOutput 15 | { 16 | private $output; 17 | 18 | public function __invoke($line, $depth) 19 | { 20 | // A negative depth means "end of dump" 21 | if ($depth >= 0) { 22 | // Adds a two spaces indentation to the line 23 | $this->output .= str_repeat(' ', $depth) . $line . "\n"; 24 | } 25 | } 26 | 27 | public function getOutput() 28 | { 29 | return $this->output; 30 | } 31 | 32 | public function clear() 33 | { 34 | $this->output = null; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | dist: trusty 3 | sudo: false 4 | php: 5 | - 7.2 6 | - 7.3 7 | - 7.4 8 | matrix: 9 | fast_finish: true 10 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "getkirby/toolkit", 3 | "description": "The Kirby 2 toolkit is a set of handy classes and helpers which make your life with PHP easier.", 4 | "keywords": ["toolkit"], 5 | "homepage": "http://toolkit.getkirby.com", 6 | "license": "MIT", 7 | "authors": [ 8 | { 9 | "name": "Bastian Allgeier", 10 | "email": "bastian@getkirby.com", 11 | "homepage": "http://bastianallgeier.com" 12 | } 13 | ], 14 | "support": { 15 | "email": "support@getkirby.com", 16 | "issues": "https://github.com/getkirby/toolkit/issues", 17 | "forum": "https://forum.getkirby.com", 18 | "source": "https://github.com/getkirby/toolkit" 19 | }, 20 | "autoload": { 21 | "files": ["bootstrap.php"] 22 | }, 23 | "require": { 24 | "php": ">=7.2.0" 25 | }, 26 | "archive": { 27 | "exclude": ["/.gitignore", "/.travis.yml", "/phpunit.xml", "/test"] 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/lib/c.php: -------------------------------------------------------------------------------- 1 | 11 | * @link http://getkirby.com 12 | * @copyright Bastian Allgeier 13 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 14 | */ 15 | class C extends Silo { 16 | public static $data = array(); 17 | } -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/lib/error.php: -------------------------------------------------------------------------------- 1 | 8 | * @link http://getkirby.com 9 | * @copyright Bastian Allgeier 10 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 11 | */ 12 | class Error extends Exception { 13 | 14 | public function message() { 15 | return $this->message; 16 | } 17 | 18 | public function code() { 19 | return $this->code; 20 | } 21 | 22 | public function __toString() { 23 | return $this->message; 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/lib/l.php: -------------------------------------------------------------------------------- 1 | 11 | * @link http://getkirby.com 12 | * @copyright Bastian Allgeier 13 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 14 | */ 15 | class L extends Silo { 16 | 17 | public static $data = array(); 18 | public static $locale = 'en_US'; 19 | 20 | public static function get($key = null, $data = null, $locale = null) { 21 | 22 | // get all keys 23 | if($key === null) { 24 | return parent::get(); 25 | 26 | // old default value behavior 27 | } else if(!is_array($data)) { 28 | return parent::get($key, $data); 29 | 30 | // string templates 31 | } else if(is_array($data)) { 32 | return str::template(parent::get($key), $data); 33 | } 34 | 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/lib/timer.php: -------------------------------------------------------------------------------- 1 | 8 | * @link http://getkirby.com 9 | * @copyright Bastian Allgeier 10 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 11 | */ 12 | class Timer { 13 | 14 | public static $time = null; 15 | 16 | public static function start() { 17 | $time = explode(' ', microtime()); 18 | static::$time = (double)$time[1] + (double)$time[0]; 19 | } 20 | 21 | public static function stop() { 22 | $time = explode(' ', microtime()); 23 | $time = (double)$time[1] + (double)$time[0]; 24 | $timer = static::$time; 25 | return round(($time-$timer), 5); 26 | } 27 | 28 | } -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/lib/toolkit.php: -------------------------------------------------------------------------------- 1 | 8 | * @link http://getkirby.com 9 | * @copyright Bastian Allgeier 10 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 11 | */ 12 | class Toolkit { 13 | 14 | public static $version = '2.5.14'; 15 | 16 | public static function version() { 17 | return static::$version; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/lib/tpl.php: -------------------------------------------------------------------------------- 1 | 10 | * @link http://getkirby.com 11 | * @copyright Bastian Allgeier 12 | * @license http://www.opensource.org/licenses/mit-license.php MIT License 13 | */ 14 | class Tpl extends Silo { 15 | 16 | public static $data = array(); 17 | 18 | public static function load($_file, $_data = array(), $_return = true) { 19 | if(!file_exists($_file)) return false; 20 | ob_start(); 21 | extract(array_merge(static::$data, (array)$_data)); 22 | require($_file); 23 | $_content = ob_get_contents(); 24 | ob_end_clean(); 25 | if($_return) return $_content; 26 | echo $_content; 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | test 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/readme.md: -------------------------------------------------------------------------------- 1 | # Kirby v2 Toolkit 2 | 3 | The Kirby 2 toolkit is a set of handy classes and helpers which make your life with PHP easier. 4 | 5 | ## Kirby 2 - EOL 6 | 7 | Kirby 2 is an old version of Kirby CMS. We are supporting it with security updates until December 31st, 2020. 8 | 9 | For the latest version of Kirby, check out https://getkirby.com 10 | 11 | ## License 12 | 13 | 14 | 15 | ## Author 16 | 17 | Bastian Allgeier 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/test/CTest.php: -------------------------------------------------------------------------------- 1 | assertEquals('testvalue', c::get('testvar')); 16 | $this->assertEquals('defaultvalue', c::get('nonexistentvar', 'defaultvalue')); 17 | 18 | } 19 | 20 | public function testSet() { 21 | 22 | c::set('anothervar', 'anothervalue'); 23 | c::set('testvar', 'overwrittenvalue'); 24 | 25 | $this->assertEquals('anothervalue', c::get('anothervar')); 26 | $this->assertEquals('overwrittenvalue', c::get('testvar')); 27 | 28 | c::set(array( 29 | 'var1' => 'value1', 30 | 'var2' => 'value2' 31 | )); 32 | 33 | $this->assertEquals('value1', c::get('var1')); 34 | $this->assertEquals('value2', c::get('var2')); 35 | 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/test/PasswordTest.php: -------------------------------------------------------------------------------- 1 | pw = 'mysupersecretpassword'; 13 | $this->hash = Password::hash($this->pw); 14 | 15 | } 16 | 17 | public function testHash() { 18 | $this->assertTrue(is_string($this->hash)); 19 | } 20 | 21 | public function testMatch() { 22 | 23 | $this->assertTrue(Password::match($this->pw, $this->hash)); 24 | $this->assertFalse(Password::match('myincorrectpassword', $this->hash)); 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/test/TimerTest.php: -------------------------------------------------------------------------------- 1 | assertTrue(is_float(timer::stop())); 13 | 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/test/VisitorTest.php: -------------------------------------------------------------------------------- 1 | assertEquals(false, visitor::ip()); 11 | } 12 | 13 | public function testAcceptedLanguage() { 14 | $this->assertEquals(null, visitor::acceptedLanguage()); 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/test/XmlTest.php: -------------------------------------------------------------------------------- 1 | string = 'Süper Önencœded ßtring'; 11 | } 12 | 13 | public function testEncodeDecode() { 14 | 15 | $expected = 'Süper Önencœded ßtring'; 16 | 17 | $this->assertEquals($expected, xml::encode($this->string)); 18 | $this->assertEquals($this->string, xml::decode($expected)); 19 | 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/test/etc/content.php: -------------------------------------------------------------------------------- 1 | My test content is -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/test/etc/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/kirby/vendor/getkirby/toolkit/test/etc/images/favicon.png -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/test/etc/system/executable.sh: -------------------------------------------------------------------------------- 1 | # This is an executable file used for the SystemTest.php 2 | if [ "$1" = "fail" ] 3 | then 4 | echo "This probably failed. Or so." 5 | exit 42 6 | elif [ "$1" = "something" ] 7 | then 8 | echo "Something is sometimes not that cool. But anyway." 9 | exit 0 10 | else 11 | echo "Some dummy output just to test execution of this file." 12 | exit 0 13 | fi 14 | -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/test/etc/system/nonexecutable.sh: -------------------------------------------------------------------------------- 1 | # This is a non-executable file used for the SystemTest.php -------------------------------------------------------------------------------- /kirby/vendor/getkirby/toolkit/test/lib/bootstrap.php: -------------------------------------------------------------------------------- 1 | = 6 14 | if(class_exists('\PHPUnit\Framework\TestCase') && !class_exists('\PHPUnit_Framework_TestCase')) { 15 | class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase'); 16 | } 17 | 18 | // include the kirby toolkit bootstrapper file 19 | require_once(dirname(TEST_ROOT) . DIRECTORY_SEPARATOR . 'bootstrap.php'); 20 | -------------------------------------------------------------------------------- /kirby/vendor/michelf/php-smartypants/Michelf/SmartyPants.inc.php: -------------------------------------------------------------------------------- 1 | =5.3.0" 22 | }, 23 | "autoload": { 24 | "psr-0": { "Michelf": "" } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /kirby/vendor/psr/log/Psr/Log/InvalidArgumentException.php: -------------------------------------------------------------------------------- 1 | logger = $logger; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /kirby/vendor/psr/log/Psr/Log/NullLogger.php: -------------------------------------------------------------------------------- 1 | logger) { }` 11 | * blocks. 12 | */ 13 | class NullLogger extends AbstractLogger 14 | { 15 | /** 16 | * Logs with an arbitrary level. 17 | * 18 | * @param mixed $level 19 | * @param string $message 20 | * @param array $context 21 | * 22 | * @return void 23 | * 24 | * @throws \Psr\Log\InvalidArgumentException 25 | */ 26 | public function log($level, $message, array $context = array()) 27 | { 28 | // noop 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /kirby/vendor/psr/log/Psr/Log/Test/DummyTest.php: -------------------------------------------------------------------------------- 1 | =5.3.0" 15 | }, 16 | "autoload": { 17 | "psr-4": { 18 | "Psr\\Log\\": "Psr/Log/" 19 | } 20 | }, 21 | "extra": { 22 | "branch-alias": { 23 | "dev-master": "1.1.x-dev" 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /panel/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /assets/scss/.sass-cache 3 | /node_modules -------------------------------------------------------------------------------- /panel/.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | 4 | [panel.core] 5 | file_filter = app/translations//core.json 6 | source_lang = en 7 | type = KEYVALUEJSON -------------------------------------------------------------------------------- /panel/app/controllers/autocomplete.php: -------------------------------------------------------------------------------- 1 | result(); 10 | } catch(Exception $e) { 11 | $result = array(); 12 | } 13 | 14 | return $this->json(array( 15 | 'data' => $result 16 | )); 17 | 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /panel/app/controllers/dashboard.php: -------------------------------------------------------------------------------- 1 | screen('dashboard/index', panel()->site(), array( 8 | 'widgets' => new Kirby\Panel\Widgets() 9 | )); 10 | 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /panel/app/controllers/error.php: -------------------------------------------------------------------------------- 1 | modal('error', array( 13 | 'text' => $text, 14 | 'back' => url::last(), 15 | )); 16 | } else { 17 | return $this->screen('error/index', 'error', array( 18 | 'text' => $text 19 | )); 20 | } 21 | 22 | } 23 | 24 | } -------------------------------------------------------------------------------- /panel/app/controllers/search.php: -------------------------------------------------------------------------------- 1 | view('search/results', array( 12 | 'pages' => $search->pages(), 13 | 'users' => $search->users(), 14 | )); 15 | 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /panel/app/fields/email/email.php: -------------------------------------------------------------------------------- 1 | type = 'email'; 8 | $this->icon = 'envelope'; 9 | $this->label = l::get('fields.email.label', 'Email'); 10 | $this->placeholder = l::get('fields.email.placeholder', 'mail@example.com'); 11 | $this->autocomplete = true; 12 | 13 | } 14 | 15 | public function input() { 16 | 17 | $input = parent::input(); 18 | 19 | if($this->autocomplete) { 20 | $input->attr('autocomplete', 'off'); 21 | $input->data(array( 22 | 'field' => 'autocomplete', 23 | 'url' => panel()->urls()->api() . '/autocomplete/emails?_csrf=' . panel()->csrf() 24 | )); 25 | } 26 | 27 | return $input; 28 | 29 | } 30 | 31 | public function validate() { 32 | return v::email($this->result()); 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /panel/app/fields/filename/filename.php: -------------------------------------------------------------------------------- 1 | addClass('field-icon'); 12 | $icon->append('.' . $this->extension . ''); 13 | 14 | return $icon; 15 | 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /panel/app/fields/headline/assets/css/headline.css: -------------------------------------------------------------------------------- 1 | .field-with-headline:first-child { 2 | padding-top: 0; 3 | } 4 | .field-with-headline { 5 | padding-top: 3em; 6 | } 7 | .field-with-headline .hgroup span:empty::before { 8 | content: '\a0'; 9 | } 10 | 11 | .field-with-headline-numbered { 12 | counter-increment: count; 13 | } 14 | .field-with-headline-numbered .hgroup span { 15 | padding-left: 1.5em; 16 | } 17 | .field-with-headline-numbered .hgroup::before { 18 | position: absolute; 19 | content: counter(count, decimal-leading-zero); 20 | left: 0; 21 | color: #8dae28; 22 | font-weight: 400; 23 | } 24 | -------------------------------------------------------------------------------- /panel/app/fields/headline/headline.php: -------------------------------------------------------------------------------- 1 | array( 9 | 'headline.css' 10 | ) 11 | ); 12 | 13 | public function result() { 14 | return null; 15 | } 16 | 17 | public function label() { 18 | return null; 19 | } 20 | 21 | public function content() { 22 | return '

' . html($this->i18n($this->label)) . '

'; 23 | } 24 | 25 | public function element() { 26 | $element = parent::element(); 27 | $element->addClass('field-with-headline'); 28 | if($this->numbered()) $element->addClass('field-with-headline-numbered'); 29 | return $element; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /panel/app/fields/hidden/hidden.php: -------------------------------------------------------------------------------- 1 | 'hidden', 8 | 'name' => $this->name(), 9 | 'value' => $this->value() 10 | )); 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /panel/app/fields/image/assets/css/image.css: -------------------------------------------------------------------------------- 1 | .field-with-image select { 2 | margin-left: 3rem; 3 | } 4 | .field-with-image .input-preview { 5 | position: absolute; 6 | top: 2px; 7 | left: 2px; 8 | bottom: 2px; 9 | width: 2.75em; 10 | background: url(../images/pattern.png); 11 | } 12 | .field-with-image .input-preview figure { 13 | display: block; 14 | width: 100%; 15 | height: 100%; 16 | background-repeat: no-repeat; 17 | background-position: center center; 18 | background-size: cover; 19 | } -------------------------------------------------------------------------------- /panel/app/fields/info/info.php: -------------------------------------------------------------------------------- 1 | addClass('field-with-icon'); 14 | return $element; 15 | } 16 | 17 | public function input() { 18 | return '
' . kirbytext($this->i18n($this->text())) . '
'; 19 | } 20 | 21 | } -------------------------------------------------------------------------------- /panel/app/fields/input/input.php: -------------------------------------------------------------------------------- 1 | addClass('input'); 11 | $input->attr(array( 12 | 'type' => $this->type(), 13 | 'value' => '', 14 | 'required' => $this->required(), 15 | 'name' => $this->name(), 16 | 'autocomplete' => $this->autocomplete() === false ? 'off' : 'on', 17 | 'autofocus' => $this->autofocus(), 18 | 'placeholder' => $this->i18n($this->placeholder()), 19 | 'readonly' => $this->readonly(), 20 | 'disabled' => $this->disabled(), 21 | 'id' => $this->id() 22 | )); 23 | 24 | if(!is_array($this->value())) { 25 | $input->val($this->value()); 26 | } 27 | 28 | if($this->readonly()) { 29 | $input->attr('tabindex', '-1'); 30 | $input->addClass('input-is-readonly'); 31 | } 32 | 33 | return $input; 34 | 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /panel/app/fields/line/line.php: -------------------------------------------------------------------------------- 1 | '; 11 | } 12 | 13 | public function element() { 14 | $element = parent::element(); 15 | $element->addClass('field-with-line'); 16 | return $element; 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /panel/app/fields/page/page.php: -------------------------------------------------------------------------------- 1 | icon = 'chain'; 8 | $this->label = l::get('fields.page.label', 'Page'); 9 | $this->placeholder = l::get('fields.page.placeholder', 'path/to/page'); 10 | 11 | } 12 | 13 | public function input() { 14 | 15 | $input = parent::input(); 16 | $input->data(array( 17 | 'field' => 'autocomplete', 18 | 'url' => panel()->urls()->api() . '/autocomplete/uris' 19 | )); 20 | 21 | return $input; 22 | 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /panel/app/fields/password/password.php: -------------------------------------------------------------------------------- 1 | type = 'password'; 10 | $this->icon = 'key'; 11 | $this->label = l('fields.password.label', 'Password'); 12 | 13 | } 14 | 15 | public function input() { 16 | 17 | $input = parent::input(); 18 | 19 | if($this->suggestion) { 20 | $input->data(array( 21 | 'field' => 'passwordSuggestion' 22 | )); 23 | } 24 | 25 | return $input; 26 | 27 | } 28 | 29 | public function help() { 30 | if($this->suggestion and !$this->readonly) { 31 | $this->help = $this->suggestion(); 32 | } 33 | return parent::help(); 34 | } 35 | 36 | public function suggestion() { 37 | return ''; 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /panel/app/fields/radio/radio.php: -------------------------------------------------------------------------------- 1 | options(); 10 | if(is_array($options)) { 11 | reset($options); 12 | $value = key($options); 13 | } 14 | } 15 | return $value; 16 | } 17 | 18 | public function input() { 19 | 20 | $val = func_get_arg(0); 21 | $input = parent::input(); 22 | $input->addClass('radio'); 23 | $input->attr('type', 'radio'); 24 | $input->val($val); 25 | 26 | if($this->readonly) { 27 | $input->attr('disabled', true); 28 | } 29 | 30 | $input->attr('checked', $val == $this->value()); 31 | return $input; 32 | 33 | } 34 | 35 | public function item($value, $text) { 36 | $item = parent::item($value, $text); 37 | $item->addClass('input-with-radio'); 38 | return $item; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /panel/app/fields/structure/forms/add.php: -------------------------------------------------------------------------------- 1 | fields(), array(), $structure->field()); 6 | $form->cancel($model); 7 | $form->buttons->submit->value = l('add'); 8 | 9 | return $form; 10 | 11 | }; -------------------------------------------------------------------------------- /panel/app/fields/structure/forms/delete.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'label' => 'fields.structure.delete.label', 8 | 'type' => 'info', 9 | ) 10 | )); 11 | 12 | $form->style('delete'); 13 | $form->cancel($model); 14 | 15 | return $form; 16 | 17 | }; -------------------------------------------------------------------------------- /panel/app/fields/structure/forms/update.php: -------------------------------------------------------------------------------- 1 | fields(), $entry->toArray(), $structure->field()); 6 | 7 | $form->cancel($model); 8 | $form->buttons->submit->value = l('ok'); 9 | 10 | return $form; 11 | 12 | }; -------------------------------------------------------------------------------- /panel/app/fields/structure/styles/items.php: -------------------------------------------------------------------------------- 1 | entries() as $entry): ?> 2 |
3 |
4 | entry($entry) ?> 5 |
6 | readonly()): ?> 7 | 16 | 17 |
18 | -------------------------------------------------------------------------------- /panel/app/fields/structure/template.php: -------------------------------------------------------------------------------- 1 |
6 | 7 | headline() ?> 8 | 9 |
10 | 11 | entries()->count()): ?> 12 |
13 | 14 |
15 | 16 | style() . '.php') ?> 17 | 18 |
19 | 20 |
-------------------------------------------------------------------------------- /panel/app/fields/structure/views/add.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/fields/structure/views/delete.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/fields/structure/views/update.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/fields/tel/tel.php: -------------------------------------------------------------------------------- 1 | type = 'tel'; 7 | $this->icon = 'phone'; 8 | $this->label = l::get('fields.tel.label', 'Phone'); 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /panel/app/fields/text/assets/css/counter.css: -------------------------------------------------------------------------------- 1 | .field-counter { 2 | position: absolute; 3 | right: 0; 4 | top: 0; 5 | text-align: right; 6 | font-size: .9em; 7 | line-height: 1.66666666666667; 8 | } 9 | .field-counter.outside-range { 10 | color: #b3000a; 11 | } -------------------------------------------------------------------------------- /panel/app/fields/text/assets/js/counter.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.fn.counter = function() { 4 | 5 | return this.each(function() { 6 | 7 | var counter = $(this); 8 | 9 | if(counter.data('counter')) { 10 | return counter; 11 | } 12 | 13 | var field = counter.parent('.field').find('.input'); 14 | var length = $.trim(field.val()).length; 15 | var max = field.data('max'); 16 | var min = field.data('min'); 17 | 18 | field.keyup(function() { 19 | length = $.trim(field.val()).length; 20 | counter.text(length + (max ? '/' + max : '')); 21 | if((max && length > max) || (min && length < min)) { 22 | counter.addClass('outside-range'); 23 | } else { 24 | counter.removeClass('outside-range'); 25 | } 26 | }).trigger('keyup'); 27 | 28 | counter.data('counter', true); 29 | 30 | }); 31 | 32 | }; 33 | 34 | }(jQuery)); -------------------------------------------------------------------------------- /panel/app/fields/textarea/controller.php: -------------------------------------------------------------------------------- 1 | model(); 8 | $form = $this->form('link', array($page, $this->fieldname())); 9 | 10 | return $this->modal('link', compact('form')); 11 | 12 | } 13 | 14 | public function email($textarea = null) { 15 | 16 | $page = $this->model(); 17 | $form = $this->form('email', array($page, $this->fieldname())); 18 | 19 | return $this->modal('email', compact('form')); 20 | 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /panel/app/fields/textarea/forms/email.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'label' => 'editor.email.address.label', 8 | 'type' => 'email', 9 | 'placeholder' => 'editor.email.address.placeholder', 10 | 'autofocus' => 'true', 11 | 'required' => 'true', 12 | ), 13 | 'text' => array( 14 | 'label' => 'editor.email.text.label', 15 | 'type' => 'text', 16 | 'help' => 'editor.email.text.help', 17 | 'icon' => 'font' 18 | ) 19 | )); 20 | 21 | $form->data('textarea', 'form-field-' . $textarea); 22 | $form->style('editor'); 23 | $form->cancel($page); 24 | 25 | return $form; 26 | 27 | }; -------------------------------------------------------------------------------- /panel/app/fields/textarea/forms/link.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'label' => 'editor.link.url.label', 8 | 'type' => 'text', 9 | 'placeholder' => 'http://', 10 | 'autofocus' => 'true', 11 | 'required' => 'true', 12 | 'icon' => 'chain' 13 | ), 14 | 'text' => array( 15 | 'label' => 'editor.link.text.label', 16 | 'type' => 'text', 17 | 'help' => 'editor.link.text.help', 18 | 'icon' => 'font' 19 | ), 20 | )); 21 | 22 | $form->data('textarea', 'form-field-' . $textarea); 23 | $form->style('editor'); 24 | $form->cancel($page); 25 | 26 | return $form; 27 | 28 | }; -------------------------------------------------------------------------------- /panel/app/fields/toggle/toggle.php: -------------------------------------------------------------------------------- 1 | text())) { 10 | case 'yes/no': 11 | $true = l::get('fields.toggle.yes'); 12 | $false = l::get('fields.toggle.no'); 13 | break; 14 | case 'on/off': 15 | $true = l::get('fields.toggle.on'); 16 | $false = l::get('fields.toggle.off'); 17 | break; 18 | } 19 | 20 | return array( 21 | 'true' => $true, 22 | 'false' => $false 23 | ); 24 | 25 | } 26 | 27 | public function value() { 28 | $value = parent::value(); 29 | 30 | if(in_array($value, array('yes', 'true', true, 1, 'on'), true)) { 31 | return 'true'; 32 | } else { 33 | return 'false'; 34 | } 35 | 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /panel/app/fields/url/assets/js/url.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.fn.urlfield = function() { 4 | 5 | return this.each(function() { 6 | 7 | var $this = $(this); 8 | 9 | if($this.data('urlfield')) { 10 | return; 11 | } else { 12 | $this.data('urlfield', true); 13 | } 14 | 15 | var $icon = $this.next('.field-icon'); 16 | 17 | $icon.css({ 18 | 'cursor': 'pointer', 19 | 'pointer-events': 'auto' 20 | }); 21 | 22 | $icon.on('click', function() { 23 | 24 | var url = $.trim($this.val()); 25 | 26 | if(url !== '' && $this.is(':valid')) { 27 | window.open(url); 28 | } else { 29 | $this.focus(); 30 | } 31 | 32 | }); 33 | 34 | }); 35 | 36 | }; 37 | 38 | })(jQuery); -------------------------------------------------------------------------------- /panel/app/fields/url/url.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'url.js' 8 | ) 9 | ); 10 | 11 | public function __construct() { 12 | 13 | $this->type = 'url'; 14 | $this->icon = 'chain'; 15 | $this->label = l::get('fields.url.label', 'URL'); 16 | $this->placeholder = 'http://'; 17 | 18 | } 19 | 20 | public function validate() { 21 | return v::url($this->value()); 22 | } 23 | 24 | public function input() { 25 | $input = parent::input(); 26 | $input->data('field', 'urlfield'); 27 | return $input; 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /panel/app/fields/user/user.php: -------------------------------------------------------------------------------- 1 | type = 'text'; 7 | $this->icon = 'user'; 8 | $this->label = l::get('fields.user.label', 'User'); 9 | } 10 | 11 | // generating user list here instead of in the constructor because of 12 | // https://github.com/getkirby/panel/issues/1034 13 | public function options() { 14 | $options = null; 15 | 16 | foreach(kirby()->site()->users() as $user) { 17 | $options[$user->username()] = $user->username(); 18 | } 19 | 20 | return $options; 21 | } 22 | 23 | public function value() { 24 | $value = parent::value(); 25 | 26 | // default to current user if no default one is defined 27 | if(empty($value) && !$this->default && $this->default !== false) { 28 | return site()->user()->username(); 29 | } else { 30 | return $value; 31 | } 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /panel/app/forms/auth/login.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'label' => 'login.username.label', 8 | 'type' => 'text', 9 | 'icon' => 'user', 10 | 'required' => true, 11 | 'autofocus' => true, 12 | 'default' => s::get('kirby_panel_username') 13 | ), 14 | 'password' => array( 15 | 'label' => 'login.password.label', 16 | 'type' => 'password', 17 | 'required' => true 18 | ) 19 | )); 20 | 21 | $form->attr('autocomplete', 'off'); 22 | $form->data('autosubmit', 'native'); 23 | $form->style('centered'); 24 | 25 | $form->buttons->submit->value = l('login.button'); 26 | 27 | return $form; 28 | 29 | }; 30 | 31 | -------------------------------------------------------------------------------- /panel/app/forms/avatars/delete.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'type' => 'info' 8 | ) 9 | )); 10 | 11 | $form->fields->image->text = '(image: ' . $avatar->url() . ' class: avatar avatar-full avatar-centered)'; 12 | $form->centered = true; 13 | $form->style('delete'); 14 | 15 | return $form; 16 | 17 | }; 18 | 19 | 20 | -------------------------------------------------------------------------------- /panel/app/forms/editor/email.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'label' => 'editor.email.address.label', 8 | 'type' => 'email', 9 | 'placeholder' => 'editor.email.address.placeholder', 10 | 'autofocus' => 'true', 11 | 'required' => 'true', 12 | ), 13 | 'text' => array( 14 | 'label' => 'editor.email.text.label', 15 | 'type' => 'text', 16 | 'help' => 'editor.email.text.help', 17 | ) 18 | )); 19 | 20 | $form->data('textarea', 'form-field-' . $textarea); 21 | $form->style('editor'); 22 | $form->cancel($page, 'show'); 23 | 24 | return $form; 25 | 26 | }; -------------------------------------------------------------------------------- /panel/app/forms/editor/link.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'label' => 'editor.link.url.label', 8 | 'type' => 'text', 9 | 'placeholder' => 'http://', 10 | 'autofocus' => 'true', 11 | 'required' => 'true', 12 | ), 13 | 'text' => array( 14 | 'label' => 'editor.link.text.label', 15 | 'type' => 'text', 16 | 'help' => 'editor.link.text.help', 17 | ), 18 | )); 19 | 20 | $form->data('textarea', 'form-field-' . $textarea); 21 | $form->style('editor'); 22 | $form->cancel($page, 'show'); 23 | 24 | return $form; 25 | 26 | }; -------------------------------------------------------------------------------- /panel/app/forms/files/delete.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'label' => 'files.delete.headline', 8 | 'type' => 'text', 9 | 'readonly' => true, 10 | 'icon' => false, 11 | 'default' => $file->filename() 12 | ) 13 | )); 14 | 15 | $form->style('delete'); 16 | $form->cancel($file); 17 | 18 | return $form; 19 | 20 | }; -------------------------------------------------------------------------------- /panel/app/forms/installation/check.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'type' => 'info' 8 | ) 9 | )); 10 | 11 | if(count($problems) > 1) { 12 | $info = new Brick('ol'); 13 | foreach($problems as $problem) { 14 | $info->append('
  • ' . $problem . '
  • '); 15 | } 16 | } else { 17 | $info = new Brick('p'); 18 | foreach($problems as $problem) { 19 | $info->append($problem); 20 | } 21 | } 22 | 23 | // add the list of problems to the info field 24 | $form->fields->info->text = (string)$info; 25 | 26 | // setup the retry button 27 | $form->buttons->submit->value = l('installation.check.retry'); 28 | $form->buttons->submit->autofocus = true; 29 | 30 | $form->style('centered'); 31 | $form->alert(l('installation.check.text')); 32 | 33 | return $form; 34 | 35 | }; -------------------------------------------------------------------------------- /panel/app/forms/pages/delete.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'label' => 'pages.delete.headline', 8 | 'type' => 'text', 9 | 'readonly' => true, 10 | 'icon' => false, 11 | 'default' => $page->title(), 12 | 'help' => $page->id(), 13 | ) 14 | ]; 15 | 16 | if($page->children()->count()) { 17 | $fields['check'] = [ 18 | 'label' => 'pages.delete.children.headline', 19 | 'type' => 'checkbox', 20 | 'text' => 'pages.delete.children.text', 21 | 'help' => 'pages.delete.children.help', 22 | 'required' => true 23 | ]; 24 | } 25 | 26 | $form = new Kirby\Panel\Form($fields); 27 | $form->style('delete'); 28 | $form->cancel($page); 29 | 30 | return $form; 31 | 32 | }; -------------------------------------------------------------------------------- /panel/app/forms/pages/url.php: -------------------------------------------------------------------------------- 1 | 'btn btn-icon label-option', 8 | 'href' => '#', 9 | 'data-title' => str::slug($page->title()) 10 | )); 11 | 12 | // url preview 13 | $preview = new Brick('div', '', array('class' => 'uid-preview')); 14 | $preview->append(ltrim($page->parent()->uri() . '/', '/')); 15 | $preview->append('' . $page->slug() . ''); 16 | 17 | // create the form 18 | $form = new Kirby\Panel\Form(array( 19 | 'uid' => array( 20 | 'label' => l('pages.url.uid.label') . $option, 21 | 'type' => 'text', 22 | 'icon' => 'chain', 23 | 'autofocus' => true, 24 | 'help' => $preview, 25 | 'default' => $page->slug() 26 | ) 27 | )); 28 | 29 | $form->buttons->submit->val(l('change')); 30 | $form->cancel($page); 31 | 32 | return $form; 33 | 34 | }; -------------------------------------------------------------------------------- /panel/app/forms/users/delete.php: -------------------------------------------------------------------------------- 1 | array( 7 | 'label' => 'users.delete.headline', 8 | 'type' => 'text', 9 | 'readonly' => true, 10 | 'icon' => false, 11 | 'default' => $user->username(), 12 | 'help' => $user->email(), 13 | ) 14 | )); 15 | 16 | $form->style('delete'); 17 | $form->cancel($user, 'edit'); 18 | 19 | return $form; 20 | 21 | }; 22 | 23 | -------------------------------------------------------------------------------- /panel/app/layouts/app.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <?php __($title) ?> 8 | 9 | 10 | 11 | 12 | 13 | option('panel.stylesheet')): ?> 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
    27 | 28 | 29 |
    30 | 31 | 32 | -------------------------------------------------------------------------------- /panel/app/layouts/base.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | <?php __($title) ?> 8 | 9 | 10 | 11 | option('panel.stylesheet')): ?> 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /panel/app/layouts/fatal.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Kirby Panel 5 | 6 | 7 | 21 | 22 | 23 | 24 |

    Panel Error:

    25 |

    26 | 27 |

    28 |

    29 | Find more info on: getkirby.com 30 |

    31 | 32 | -------------------------------------------------------------------------------- /panel/app/snippets/breadcrumb.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/snippets/favicon.php: -------------------------------------------------------------------------------- 1 | '; -------------------------------------------------------------------------------- /panel/app/snippets/languages.php: -------------------------------------------------------------------------------- 1 | count() > 1): ?> 2 | 3 |
    4 | 5 | 6 | code()) ?> 7 | 8 | 9 | 18 | 19 |
    20 | 21 | 22 | -------------------------------------------------------------------------------- /panel/app/snippets/meta.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /panel/app/snippets/pages/sidebar.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/snippets/pages/sidebar/file.php: -------------------------------------------------------------------------------- 1 |
  • 2 | canHavePreview(), ' data-url="' . $file->crop(75)->url() . '"') ?> data-helper="filename()) ?>" data-text="dragText()) ?>" href="url('edit')) ?>"> 3 | icon() . __($file->filename()) ?> 4 | 5 | 6 |
  • -------------------------------------------------------------------------------- /panel/app/snippets/pages/sidebar/menu.php: -------------------------------------------------------------------------------- 1 |

    2 | 3 | 4 | 5 |

    6 | 7 | 8 | -------------------------------------------------------------------------------- /panel/app/snippets/pages/sidebar/subpage.php: -------------------------------------------------------------------------------- 1 |
  • 2 | 3 | icon() ?>title()) ?> 4 | displayNum()) ?> 5 | 6 | 7 |
  • -------------------------------------------------------------------------------- /panel/app/snippets/pagination.php: -------------------------------------------------------------------------------- 1 | pages() > 1): ?> 2 | 14 | -------------------------------------------------------------------------------- /panel/app/snippets/search.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /panel/app/snippets/template.php: -------------------------------------------------------------------------------- 1 | 2 |
    3 |

    4 | 5 | 6 |

    7 | 8 | 9 |

    10 | 11 | 12 | 13 |

    14 | 15 | 16 |

    17 | 18 | 19 | 20 |

    21 | 22 | 23 |

    24 | 25 | 26 |
    27 | -------------------------------------------------------------------------------- /panel/app/snippets/uploader.php: -------------------------------------------------------------------------------- 1 | isset($multiple) ? $multiple : true, 5 | 'accept' => isset($accept) ? $accept : false 6 | )); 7 | 8 | ?> 9 | 13 | 14 | -------------------------------------------------------------------------------- /panel/app/src/panel/exceptions/permissions.php: -------------------------------------------------------------------------------- 1 | _root = panel::instance()->roots()->layouts(); 12 | } 13 | 14 | } -------------------------------------------------------------------------------- /panel/app/src/panel/models/file/ui.php: -------------------------------------------------------------------------------- 1 | file = $file; 11 | } 12 | 13 | public function update() { 14 | return $this->file->event('update:ui')->isAllowed(); 15 | } 16 | 17 | public function rename() { 18 | return $this->file->event('rename:ui')->isAllowed(); 19 | } 20 | 21 | public function replace() { 22 | return $this->file->event('replace:ui')->isAllowed(); 23 | } 24 | 25 | public function delete() { 26 | return $this->file->event('delete:ui')->isAllowed(); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /panel/app/src/panel/models/page/addbutton.php: -------------------------------------------------------------------------------- 1 | page = $page; 13 | $this->modal = true; 14 | $this->url = $this->page->url('add'); 15 | 16 | if(!$this->page->ui()->create()) { 17 | throw new Exception(l('subpages.add.error.more')); 18 | } 19 | 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /panel/app/src/panel/models/user/avatar/ui.php: -------------------------------------------------------------------------------- 1 | avatar = $avatar; 11 | } 12 | 13 | public function active() { 14 | if($this->avatar->exists()) { 15 | return $this->replace() || $this->delete(); 16 | } else { 17 | return $this->upload(); 18 | } 19 | } 20 | 21 | public function upload() { 22 | return $this->avatar->event('upload:ui')->isAllowed(); 23 | } 24 | 25 | public function replace() { 26 | return $this->avatar->event('replace:ui')->isAllowed(); 27 | } 28 | 29 | public function delete() { 30 | return $this->avatar->event('delete:ui')->isAllowed(); 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /panel/app/src/panel/models/user/ui.php: -------------------------------------------------------------------------------- 1 | user = $user; 11 | } 12 | 13 | public function read() { 14 | return $this->user->event('read:ui')->isAllowed(); 15 | } 16 | 17 | public function create() { 18 | return $this->user->event('create:ui')->isAllowed(); 19 | } 20 | 21 | public function update() { 22 | return $this->user->event('update:ui')->isAllowed(); 23 | } 24 | 25 | public function delete() { 26 | return $this->user->event('delete:ui')->isAllowed(); 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /panel/app/src/panel/snippet.php: -------------------------------------------------------------------------------- 1 | _root = panel::instance()->roots()->snippets(); 12 | } 13 | 14 | } -------------------------------------------------------------------------------- /panel/app/src/panel/upload.php: -------------------------------------------------------------------------------- 1 | 'The file is missing', 12 | static::ERROR_MISSING_TMP_DIR => 'The /tmp directory is missing on your server', 13 | static::ERROR_FAILED_UPLOAD => 'The upload failed', 14 | static::ERROR_PARTIAL_UPLOAD => 'The file has been only been partially uploaded', 15 | static::ERROR_UNALLOWED_OVERWRITE => 'The file exists and cannot be overwritten', 16 | static::ERROR_MAX_SIZE => 'The file is too big. The maximum size is ' . f::niceSize($this->maxSize()), 17 | static::ERROR_MOVE_FAILED => 'The file could not be moved', 18 | static::ERROR_UNACCEPTED => 'The file is not accepted by the server' 19 | ); 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /panel/app/src/panel/view.php: -------------------------------------------------------------------------------- 1 | _root = panel::instance()->roots()->views(); 18 | $this->_file = $file; 19 | $this->_data = $data; 20 | } 21 | 22 | public function __set($key, $value) { 23 | $this->_data[$key] = $value; 24 | } 25 | 26 | public function render() { 27 | $file = $this->_root . DS . str_replace('.', DS, $this->_file) . '.php'; 28 | if(!file_exists($file)) throw new Exception(l('view.error.invalid') . $file); 29 | return tpl::load($file, $this->_data); 30 | } 31 | 32 | public function __toString() { 33 | try { 34 | return (string)$this->render(); 35 | } catch(Exception $e) { 36 | return $e->getMessage(); 37 | } 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /panel/app/topbars/error.php: -------------------------------------------------------------------------------- 1 | append('', l('error.headline')); 5 | }; -------------------------------------------------------------------------------- /panel/app/topbars/user.php: -------------------------------------------------------------------------------- 1 | append(purl('users'), l('users')); 6 | 7 | if($user === 'user') { 8 | $topbar->append(purl('users/add'), l('users.index.add')); 9 | } else { 10 | $topbar->append($user->url(), $user->username()); 11 | } 12 | 13 | }; -------------------------------------------------------------------------------- /panel/app/translations/ar/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "العربية", 3 | "direction": "rtl", 4 | "author": "أحمد الحداد ", 5 | "version": "1.0.0" 6 | } -------------------------------------------------------------------------------- /panel/app/translations/bg/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Bulgarian", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/ca/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Catalan", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/cs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Česky", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/da/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Dansk", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/de/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Deutsch", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/el/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Ελληνικά", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/en/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "English", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/es_419/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Español (América Latina)‎", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/es_ES/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Español (España)", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/fa/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "پارسی", 3 | "direction": "rtl" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/fi/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Suomi", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/fr/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Français", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/hu/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Hungarian", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/id/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Bahasa Indonesia", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/it/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Italiano", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/ja/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Japanese", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/ko/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "한국어", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/nb/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Norsk Bokmål", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/nl/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Nederlands", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/pl/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Polski", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/pt_BR/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Português (Brasileiro)‎", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/pt_PT/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Português (Portugal)", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/readme.md: -------------------------------------------------------------------------------- 1 | # About Panel translations 2 | 3 | Panel translations are managed at [Transifex](https://www.transifex.com/getkirby/panel). Changes at Transifex are used in this repository. 4 | If you'd like to contribute (thank you!), please request access to your language at Transifex. 5 | 6 | Read more in the [Kirby docs](https://getkirby.com/docs/developer-guide/panel/translations). -------------------------------------------------------------------------------- /panel/app/translations/ro/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Română", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/ru/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Русский (Russian)‎", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/sv_SE/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Svenska", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/tr/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Türkçe", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/zh_CN/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "简体中文(大陆)‎", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/translations/zh_TW/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "繁體中文(台灣)‎", 3 | "direction": "ltr" 4 | } -------------------------------------------------------------------------------- /panel/app/views/auth/block.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /panel/app/views/auth/error.php: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /panel/app/views/auth/login.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /panel/app/views/avatars/delete.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/views/error/index.php: -------------------------------------------------------------------------------- 1 |
    2 |

    3 |

    4 |
    -------------------------------------------------------------------------------- /panel/app/views/error/modal.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/views/files/delete.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/views/installation/index.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /panel/app/views/pages/add.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /panel/app/views/pages/delete.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/views/pages/edit.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 | 5 |
    6 |
    7 | 8 | isWritable()): ?> 9 |
    10 |

    11 | 12 |

    13 |
    14 |

    15 |
    16 |
    17 | 18 | 19 | 20 |
    21 |
    22 | 23 | 24 | 25 | 26 |
    27 |
    28 | 29 |
    30 | 31 | -------------------------------------------------------------------------------- /panel/app/views/pages/template.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /panel/app/views/pages/toggle.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/views/pages/url.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /panel/app/views/users/delete.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/widgets/account/account.html.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /panel/app/widgets/account/account.php: -------------------------------------------------------------------------------- 1 | user(); 4 | $read = $user->ui()->read(); 5 | 6 | if($read) { 7 | $options = [ 8 | [ 9 | 'text' => l('dashboard.index.account.edit'), 10 | 'icon' => 'pencil', 11 | 'link' => $user->url('edit') 12 | ] 13 | ]; 14 | } else { 15 | $options = []; 16 | } 17 | 18 | return [ 19 | 'title' => [ 20 | 'text' => l('dashboard.index.account.title'), 21 | 'link' => $read ? $user->url('edit') : false, 22 | ], 23 | 'options' => $options, 24 | 'html' => function() use($user, $read) { 25 | return tpl::load(__DIR__ . DS . 'account.html.php', array( 26 | 'user' => $user, 27 | 'read' => $read 28 | )); 29 | } 30 | ]; -------------------------------------------------------------------------------- /panel/app/widgets/history/history.html.php: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 | 5 | 17 | 18 |
    19 | -------------------------------------------------------------------------------- /panel/app/widgets/history/history.php: -------------------------------------------------------------------------------- 1 | array( 5 | 'text' => l('dashboard.index.history.title'), 6 | 'link' => false, 7 | ), 8 | 'html' => function() { 9 | return tpl::load(__DIR__ . DS . 'history.html.php', array( 10 | 'history' => panel()->user()->history()->get() 11 | )); 12 | } 13 | ); -------------------------------------------------------------------------------- /panel/app/widgets/license/license.html.php: -------------------------------------------------------------------------------- 1 | 11 |
    12 |
    13 | 14 |
    15 |
    -------------------------------------------------------------------------------- /panel/app/widgets/license/license.php: -------------------------------------------------------------------------------- 1 | license(); 4 | 5 | if($license->type() == 'trial' and !$license->local()) { 6 | 7 | return array( 8 | 'title' => array( 9 | 'text' => l('dashboard.index.license.title'), 10 | 'link' => false, 11 | 'compressed' => false 12 | ), 13 | 'html' => function() { 14 | return tpl::load(__DIR__ . DS . 'license.html.php', array( 15 | 'text' => kirbytext(str::template(l('dashboard.index.license.text'), array( 16 | 'buy' => 'http://getkirby.com/buy', 17 | 'docs' => 'http://getkirby.com/docs/installation/license-code' 18 | ))) 19 | )); 20 | } 21 | ); 22 | 23 | } else { 24 | return false; 25 | } -------------------------------------------------------------------------------- /panel/app/widgets/pages/pages.html.php: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /panel/app/widgets/site/site.html.php: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /panel/app/widgets/site/site.php: -------------------------------------------------------------------------------- 1 | array( 5 | 'text' => l('dashboard.index.site.title'), 6 | 'link' => url(), 7 | 'target' => '_blank', 8 | ), 9 | 'html' => function() { 10 | return tpl::load(__DIR__ . DS . 'site.html.php'); 11 | } 12 | ); -------------------------------------------------------------------------------- /panel/assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /panel/assets/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /panel/assets/fonts/sourcesanspro-400-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/fonts/sourcesanspro-400-italic.woff -------------------------------------------------------------------------------- /panel/assets/fonts/sourcesanspro-400-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/fonts/sourcesanspro-400-italic.woff2 -------------------------------------------------------------------------------- /panel/assets/fonts/sourcesanspro-400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/fonts/sourcesanspro-400.woff -------------------------------------------------------------------------------- /panel/assets/fonts/sourcesanspro-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/fonts/sourcesanspro-400.woff2 -------------------------------------------------------------------------------- /panel/assets/fonts/sourcesanspro-600.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/fonts/sourcesanspro-600.woff -------------------------------------------------------------------------------- /panel/assets/fonts/sourcesanspro-600.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/fonts/sourcesanspro-600.woff2 -------------------------------------------------------------------------------- /panel/assets/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/images/avatar.png -------------------------------------------------------------------------------- /panel/assets/images/hint.arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/images/hint.arrows.png -------------------------------------------------------------------------------- /panel/assets/images/loader.black.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/images/loader.black.gif -------------------------------------------------------------------------------- /panel/assets/images/loader.white.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/images/loader.white.gif -------------------------------------------------------------------------------- /panel/assets/images/pattern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/images/pattern.png -------------------------------------------------------------------------------- /panel/assets/images/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/assets/images/placeholder.png -------------------------------------------------------------------------------- /panel/assets/js/src/components/breadcrumb.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.fn.breadcrumb = function() { 4 | 5 | return this.each(function() { 6 | 7 | var el = $(this); 8 | var dropdown = el.clone(); 9 | 10 | dropdown.removeClass('breadcrumb'); 11 | dropdown.addClass('dropdown') 12 | .addClass('dropdown-left') 13 | .addClass('breadcrumb-dropdown'); 14 | 15 | dropdown.attr('id', 'breadcrumb-menu'); 16 | dropdown.find('.nav-icon').remove(); 17 | dropdown.find('.breadcrumb-list').removeClass('nav-bar').removeClass('breadcrumb-list').addClass('dropdown-list'); 18 | dropdown.find('.breadcrumb-link').removeClass('breadcrumb-link'); 19 | dropdown.find('.breadcrumb-label').removeClass('breadcrumb-label'); 20 | 21 | el.append(dropdown); 22 | 23 | }); 24 | 25 | }; 26 | 27 | })(jQuery); -------------------------------------------------------------------------------- /panel/assets/js/src/components/delay.js: -------------------------------------------------------------------------------- 1 | var Delay = function() { 2 | 3 | var delays = {}; 4 | 5 | var start = function(id, callback, time) { 6 | stop(id); 7 | delays[id] = setTimeout(callback, time); 8 | }; 9 | 10 | var stop = function(id) { 11 | if(!id) { 12 | for(var id in delays) { 13 | if(delays.hasOwnProperty(id)) stop(id); 14 | } 15 | } else if(delays[id]) { 16 | clearTimeout(delays[id]); 17 | } 18 | }; 19 | 20 | return { 21 | start: start, 22 | stop: stop 23 | }; 24 | 25 | }; -------------------------------------------------------------------------------- /panel/assets/js/src/components/message.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.fn.message = function() { 4 | 5 | return this.each(function() { 6 | 7 | var message = $(this); 8 | var form = message.closest('form'); 9 | 10 | message.on('close', function() { 11 | message.remove(); 12 | form.find('.field-with-error').removeClass('field-with-error'); 13 | form.find('[autofocus]').focus(); 14 | $(document).trigger('keyup.center'); 15 | }); 16 | 17 | message.on('click', function() { 18 | message.trigger('close'); 19 | }); 20 | 21 | }); 22 | 23 | }; 24 | 25 | })(jQuery); -------------------------------------------------------------------------------- /panel/assets/js/src/jquery/plugins/jquery.drop.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.fn.drop = function(options) { 4 | 5 | if(options == 'destroy') { 6 | return this.off('dragenter.drop dragover.drop dragexit.drop dragleave.drop dragend.drop drop.drop'); 7 | } else { 8 | 9 | var enter; 10 | 11 | return this.on('dragenter.drop dragover.drop dragexit.drop dragleave.drop dragend.drop drop.drop', function(e) { 12 | 13 | e.stopPropagation(); 14 | e.preventDefault(); 15 | 16 | if(e.type == 'dragenter') { 17 | enter = e.target; 18 | } else if(e.type == 'dragleave' && enter !== e.target) { 19 | return; 20 | } 21 | 22 | if(options[e.type]) options[e.type].apply(this, [e]); 23 | 24 | }); 25 | 26 | } 27 | }; 28 | 29 | })(jQuery); -------------------------------------------------------------------------------- /panel/assets/js/src/jquery/plugins/jquery.fakefocus.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.fn.fakefocus = function(classname) { 4 | return this.each(function(){ 5 | 6 | $(this).on({ 7 | 'click' : function() { 8 | $(this).find('input, textarea, select').focus(); 9 | }, 10 | 'focusin' : function() { 11 | $(this).addClass(classname); 12 | }, 13 | 'focusout' : function() { 14 | $(this).removeClass(classname); 15 | } 16 | }); 17 | 18 | }); 19 | 20 | }; 21 | 22 | })(jQuery); -------------------------------------------------------------------------------- /panel/assets/js/src/jquery/plugins/jquery.filedrop.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.fn.filedrop = function(options) { 4 | 5 | if(options == 'destroy') { 6 | return this.drop('destroy'); 7 | } 8 | 9 | if(!$.support.fileReader) return false; 10 | 11 | var defaults = { 12 | drop : function(event) {}, 13 | files : function(files) {}, 14 | }; 15 | 16 | var options = $.extend({}, defaults, options); 17 | var drop = options.drop; 18 | 19 | options.drop = function(event) { 20 | drop.apply(this, [event]); 21 | 22 | if(event.originalEvent.dataTransfer && event.originalEvent.dataTransfer.files) { 23 | $.fileReader(event.originalEvent.dataTransfer.files, options.files); 24 | } 25 | 26 | }; 27 | 28 | this.drop(options); 29 | 30 | }; 31 | 32 | })(jQuery); -------------------------------------------------------------------------------- /panel/assets/js/src/jquery/plugins/jquery.filereader.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.support.fileReader = !!(window.File && window.FileList && window.FileReader); 4 | 5 | $.fileReader = function(files, callback) { 6 | 7 | if(!$.support.fileReader) return false; 8 | 9 | var complete = []; 10 | var onload = function(file) { 11 | return function() { 12 | complete.push(file); 13 | if(complete.length === files.length) callback(complete); 14 | }; 15 | }; 16 | for(var i = 0; i < files.length; i++) { 17 | var reader = new FileReader(); 18 | reader.onload = onload(files[i]); 19 | reader.readAsArrayBuffer(files[i]); 20 | } 21 | 22 | }; 23 | 24 | })(jQuery); -------------------------------------------------------------------------------- /panel/assets/js/src/jquery/plugins/jquery.serializeobject.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.fn.serializeObject = function() { 4 | var o = {}; 5 | var a = this.serializeArray(); 6 | $.each(a, function() { 7 | if(o[this.name] !== undefined) { 8 | if(!o[this.name].push) { 9 | o[this.name] = [o[this.name]]; 10 | } 11 | o[this.name].push(this.value || ''); 12 | } else { 13 | o[this.name] = this.value || ''; 14 | } 15 | }); 16 | return o; 17 | }; 18 | 19 | })(jQuery); -------------------------------------------------------------------------------- /panel/assets/js/src/jquery/plugins/jquery.slug.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.slug = function(text) { 4 | 5 | text = $.trim(text.toLowerCase()); 6 | 7 | $.each($.slug.table || {}, function(key, val) { 8 | text = text.split(key).join(val); 9 | }); 10 | 11 | return text 12 | .replace(/[^\x09\x0A\x0D\x20-\x7E]/, '') 13 | .replace(/[^a-z0-9]/gi, '-') 14 | .replace(/(-)\1+/g, '-') 15 | .replace(/-+$/,'') 16 | .replace(/^-+/,''); 17 | 18 | }; 19 | 20 | })(jQuery); -------------------------------------------------------------------------------- /panel/assets/js/src/jquery/plugins/jquery.token.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.token = function(length) { 4 | 5 | var length = length || 28; 6 | var set = 'abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789!@#$%&*?'; 7 | var token = ''; 8 | 9 | for(x=0; x li { 2 | list-style: none; 3 | } 4 | .nav > li > a { 5 | display: block; 6 | } 7 | .nav-bar > li { 8 | body.ltr & { 9 | float: left; 10 | } 11 | body.rtl & { 12 | float: right; 13 | } 14 | } 15 | .nav-icon { 16 | display: inline-block; 17 | background: #000; 18 | color: #fff; 19 | padding: 1em 0 1em; 20 | text-align: center; 21 | line-height: 1em; 22 | height: 3em; 23 | width: 4em; 24 | } 25 | .nav-icon:hover { 26 | color: #999; 27 | } 28 | .nav-icon-left { 29 | body.ltr & { 30 | border-right: 1px solid #555; 31 | } 32 | body.rtl & { 33 | border-left: 1px solid #555; 34 | } 35 | } 36 | .nav-icon-right { 37 | body.ltr & { 38 | border-left: 1px solid #555; 39 | } 40 | body.rtl & { 41 | border-right: 1px solid #555; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /panel/assets/scss/components/_nprogress.scss: -------------------------------------------------------------------------------- 1 | /* Make clicks pass-through */ 2 | #nprogress { 3 | pointer-events: none; 4 | } 5 | 6 | #nprogress .bar { 7 | background: #fff; 8 | position: fixed; 9 | z-index: 1031; 10 | top: 0; 11 | left: 0; 12 | width: 100%; 13 | height: 2px; 14 | } -------------------------------------------------------------------------------- /panel/assets/scss/components/_reset.scss: -------------------------------------------------------------------------------- 1 | *, *:before, *:after { 2 | margin: 0; 3 | padding: 0; 4 | -webkit-box-sizing: border-box; 5 | -moz-box-sizing: border-box; 6 | box-sizing: border-box; 7 | } 8 | 9 | article, 10 | aside, 11 | details, 12 | figcaption, 13 | figure, 14 | footer, 15 | header, 16 | hgroup, 17 | main, 18 | nav, 19 | section, 20 | summary { 21 | display: block; 22 | } 23 | 24 | abbr { 25 | border: none; 26 | } 27 | 28 | img { 29 | max-width: 100%; 30 | } 31 | 32 | img.lazy { 33 | opacity: 0; 34 | -webkit-transition: opacity .3s; 35 | -moz-transition: opacity .3s; 36 | -ms-transition: opacity .3s; 37 | transition: opacity .3s; 38 | } 39 | img.lazy.has-loaded { 40 | opacity: 1; 41 | } -------------------------------------------------------------------------------- /panel/assets/scss/components/_topbar.scss: -------------------------------------------------------------------------------- 1 | .topbar { 2 | position: absolute; 3 | top: 0; 4 | left: 0; 5 | right: 0; 6 | z-index: 100; 7 | height: 3em; 8 | background: #000; 9 | } 10 | 11 | .topbar .nav-icon { 12 | position: absolute; 13 | top: 0; 14 | } 15 | .topbar .nav-icon-left { 16 | body.ltr & { 17 | left: 0; 18 | } 19 | body.rtl & { 20 | right: 0; 21 | } 22 | } 23 | .topbar .nav-icon-right { 24 | body.ltr & { 25 | right: 0; 26 | } 27 | body.rtl & { 28 | left: 0; 29 | } 30 | } 31 | .topbar .breadcrumb { 32 | body.ltr & { 33 | margin-left: 4em; 34 | } 35 | body.rtl & { 36 | margin-right: 4em; 37 | } 38 | } 39 | .topbar .dropdown { 40 | position: absolute; 41 | z-index: 1000; 42 | top: 3em; 43 | } 44 | -------------------------------------------------------------------------------- /panel/assets/scss/components/_typography.scss: -------------------------------------------------------------------------------- 1 | * { 2 | font-size: 100%; 3 | font-family: "Source Sans Pro", "Apple LiGothic Medium", "Microsoft JhengHei UI", "Helvetica Neue", Arial, sans-serif; 4 | } 5 | .light { 6 | font-weight: 300; 7 | } 8 | b, 9 | strong, 10 | .strong { 11 | font-weight: 600; 12 | } 13 | a { 14 | text-decoration: none; 15 | color: #000; 16 | } 17 | .marginalia { 18 | color: #777; 19 | } 20 | hr { 21 | display: block; 22 | height: 2px; 23 | background: #ddd; 24 | border: 0; 25 | } -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_bordered-pulled.scss: -------------------------------------------------------------------------------- 1 | // Bordered & Pulled 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-border { 5 | padding: .2em .25em .15em; 6 | border: solid .08em $fa-border-color; 7 | border-radius: .1em; 8 | } 9 | 10 | .#{$fa-css-prefix}-pull-left { float: left; } 11 | .#{$fa-css-prefix}-pull-right { float: right; } 12 | 13 | .#{$fa-css-prefix} { 14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } 15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } 16 | } 17 | 18 | /* Deprecated as of 4.4.0 */ 19 | .pull-right { float: right; } 20 | .pull-left { float: left; } 21 | 22 | .#{$fa-css-prefix} { 23 | &.pull-left { margin-right: .3em; } 24 | &.pull-right { margin-left: .3em; } 25 | } 26 | -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_fontawesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | //@import "bordered-pulled"; 14 | @import "animated"; 15 | //@import "rotated-flipped"; 16 | //@import "stacked"; 17 | @import "icons"; 18 | @import "screen-reader"; 19 | -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_path.scss: -------------------------------------------------------------------------------- 1 | /* FONT PATH 2 | * -------------------------- */ 3 | 4 | @font-face { 5 | font-family: 'FontAwesome'; 6 | src: url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'); 7 | font-weight: normal; 8 | font-style: normal; 9 | } 10 | -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_rotated-flipped.scss: -------------------------------------------------------------------------------- 1 | // Rotated & Flipped Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } 5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } 6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } 7 | 8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } 9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } 10 | 11 | // Hook for IE8-9 12 | // ------------------------- 13 | 14 | :root .#{$fa-css-prefix}-rotate-90, 15 | :root .#{$fa-css-prefix}-rotate-180, 16 | :root .#{$fa-css-prefix}-rotate-270, 17 | :root .#{$fa-css-prefix}-flip-horizontal, 18 | :root .#{$fa-css-prefix}-flip-vertical { 19 | filter: none; 20 | } 21 | -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { @include sr-only(); } 5 | .sr-only-focusable { @include sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /panel/assets/scss/fontawesome/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /panel/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "getkirby/panel", 3 | "description": "The Kirby 2 panel.", 4 | "keywords": ["panel", "kirby", "cms"], 5 | "homepage": "https://getkirby.com", 6 | "license": "proprietary", 7 | "authors": [ 8 | { 9 | "name": "Bastian Allgeier", 10 | "email": "bastian@getkirby.com", 11 | "homepage": "http://bastianallgeier.com" 12 | } 13 | ], 14 | "support": { 15 | "email": "support@getkirby.com", 16 | "issues": "https://github.com/getkirby/panel/issues", 17 | "forum": "https://forum.getkirby.com", 18 | "source": "https://github.com/getkirby/panel" 19 | } 20 | } -------------------------------------------------------------------------------- /panel/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kirby-panel", 3 | "version": "2.5.14", 4 | "author": "Bastian Allgeier ", 5 | "homepage": "https://getkirby.com", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/getkirby/panel" 9 | }, 10 | "bugs": { 11 | "url": "https://github.com/getkirby/panel/issues" 12 | }, 13 | "keywords": [ 14 | "kirby", 15 | "cms", 16 | "php", 17 | "file-based", 18 | "webinterface", 19 | "admin", 20 | "panel" 21 | ], 22 | "devDependencies": { 23 | "gulp": "*", 24 | "gulp-concat": "*", 25 | "gulp-cssmin": "*", 26 | "gulp-image": "*", 27 | "gulp-jshint": "*", 28 | "gulp-sass": "*", 29 | "gulp-uglify": "*", 30 | "jshint": "*" 31 | }, 32 | "private": true 33 | } 34 | -------------------------------------------------------------------------------- /panel/phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | tests/tests/AutocompleteTest.php 5 | tests/tests/ChangesTest.php 6 | tests/tests/FileModelTest.php 7 | tests/tests/HistoryTest.php 8 | tests/tests/NumberingTest.php 9 | tests/tests/PageModelTest.php 10 | tests/tests/PanelTest.php 11 | tests/tests/SiteModelTest.php 12 | tests/tests/StructureTest.php 13 | tests/tests/UserModelTest.php 14 | 15 | 16 | -------------------------------------------------------------------------------- /panel/readme.md: -------------------------------------------------------------------------------- 1 | # Kirby v2 Panel 2 | 3 | This is the Kirby Panel submodule. 4 | 5 | Please refer to the [Kirby v2 Starterkit](http://github.com/getkirby-v2/starterkit) 6 | for a complete installation of Kirby 2 7 | 8 | ## Kirby 2 - EOL 9 | 10 | Kirby 2 is an old version of Kirby CMS. We are supporting it with security updates until December 31st, 2020. 11 | 12 | For the latest version of Kirby, check out https://getkirby.com 13 | 14 | ## Author 15 | Bastian Allgeier 16 | 17 | 18 | ## Website 19 | 20 | 21 | ## License 22 | 23 | -------------------------------------------------------------------------------- /panel/tests/dummy/images/forrest.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/panel/tests/dummy/images/forrest.jpg -------------------------------------------------------------------------------- /panel/tests/dummy/site/blueprints/alphabet.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | title: Alphabet 4 | pages: 5 | template: char 6 | num: zero 7 | files: false 8 | fields: 9 | title: 10 | label: Title 11 | type: text 12 | -------------------------------------------------------------------------------- /panel/tests/dummy/site/blueprints/blog.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | title: Blog 4 | pages: 5 | template: article 6 | num: date 7 | files: false 8 | fields: 9 | title: 10 | label: Title 11 | type: text 12 | -------------------------------------------------------------------------------- /panel/tests/dummy/site/blueprints/default.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | title: Default Page 4 | pages: true 5 | files: true 6 | fields: 7 | title: 8 | label: Title 9 | type: text 10 | text: 11 | label: Text 12 | type: textarea -------------------------------------------------------------------------------- /panel/tests/lib/bootstrap.php: -------------------------------------------------------------------------------- 1 | = 6 12 | if(class_exists('\PHPUnit\Framework\TestCase') && !class_exists('\PHPUnit_Framework_TestCase')) { 13 | class_alias('\PHPUnit\Framework\TestCase', '\PHPUnit_Framework_TestCase'); 14 | } 15 | 16 | // include the kirby testcase file 17 | require_once(__DIR__ . DIRECTORY_SEPARATOR . 'testcase.php'); 18 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Kirby 2 Langkit - EOL 2 | 3 | Kirby 2 is an old version of Kirby CMS and has reached its end of life. We are no longer supporting it. 4 | 5 | For the latest version of Kirby, check out https://getkirby.com 6 | 7 | ## Website 8 | https://getkirby.com 9 | 10 | ## Archived Documentation 11 | https://k2.getkirby.com 12 | 13 | ## License 14 | https://getkirby.com/license 15 | -------------------------------------------------------------------------------- /site/accounts/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/site/accounts/index.html -------------------------------------------------------------------------------- /site/blueprints/about.yml: -------------------------------------------------------------------------------- 1 | title: 2 | en: About 3 | de: Über uns 4 | 5 | pages: 6 | template: team 7 | num: zero 8 | 9 | files: false 10 | 11 | options: 12 | template: false 13 | status: false 14 | 15 | fields: 16 | title: 17 | label: 18 | en: Title 19 | de: Titel 20 | type: title 21 | 22 | intro: 23 | label: 24 | en: Intro 25 | de: Einleitungstext 26 | type: textarea 27 | 28 | text: 29 | label: Text 30 | type: textarea -------------------------------------------------------------------------------- /site/blueprints/article.yml: -------------------------------------------------------------------------------- 1 | title: 2 | en: Article 3 | de: Artikel 4 | 5 | pages: false 6 | 7 | fields: 8 | title: 9 | label: 10 | en: Title 11 | de: Titel 12 | type: title 13 | 14 | coverimage: 15 | label: 16 | en: Cover Image 17 | de: Beitragsbild 18 | type: image 19 | width: 1/2 20 | 21 | date: 22 | label: 23 | en: Date 24 | de: Datum 25 | icon: calendar 26 | type: date 27 | format: LL 28 | placeholder: Select a date… 29 | default: today 30 | required: true 31 | width: 1/2 32 | 33 | text: 34 | label: Text 35 | type: textarea 36 | -------------------------------------------------------------------------------- /site/blueprints/default.yml: -------------------------------------------------------------------------------- 1 | title: Page 2 | 3 | fields: 4 | title: 5 | label: Title 6 | type: text 7 | 8 | text: 9 | label: Text 10 | type: textarea 11 | -------------------------------------------------------------------------------- /site/blueprints/error.yml: -------------------------------------------------------------------------------- 1 | title: 2 | en: Error 3 | de: Fehler 4 | 5 | pages: false 6 | 7 | fields: 8 | title: 9 | label: 10 | en: Title 11 | de: Titel 12 | type: text 13 | 14 | intro: 15 | label: 16 | en: Intro 17 | de: Einleitungstext 18 | type: textarea 19 | 20 | text: 21 | label: Text 22 | type: textarea -------------------------------------------------------------------------------- /site/blueprints/home.yml: -------------------------------------------------------------------------------- 1 | title: 2 | en: Home 3 | de: Startseite 4 | 5 | pages: false 6 | 7 | fields: 8 | title: 9 | label: 10 | en: Title 11 | de: Titel 12 | type: text 13 | 14 | intro: 15 | label: 16 | en: Intro 17 | de: Einleitungstext 18 | type: textarea 19 | 20 | text: 21 | label: Text 22 | type: textarea -------------------------------------------------------------------------------- /site/blueprints/project.yml: -------------------------------------------------------------------------------- 1 | title: 2 | en: Project 3 | de: Projekt 4 | 5 | files: 6 | sortable: true 7 | 8 | pages: false 9 | 10 | fields: 11 | title: 12 | label: 13 | en: Title 14 | de: Titel 15 | type: text 16 | width: 3/4 17 | 18 | year: 19 | label: 20 | en: Year 21 | de: Jahr 22 | type: text 23 | width: 1/4 24 | 25 | text: 26 | label: Text 27 | type: textarea 28 | -------------------------------------------------------------------------------- /site/blueprints/projects.yml: -------------------------------------------------------------------------------- 1 | title: Projects 2 | 3 | files: false 4 | 5 | pages: 6 | template: project 7 | 8 | options: 9 | template: false 10 | status: false 11 | url: false 12 | 13 | fields: 14 | title: 15 | label: Title 16 | type: text 17 | 18 | text: 19 | label: Text 20 | type: textarea 21 | -------------------------------------------------------------------------------- /site/blueprints/site.yml: -------------------------------------------------------------------------------- 1 | title: Site 2 | 3 | fields: 4 | title: 5 | label: 6 | en: Title 7 | de: Titel 8 | type: text 9 | 10 | description: 11 | label: 12 | en: Description 13 | de: Beschreibung 14 | type: textarea 15 | 16 | copyright: 17 | label: 18 | en: Copyright 19 | de: Rechtliches 20 | type: textarea 21 | -------------------------------------------------------------------------------- /site/blueprints/team.yml: -------------------------------------------------------------------------------- 1 | title: 2 | en: Team Member 3 | de: Team-Mitglied 4 | 5 | pages: false 6 | 7 | icon: user 8 | 9 | preview: parent 10 | 11 | fields: 12 | title: 13 | label: Name 14 | type: title 15 | 16 | position: 17 | label: Position 18 | type: text 19 | required: true 20 | 21 | about: 22 | label: 23 | en: About 24 | de: Kurzbiografie 25 | type: textarea 26 | 27 | phone: 28 | label: 29 | en: Phone Number 30 | de: Telefonnummer 31 | type: tel 32 | required: true 33 | width: 1/2 34 | 35 | email: 36 | label: 37 | en: Email Address 38 | de: Email-Adresse 39 | type: email 40 | required: true 41 | width: 1/2 42 | -------------------------------------------------------------------------------- /site/cache/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/site/cache/index.html -------------------------------------------------------------------------------- /site/controllers/blog.php: -------------------------------------------------------------------------------- 1 | perpage()->int(); 13 | $articles = $page->children() 14 | ->visible() 15 | ->flip() 16 | ->paginate(($perpage >= 1)? $perpage : 5); 17 | 18 | return [ 19 | 'articles' => $articles, 20 | 'pagination' => $articles->pagination() 21 | ]; 22 | 23 | }; 24 | -------------------------------------------------------------------------------- /site/languages/de.php: -------------------------------------------------------------------------------- 1 | ♥ gemacht'); 5 | 6 | l::set('home.projects.latest', 'Aktuelle Projekte'); 7 | l::set('home.projects.more', 'Alle Projekte zeigen …'); 8 | 9 | l::set('blog.more', 'weiterlesen'); 10 | l::set('blog.no-articles', 'Dieser Blog enthält noch keine Artikel.'); 11 | 12 | l::set('contact.get-in-touch', 'Kontaktmöglichkeiten'); 13 | 14 | l::set('about.team', 'Unser Schnurrendes Team'); 15 | l::set('about.email', 'E-Mail:'); 16 | l::set('about.phone', 'Telefon:'); 17 | 18 | l::set('pagination.prev', 'neuere Artikel'); 19 | l::set('pagination.next', 'ältere Artikel'); 20 | -------------------------------------------------------------------------------- /site/languages/en.php: -------------------------------------------------------------------------------- 1 | ♥'); 5 | 6 | l::set('home.projects.latest', 'Latest Projects'); 7 | l::set('home.projects.more', 'show all projects …'); 8 | 9 | l::set('blog.more', 'read more'); 10 | l::set('blog.no-articles', 'This blog does not contain any articles yet.'); 11 | 12 | l::set('contact.get-in-touch', 'Get in Touch'); 13 | 14 | l::set('about.team', 'Our Purring Team'); 15 | l::set('about.email', 'Email:'); 16 | l::set('about.phone', 'Phone:'); 17 | 18 | l::set('pagination.prev', 'newer articles'); 19 | l::set('pagination.next', 'older articles'); 20 | -------------------------------------------------------------------------------- /site/plugins/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/site/plugins/index.html -------------------------------------------------------------------------------- /site/snippets/coverimage.php: -------------------------------------------------------------------------------- 1 | coverimage()->toFile()): ?> 2 |
    3 | 4 |
    5 | 6 | -------------------------------------------------------------------------------- /site/snippets/footer.php: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 9 | 10 | 13 | 14 |
    15 |
    16 | 17 | 18 | -------------------------------------------------------------------------------- /site/snippets/header.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <?= $site->title()->html() ?> | <?= $page->title()->html() ?> 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 29 | -------------------------------------------------------------------------------- /site/snippets/languages.php: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /site/snippets/menu.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/templates/article.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 | 5 |
    6 | 7 |
    8 |

    title()->html() ?>

    9 |
    10 | date(l('date.format')) ?> 11 |
    12 |
    13 |
    14 | 15 | 16 | 17 |
    18 | text()->kirbytext() ?> 19 |
    20 | 21 |
    22 | 23 | true]) ?> 24 | 25 |
    26 | 27 | -------------------------------------------------------------------------------- /site/templates/default.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 | 5 |
    6 |

    title()->html() ?>

    7 |
    8 | intro()->kirbytext() ?> 9 |
    10 |
    11 |
    12 | 13 |
    14 | text()->kirbytext() ?> 15 |
    16 | 17 |
    18 | 19 | -------------------------------------------------------------------------------- /site/templates/home.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 | 5 |
    6 |

    title()->html() ?>

    7 |
    8 | intro()->kirbytext() ?> 9 |
    10 |
    11 |
    12 | 13 |
    14 | text()->kirbytext() ?> 15 |
    16 | 17 |
    18 | 19 |
    20 |

    21 | 3]) ?> 22 |

    23 |
    24 | 25 |
    26 | 27 |
    28 | 29 | -------------------------------------------------------------------------------- /site/templates/project.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 | 5 |
    6 |

    title()->html() ?>

    7 |
    8 | year() ?> 9 |
    10 |
    11 |
    12 | 13 |
    14 | 15 | text()->kirbytext() ?> 16 | 17 | images()->sortBy('sort', 'asc') as $image): ?> 22 |
    23 | <?= $page->title()->html() ?> 24 |
    25 | 26 | 27 |
    28 | 29 | 30 | 31 |
    32 | 33 | -------------------------------------------------------------------------------- /site/templates/projects.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
    4 | 5 |
    6 |

    title()->html() ?>

    7 |
    8 | text()->kirbytext() ?> 9 |
    10 |
    11 |
    12 | 13 |
    14 | 15 |
    16 | 17 |
    18 | 19 | -------------------------------------------------------------------------------- /thumbs/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/getkirby-v2/langkit/97ff2f82efe82d238b38f11cd5f872859890bc79/thumbs/index.html --------------------------------------------------------------------------------