├── .github
├── ISSUE_TEMPLATE
└── img
│ ├── download-stable-version.svg
│ └── phpstorm.png
├── .gitignore
├── .travis.yml
├── CONTRIBUTING.md
├── README.md
├── framework
├── LICENSE
├── autoload.php
├── bin
│ └── load-latest-fonts.php
├── bootstrap.php
├── core
│ ├── Fw.php
│ ├── class-fw-manifest.php
│ ├── components
│ │ ├── backend.php
│ │ ├── backend
│ │ │ └── class-fw-settings-form-theme.php
│ │ ├── extensions.php
│ │ ├── extensions
│ │ │ ├── class-fw-extension-default.php
│ │ │ └── manager
│ │ │ │ ├── available-extensions.php
│ │ │ │ ├── class--fw-extensions-manager.php
│ │ │ │ ├── includes
│ │ │ │ ├── available-ext
│ │ │ │ │ ├── class--fw-available-extensions-register.php
│ │ │ │ │ └── class-fw-available-extension.php
│ │ │ │ ├── class--fw-extensions-delete-upgrader-skin.php
│ │ │ │ ├── class--fw-extensions-install-upgrader-skin.php
│ │ │ │ ├── download-source
│ │ │ │ │ ├── class--fw-ext-download-source-register.php
│ │ │ │ │ ├── class--fw-ext-download-source.php
│ │ │ │ │ └── types
│ │ │ │ │ │ ├── class-fw-download-source-bitbucket.php
│ │ │ │ │ │ ├── class-fw-download-source-custom.php
│ │ │ │ │ │ ├── class-fw-download-source-github.php
│ │ │ │ │ │ └── init.php
│ │ │ │ └── parsedown
│ │ │ │ │ ├── LICENSE.txt
│ │ │ │ │ └── Parsedown.php
│ │ │ │ ├── static
│ │ │ │ ├── extension-page.css
│ │ │ │ ├── extension-page.js
│ │ │ │ ├── extensions-page.css
│ │ │ │ ├── extensions-page.js
│ │ │ │ ├── img
│ │ │ │ │ ├── disabled-bg.png
│ │ │ │ │ ├── thumbnail-bg.jpg
│ │ │ │ │ └── thumbnails
│ │ │ │ │ │ ├── analytics.jpg
│ │ │ │ │ │ ├── backup.jpg
│ │ │ │ │ │ ├── backups.jpg
│ │ │ │ │ │ ├── breadcrumbs.jpg
│ │ │ │ │ │ ├── brizy.jpg
│ │ │ │ │ │ ├── events.jpg
│ │ │ │ │ │ ├── feedback.jpg
│ │ │ │ │ │ ├── forms.jpg
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── learning.jpg
│ │ │ │ │ │ ├── mailer.jpg
│ │ │ │ │ │ ├── mega-menu.jpg
│ │ │ │ │ │ ├── page-builder.jpg
│ │ │ │ │ │ ├── portfolio.jpg
│ │ │ │ │ │ ├── seo.jpg
│ │ │ │ │ │ ├── sidebars.jpg
│ │ │ │ │ │ ├── sliders.jpg
│ │ │ │ │ │ ├── social.jpg
│ │ │ │ │ │ ├── styling.jpg
│ │ │ │ │ │ ├── translation.jpg
│ │ │ │ │ │ └── wp-shortcodes.jpg
│ │ │ │ └── unyson-font-icon
│ │ │ │ │ ├── fonts
│ │ │ │ │ ├── icomoon.eot
│ │ │ │ │ ├── icomoon.svg
│ │ │ │ │ ├── icomoon.ttf
│ │ │ │ │ └── icomoon.woff
│ │ │ │ │ └── style.css
│ │ │ │ └── views
│ │ │ │ ├── delete-form.php
│ │ │ │ ├── extension-page-header.php
│ │ │ │ ├── extension.php
│ │ │ │ ├── extensions-page.php
│ │ │ │ └── install-form.php
│ │ └── theme.php
│ ├── exceptions
│ │ └── class-fw-option-type-exception.php
│ └── extends
│ │ ├── class-fw-container-type.php
│ │ ├── class-fw-extension.php
│ │ ├── class-fw-option-type.php
│ │ └── interface-fw-option-handler.php
├── extensions
│ ├── blog
│ │ ├── class-fw-extension-blog.php
│ │ └── manifest.php
│ ├── clone-all.bash
│ └── update
│ │ ├── class-fw-extension-update.php
│ │ ├── config.php
│ │ ├── extensions
│ │ ├── bitbucket-update
│ │ │ ├── class-fw-extension-bitbucket-update.php
│ │ │ └── manifest.php
│ │ ├── custom-update
│ │ │ ├── class-fw-extension-custom-update.php
│ │ │ └── manifest.php
│ │ └── github-update
│ │ │ ├── class-fw-extension-github-update.php
│ │ │ └── manifest.php
│ │ ├── includes
│ │ ├── classes
│ │ │ ├── class--fw-ext-update-extensions-list-table.php
│ │ │ ├── class--fw-ext-update-extensions-upgrader-skin.php
│ │ │ ├── class--fw-ext-update-framework-upgrader-skin.php
│ │ │ └── class--fw-ext-update-theme-upgrader-skin.php
│ │ └── extends
│ │ │ └── class-fw-ext-update-service.php
│ │ ├── manifest.php
│ │ ├── static.php
│ │ ├── static
│ │ └── css
│ │ │ └── admin-update-page.css
│ │ └── views
│ │ └── updates-list.php
├── helpers
│ ├── class-fw-access-key.php
│ ├── class-fw-cache.php
│ ├── class-fw-callback.php
│ ├── class-fw-db-options-model.php
│ ├── class-fw-dumper.php
│ ├── class-fw-flash-messages.php
│ ├── class-fw-form.php
│ ├── class-fw-request.php
│ ├── class-fw-resize.php
│ ├── class-fw-session.php
│ ├── class-fw-settings-form.php
│ ├── class-fw-wp-filesystem.php
│ ├── class-fw-wp-list-table.php
│ ├── class-fw-wp-meta.php
│ ├── class-fw-wp-option.php
│ ├── database.php
│ ├── exceptions
│ │ ├── class-fw-form-invalid-submission-exception.php
│ │ └── class-fw-form-not-found-exception.php
│ ├── fw-google-fonts.json.php
│ ├── fw-storage.php
│ ├── general.php
│ ├── meta.php
│ └── type
│ │ ├── class-fw-type-register.php
│ │ └── class-fw-type.php
├── includes
│ ├── container-types
│ │ ├── box
│ │ │ └── class-fw-container-type-box.php
│ │ ├── class-fw-container-type-undefined.php
│ │ ├── popup
│ │ │ ├── class-fw-container-type-popup.php
│ │ │ ├── scripts.js
│ │ │ └── styles.css
│ │ ├── simple.php
│ │ └── tab
│ │ │ ├── class-fw-container-type-tab.php
│ │ │ └── view.php
│ ├── customizer
│ │ ├── class--fw-customizer-control-option-wrapper.php
│ │ └── class--fw-customizer-setting-option.php
│ ├── hooks.php
│ ├── option-storage
│ │ ├── class--fw-option-storage-type-register.php
│ │ ├── class-fw-option-storage-type.php
│ │ └── type
│ │ │ ├── class-fw-option-storage-type-post-meta.php
│ │ │ ├── class-fw-option-storage-type-term-meta.php
│ │ │ └── class-fw-option-storage-type-wp-option.php
│ └── option-types
│ │ ├── addable-box
│ │ ├── class-fw-option-type-addable-box.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── js
│ │ │ │ └── scripts.js
│ │ └── view.php
│ │ ├── addable-option
│ │ ├── class-fw-option-type-addable-option.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── js
│ │ │ │ └── scripts.js
│ │ └── view.php
│ │ ├── addable-popup
│ │ ├── class-fw-option-type-addable-popup.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── js
│ │ │ │ └── scripts.js
│ │ └── view.php
│ │ ├── background-image
│ │ ├── class-fw-option-type-background-image.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── js
│ │ │ │ └── scripts.js
│ │ └── view.php
│ │ ├── class-fw-option-type-undefined.php
│ │ ├── color-picker
│ │ ├── class-fw-option-type-color-picker.php
│ │ └── static
│ │ │ ├── css
│ │ │ └── styles.css
│ │ │ └── js
│ │ │ └── scripts.js
│ │ ├── date-picker
│ │ ├── class-fw-option-type-wp-date-picker.php
│ │ └── static
│ │ │ ├── css
│ │ │ └── datepicker.css
│ │ │ └── js
│ │ │ ├── bootstrap-datepicker.js
│ │ │ ├── locales
│ │ │ ├── bootstrap-datepicker.ar.min.js
│ │ │ ├── bootstrap-datepicker.az.min.js
│ │ │ ├── bootstrap-datepicker.bg.min.js
│ │ │ ├── bootstrap-datepicker.bs.min.js
│ │ │ ├── bootstrap-datepicker.ca.min.js
│ │ │ ├── bootstrap-datepicker.cs.min.js
│ │ │ ├── bootstrap-datepicker.cy.min.js
│ │ │ ├── bootstrap-datepicker.da.min.js
│ │ │ ├── bootstrap-datepicker.de.min.js
│ │ │ ├── bootstrap-datepicker.el.min.js
│ │ │ ├── bootstrap-datepicker.en-AU.min.js
│ │ │ ├── bootstrap-datepicker.en-GB.min.js
│ │ │ ├── bootstrap-datepicker.eo.min.js
│ │ │ ├── bootstrap-datepicker.es.min.js
│ │ │ ├── bootstrap-datepicker.et.min.js
│ │ │ ├── bootstrap-datepicker.eu.min.js
│ │ │ ├── bootstrap-datepicker.fa.min.js
│ │ │ ├── bootstrap-datepicker.fi.min.js
│ │ │ ├── bootstrap-datepicker.fo.min.js
│ │ │ ├── bootstrap-datepicker.fr-CH.min.js
│ │ │ ├── bootstrap-datepicker.fr.min.js
│ │ │ ├── bootstrap-datepicker.gl.min.js
│ │ │ ├── bootstrap-datepicker.he.min.js
│ │ │ ├── bootstrap-datepicker.hr.min.js
│ │ │ ├── bootstrap-datepicker.hu.min.js
│ │ │ ├── bootstrap-datepicker.hy.min.js
│ │ │ ├── bootstrap-datepicker.id.min.js
│ │ │ ├── bootstrap-datepicker.is.min.js
│ │ │ ├── bootstrap-datepicker.it-CH.min.js
│ │ │ ├── bootstrap-datepicker.it.min.js
│ │ │ ├── bootstrap-datepicker.ja.min.js
│ │ │ ├── bootstrap-datepicker.ka.min.js
│ │ │ ├── bootstrap-datepicker.kh.min.js
│ │ │ ├── bootstrap-datepicker.kk.min.js
│ │ │ ├── bootstrap-datepicker.ko.min.js
│ │ │ ├── bootstrap-datepicker.kr.min.js
│ │ │ ├── bootstrap-datepicker.lt.min.js
│ │ │ ├── bootstrap-datepicker.lv.min.js
│ │ │ ├── bootstrap-datepicker.me.min.js
│ │ │ ├── bootstrap-datepicker.mk.min.js
│ │ │ ├── bootstrap-datepicker.mn.min.js
│ │ │ ├── bootstrap-datepicker.ms.min.js
│ │ │ ├── bootstrap-datepicker.nb.min.js
│ │ │ ├── bootstrap-datepicker.nl-BE.min.js
│ │ │ ├── bootstrap-datepicker.nl.min.js
│ │ │ ├── bootstrap-datepicker.no.min.js
│ │ │ ├── bootstrap-datepicker.pl.min.js
│ │ │ ├── bootstrap-datepicker.pt-BR.min.js
│ │ │ ├── bootstrap-datepicker.pt.min.js
│ │ │ ├── bootstrap-datepicker.ro.min.js
│ │ │ ├── bootstrap-datepicker.rs-latin.min.js
│ │ │ ├── bootstrap-datepicker.rs.min.js
│ │ │ ├── bootstrap-datepicker.ru.min.js
│ │ │ ├── bootstrap-datepicker.sk.min.js
│ │ │ ├── bootstrap-datepicker.sl.min.js
│ │ │ ├── bootstrap-datepicker.sq.min.js
│ │ │ ├── bootstrap-datepicker.sr-latin.min.js
│ │ │ ├── bootstrap-datepicker.sr.min.js
│ │ │ ├── bootstrap-datepicker.sv.min.js
│ │ │ ├── bootstrap-datepicker.sw.min.js
│ │ │ ├── bootstrap-datepicker.th.min.js
│ │ │ ├── bootstrap-datepicker.tr.min.js
│ │ │ ├── bootstrap-datepicker.uk.min.js
│ │ │ ├── bootstrap-datepicker.vi.min.js
│ │ │ ├── bootstrap-datepicker.zh-CN.min.js
│ │ │ └── bootstrap-datepicker.zh-TW.min.js
│ │ │ └── scripts.js
│ │ ├── datetime-picker
│ │ ├── class-fw-option-type-datetime-picker.php
│ │ └── static
│ │ │ ├── css
│ │ │ ├── jquery.datetimepicker.css
│ │ │ └── style.css
│ │ │ └── js
│ │ │ ├── jquery.datetimepicker.js
│ │ │ └── script.js
│ │ ├── datetime-range
│ │ ├── class-fw-option-type-datetime-range.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── js
│ │ │ │ └── script.js
│ │ └── view.php
│ │ ├── gradient
│ │ ├── class-fw-option-type-gradient.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── js
│ │ │ │ └── scripts.js
│ │ └── view.php
│ │ ├── icon-v2
│ │ ├── class-fw-option-type-icon-v2.php
│ │ ├── includes
│ │ │ ├── class-fw-icon-v2-favorites.php
│ │ │ └── class-fw-icon-v2-packs-loader.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── picker.css
│ │ │ ├── img
│ │ │ │ ├── no-image.png
│ │ │ │ ├── sauron.png
│ │ │ │ └── transparent_bg.png
│ │ │ └── js
│ │ │ │ ├── icon-picker-v2.js
│ │ │ │ └── render-icon-previews.js
│ │ └── views
│ │ │ ├── templates.php
│ │ │ └── view.php
│ │ ├── icon
│ │ ├── README.md
│ │ ├── class-fw-option-type-icon.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── backend.css
│ │ │ └── js
│ │ │ │ └── backend.js
│ │ └── view.php
│ │ ├── image-picker
│ │ ├── class-fw-option-type-image-picker.php
│ │ └── static
│ │ │ ├── css
│ │ │ └── styles.css
│ │ │ └── js
│ │ │ ├── image-picker
│ │ │ ├── image-picker.js
│ │ │ ├── image-picker.min.js
│ │ │ └── imagesloaded.pkg.min.js
│ │ │ └── scripts.js
│ │ ├── map
│ │ ├── class-fw-option-type-map.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── style.css
│ │ │ └── js
│ │ │ │ └── scripts.js
│ │ └── views
│ │ │ └── view.php
│ │ ├── multi-picker
│ │ ├── class-fw-option-type-multi-picker.php
│ │ └── static
│ │ │ ├── css
│ │ │ └── multi-picker.css
│ │ │ └── js
│ │ │ └── multi-picker.js
│ │ ├── multi-select
│ │ ├── class-fw-option-type-multi-select.php
│ │ └── static
│ │ │ ├── css
│ │ │ └── style.css
│ │ │ └── js
│ │ │ └── scripts.js
│ │ ├── multi-upload
│ │ ├── class-fw-option-type-multi-upload.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ ├── any-files.css
│ │ │ │ ├── images-only.css
│ │ │ │ └── modal.css
│ │ │ └── js
│ │ │ │ ├── any-files.js
│ │ │ │ └── images-only.js
│ │ └── views
│ │ │ ├── any-files.php
│ │ │ └── images-only.php
│ │ ├── multi
│ │ ├── class-fw-option-type-multi.php
│ │ └── static
│ │ │ └── css
│ │ │ └── styles.css
│ │ ├── oembed
│ │ ├── class-fw-option-type-oembed.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── js
│ │ │ │ └── oembed.js
│ │ └── view.php
│ │ ├── popup
│ │ ├── class-fw-option-type-popup.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── js
│ │ │ │ └── popup.js
│ │ └── views
│ │ │ └── view.php
│ │ ├── radio-text
│ │ ├── class-fw-option-type-radio-text.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── js
│ │ │ │ └── scripts.js
│ │ └── view.php
│ │ ├── range-slider
│ │ ├── class-fw-option-type-range-slider.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ ├── js
│ │ │ │ └── scripts.js
│ │ │ └── libs
│ │ │ │ └── ion-range-slider
│ │ │ │ ├── ion.rangeSlider.css
│ │ │ │ └── ion.rangeSlider.min.js
│ │ └── view.php
│ │ ├── rgba-color-picker
│ │ ├── class-fw-option-type-rgba-color-picker.php
│ │ └── static
│ │ │ ├── css
│ │ │ └── styles.css
│ │ │ └── js
│ │ │ └── scripts.js
│ │ ├── simple.php
│ │ ├── slider
│ │ ├── class-fw-option-type-short-slider.php
│ │ ├── class-fw-option-type-slider.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ ├── js
│ │ │ │ └── scripts.js
│ │ │ └── libs
│ │ │ │ └── ion-range-slider
│ │ │ │ ├── ion.rangeSlider.css
│ │ │ │ └── ion.rangeSlider.min.js
│ │ └── view.php
│ │ ├── switch
│ │ ├── class-fw-option-type-switch.php
│ │ └── static
│ │ │ ├── adaptive-switch
│ │ │ ├── jquery.adaptive-switch.js
│ │ │ └── styles.css
│ │ │ ├── css
│ │ │ └── styles.css
│ │ │ └── js
│ │ │ └── scripts.js
│ │ ├── typography-v2
│ │ ├── class-fw-option-type-typography-v2.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ └── js
│ │ │ │ └── scripts.js
│ │ └── view.php
│ │ ├── typography
│ │ ├── class-fw-option-type-typography.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ └── styles.css
│ │ │ ├── images
│ │ │ │ └── google-fonts.png
│ │ │ └── js
│ │ │ │ └── scripts.js
│ │ └── view.php
│ │ ├── upload
│ │ ├── class-fw-option-type-upload.php
│ │ ├── static
│ │ │ ├── css
│ │ │ │ ├── any-files.css
│ │ │ │ ├── images-only.css
│ │ │ │ └── modal.css
│ │ │ └── js
│ │ │ │ ├── any-files.js
│ │ │ │ └── images-only.js
│ │ └── views
│ │ │ ├── any-files.php
│ │ │ └── images-only.php
│ │ └── wp-editor
│ │ ├── class-fw-option-type-wp-editor.php
│ │ ├── includes
│ │ └── class-fw-wp-editor-settings.php
│ │ └── static
│ │ ├── scripts.js
│ │ └── styles.css
├── index.html
├── languages
│ ├── fw-es_ES.mo
│ ├── fw-es_ES.po
│ ├── fw-fa_IR.mo
│ ├── fw-fa_IR.po
│ ├── fw-fr_FR.mo
│ ├── fw-fr_FR.po
│ ├── fw-he_IL.mo
│ ├── fw-he_IL.po
│ ├── fw-nl_NL.mo
│ ├── fw-nl_NL.po
│ ├── fw-ru_RU.mo
│ ├── fw-ru_RU.po
│ ├── fw.pot
│ └── index.html
├── manifest.php
├── static
│ ├── css
│ │ ├── backend-options.css
│ │ ├── fw.css
│ │ ├── option-types.css
│ │ └── selectize.css
│ ├── img
│ │ ├── logo-100.png
│ │ ├── logo.svg
│ │ ├── no-image.png
│ │ └── sort-vertically.png
│ ├── js
│ │ ├── backend-customizer.js
│ │ ├── backend-options.js
│ │ ├── fw-events.js
│ │ ├── fw-form-helpers.js
│ │ ├── fw-reactive-options-registry.js
│ │ ├── fw-reactive-options-simple-options.js
│ │ ├── fw-reactive-options-undefined-option.js
│ │ ├── fw-reactive-options.js
│ │ ├── fw.js
│ │ ├── ie-fixes.js
│ │ └── option-types.js
│ └── libs
│ │ ├── backbone-relational
│ │ └── backbone-relational.js
│ │ ├── entypo
│ │ ├── css
│ │ │ └── entypo.css
│ │ └── fonts
│ │ │ ├── entypo.eot
│ │ │ ├── entypo.svg
│ │ │ ├── entypo.ttf
│ │ │ └── entypo.woff
│ │ ├── font-awesome
│ │ ├── css
│ │ │ └── font-awesome.min.css
│ │ └── fonts
│ │ │ ├── FontAwesome.otf
│ │ │ ├── fontawesome-webfont.eot
│ │ │ ├── fontawesome-webfont.svg
│ │ │ ├── fontawesome-webfont.ttf
│ │ │ ├── fontawesome-webfont.woff
│ │ │ └── fontawesome-webfont.woff2
│ │ ├── jscrollpane
│ │ ├── jquery.jscrollpane.css
│ │ └── jquery.jscrollpane.min.js
│ │ ├── linecons
│ │ ├── css
│ │ │ └── linecons.css
│ │ └── fonts
│ │ │ └── linecons.eot
│ │ ├── lnr
│ │ └── css
│ │ │ └── lnr.css
│ │ ├── moment
│ │ └── moment-with-locales.min.js
│ │ ├── mousewheel
│ │ └── jquery.mousewheel.min.js
│ │ ├── qtip
│ │ ├── css
│ │ │ ├── jquery.qtip.css
│ │ │ └── jquery.qtip.min.css
│ │ ├── jquery.qtip.js
│ │ └── jquery.qtip.min.js
│ │ ├── selectize
│ │ ├── selectize.css
│ │ └── selectize.min.js
│ │ ├── typcn
│ │ ├── css
│ │ │ └── typcn.css
│ │ └── fonts
│ │ │ ├── typicons.eot
│ │ │ ├── typicons.svg
│ │ │ ├── typicons.ttf
│ │ │ └── typicons.woff
│ │ ├── unycon
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── changelog.txt
│ │ ├── demo-files
│ │ │ ├── demo.css
│ │ │ └── demo.js
│ │ ├── demo.html
│ │ ├── fonts
│ │ │ ├── Unycon.eot
│ │ │ ├── Unycon.svg
│ │ │ ├── Unycon.ttf
│ │ │ └── Unycon.woff
│ │ ├── iconmoon-app-selection.json.zip
│ │ ├── index.html
│ │ └── unycon.css
│ │ └── uri
│ │ └── URI.js
└── views
│ ├── about.php
│ ├── backend-container-design-taxonomy.php
│ ├── backend-option-design-customizer.php
│ ├── backend-option-design-default.php
│ ├── backend-option-design-empty.php
│ ├── backend-option-design-taxonomy.php
│ └── backend-settings-form.php
├── plugin-check-info.md
├── readme.txt
├── tests
├── bootstrap.php
├── framework
│ └── class-wp-unyson-unit-test-case.php
├── phpunit.xml
├── readme.md
├── test-helpers.php
├── test-option-type.php
└── test-wp-editor.php
├── uninstall.php
└── unyson.php
/.github/ISSUE_TEMPLATE:
--------------------------------------------------------------------------------
1 | Describe the issue with as much details as you can.
2 | If it's a bug, please give the exact steps how to reproduce the problem.
3 |
--------------------------------------------------------------------------------
/.github/img/download-stable-version.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.github/img/phpstorm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/.github/img/phpstorm.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /framework/extensions/*
2 |
3 | !/framework/extensions/blog/
4 | !/framework/extensions/update/
5 | !/framework/extensions/clone-all.bash
6 |
7 | .idea
8 | node_modules/
9 | package.json
10 | yarn.lock
11 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 |
3 | sudo: false
4 |
5 | matrix:
6 | allow_failures:
7 | - php: 7.0
8 | include:
9 | - php: 5.2
10 | env: WP_VERSION=4.7 WP_MULTISITE=1 PHPLINT=1
11 | - php: 5.2
12 | env: WP_VERSION=4.7
13 | - php: 5.2
14 | env: WP_VERSION=4.6
15 | - php: 5.2
16 | env: WP_VERSION=4.5
17 | - php: 5.2
18 | env: WP_VERSION=4.4
19 | - php: 7.0
20 | env: WP_VERSION=4.7 COVERAGE=1
21 |
22 | dist: precise
23 |
24 | before_script:
25 | - phpenv local --unset
26 | - PLUGIN_SLUG=$(basename $(pwd))
27 | - export WP_DEVELOP_DIR=/tmp/wordpress/
28 | - git clone --depth=50 --branch="$WP_VERSION" git://develop.git.wordpress.org/ /tmp/wordpress
29 | - cd ..
30 | - cp -r "$PLUGIN_SLUG" "/tmp/wordpress/src/wp-content/plugins/$PLUGIN_SLUG"
31 | - cd /tmp/wordpress/
32 | - cp wp-tests-config-sample.php wp-tests-config.php
33 | - sed -i "s/youremptytestdbnamehere/wordpress_tests/" wp-tests-config.php
34 | - sed -i "s/yourusernamehere/travis/" wp-tests-config.php
35 | - sed -i "s/yourpasswordhere//" wp-tests-config.php
36 | - mysql -e "CREATE DATABASE wordpress_tests;" -uroot
37 | - cd "/tmp/wordpress/src/wp-content/plugins/$PLUGIN_SLUG"
38 | - phpenv rehash
39 |
40 | script:
41 | - if [[ "$COVERAGE" == "1" ]]; then phpunit -c tests/phpunit.xml --coverage-clover build/logs/clover.xml; else phpunit -c tests/phpunit.xml; fi
42 |
43 | notifications:
44 | email:
45 | on_success: never
46 | on_failure: never
47 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # How to contribute
2 |
3 | ## Getting Started
4 |
5 | * Make sure you have a [GitHub account](https://github.com/signup/free)
6 | * Submit a ticket for your issue, assuming one does not already exist.
7 | * Clearly describe the issue including steps to reproduce when it is a bug.
8 | * Make sure you fill in the earliest version that you know has the issue.
9 |
10 | ## Making Changes
11 |
12 | * Fork the repository on GitHub.
13 | * Make the changes to your forked repository.
14 | * **Ensure you stick to the [WordPress Coding Standards](http://make.wordpress.org/core/handbook/coding-standards/php/).**
15 | * Ensure you use LF line endings - no crazy windows line endings. :)
16 | * When committing, reference your issue (#1234) and include a note about the fix.
17 | * Push the changes to your fork and submit a pull request on the master branch of the Unyson repository. Existing maintenance branches will be maintained of by Unyson developers.
18 |
19 | At this point you're waiting on us to merge your pull request. We'll review all pull requests, and make suggestions and changes if necessary.
20 |
21 | # Additional Resources
22 |
23 | * [General GitHub documentation](http://help.github.com/)
24 | * [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
25 | * [Unyson Docs](http://manual.unyson.io/)
26 |
--------------------------------------------------------------------------------
/framework/bootstrap.php:
--------------------------------------------------------------------------------
1 | {$component}->_init();
67 | }
68 |
69 | foreach ($components as $component) {
70 | fw()->{$component}->_after_components_init();
71 | }
72 | }
73 |
74 | /**
75 | * The framework is loaded
76 | */
77 | do_action('fw_init');
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/framework/core/Fw.php:
--------------------------------------------------------------------------------
1 | manifest = new FW_Framework_Manifest($manifest);
41 |
42 | add_action('fw_init', array($this, '_check_requirements'), 1);
43 | }
44 |
45 | // components
46 | {
47 | $this->extensions = new _FW_Component_Extensions();
48 | $this->backend = new _FW_Component_Backend();
49 | $this->theme = new _FW_Component_Theme();
50 | }
51 | }
52 |
53 | /**
54 | * @internal
55 | */
56 | public function _check_requirements()
57 | {
58 | if (is_admin() && !$this->manifest->check_requirements()) {
59 | FW_Flash_Messages::add(
60 | 'fw_requirements',
61 | __('Framework requirements not met:', 'fw') .' '. $this->manifest->get_not_met_requirement_text(),
62 | 'warning'
63 | );
64 | }
65 | }
66 | }
67 |
68 | /**
69 | * @return _FW Framework instance
70 | */
71 | function fw() {
72 | static $FW = null; // cache
73 |
74 | if ($FW === null) {
75 | $FW = new _Fw();
76 | }
77 |
78 | return $FW;
79 | }
80 |
--------------------------------------------------------------------------------
/framework/core/components/extensions/class-fw-extension-default.php:
--------------------------------------------------------------------------------
1 | fw_html_tag(
11 | 'a',
12 | array(
13 | 'href' => fw_akg('extensions_page_link', $data, '#'),
14 | 'title' => __('Go to extensions page', 'fw'),
15 | 'target' => '_parent',
16 | ),
17 | __('Return to Extensions page', 'fw')
18 | )
19 | );
20 |
21 | $this->feedback(implode(' | ', (array)$update_actions));
22 |
23 | if ($this->result) {
24 | // used for popup ajax form submit result
25 | $this->feedback('');
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/includes/class--fw-extensions-install-upgrader-skin.php:
--------------------------------------------------------------------------------
1 | fw_html_tag(
11 | 'a',
12 | array(
13 | 'href' => fw_akg('extensions_page_link', $data, '#'),
14 | 'title' => __('Go to extensions page', 'fw'),
15 | 'target' => '_parent',
16 | ),
17 | __('Return to Extensions page', 'fw')
18 | )
19 | );
20 |
21 | $this->feedback(implode(' | ', (array)$update_actions));
22 |
23 | if ($this->result) {
24 | // used for popup ajax form submit result
25 | $this->feedback('');
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/includes/download-source/class--fw-ext-download-source-register.php:
--------------------------------------------------------------------------------
1 | register( new FW_Ext_Download_Source_Github() );
6 | $download_sources->register( new FW_Ext_Download_Source_Bitbucket() );
7 | $download_sources->register( new FW_Ext_Download_Source_Custom() );
8 | }
9 | }
10 |
11 | add_action( 'fw_register_ext_download_sources', '_action_fw_register_ext_download_sources' );
12 |
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/includes/parsedown/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2013 Emanuil Rusev, erusev.com
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/extension-page.css:
--------------------------------------------------------------------------------
1 | #fw-extension-page .fw-extension-page-title {
2 | padding-right: 0;
3 | }
4 |
5 | #fw-extension-page .fw-extension-page-title .button,
6 | #fw-extension-page .fw-extension-page-title .button-primary,
7 | #fw-extension-page .fw-extension-page-title .button-primary:active {
8 | vertical-align: middle;
9 | }
10 |
11 | #fw-extension-page .fw-flash-message + br {
12 | display: none;
13 | }
14 |
15 |
16 | #fw-extension-docs.fw-postbox > .insider {
17 | margin-top: 0 !important;
18 | }
19 |
20 | #fw-extension-docs hr {
21 | margin-left: -27px;
22 | margin-right: -27px;
23 | }
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/extension-page.js:
--------------------------------------------------------------------------------
1 | jQuery(function($){
2 | $('#fw-extension-docs a:fw-external').attr('target', '_blank');
3 | });
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/disabled-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/disabled-bg.png
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnail-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnail-bg.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/analytics.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/analytics.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/backup.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/backup.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/backups.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/backups.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/breadcrumbs.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/breadcrumbs.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/brizy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/brizy.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/events.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/events.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/feedback.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/feedback.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/forms.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/forms.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/index.html
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/learning.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/learning.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/mailer.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/mailer.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/mega-menu.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/mega-menu.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/page-builder.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/page-builder.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/portfolio.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/portfolio.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/seo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/seo.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/sidebars.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/sidebars.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/sliders.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/sliders.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/social.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/social.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/styling.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/styling.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/translation.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/translation.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/img/thumbnails/wp-shortcodes.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/img/thumbnails/wp-shortcodes.jpg
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/unyson-font-icon/fonts/icomoon.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/unyson-font-icon/fonts/icomoon.eot
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/unyson-font-icon/fonts/icomoon.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/unyson-font-icon/fonts/icomoon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/unyson-font-icon/fonts/icomoon.ttf
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/unyson-font-icon/fonts/icomoon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/core/components/extensions/manager/static/unyson-font-icon/fonts/icomoon.woff
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/static/unyson-font-icon/style.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'unyson-font-icon';
3 | src:url('fonts/icomoon.eot?iganyx');
4 | src:url('fonts/icomoon.eot?#iefixiganyx') format('embedded-opentype'),
5 | url('fonts/icomoon.woff?iganyx') format('woff'),
6 | url('fonts/icomoon.ttf?iganyx') format('truetype'),
7 | url('fonts/icomoon.svg?iganyx#icomoon') format('svg');
8 | font-weight: normal;
9 | font-style: normal;
10 | }
11 |
12 | .toplevel_page_fw-extensions > .wp-menu-image:before {
13 | font-family: 'unyson-font-icon';
14 | speak: none;
15 | font-style: normal;
16 | font-weight: normal;
17 | font-variant: normal;
18 | text-transform: none;
19 | line-height: 1;
20 |
21 | /* Better Font Rendering =========== */
22 | -webkit-font-smoothing: antialiased;
23 | -moz-osx-font-smoothing: grayscale;
24 |
25 | content: "\e600";
26 | font-size: 14px;
27 | line-height: 20px;
28 | }
29 |
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/views/delete-form.php:
--------------------------------------------------------------------------------
1 |
10 |
11 |
17 |
18 |
19 |
20 | - extensions->manager->get_extension_title($extension_name); ?>
21 |
22 |
23 |
24 |
32 |
33 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | - /
53 |
54 |
55 |
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/views/extension-page-header.php:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 | extensions->get($extension_name) || !fw()->extensions->get($extension_name)->get_settings_options()) {
29 | break;
30 | }
31 | ?>
35 |
36 |
37 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/framework/core/components/extensions/manager/views/install-form.php:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
18 |
19 |
25 |
26 |
27 |
32 |
33 |
41 |
42 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/framework/core/exceptions/class-fw-option-type-exception.php:
--------------------------------------------------------------------------------
1 | fw_html_tag(
11 | 'a',
12 | array(
13 | 'href' => self_admin_url('update-core.php'),
14 | 'title' => __('Go to updates page', 'fw'),
15 | 'target' => '_parent',
16 | ),
17 | __('Return to Updates page', 'fw')
18 | )
19 | );
20 |
21 | /**
22 | * Filter the list of action links available following extensions update.
23 | * @param array $update_actions Array of plugin action links.
24 | */
25 | $update_actions = apply_filters('fw_ext_update_extensions_complete_actions', $update_actions);
26 |
27 | if (!empty($update_actions)) {
28 | $this->feedback(implode(' | ', (array)$update_actions));
29 | }
30 | }
31 |
32 | public function decrement_extension_update_count($extension_name)
33 | {
34 | $this->decrement_update_count('fw:extension:'. $extension_name);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/framework/extensions/update/includes/classes/class--fw-ext-update-framework-upgrader-skin.php:
--------------------------------------------------------------------------------
1 | decrement_update_count('fw');
10 |
11 | $update_actions = array(
12 | 'updates_page' => fw_html_tag(
13 | 'a',
14 | array(
15 | 'href' => self_admin_url('update-core.php'),
16 | 'title' => __('Go to updates page', 'fw'),
17 | 'target' => '_parent',
18 | ),
19 | __('Return to Updates page', 'fw')
20 | )
21 | );
22 |
23 | /**
24 | * Filter the list of action links available following framework update.
25 | * @param array $update_actions Array of plugin action links.
26 | */
27 | $update_actions = apply_filters('fw_ext_update_framework_complete_actions', $update_actions);
28 |
29 | if (!empty($update_actions)) {
30 | $this->feedback(implode(' | ', (array)$update_actions));
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/framework/extensions/update/includes/classes/class--fw-ext-update-theme-upgrader-skin.php:
--------------------------------------------------------------------------------
1 | decrement_update_count('fw:theme');
10 |
11 | $update_actions = array(
12 | 'updates_page' => fw_html_tag(
13 | 'a',
14 | array(
15 | 'href' => self_admin_url('update-core.php'),
16 | 'title' => __('Go to updates page', 'fw'),
17 | 'target' => '_parent',
18 | ),
19 | __('Return to Updates page', 'fw')
20 | )
21 | );
22 |
23 | /**
24 | * Filter the list of action links available following theme update.
25 | * @param array $update_actions Array of plugin action links.
26 | */
27 | $update_actions = apply_filters('fw_ext_update_theme_complete_actions', $update_actions);
28 |
29 | if (!empty($update_actions)) {
30 | $this->feedback(implode(' | ', (array)$update_actions));
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/framework/extensions/update/manifest.php:
--------------------------------------------------------------------------------
1 | extensions->get('update');
4 |
5 | if (fw_current_screen_match(array('only' => array(array('id' => 'update-core'))))) {
6 | // Include only on update page
7 |
8 | wp_enqueue_style(
9 | 'fw-ext-'. $extension->get_name() .'-update-page',
10 | $extension->get_declared_URI('/static/css/admin-update-page.css'),
11 | array(),
12 | $extension->manifest->get_version()
13 | );
14 | }
15 |
--------------------------------------------------------------------------------
/framework/extensions/update/static/css/admin-update-page.css:
--------------------------------------------------------------------------------
1 | #fw-ext-update-extensions .tablenav {
2 | display: none;
3 | }
--------------------------------------------------------------------------------
/framework/helpers/class-fw-access-key.php:
--------------------------------------------------------------------------------
1 | get_key() !== 'whatever') {
13 | * trigger_error('Call denied', E_USER_ERROR);
14 | * }
15 | *
16 | * //...
17 | * }
18 | */
19 | final class FW_Access_Key
20 | {
21 | private static $created_keys = array();
22 |
23 | private $key;
24 |
25 | final public function get_key()
26 | {
27 | return $this->key;
28 | }
29 |
30 | /**
31 | * @param string $unique_key unique
32 | */
33 | final public function __construct($unique_key)
34 | {
35 | if (isset(self::$created_keys[$unique_key])) {
36 | trigger_error('Key "'. $unique_key .'" already defined', E_USER_ERROR);
37 | }
38 |
39 | self::$created_keys[$unique_key] = true;
40 |
41 | $this->key = $unique_key;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/framework/helpers/class-fw-request.php:
--------------------------------------------------------------------------------
1 | key1][key2][key3] )
71 | $multikey = str_replace('/', '][', $multikey) . ']';
72 |
73 | // removes the first closed square bracket ( key1][key2][key3] => key1[key2][key3] )
74 | $multikey = preg_replace('/\]/', '', $multikey, 1);
75 |
76 | return setcookie($multikey, $set_value, $expire, $path);
77 | } else {
78 | return self::get_set_key($multikey, $set_value, $_COOKIE);
79 | }
80 | }
81 |
82 | public static function REQUEST($multikey = null, $default_value = null)
83 | {
84 | return fw_stripslashes_deep_keys(
85 | $multikey === null
86 | ? $_REQUEST
87 | : fw_akg($multikey, $_REQUEST, $default_value)
88 | );
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/framework/helpers/class-fw-session.php:
--------------------------------------------------------------------------------
1 | set_errors( $errors );
13 | }
14 |
15 | public function get_errors() {
16 | return $this->errors;
17 | }
18 |
19 | protected function set_errors( array $errors ) {
20 | $this->errors = $errors;
21 | }
22 | }
--------------------------------------------------------------------------------
/framework/helpers/exceptions/class-fw-form-not-found-exception.php:
--------------------------------------------------------------------------------
1 | register(new Allowed_Type_Class())
8 | * @since 2.4.10
9 | */
10 | abstract class FW_Type_Register {
11 | /**
12 | * Check if the type is instance of the required class (or other requirements)
13 | * @param FW_Type $type
14 | * @return bool|WP_Error
15 | */
16 | abstract protected function validate_type(FW_Type $type);
17 |
18 | /**
19 | * @var FW_Type[]
20 | */
21 | protected $types = array();
22 |
23 | /**
24 | * Only these access keys will be able to access the registered types
25 | * @var array {'key': true}
26 | */
27 | protected $access_keys = array();
28 |
29 | final public function __construct($access_keys) {
30 | {
31 | if (is_string($access_keys)) {
32 | $access_keys = array(
33 | $access_keys => true,
34 | );
35 | } elseif (!is_array($access_keys)) {
36 | trigger_error('Invalid access key', E_USER_ERROR);
37 | }
38 |
39 | $this->access_keys = $access_keys;
40 | }
41 | }
42 |
43 | public function register(FW_Type $type) {
44 | if (isset($this->task_types[$type->get_type()])) {
45 | throw new Exception('Type '. $type->get_type() .' already registered');
46 | } elseif (
47 | is_wp_error($validation_result = $this->validate_type($type))
48 | ||
49 | !$validation_result
50 | ) {
51 | throw new Exception(
52 | 'Invalid type '. $type->get_type()
53 | .(is_wp_error($validation_result) ? ': '. $validation_result->get_error_message() : '')
54 | );
55 | }
56 |
57 | $this->types[$type->get_type()] = $type;
58 | }
59 |
60 | /**
61 | * @param FW_Access_Key $access_key
62 | *
63 | * @return FW_Type[]
64 | * @internal
65 | */
66 | public function _get_types(FW_Access_Key $access_key) {
67 | if (!isset($this->access_keys[$access_key->get_key()])) {
68 | trigger_error('Method call denied', E_USER_ERROR);
69 | }
70 |
71 | return $this->types;
72 | }
73 |
74 | /**
75 | * @param FW_Access_Key $access_key
76 | * @param $type
77 | *
78 | * @return FW_Type|null
79 | * @internal
80 | * @since 2.5.12
81 | */
82 | public function _get_type(FW_Access_Key $access_key, $type) {
83 | if (!isset($this->access_keys[$access_key->get_key()])) {
84 | trigger_error('Method call denied', E_USER_ERROR);
85 | }
86 |
87 | return isset($this->types[$type]) ? $this->types[$type] : null;
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/framework/helpers/type/class-fw-type.php:
--------------------------------------------------------------------------------
1 | '',
11 | );
12 | }
13 |
14 | protected function _enqueue_static($id, $option, $values, $data) {
15 | //
16 | }
17 |
18 | protected function _render($containers, $values, $data) {
19 | $html = '';
20 |
21 | foreach ( $containers as $id => &$box ) {
22 | if (empty($box['options'])) {
23 | continue;
24 | }
25 |
26 | unset( $box['attr']['id'] ); // do not allow id overwrite, it is sent in first argument of render_box()
27 |
28 | $html .= fw()->backend->render_box(
29 | 'fw-options-box-' . $id,
30 | empty( $box['title'] ) ? ' ' : $box['title'],
31 | fw()->backend->render_options( $box['options'], $values, $data ),
32 | array(
33 | 'attr' => $box['attr']
34 | )
35 | );
36 | }
37 |
38 | if (!empty($html)) {
39 | $html =
40 | ''
41 | . $html
42 | . '
';
43 | }
44 |
45 | return $html;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/framework/includes/container-types/class-fw-container-type-undefined.php:
--------------------------------------------------------------------------------
1 | /* Undefined Container Type */';
23 | }
24 |
25 | /**
26 | * {@inheritdoc}
27 | */
28 | protected function _get_defaults() {
29 | return array();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/framework/includes/container-types/popup/class-fw-container-type-popup.php:
--------------------------------------------------------------------------------
1 | 'small', // small, medium, large
11 | 'desc' => '',
12 | );
13 | }
14 |
15 | protected function _enqueue_static($id, $option, $values, $data) {
16 | $uri = fw_get_framework_directory_uri('/includes/container-types/popup');
17 |
18 | wp_enqueue_script(
19 | 'fw-container-type-'. $this->get_type(),
20 | $uri .'/scripts.js',
21 | array('jquery', 'fw-events', 'fw'),
22 | fw()->manifest->get_version()
23 | );
24 |
25 | wp_enqueue_style('fw');
26 |
27 | wp_enqueue_style(
28 | 'fw-container-type-'. $this->get_type(),
29 | $uri .'/styles.css',
30 | array(),
31 | fw()->manifest->get_version()
32 | );
33 | }
34 |
35 | protected function _render($containers, $values, $data) {
36 | $html = '';
37 |
38 | $defaults = $this->get_defaults();
39 |
40 | foreach ($containers as $id => &$option) {
41 | {
42 | $attr = $option['attr'];
43 |
44 | $attr['data-modal-title'] = $option['title'];
45 |
46 | if (in_array($option['modal-size'], array('small', 'medium', 'large'))) {
47 | $attr['data-modal-size'] = $option['modal-size'];
48 | } else {
49 | $attr['data-modal-size'] = $defaults['modal-size'];
50 | }
51 |
52 | $attr['id'] = $data['id_prefix'] . $id;
53 | }
54 |
55 | $html .=
56 | ''
57 | . ''
67 | . (empty($option['desc']) ? '' : (''))
68 | . ''
71 | . '
';
72 | }
73 |
74 | return $html;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/framework/includes/container-types/popup/scripts.js:
--------------------------------------------------------------------------------
1 | jQuery(function($){
2 | var optionTypeClass = '.fw-container-type-popup',
3 | optionsModals = {},
4 | getOptionsModal = function(id, data) {
5 | if (typeof optionsModals[id] == 'undefined') {
6 | var $option = data.$option,
7 | $options = data.$options,
8 | modal = optionsModals[id] = new fw.Modal({
9 | title: $option.attr('data-modal-title'),
10 | size: $option.attr('data-modal-size')
11 | }),
12 | onOpen = function(){
13 | $options.detach();
14 |
15 | modal.content.$el.html('').append($options);
16 |
17 | $options.removeClass('fw-hidden');
18 | },
19 | onClose = function(){
20 | $options.detach();
21 |
22 | $options.addClass('fw-hidden');
23 |
24 | $option.append($options);
25 | };
26 |
27 | modal.frame.on('open', onOpen);
28 | modal.frame.on('close', onClose);
29 | }
30 |
31 | return optionsModals[id];
32 | };
33 |
34 | fwEvents.on('fw:options:init', function(data){
35 | data.$elements.find(optionTypeClass +':not(.initialized)').each(function(){
36 | var $option = $(this),
37 | $button = $option.find('> .popup-button-wrapper > .popup-button'),
38 | $options = $option.find('> .popup-options');
39 |
40 | $button.on('click', function(){
41 | getOptionsModal($option.attr('id'), {
42 | $option: $option,
43 | $options: $options
44 | }).open();
45 | });
46 | }).addClass('initialized');
47 | });
48 | });
--------------------------------------------------------------------------------
/framework/includes/container-types/popup/styles.css:
--------------------------------------------------------------------------------
1 | .fw-container-type-popup {
2 | padding: 24px 27px 21px;
3 |
4 | opacity: 0;
5 | transition: opacity ease 0.3s;
6 | -webkit-transition: opacity ease 0.3s;
7 | }
8 |
9 | .fw-container-type-popup.initialized {
10 | opacity: 1;
11 | }
12 |
13 | .fw-container-type-popup > .popup-desc {
14 | font-style: italic;
15 | color: #666;
16 | }
--------------------------------------------------------------------------------
/framework/includes/container-types/simple.php:
--------------------------------------------------------------------------------
1 | &$group ) {
20 | // prepare attributes
21 | {
22 | $attr = isset( $group['attr'] ) ? $group['attr'] : array();
23 |
24 | $attr['id'] = 'fw-backend-options-group-' . $id;
25 |
26 | if ( ! isset( $attr['class'] ) ) {
27 | $attr['class'] = 'fw-backend-options-group';
28 | } else {
29 | $attr['class'] = 'fw-backend-options-group ' . $attr['class'];
30 | }
31 | }
32 |
33 | $html .= '';
34 | $html .= fw()->backend->render_options( $group['options'], $values, $data );
35 | $html .= '
';
36 | }
37 |
38 | return $html;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/framework/includes/container-types/tab/class-fw-container-type-tab.php:
--------------------------------------------------------------------------------
1 | '',
11 | );
12 | }
13 |
14 | protected function _enqueue_static($id, $option, $values, $data) {
15 | //
16 | }
17 |
18 | protected function _render($containers, $values, $data) {
19 | return fw_render_view(
20 | dirname(__FILE__) .'/view.php',
21 | array(
22 | 'tabs' => &$containers,
23 | 'values' => &$values,
24 | 'options_data' => &$data,
25 | )
26 | );
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/framework/includes/container-types/tab/view.php:
--------------------------------------------------------------------------------
1 | theme->get_config('lazy_tabs');
9 |
10 | ?>
11 |
12 |
13 |
14 | &$tab): ?>
15 | - >
16 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | &$tab):
27 | // prepare attributes
28 | {
29 | $attr = isset($tab['attr']) ? $tab['attr'] : array();
30 |
31 | $lazy_tabs = isset($tab['lazy_tabs']) ? $tab['lazy_tabs'] : $global_lazy_tabs;
32 |
33 | $attr['id'] = 'fw-options-tab-'. esc_attr($tab_id);
34 |
35 | if (!isset($attr['class'])) {
36 | $attr['class'] = 'fw-options-tab';
37 | } else {
38 | $attr['class'] = 'fw-options-tab '. $attr['class'];
39 | }
40 |
41 | if ($lazy_tabs) {
42 | $attr['data-fw-tab-html'] = fw()->backend->render_options(
43 | $tab['options'], $values, $options_data
44 | );
45 | }
46 | }
47 | ?>
>backend->render_options($tab['options'], $values, $options_data);
49 | ?>
54 |
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/framework/includes/customizer/class--fw-customizer-control-option-wrapper.php:
--------------------------------------------------------------------------------
1 | backend->_set_default_render_design('customizer');
6 | ?>
7 |
8 |
link() ?> />
9 |
10 | backend->render_options(
12 | array($this->id => $this->setting->get_fw_option()),
13 | array($this->id => $this->value()),
14 | array(),
15 | 'customizer'
16 | );
17 | ?>
18 |
19 |
20 | backend->_set_default_render_design();
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/framework/includes/customizer/class--fw-customizer-setting-option.php:
--------------------------------------------------------------------------------
1 | fw_option;
18 | }
19 |
20 | public function sanitize($value) {
21 | if ( is_array( $value ) ) {
22 | return null;
23 | }
24 |
25 | $value = json_decode($value, true);
26 |
27 | if (is_null($value) || !is_array($value)) {
28 | return null;
29 | }
30 |
31 | $POST = array();
32 |
33 | foreach ($value as $var) {
34 | fw_aks(
35 | fw_html_attr_name_to_array_multi_key($var['name'], true),
36 | $var['value'],
37 | $POST
38 | );
39 | }
40 |
41 | $value = fw()->backend->option_type($this->fw_option['type'])->get_value_from_input(
42 | $this->fw_option,
43 | fw_akg(fw_html_attr_name_to_array_multi_key($this->id), $POST)
44 | );
45 |
46 | return $value;
47 | }
48 |
49 | /**
50 | * {@inheritdoc}
51 | */
52 | public function value() {
53 | return fw_db_option_storage_load(
54 | $this->fw_option_id,
55 | $this->fw_option,
56 | parent::value(),
57 | array('customizer' => true)
58 | );
59 | }
60 |
61 | /**
62 | * {@inheritdoc}
63 | */
64 | protected function update( $value ) {
65 | return parent::update(
66 | fw_db_option_storage_save(
67 | $this->fw_option_id,
68 | $this->fw_option,
69 | $value,
70 | array('customizer' => true)
71 | )
72 | );
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/framework/includes/option-storage/class--fw-option-storage-type-register.php:
--------------------------------------------------------------------------------
1 | 3 // optional // hardcoded term id
6 | * 'term-meta' => 'hello_world' // optional (default: 'fw:opt:{option_id}')
7 | * 'key' => 'option_id/sub_key' // optional
8 | * )
9 | */
10 | class FW_Option_Storage_Type_Term_Meta extends FW_Option_Storage_Type {
11 | public function get_type() {
12 | return 'term-meta';
13 | }
14 |
15 | /**
16 | * {@inheritdoc}
17 | */
18 | protected function _save( $id, array $option, $value, array $params ) {
19 | if ($term_id = $this->get_term_id($option, $params)) {
20 | $meta_id = $this->get_meta_id($id, $option, $params);
21 |
22 | if (isset($option['fw-storage']['key'])) {
23 | $meta_value = get_term_meta($term_id, $meta_id, true);
24 |
25 | fw_aks($option['fw-storage']['key'], $value, $meta_value);
26 |
27 | update_term_meta($term_id, $meta_id, $meta_value);
28 |
29 | unset($meta_value);
30 | } else {
31 | update_term_meta($term_id, $meta_id, $value);
32 | }
33 |
34 | return fw()->backend->option_type($option['type'])->get_value_from_input(
35 | array('type' => $option['type']), null
36 | );
37 | } else {
38 | return $value;
39 | }
40 | }
41 |
42 | /**
43 | * {@inheritdoc}
44 | */
45 | protected function _load( $id, array $option, $value, array $params ) {
46 | if ($term_id = $this->get_term_id($option, $params)) {
47 | $meta_id = $this->get_meta_id($id, $option, $params);
48 | $meta_value = get_term_meta($term_id, $meta_id, true);
49 |
50 | if ($meta_value === '' && is_array($value)) {
51 | return $value;
52 | }
53 |
54 | if (isset($option['fw-storage']['key'])) {
55 | return fw_akg($option['fw-storage']['key'], $meta_value, $value);
56 | } else {
57 | return $meta_value;
58 | }
59 | } else {
60 | return $value;
61 | }
62 | }
63 |
64 | private function get_term_id($option, $params) {
65 | $term_id = null;
66 |
67 | if (!empty($option['fw-storage']['term-id'])) {
68 | $term_id = $option['fw-storage']['term-id'];
69 | } elseif (!empty($params['term-id'])) {
70 | $term_id = $params['term-id'];
71 | }
72 |
73 | $term_id = intval($term_id);
74 |
75 | if ($term_id > 0) {
76 | return $term_id;
77 | } else {
78 | return false;
79 | }
80 | }
81 |
82 | private function get_meta_id($id, $option, $params) {
83 | return empty($option['fw-storage']['term-meta'])
84 | ? 'fw:opt:'. $id
85 | : $option['fw-storage']['term-meta'];
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/framework/includes/option-storage/type/class-fw-option-storage-type-wp-option.php:
--------------------------------------------------------------------------------
1 | 'custom_wp_option_name'
6 | * 'key' => 'option_id/sub_key' // optional @since 2.5.1
7 | * )
8 | */
9 | class FW_Option_Storage_Type_WP_Option extends FW_Option_Storage_Type {
10 | public function get_type() {
11 | return 'wp-option';
12 | }
13 |
14 | /**
15 | * {@inheritdoc}
16 | */
17 | protected function _save( $id, array $option, $value, array $params ) {
18 | if ($wp_option = $this->get_wp_option($option, $params)) {
19 | if (isset($option['fw-storage']['key'])) {
20 | $wp_option_value = get_option($wp_option, array());
21 |
22 | fw_aks($option['fw-storage']['key'], $value, $wp_option_value);
23 |
24 | update_option($wp_option, $wp_option_value, false);
25 |
26 | unset($wp_option_value);
27 | } else {
28 | if (empty($value)) {
29 | delete_option($wp_option);
30 | return $value; // Preserve value (don't return default below) because it can be false|0|array()
31 | } else {
32 | update_option($wp_option, $value, false);
33 | }
34 | }
35 |
36 | return fw()->backend->option_type($option['type'])->get_value_from_input(
37 | array('type' => $option['type']), null
38 | );
39 | } else {
40 | return $value;
41 | }
42 | }
43 |
44 | /**
45 | * {@inheritdoc}
46 | */
47 | protected function _load( $id, array $option, $value, array $params ) {
48 | if ($wp_option = $this->get_wp_option($option, $params)) {
49 | if (isset($option['fw-storage']['key'])) {
50 | $wp_option_value = get_option($wp_option, array());
51 |
52 | return fw_akg($option['fw-storage']['key'], $wp_option_value, $value);
53 | } else {
54 | return get_option($wp_option, $value);
55 | }
56 | } else {
57 | return $value;
58 | }
59 | }
60 |
61 | private function get_wp_option($option, $params) {
62 | $wp_option = null;
63 |
64 | if (isset($params['post-id']) && wp_is_post_revision($params['post-id'])) {
65 | /**
66 | * Post revision is updated after real post update and it contains old option value
67 | * thus overwriting the new option value
68 | */
69 | return false;
70 | }
71 |
72 | if (!empty($option['fw-storage']['wp-option'])) {
73 | $wp_option = $option['fw-storage']['wp-option'];
74 | } elseif (!empty($params['wp-option'])) {
75 | $wp_option = $params['wp-option'];
76 | }
77 |
78 | if ($wp_option) {
79 | return $wp_option;
80 | } else {
81 | return false;
82 | }
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/framework/includes/option-types/addable-box/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-addable-box {
2 | max-width: 100%;
3 | }
4 |
5 | .fw-option-type-addable-box.has-boxes.width-type-full {
6 | width: 9999px;
7 | }
8 |
9 | .fw-option-type-addable-box.has-boxes.width-type-fixed {
10 | width: 428px;
11 | /* same as .fw-backend-option-fixed-width */
12 | }
13 |
14 | .fw-option-type-addable-box>.fw-option-boxes.ui-sortable>.fw-option-box>.fw-postbox {
15 | min-width: 100%;
16 | }
17 |
18 | .fw-option-type-addable-box>.fw-option-boxes.ui-sortable>.fw-option-box>.fw-postbox>.hndle {
19 | cursor: move !important;
20 | /* to rewrite .fw-postbox h3.hndle */
21 | word-break: break-all;
22 | /* if box text is too long, do not move controls outside box */
23 | position: relative;
24 | }
25 |
26 | .fw-option-type-addable-box>.fw-option-boxes.ui-sortable>.fw-option-box>.fw-postbox>.hndle>span {
27 | overflow: hidden;
28 | white-space: nowrap;
29 | max-width: 100%;
30 | display: block;
31 | }
32 |
33 | #wpbody-content .fw-option-type-addable-box .metabox-holder {
34 | padding: 0;
35 | margin: 0;
36 | }
37 |
38 | .fw-option-type-addable-box>.fw-option-boxes>.fw-option-box {
39 | margin-bottom: 20px;
40 | }
41 |
42 | .fw-option-type-addable-box>.fw-option-boxes.ui-sortable>.fw-option-box>.fw-postbox>.hndle span:after {
43 | content: '\00a0';
44 | /* - when title is empty, box has too small (broken) height */
45 | }
46 |
47 | .fw-option-type-addable-box>.fw-option-boxes.ui-sortable>.fw-option-box>.fw-postbox>.hndle img {
48 | vertical-align: middle;
49 | }
50 |
51 | .fw-option-type-addable-box .fw-backend-option-design-customizer {
52 | padding: 15px;
53 | }
54 |
55 |
56 | /* Controls */
57 | .fw-option-type-addable-box>.fw-option-boxes>.fw-option-box .hndle .fw-html-before-title:empty {
58 | display: none;
59 | }
60 | .fw-option-type-addable-box>.fw-option-boxes>.fw-option-box .postbox-header h2.hndle {
61 | border-bottom: none !important;
62 | }
63 | .rtl .fw-option-type-addable-box>.fw-option-boxes>.fw-option-box .hndle .fw-html-after-title {
64 | height: auto;
65 | left: 27px;
66 | right: auto;
67 | }
68 |
69 | .rtl .fw-option-type-addable-box .postbox .handlediv {
70 | padding: 0 12px;
71 | }
72 |
73 | .rtl .fw-option-type-addable-box .postbox-header .hndle {
74 | justify-content: right;
75 | }
76 |
77 | .fw-option-type-addable-box>.fw-option-boxes>.fw-option-box .hndle .fw-html-after-title .fw-option-box-controls .fw-option-box-control {
78 | text-decoration: none;
79 | }
80 |
81 | .fw-option-type-addable-box>.fw-option-boxes>.fw-option-box .hndle .fw-html-after-title .fw-option-box-controls .fw-option-box-control-wrapper {
82 | color: #cccccc;
83 | }
84 |
85 | /* end: Controls */
--------------------------------------------------------------------------------
/framework/includes/option-types/addable-popup/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-addable-popup .item {
2 | position: relative;
3 | background-color: #fff;
4 | min-height: 40px;
5 | cursor: pointer;
6 | }
7 |
8 | .fw-option-type-addable-popup .item .content {
9 | padding: 12px 30px;
10 | word-wrap: break-word;
11 | }
12 |
13 | .fw-option-type-addable-popup .item + .item {
14 | border-top: 1px dashed #E1E1E1;
15 | }
16 |
17 | .fw-option-type-addable-popup .items-wrapper {
18 | border: 1px solid #e1e1e1;
19 | margin-bottom: 20px;
20 | }
21 |
22 | .fw-option-type-addable-popup .delete-item {
23 | position: absolute;
24 | right: 7px;
25 | top:50%;
26 | margin-top: -10px;
27 | }
28 |
29 | .fw-option-type-addable-popup .clone-item {
30 | position: absolute;
31 | right: 25px;
32 | top:50%;
33 | margin-top: -8px;
34 | font-size:16px;
35 | opacity:0.4;
36 | }
37 | .fw-option-type-addable-popup .clone-item:hover{
38 | opacity:0.7;
39 | }
40 |
41 | .fw-option-type-addable-popup .sort-item {
42 | position: absolute;
43 | left: 11px;
44 | top:50%;
45 | margin-top: -4px;
46 | width: 7px;
47 | }
48 |
49 | .fw-option-type-addable-popup .default-item,
50 | .fw-option-type-addable-popup:not(.is-sortable) .sort-item,
51 | .fw-option-type-addable-popup .items-wrapper.hide-clone .clone-item {
52 | display: none;
53 | }
54 |
55 | .fw-option-type-addable-popup:not(.is-sortable) .item .content {
56 | padding-left: 15px;
57 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/addable-popup/view.php:
--------------------------------------------------------------------------------
1 |
19 | >
20 |
21 | backend->option_type('hidden')->render($id, array('value' => '~'), array(
22 | 'id_prefix' => $data['id_prefix'],
23 | 'name_prefix' => $data['name_prefix'],
24 | )); ?>
25 |
26 | $value): ?>
27 |
28 |
29 | backend->option_type('hidden')->render('', array('value' => json_encode($value)), array(
30 | 'id_prefix' => $data['id_prefix'] . $id . '-' . $key . '-',
31 | 'name_prefix' => $data['name_prefix'] . '[' . $id . ']',
32 | ));?>
33 |
34 |
; ?>)
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | backend->option_type('hidden')->render('', array('value' => '[]'), array(
45 | 'id_prefix' => $data['id_prefix'] . $id . '-' . $increment_placeholder,
46 | 'name_prefix' => $data['name_prefix'] . '[' . $id . ']',
47 | )); ?>
48 |
49 |
; ?>)
50 |
51 |
52 |
53 |
54 |
55 | 'button',
58 | 'class' => 'button add-new-item',
59 | 'onclick' => 'return false;',
60 | 'data-increment-placeholder' => $increment_placeholder,
61 | ), fw_htmlspecialchars($option['add-button-text']));
62 | ?>
63 |
64 |
65 |
--------------------------------------------------------------------------------
/framework/includes/option-types/background-image/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-background-image > .type .fw-option-type-radio div {
2 | display: inline-block;
3 | margin-left: 15px;
4 | }
5 |
6 | .fw-option-type-background-image > .predefined,
7 | .fw-option-type-background-image > .custom {
8 | margin-top: 15px;
9 | }
10 |
11 | .fw-option-type-background-image div.fw-option-type-radio {
12 | margin: 0 0 9px -15px;
13 | font-size: 14px;
14 | }
15 |
16 | .fw-option-type-background-image.no-choices > .type {
17 | display: none;
18 | }
19 |
20 | .fw-option-type-background-image.no-choices > .predefined,
21 | .fw-option-type-background-image.no-choices > .custom {
22 | margin-top: 0;
23 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/class-fw-option-type-undefined.php:
--------------------------------------------------------------------------------
1 | array()
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/framework/includes/option-types/color-picker/static/css/styles.css:
--------------------------------------------------------------------------------
1 | input.fw-option-type-color-picker {
2 | width: 70px !important;
3 | }
4 |
5 | @media (max-width: 782px) {
6 | input.fw-option-type-color-picker {
7 | width: 100px !important;
8 | }
9 | }
10 |
11 | input.fw-option-type-color-picker.iris-error {
12 | background-color: #ffebe8;
13 | border-color: #c00;
14 | color: #000;
15 | }
16 |
17 | .fw-option-type-color-picker-with-reset-default > .iris-palette-container {
18 | bottom: 27px !important;
19 | }
20 |
21 | .fw-option-type-color-picker-iris,
22 | .fw-option-type-color-picker-iris.iris-picker {
23 | z-index: 999;
24 | position: absolute;
25 | }
26 |
27 | .fw-option-type-color-picker-iris .fw-option-type-color-picker-reset-default {
28 | width: 139px;
29 | margin-top: 2px;
30 | cursor: pointer;
31 | }
32 |
33 | .fw-option-type-color-picker-iris .fw-option-type-color-picker-reset-default span {
34 | line-height: 16px;
35 | padding-left: 2px;
36 | float: left;
37 | }
38 |
39 | .fw-backend-option-input-type-color-picker .fw-option-help-in-input {
40 | top: 4px !important;
41 | }
42 |
43 | /* Fixes https://github.com/ThemeFuse/Unyson/issues/2275 */
44 | #customize-controls .customize-pane-child > .customize-control:last-child > .fw-backend-customizer-option > div > .fw-backend-option-type-color-picker {
45 | padding-bottom: 170px;
46 | }
47 |
48 | /* Fixes https://github.com/ThemeFuse/Unyson/issues/2905 */
49 | #customize-theme-controls > ul.customize-pane-child {
50 | height: 100% !important;
51 | }
52 | #customize-controls .customize-pane-child .customize-control:last-child .fw-backend-customizer-option .fw-backend-option-type-gradient {
53 | padding-bottom: 170px;
54 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.ar.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ar={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.az.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.bg.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.bg={days:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],daysShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],daysMin:["Н","П","В","С","Ч","П","С"],months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Ян","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек"],today:"днес"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.bs.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.ca.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ca={days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],daysShort:["Diu","Dil","Dmt","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dt","dc","dj","dv","ds"],months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],today:"Avui",monthsTitle:"Mesos",clear:"Esborrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.cs.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",weekStart:1,format:"dd.m.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.cy.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.da.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.da={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"I Dag",clear:"Nulstil"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.de.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.el.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.en-AU.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["en-AU"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.en-GB.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.eo.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.eo={days:["dimanĉo","lundo","mardo","merkredo","ĵaŭdo","vendredo","sabato"],daysShort:["dim.","lun.","mar.","mer.","ĵaŭ.","ven.","sam."],daysMin:["d","l","ma","me","ĵ","v","s"],months:["januaro","februaro","marto","aprilo","majo","junio","julio","aŭgusto","septembro","oktobro","novembro","decembro"],monthsShort:["jan.","feb.","mar.","apr.","majo","jun.","jul.","aŭg.","sep.","okt.","nov.","dec."],today:"Hodiaŭ",clear:"Nuligi",weekStart:1,format:"yyyy-mm-dd"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.es.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.et.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.et={days:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],daysShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],daysMin:["P","E","T","K","N","R","L"],months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"Täna",clear:"Tühjenda",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.eu.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.fa.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fa={days:["یکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه","یکشنبه"],daysShort:["یک","دو","سه","چهار","پنج","جمعه","شنبه","یک"],daysMin:["ی","د","س","چ","پ","ج","ش","ی"],months:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژان","فور","مار","آور","مه","ژون","ژوی","اوت","سپت","اکت","نوا","دسا"],today:"امروز",clear:"پاک کن",weekStart:1,format:"yyyy/mm/dd"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.fi.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.fo.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fo={days:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leygardagur"],daysShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],daysMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],months:["Januar","Februar","Marts","Apríl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"Í Dag",clear:"Reinsa"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.fr-CH.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["D","L","Ma","Me","J","V","S"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.fr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.fr={days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],daysShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],daysMin:["d","l","ma","me","j","v","s"],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthsShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.gl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.he.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.he={days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"],daysShort:["א","ב","ג","ד","ה","ו","ש","א"],daysMin:["א","ב","ג","ד","ה","ו","ש","א"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],today:"היום",rtl:!0}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.hr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.hu.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.hy.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կրկ","Երկ","Երք","Չրք","Հնգ","Ուր","Շբթ"],daysMin:["Կրկ","Երկ","Երք","Չրք","Հնգ","Ուր","Շբթ"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հուն","Փետ","Մար","Ապր","Մայ","Հնս","Հլս","Օգս","Սեպ","Հոկ","Նմբ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.id.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.is.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.it-CH.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.it.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.ja.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.ka.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომები","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.kh.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍","អាទិត្យ"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍","អា.ទិ"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍","អា.ទិ"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.kk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мамыр","Мау","Шлд","Тмз","Қыр","Қзн","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.ko.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.kr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.lt.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],daysShort:["S","Pr","A","T","K","Pn","Š"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",monthsTitle:"Mėnesiai",clear:"Išvalyti",weekStart:1,format:"yyyy-mm-dd"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.lv.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],today:"Šodien",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.me.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.mk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.mn.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.ms.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.nb.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.nb={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"I Dag",format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.nl-BE.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.nl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.no.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.no={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"I dag",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.pl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.pl={days:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],daysShort:["niedz.","pon.","wt.","śr.","czw.","piąt.","sob."],daysMin:["ndz.","pn.","wt.","śr.","czw.","pt.","sob."],months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],monthsShort:["sty.","lut.","mar.","kwi.","maj","cze.","lip.","sie.","wrz.","paź.","lis.","gru."],today:"dzisiaj",weekStart:1,clear:"wyczyść",format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.pt-BR.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.pt.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.ro.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.rs-latin.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.rs.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.ru.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.sk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.sl.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.sq.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],today:"Sot"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.sr-latin.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.sr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.sv.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sv={days:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],daysShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],daysMin:["Sö","Må","Ti","On","To","Fr","Lö"],months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.sw.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1"],daysMin:["2","3","4","5","A","I","1"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.th.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.tr.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.uk.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.vi.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.zh-CN.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",clear:"清除",format:"yyyy年mm月dd日",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/locales/bootstrap-datepicker.zh-TW.min.js:
--------------------------------------------------------------------------------
1 | !function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",format:"yyyy年mm月dd日",weekStart:1,clear:"清除"}}(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/date-picker/static/js/scripts.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Script file that will manage the "map" option
3 | */
4 |
5 | "use strict";
6 |
7 | function fw_option_type_date_picker_initialize(object) {
8 | var defaults = {
9 | autoclose: true,
10 | format: "dd-mm-yyyy",
11 | weekStart: 1,
12 | startDate: new Date(),
13 | endDate: null,
14 | language: jQuery('html').attr('lang').split('-').shift()
15 | };
16 | var options = JSON.parse(object.attr('data-fw-option-date-picker-opts'));
17 |
18 | var date = null;
19 |
20 | if (options.minDate != null || options.minDate != undefined) {
21 | date = options.minDate.split('-').map(Number);
22 | defaults.startDate = new Date(date[2], date[1] - 1, date[0]);
23 | }
24 |
25 | if (options.maxDate != null || options.maxDate != undefined) {
26 | date = options.maxDate.split('-').map(Number);
27 | defaults.endDate = new Date(date[2], date[1] - 1, date[0]);
28 | }
29 |
30 | if (options.weekStart != null || options.weekStart != undefined) {
31 | defaults.weekStart = options.weekStart;
32 | }
33 |
34 | object.datepicker(defaults);
35 | }
36 |
37 | jQuery(document).ready(function ($) {
38 | fwEvents.on('fw:options:init', function (data) {
39 | var obj = data.$elements.find('.fw-option-type-date-picker:not(.initialized)');
40 |
41 | if (!obj.length) {
42 | return;
43 | }
44 |
45 | for (var i = 0; i < obj.length; i++) {
46 | fw_option_type_date_picker_initialize(jQuery(obj[i]));
47 | }
48 |
49 | obj.addClass('initialized');
50 | });
51 | });
--------------------------------------------------------------------------------
/framework/includes/option-types/datetime-picker/static/css/style.css:
--------------------------------------------------------------------------------
1 | .fw_xdsoft_datetimepicker.fw_xdsoft_noselect {
2 | z-index: 560100; /* bigger than fw.OptionsModal's z-index */
3 | }
4 |
5 | .fw-backend-option-input-type-datetime-picker .fw-option-help-in-input {
6 | top: 4px !important;
7 | }
8 | .fw-option-type-datetime-picker input[readonly] {
9 | background-color: #fff;
10 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/datetime-picker/static/js/script.js:
--------------------------------------------------------------------------------
1 | (function($, fwe) {
2 | //jQuery.fwDatetimepicker.setLocale(jQuery('html').attr('lang').split('-').shift());
3 |
4 | var init = function() {
5 | var $container = $(this),
6 | $input = $container.find('.fw-option-type-text'),
7 | data = {
8 | options: $container.data('datetime-attr'),
9 | el: $input,
10 | container: $container
11 | };
12 |
13 | fwe.trigger('fw:options:datetime-picker:before-init', data);
14 |
15 | $input.fwDatetimepicker(data.options)
16 | .on('change', function (e) {
17 | fw.options.trigger.changeForEl(
18 | jQuery(e.target).closest('[data-fw-option-type="datetime-picker"]'), {
19 | value: e.target.value
20 | }
21 | )
22 | });
23 | };
24 |
25 | fw.options.register('datetime-picker', {
26 | startListeningForChanges: $.noop,
27 | getValue: function (optionDescriptor) {
28 | return {
29 | value: $(optionDescriptor.el).find(
30 | '[data-fw-option-type="text"]'
31 | ).find('> input').val(),
32 | optionDescriptor: optionDescriptor
33 | }
34 | }
35 | })
36 |
37 | fwe.on('fw:options:init', function(data) {
38 | data.$elements
39 | .find('.fw-option-type-datetime-picker').each(init)
40 | .addClass('fw-option-initialized');
41 | });
42 |
43 | })(jQuery, fwEvents);
44 |
--------------------------------------------------------------------------------
/framework/includes/option-types/datetime-range/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-datetime-picker .delimiter,
2 | .fw-backend-option-input-type-datetime-range .delimiter {
3 | margin: 0 10px;
4 | }
5 |
6 | .fw-option-type-datetime-range .fw-backend-option-descriptor[data-fw-option-id=from],
7 | .fw-option-type-datetime-range .fw-backend-option-descriptor[data-fw-option-id=to],
8 | .fw-option-type-datetime-range .delimiter {
9 | display: inline-block;
10 | }
11 |
12 | .fw-option-type-datetime-range .fw-option-type-datetime-picker,
13 | .fw-backend-option-input-type-datetime-range .fw-option-type-datetime-picker {
14 | width: 150px;
15 | }
16 |
17 |
18 | .fw-backend-option-input-type-datetime-range .fw-option-help-in-input {
19 | top: 4px !important;
20 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/datetime-range/view.php:
--------------------------------------------------------------------------------
1 |
14 |
15 | >
16 |
17 | backend->option_type( 'datetime-picker' )->render( 'from', array(
18 | 'type' => 'datetime-picker',
19 | 'value' => isset( $option['value']['from'] )
20 | ? $option['value']['from']
21 | : '',
22 | 'desc' => isset($option['descriptions']['from'])
23 | ? $option['descriptions']['from']
24 | : false,
25 |
26 | 'datetime-picker' => isset($option['datetime-pickers']['from'])
27 | ? $option['datetime-pickers']['from']
28 | : array(),
29 |
30 | 'attr' => array(
31 | 'class' => 'from'
32 | )
33 | ), array(
34 | 'value' => isset( $data['value']['from'] )
35 | ? $data['value']['from']
36 | : $option['value']['from'],
37 | 'id_prefix' => $data['id_prefix'] . $id . '-',
38 | 'name_prefix' => $data['name_prefix'] . '[' . $id . ']',
39 | )); ?>
40 |
41 |
42 |
43 | backend->option_type( 'datetime-picker' )->render( 'to', array(
44 | 'type' => 'datetime-picker',
45 | 'value' => isset( $option['value']['to'] )
46 | ? $option['value']['to']
47 | : '',
48 |
49 | 'datetime-picker' => isset($option['datetime-pickers']['to'])
50 | ? $option['datetime-pickers']['to']
51 | : array(),
52 |
53 | 'desc' => isset($option['descriptions']['from'])
54 | ? $option['descriptions']['from']
55 | : false,
56 |
57 | 'attr' => array(
58 | 'class' => 'to'
59 | )
60 | ),
61 | array(
62 | 'value' => isset( $data['value']['to'] )
63 | ? $data['value']['to']
64 | : $option['value']['to'],
65 | 'id_prefix' => $data['id_prefix'] . $id . '-',
66 | 'name_prefix' => $data['name_prefix'] . '[' . $id . ']',
67 | )
68 | ); ?>
69 |
70 |
--------------------------------------------------------------------------------
/framework/includes/option-types/gradient/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-backend-option-input-type-gradient .fw-option-help-in-input {
2 | top: 4px !important;
3 | }
4 |
5 | .fw-option-type-gradient .primary-color {
6 | display: inline-block;
7 | }
8 |
9 | .fw-option-type-gradient .secondary-color {
10 | display: inline-block;
11 | }
12 |
13 | .fw-option-type-gradient .delimiter {
14 | display: inline-block;
15 | padding: 0 4px;
16 | }
17 |
18 | #side-sortables .fw-option-type-gradient .secondary-color,
19 | #side-sortables .fw-option-type-gradient .primary-color {
20 | width: inherit !important;
21 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/gradient/static/js/scripts.js:
--------------------------------------------------------------------------------
1 | (function($){
2 | fwEvents.on('fw:options:init', function (data) {
3 | data.$elements.find('.fw-option.fw-option-type-gradient:not(.initialized)').each(function(){
4 | var $option = $(this);
5 |
6 | // update secondary color when primary color has changed
7 | $option.on('fw:color:picker:changed', '.fw-option-type-color-picker.primary', function (event, data) {
8 | var $secondary = $option.find('.fw-option-type-color-picker.secondary:first');
9 |
10 | if (!$secondary.hasClass('iris-initialized')) {
11 | $secondary
12 | .trigger('focus') // color-picker is lazy initialized on 'focus'
13 | .iris('hide');
14 | }
15 |
16 | $secondary.val(data.ui.color.toString()).trigger('change');
17 | });
18 | }).addClass('initialized');
19 | });
20 | })(jQuery);
--------------------------------------------------------------------------------
/framework/includes/option-types/gradient/view.php:
--------------------------------------------------------------------------------
1 |
21 | >
22 |
23 | backend->option_type( 'color-picker' )->render(
25 | 'primary',
26 | array(
27 | 'type' => 'color-picker',
28 | 'value' => ( isset( $option['value']['primary'] ) && preg_match( $color_regex, $option['value']['primary'] ) )
29 | ? $option['value']['primary']
30 | : '#ffffff',
31 | 'attr' => array(
32 | 'class' => 'primary'
33 | )
34 | ),
35 | array(
36 | 'value' => ( isset( $data['value']['primary'] ) && preg_match( $color_regex, $data['value']['primary'] ) )
37 | ? $data['value']['primary']
38 | : $option['value']['primary'],
39 | 'id_prefix' => $data['id_prefix'] . $id . '-',
40 | 'name_prefix' => $data['name_prefix'] . '[' . $id . ']',
41 | )
42 | );
43 | ?>
44 |
45 |
46 |
47 |
48 | backend->option_type( 'color-picker' )->render(
50 | 'secondary',
51 | array(
52 | 'type' => 'color-picker',
53 | 'value' => ( isset( $option['value']['secondary'] ) && preg_match( $color_regex, $option['value']['secondary'] ) )
54 | ? $option['value']['secondary']
55 | : '#ffffff',
56 | 'attr' => array(
57 | 'class' => 'secondary'
58 | )
59 | ),
60 | array(
61 | 'value' => ( isset( $data['value']['secondary'] ) && preg_match( $color_regex, $data['value']['secondary'] ) )
62 | ? $data['value']['secondary']
63 | : $option['value']['secondary'],
64 | 'id_prefix' => $data['id_prefix'] . $id . '-',
65 | 'name_prefix' => $data['name_prefix'] . '[' . $id . ']',
66 | )
67 | );
68 | ?>
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/framework/includes/option-types/icon-v2/includes/class-fw-icon-v2-favorites.php:
--------------------------------------------------------------------------------
1 | backend->option_type('icon-v2')->packs_loader->get_packs(true)
30 | );
31 | }
32 |
33 | public function set_favorites_action()
34 | {
35 | $favorites = json_decode(FW_Request::POST( 'favorites' ), true);
36 |
37 | $this->set_favorites($favorites);
38 |
39 | $this->get_favorites_action();
40 | }
41 |
42 | public function get_favorites_action()
43 | {
44 | wp_send_json(
45 | $this->get_favorites()
46 | );
47 | }
48 |
49 | public function get_favorites()
50 | {
51 | return FW_WP_Option::get(
52 | $this->key,
53 | null,
54 | array()
55 | );
56 | }
57 |
58 | public function set_favorites($favorites)
59 | {
60 | FW_WP_Option::set(
61 | $this->key,
62 | null,
63 | $favorites
64 | );
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/framework/includes/option-types/icon-v2/static/img/no-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/includes/option-types/icon-v2/static/img/no-image.png
--------------------------------------------------------------------------------
/framework/includes/option-types/icon-v2/static/img/sauron.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/includes/option-types/icon-v2/static/img/sauron.png
--------------------------------------------------------------------------------
/framework/includes/option-types/icon-v2/static/img/transparent_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/includes/option-types/icon-v2/static/img/transparent_bg.png
--------------------------------------------------------------------------------
/framework/includes/option-types/icon-v2/views/view.php:
--------------------------------------------------------------------------------
1 | $option['attr']['class'] . ' fw-icon-v2-preview-' . $option['preview_size'],
18 | 'id' => $option['attr']['id'],
19 | 'data-fw-modal-size' => $option['popup_size']
20 | );
21 |
22 | unset($option['attr']['class'], $option['attr']['id']);
23 |
24 | ?>
25 |
26 | >
27 | type="hidden" />
28 |
29 |
30 |
--------------------------------------------------------------------------------
/framework/includes/option-types/icon/README.md:
--------------------------------------------------------------------------------
1 | ### Update Icons
2 |
3 | ```javascript
4 | // 1. Open http://fontawesome.io/icons/
5 | // 2. Run this script
6 | // 3. Convert JSON to PHP Array https://www.google.com/#q=json+to+php+online
7 |
8 | var fa = {
9 | groups: {
10 | // 'id': 'Title'
11 | },
12 | icons: {
13 | // 'fa fa-adjust': {'group': 'web-app'},
14 | }
15 | };
16 |
17 | var $section = jQuery('section#web-application'),
18 | group;
19 |
20 | do {
21 | group = {
22 | id: $section.attr('id'),
23 | title: $section.find('> h2').text()
24 | };
25 |
26 | fa.groups[group.id] = group.title;
27 |
28 | $section.find('.fontawesome-icon-list i.fa').each(function(){
29 | var icon = jQuery(this).attr('class');
30 |
31 | if (fa.icons[icon]) return;
32 |
33 | fa.icons[icon] = {group: group.id};
34 | });
35 |
36 | $section = $section.next();
37 | } while($section.length);
38 |
39 | console.log( JSON.stringify(fa) );
40 | ```
--------------------------------------------------------------------------------
/framework/includes/option-types/icon/static/css/backend.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-icon .option-type-icon-list {
2 | margin-top: 1em;
3 | padding-left: 1px;
4 | padding-bottom: 1px;
5 | overflow: auto;
6 | max-height: 10.1em;
7 | }
8 |
9 | .fw-option-type-icon .option-type-icon-list:first-child {
10 | margin-top: 0;
11 | }
12 |
13 | .fw-option-type-icon .option-type-icon-list:after {
14 | content: '';
15 | display: block;
16 | clear: both;
17 | }
18 |
19 | .fw-option-type-icon .option-type-icon-list i {
20 | float: left;
21 | border: 1px solid #e1e1e1;
22 | margin: 0 0 -1px -1px;
23 | padding: 0.5em 0;
24 | background-color: #ffffff;
25 | text-align: center;
26 | min-width: 2em;
27 | }
28 |
29 | body.rtl .fw-option-type-icon .option-type-icon-list i {
30 | float: right;
31 | }
32 |
33 | .fw-option-type-icon .option-type-icon-list i:before {
34 | display: inline-block;
35 | }
36 |
37 | .fw-option-type-icon .option-type-icon-list i:hover {
38 | background: #0074a2;
39 | color: #fff;
40 | cursor: pointer;
41 | }
42 | .fw-option-type-icon .option-type-icon-list i.active:hover,
43 | .fw-option-type-icon .option-type-icon-list i.active{
44 | background: #64bd1f;
45 | color: #fff;
46 | }
47 |
48 | .fw-option-type-icon .fw-backend-option {
49 | border-bottom: none;
50 | padding-bottom: 0;
51 | }
52 |
53 | .fw-option-type-icon .fw-options-tabs-wrapper .fw-options-tabs-contents {
54 | margin-top: 0 !important;
55 | }
56 |
57 |
58 | /* Let's get this party started */
59 |
60 | .fw-option-type-icon .option-type-icon-list::-webkit-scrollbar {
61 | width: 5px;
62 | }
63 |
64 |
65 | /* Handle */
66 |
67 | .fw-option-type-icon .option-type-icon-list::-webkit-scrollbar-thumb {
68 | -webkit-border-radius: 2px;
69 | border-radius: 2px;
70 | background: rgba(92,92,92,0.8);
71 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
72 | }
73 |
74 | .fw-option-type-icon .option-type-icon-list::-webkit-scrollbar-thumb:window-inactive {
75 | background: rgba(92,92,92,0.4);
76 | }
77 |
--------------------------------------------------------------------------------
/framework/includes/option-types/icon/static/js/backend.js:
--------------------------------------------------------------------------------
1 | jQuery(function ($) {
2 | var optionTypeClass = '.fw-option-type-icon';
3 |
4 | fwEvents.on('fw:options:init', function (data) {
5 |
6 | var $options = data.$elements.find(optionTypeClass +':not(.initialized)');
7 |
8 | // handle click on an icon
9 | $options.find('.js-option-type-icon-item').on('click', function () {
10 | var $this = $(this);
11 |
12 | if ($this.hasClass('active')) {
13 | $this.removeClass('active');
14 | $this.closest(optionTypeClass).find('input').val('').trigger('change');
15 | } else {
16 | $this.addClass('active').siblings().removeClass('active');
17 | $this.closest(optionTypeClass).find('input').val($this.data('value')).trigger('change');
18 | }
19 | });
20 |
21 | // handle changing active category
22 | $options.find('.js-option-type-icon-dropdown')
23 | .on('change', function () {
24 | var $this = $(this);
25 | var group = $this.val();
26 |
27 | $this.closest(optionTypeClass).find('.js-option-type-icon-item').each(function () {
28 | $(this).toggle(group == 'all' || group == $(this).data('group'));
29 | });
30 | })
31 | .trigger('change');
32 |
33 | $options.addClass('initialized');
34 |
35 | });
36 |
37 | });
38 |
--------------------------------------------------------------------------------
/framework/includes/option-types/icon/view.php:
--------------------------------------------------------------------------------
1 | $option['attr']['class'],
12 | 'id' => $option['attr']['id'],
13 | );
14 | unset($option['attr']['class'], $option['attr']['id']);
15 |
16 | $icons = &$set['icons'];
17 |
18 | // build $groups array based on $icons
19 | $groups = array();
20 | foreach ($icons as $icon_tab) {
21 | $group_id = $icon_tab['group'];
22 | $groups[$group_id] = $set['groups'][$group_id];
23 | }
24 |
25 | ksort($icons);
26 | ksort($groups);
27 |
28 | ?>
29 | >
30 |
31 |
type="hidden" />
32 |
33 |
34 |
35 | 1): ?>
36 |
37 |
46 |
47 |
48 |
49 |
50 | $icon_tab) {
52 | $active = ($data['value'] == $icon_id) ? 'active' : '';
53 | echo fw_html_tag('i', array(
54 | 'class' => "$icon_id js-option-type-icon-item $active",
55 | 'data-value' => $icon_id,
56 | 'data-group' => $icon_tab['group']
57 | ), true);
58 | }
59 | ?>
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/framework/includes/option-types/image-picker/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-image-picker .ui-tooltip {
2 | width: 100px;
3 | }
4 |
5 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector {
6 | overflow: auto;
7 | list-style-image: none;
8 | list-style-position: outside;
9 | list-style-type: none;
10 | padding: 0;
11 | margin: 0 0 -5px 0;
12 | }
13 |
14 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li.group_title {
15 | float: none;
16 | }
17 |
18 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li {
19 | margin: 0 5px 5px 0;
20 | float: left;
21 | }
22 |
23 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li:last-child {
24 | margin-right: 0;
25 | }
26 |
27 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li:hover {
28 | cursor: pointer;
29 | }
30 |
31 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li .thumbnail {
32 | overflow: hidden;
33 | -webkit-user-select: none;
34 | border-radius: 2px;
35 | -moz-user-select: none;
36 | -ms-user-select: none;
37 | }
38 |
39 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li .thumbnail img {
40 | -webkit-user-drag: none;
41 | }
42 |
43 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li .thumbnail.selected {
44 | border: 3px solid #64bd1f;
45 | }
46 |
47 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li .thumbnail {
48 | line-height: 0;
49 | border: 3px solid transparent;
50 | }
51 |
52 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li .thumbnail.selected:hover {
53 | border: 3px solid #64bd1f;
54 | }
55 |
56 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li .thumbnail:hover {
57 | border: 3px solid #dddddd;
58 | }
59 |
60 | .fw-option-type-image-picker li .thumbnail {
61 | position: relative;
62 | padding: 2px;
63 | }
64 |
65 | .fw-option-type-image-picker ul.thumbnails.image_picker_selector li .thumbnail.selected:after {
66 | content: "\f147";
67 | font-family: dashicons;
68 | background-color: #64bd1f;
69 | position: absolute;
70 | right: 0px;
71 | bottom: 0px;
72 | border-top-left-radius: 2px;
73 | color: #fff;
74 | line-height: normal;
75 | font-size: 20px;
76 | padding: 1px 0 0 1px;
77 | }
78 |
79 | .fw-option-type-image-picker .pre-loaded-images {
80 | height: 1px;
81 | width: 1px;
82 | overflow: hidden;
83 | position: absolute;
84 | }
85 |
86 | .fw-option-type-image-picker select{
87 | display: none;
88 | }
89 |
90 | .qtip .qtip-content img.fw-option-type-image-picker-large-image {
91 | display: block;
92 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/map/static/css/style.css:
--------------------------------------------------------------------------------
1 | .fw-option-maps-tab.second {
2 | display: none;
3 | }
4 |
5 | @media (min-width: 783px) {
6 | .fw-option-maps-tab.second .inner {
7 | padding-right: 10px;
8 | }
9 |
10 | .fw-force-xs .fw-option-maps-tab.second .inner {
11 | padding-right: 0;
12 | }
13 | }
14 |
15 | .fw-option-type-map .map-googlemap {
16 | height: 218px;
17 | }
18 |
19 | .fw-option-type-map .fw-option-map-inputs {
20 | margin-bottom: 10px;
21 | }
22 |
23 | .fw-option-maps-toggle {
24 | font-size: 12px;
25 | text-decoration: none;
26 | }
27 |
28 | .pac-container {
29 | z-index: 160005;
30 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/multi-select/static/css/style.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-multi-select .selectize-input {
2 | padding: 4px 6px;
3 | }
4 |
5 | .fw-option-type-multi-select .selectize-input.focus.input-active.dropdown-active:before,
6 | .fw-option-type-multi-select .selectize-input.focus.input-active.dropdown-active:before {
7 | display: none;
8 | }
9 |
10 | .fw-backend-option-input-type-multi-select .fw-option-help-in-input {
11 | top: 4px !important;
12 | }
13 |
14 | .fw-backend-option-type-multi-select .selectize-control .selectize-dropdown .selectize-dropdown-content div > .type:before,
15 | .fw-backend-option-type-multi-select .selectize-control .selectize-input > div > .type:before {
16 | content: "(";
17 | margin-right: 1px;
18 | }
19 |
20 | .fw-backend-option-type-multi-select .selectize-control .selectize-dropdown .selectize-dropdown-content div > .type:after,
21 | .fw-backend-option-type-multi-select .selectize-control .selectize-input > div > .type:after {
22 | content: ")";
23 | margin-left: 1px;
24 | }
25 |
26 | .fw-backend-option-type-multi-select .selectize-control .selectize-dropdown .selectize-dropdown-content div > .type,
27 | .fw-backend-option-type-multi-select .selectize-control .selectize-input > div > .type {
28 | opacity: .5;
29 | font-size: 80%;
30 | margin-left: 5px;
31 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/multi-upload/static/css/any-files.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-multi-upload.any-files.empty span {
2 | display: none;
3 | }
4 | .fw-option-type-multi-upload.any-files span {
5 | display: inline-block;
6 | vertical-align: middle;
7 | margin-right: 5px;
8 | }
9 | .fw-option-type-multi-upload.any-files em {
10 | font-style: normal;
11 | vertical-align: middle;
12 | }
13 | .fw-option-type-multi-upload.any-files a {
14 | outline: none;
15 | }
16 | .fw-option-type.any-files button {
17 | vertical-align: middle;
18 | }
19 |
20 |
21 | .fw-backend-option-input-type-multi-upload .fw-option-help-in-input {
22 | top: 4px !important;
23 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/multi-upload/static/css/modal.css:
--------------------------------------------------------------------------------
1 | /* bigger z-index: make sure it's bigger than fw.OptionsModal's z-index (but do not increase this too much to not affect others) */
2 |
3 | .fw-option-type-multi-upload .media-modal {
4 | z-index: 170001;
5 | }
6 |
7 | .fw-option-type-multi-upload .media-modal-backdrop {
8 | z-index: 170000;
9 | }
10 |
11 | .wp-customizer .fw-option-type-multi-upload .media-modal {
12 | z-index: 560101;
13 | }
14 |
15 | .wp-customizer .fw-option-type-multi-upload .media-modal-backdrop {
16 | z-index: 560100;
17 | }
18 |
19 | /* end: bigger z-index */
20 |
21 |
22 | .fw-option-type-multi-upload .delete-attachment {
23 | display: none;
24 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/multi-upload/views/any-files.php:
--------------------------------------------------------------------------------
1 |
9 |
10 |
18 | >
19 |
/>
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/framework/includes/option-types/multi-upload/views/images-only.php:
--------------------------------------------------------------------------------
1 |
10 | >
11 |
/>
12 |
13 |
14 |
15 |
; ?>)
16 |
17 |
18 |
19 |
20 |
21 |
26 |
27 |
; ?>)
28 |
29 |
30 |
31 |
32 |
33 |
34 |
'.
36 | '
 .')
'.
37 | '
'
38 | ); ?>">
39 |
'.
41 | '
'.
42 | ''.
43 | ''
44 | ); ?>">
45 |
46 |
--------------------------------------------------------------------------------
/framework/includes/option-types/multi/class-fw-option-type-multi.php:
--------------------------------------------------------------------------------
1 | get_type(),
24 | fw_get_framework_directory_uri('/includes/option-types/'. $this->get_type() .'/static/css/styles.css'),
25 | array(),
26 | fw()->manifest->get_version()
27 | );
28 |
29 | $enqueue = false;
30 | }
31 |
32 | fw()->backend->enqueue_options_static($option['inner-options']);
33 |
34 | return true;
35 | }
36 |
37 | /**
38 | * @internal
39 | */
40 | protected function _render($id, $option, $data)
41 | {
42 | if (empty($data['value'])) {
43 | $data['value'] = array();
44 | }
45 |
46 | $div_attr = $option['attr'];
47 | unset($div_attr['name'], $div_attr['value']);
48 |
49 | return ''.
50 | fw()->backend->render_options($option['inner-options'], $data['value'], array(
51 | 'id_prefix' => $data['id_prefix'] . $id .'-',
52 | 'name_prefix' => $data['name_prefix'] .'['. $id .']',
53 | )).
54 | '
';
55 | }
56 |
57 | public function _get_data_for_js($id, $option, $data = array()) {
58 | return false;
59 | }
60 |
61 | public function _default_label($id, $option) {
62 | return false;
63 | }
64 |
65 | /**
66 | * @internal
67 | */
68 | protected function _get_value_from_input($option, $input_value)
69 | {
70 | if ( is_array($input_value) || empty($option['value']) ) {
71 | $value = array();
72 | } else {
73 | $value = $option['value'];
74 | }
75 |
76 | foreach (fw_extract_only_options($option['inner-options']) as $inner_id => $inner_option) {
77 | $value[$inner_id] = fw()->backend->option_type($inner_option['type'])->get_value_from_input(
78 | isset($value[$inner_id])
79 | ? array_merge($inner_option, array('value' => $value[$inner_id]))
80 | : $inner_option,
81 | isset($input_value[$inner_id]) ? $input_value[$inner_id] : null
82 | );
83 | }
84 |
85 | return $value;
86 | }
87 |
88 | /**
89 | * @internal
90 | */
91 | public function _get_backend_width_type()
92 | {
93 | return 'full';
94 | }
95 |
96 | /**
97 | * @internal
98 | */
99 | protected function _get_defaults()
100 | {
101 | return array(
102 | 'inner-options' => array(),
103 | 'value' => array(),
104 | );
105 | }
106 | }
107 |
--------------------------------------------------------------------------------
/framework/includes/option-types/multi/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-backend-option-type-multi {
2 | padding: 0 !important;
3 | }
4 |
5 | .fw-option-type-multi > .fw-backend-option {
6 | border-bottom-width: 0;
7 | }
8 |
9 | .fw-option-type-multi > .fw-backend-option.fw-backend-option-type-multi + .fw-backend-option.fw-backend-option-type-multi {
10 | border-top-width: 1px;
11 | }
12 |
13 | /* show options separator borders */
14 |
15 | .fw-option-type-multi.fw-option-type-multi-show-borders > .fw-backend-option {
16 | border-bottom-width: 1px;
17 | }
18 |
19 | .fw-option-type-multi.fw-option-type-multi-show-borders > .fw-backend-option:last-child {
20 | border-bottom-width: 0;
21 | }
22 |
23 | /* end: show options separator borders */
24 |
25 | .fw-option-type-multi:not(.fw-option-type-multi-show-borders) > .fw-backend-option:not(:last-child) {
26 | padding-bottom: 0;
27 | }
28 |
29 | .fw-backend-option-type-multi.fw-backend-option-design-customizer .fw-option-type-multi > .fw-backend-option {
30 | padding: 5px 0 10px;
31 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/oembed/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-oembed-preview img,
2 | .fw-oembed-preview iframe,
3 | .fw-oembed-preview embed
4 | {
5 | max-width: 100%;
6 | vertical-align: middle;
7 | }
8 |
9 | .fw-oembed-preview a {
10 | display: inline-block;
11 | }
12 |
13 | .fw-oembed-preview img {
14 | display: block;
15 | height: auto;
16 | }
17 | .fw-oembed-preview {
18 | padding-top: 7px;
19 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/oembed/static/js/oembed.js:
--------------------------------------------------------------------------------
1 | (function ($, _, fwEvents) {
2 |
3 | var is_url = function(str) {
4 | var pattern = new RegExp(/^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/, 'i');
5 | return pattern.test(str);
6 | };
7 |
8 | var oembed = function () {
9 | var $wrapper = $(this);
10 | var $input = $wrapper.find('input[type=text]');
11 | var $iframeWrapper = $wrapper.find('.fw-oembed-preview');
12 |
13 | $input.on('input',
14 | _.debounce(function () {
15 | if( $input.val() && is_url( $input.val() ) ) {
16 | wp.ajax.post(
17 | 'get_oembed_response',
18 | {
19 | '_nonce': $wrapper.data('nonce'),
20 | 'preview': $wrapper.data('preview'),
21 | 'url': $input.val()
22 | }).done(function (data) {
23 | $iframeWrapper.html(data.response);
24 | }).fail(function () {
25 | $iframeWrapper.html('');
26 | console.error('Get Oembed Response: Ajax error.', error);
27 | })
28 | } else {
29 | $iframeWrapper.html('');
30 | }
31 | }, 300)
32 | );
33 | };
34 |
35 | fwEvents.on('fw:options:init', function (data) {
36 | data.$elements
37 | .find('.fw-option-type-oembed:not(.fw-option-initialized)').each(oembed)
38 | .addClass('fw-option-initialized');
39 | });
40 | })(jQuery, _, fwEvents);
41 |
--------------------------------------------------------------------------------
/framework/includes/option-types/oembed/view.php:
--------------------------------------------------------------------------------
1 |
19 | >
20 |
21 |
22 | />
23 |
24 |
25 | $option['preview']['height'],
30 | 'width' => $option['preview']['width']
31 | ) ) :
32 | wp_oembed_get( $value, array(
33 | 'height' => $option['preview']['height'],
34 | 'width' => $option['preview']['width']
35 | ) );
36 |
37 | echo $iframe;
38 | }
39 | ?>
40 |
41 |
--------------------------------------------------------------------------------
/framework/includes/option-types/popup/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-addable-popup .item{
2 | position: relative;
3 | background-color: #fff;
4 | min-height: 40px;
5 | cursor: pointer;
6 | }
7 |
8 | .fw-option-type-addable-popup .item .content{
9 | padding: 12px 30px;
10 |
11 | }
12 |
13 | .fw-option-type-addable-popup .item:not(.default):not(.disabled) + .item:not(.default):not(.disabled){
14 | border-top: 1px dashed #E1E1E1;
15 | }
16 |
17 | .fw-option-type-addable-popup .items-wrapper{
18 | border: 1px solid #e1e1e1;
19 | }
20 |
21 | .fw-option-type-addable-popup .item.disabled{
22 | background-color: #f8f8f8;
23 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/popup/views/view.php:
--------------------------------------------------------------------------------
1 |
13 | >
14 |
15 |
16 |
17 | backend->option_type( 'hidden' )->render( $id, array( 'value' => $data['value'] ), $data );?>
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/framework/includes/option-types/radio-text/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-radio-text .predefined,
2 | .fw-option-type-radio-text .predefined .fw-option-type-radio,
3 | .fw-option-type-radio-text .predefined .fw-option-type-radio div,
4 | .fw-option-type-radio-text .custom {
5 | display: inline-block;
6 | }
7 |
8 | .fw-option-type-radio-text .predefined {
9 | vertical-align: middle;
10 | }
11 |
12 | .fw-option-type-radio-text .predefined .fw-option-type-radio div {
13 | margin-left: 10px;
14 | }
15 |
16 | body.rtl .fw-option-type-radio-text .predefined .fw-option-type-radio div {
17 | margin-right: 10px;
18 | margin-left: 0;
19 | }
20 |
21 | .fw-option-type-radio-text .predefined .fw-option-type-radio div:first-child {
22 | margin-left: inherit;
23 | }
24 |
25 | body.rtl .fw-option-type-radio-text .predefined .fw-option-type-radio div:first-child {
26 | margin-right: inherit;
27 | }
28 |
29 | .fw-option-type-radio-text .custom input.fw-option-type-text{
30 | width: 100px;
31 | margin-left: 10px;
32 | }
33 |
34 | .fw-option-type-radio-text .custom input.fw-option-type-text:first-child{
35 | margin: 0;
36 | }
37 |
38 |
39 | .fw-backend-option-input-type-radio-text .fw-option-help-in-input {
40 | top: 4px !important;
41 | }
42 |
43 |
44 |
--------------------------------------------------------------------------------
/framework/includes/option-types/radio-text/static/js/scripts.js:
--------------------------------------------------------------------------------
1 | jQuery(function($) {
2 | var optionTypeClass = '.fw-option-type-radio-text';
3 | var customRadioSelector =
4 | '.predefined .fw-option-type-radio > div:last-child input[type="radio"]';
5 |
6 | fwEvents.on('fw:options:init', function(data) {
7 | var $options = data.$elements.find(
8 | optionTypeClass + ':not(.initialized)'
9 | );
10 |
11 | $options.find('.fw-option-type-text').on('focus', function() {
12 | // check "custom" radio box
13 | $(this)
14 | .closest(optionTypeClass)
15 | .find(customRadioSelector)
16 | .prop('checked', true);
17 | });
18 |
19 | $options.find(customRadioSelector).on('focus', function() {
20 | $(this).closest(optionTypeClass).find('.custom input').focus();
21 | });
22 |
23 | $options.addClass('initialized');
24 | });
25 |
26 | fw.options.register('radio-text', {
27 | getValue: function(optionDescriptor) {
28 | var checked = $(optionDescriptor.el).find('input:checked');
29 |
30 | var value = checked.val();
31 |
32 | if (checked.closest('div').is(':last-child')) {
33 | value = $(optionDescriptor.el).find('[type="text"]').val();
34 | }
35 |
36 | return {
37 | value: value,
38 | optionDescriptor: optionDescriptor,
39 | };
40 | },
41 | });
42 | });
43 |
--------------------------------------------------------------------------------
/framework/includes/option-types/radio-text/view.php:
--------------------------------------------------------------------------------
1 |
21 | >
22 |
23 | backend->option_type( 'radio' )->render(
25 | 'predefined',
26 | array(
27 | 'value' => '',
28 | 'choices' => $option['choices']
29 | ),
30 | array(
31 | 'value' => isset($option['choices'][ $data['value'] ]) ? $data['value'] : $custom_choice_key,
32 | 'id_prefix' => $data['id_prefix'] . $id . '-',
33 | 'name_prefix' => $data['name_prefix'] . '[' . $id . ']',
34 | )
35 | );
36 | ?>
37 |
38 |
39 |
40 | backend->option_type( 'text' )->render(
42 | 'custom',
43 | array(),
44 | array(
45 | 'value' => isset($option['choices'][ $data['value'] ]) ? '' : $data['value'],
46 | 'id_prefix' => $data['id_prefix'] . $id . '-',
47 | 'name_prefix' => $data['name_prefix'] . '[' . $id . ']',
48 | )
49 | );
50 | ?>
51 |
52 |
--------------------------------------------------------------------------------
/framework/includes/option-types/range-slider/static/js/scripts.js:
--------------------------------------------------------------------------------
1 | (function ($, fwEvents) {
2 | var defaults = {
3 | grid: true
4 | };
5 |
6 | fwEvents.on('fw:options:init', function (data) {
7 | data.$elements.find('.fw-option-type-range-slider:not(.initialized)').each(function () {
8 | var options = JSON.parse($(this).attr('data-fw-irs-options'));
9 | $(this).find('.fw-irs-range-slider').ionRangeSlider(_.defaults(options, defaults));
10 |
11 | $(this).find('.fw-irs-range-slider').on('change', _.throttle(function (e) {
12 | fw.options.trigger.changeForEl(e.target, {
13 | value: getValueForEl(e.target)
14 | })
15 | }, 300));
16 | }).addClass('initialized');
17 | });
18 |
19 | fw.options.register('range-slider', {
20 | startListeningForChanges: $.noop,
21 | getValue: function (optionDescriptor) {
22 | return {
23 | value: getValueForEl(
24 | $(optionDescriptor.el).find('[type="text"]')[0]
25 | ),
26 |
27 | optionDescriptor: optionDescriptor
28 | }
29 | }
30 | });
31 |
32 | function getValueForEl (el) {
33 | var rangeArray = el.value.split(';');
34 |
35 | return {
36 | from: rangeArray[0],
37 | to: rangeArray[1]
38 | }
39 | }
40 |
41 | })(jQuery, fwEvents);
42 |
--------------------------------------------------------------------------------
/framework/includes/option-types/range-slider/view.php:
--------------------------------------------------------------------------------
1 |
26 | >
27 | />
28 |
29 |
--------------------------------------------------------------------------------
/framework/includes/option-types/rgba-color-picker/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-backend-option-input-type-rgba-color-picker .fw-option-help-in-input {
2 | top: 2px !important;
3 | }
4 | .fw-backend-option-input-type-rgba-color-picker .wp-picker-holder {
5 | position:absolute;
6 | z-index:99999;
7 | }
8 | .fw-backend-option-input-type-rgba-color-picker .wp-picker-clear {
9 | height: 23px !important;
10 | }
11 | .fw-backend-option-input-type-rgba-color-picker .wp-color-result {
12 | box-shadow:none;
13 | }
14 | .fw-backend-option-input-type-rgba-color-picker input {
15 | max-width: 140px !important;
16 | }
17 | #customize-controls .customize-pane-child .customize-control:last-child .fw-backend-customizer-option .fw-backend-option-type-rgba-color-picker {
18 | padding-bottom: 220px;
19 | }
20 | /* Picker WP style */
21 | .wp-color-result {
22 | background-color: #f7f7f7;
23 | border: 1px solid #ccc;
24 | -webkit-border-radius: 3px;
25 | border-radius: 3px;
26 | cursor: pointer;
27 | height: 22px;
28 | margin: 0 6px 6px 0;
29 | position: relative;
30 | -webkit-user-select: none;
31 | -moz-user-select: none;
32 | -ms-user-select: none;
33 | user-select: none;
34 | vertical-align: bottom;
35 | display: inline-block;
36 | padding-left: 30px;
37 | -webkit-box-shadow: 0 1px 0 #ccc;
38 | box-shadow: 0 1px 0 #ccc;
39 | top: 0;
40 | }
41 | .wp-color-result:focus,
42 | .wp-color-result:hover {
43 | background: #fafafa;
44 | border-color: #999;
45 | color: #23282d;
46 | }
47 | .wp-color-result:after {
48 | background: #f7f7f7;
49 | -webkit-border-radius: 0 2px 2px 0;
50 | border-radius: 0 2px 2px 0;
51 | border-left: 1px solid #ccc;
52 | color: #555;
53 | content: attr(title);
54 | display: block;
55 | font-size: 11px;
56 | line-height: 22px;
57 | padding: 0 6px;
58 | position: relative;
59 | right: 0;
60 | text-align: center;
61 | top: 0;
62 | }
63 | .wp-color-result.wp-picker-open:after {
64 | content: attr(data-current);
65 | }
66 | .wp-color-result:focus:after,
67 | .wp-color-result:hover:after {
68 | color: #23282d;
69 | border-color: #a0a5aa;
70 | border-left: 1px solid #999;
71 | }
72 | .wp-picker-open+.wp-picker-input-wrap {
73 | display: inline-block;
74 | vertical-align: top;
75 | }
76 | .wp-picker-container input[type=text].wp-color-picker {
77 | width: 65px;
78 | height: 24px;
79 | font-size: 12px;
80 | font-family: monospace;
81 | line-height: 16px;
82 | margin: 0;
83 | }
84 | .wp-picker-container .button {
85 | margin-left: 6px;
86 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/slider/class-fw-option-type-short-slider.php:
--------------------------------------------------------------------------------
1 |
26 | >
27 | />
28 |
29 |
--------------------------------------------------------------------------------
/framework/includes/option-types/switch/static/adaptive-switch/jquery.adaptive-switch.js:
--------------------------------------------------------------------------------
1 | (function(){
2 | var template =
3 | ''+
4 | '
'+
5 | '
'+
6 | ''+
7 | '
'+
8 | '
'+
9 | '
'+
10 | '
'+
11 | '
'+
12 | '
'+
13 | '
'+
14 | '
'+
15 | '
';
16 |
17 | function renderTemplate(switchLeft, switchRight, isRight, inputLeftId, inputRightId) {
18 | switchLeft = String(switchLeft);
19 | switchRight = String(switchRight);
20 |
21 | return template
22 | .split('{{switch_left}}' ).join(switchLeft)
23 | .split('{{switch_right}}' ).join(switchRight)
24 | .split('{{biggest_text}}' ).join(switchLeft.length > switchRight.length ? switchLeft : switchRight)
25 | .split('{{id_left}}' ).join(inputLeftId)
26 | .split('{{id_right}}' ).join(inputRightId)
27 | .split('{{wrapper_class}}' ).join(isRight ? ' switch-right' : '');
28 | }
29 |
30 | {
31 | var increment = 0;
32 |
33 | function getUniqueId() {
34 | return 'switch--'+ (++increment);
35 | }
36 | }
37 |
38 | jQuery.fn.adaptiveSwitch = function() {
39 | var $ = jQuery;
40 |
41 | this.filter('input[type="checkbox"]').each(function(){
42 | var $this = $(this);
43 |
44 | if (!$this.attr('id')) {
45 | $this.attr('id', getUniqueId());
46 | }
47 |
48 | var switchId = getUniqueId();
49 |
50 | $(
51 | renderTemplate(
52 | $this.attr('data-switch-left') ? $this.attr('data-switch-left') : 'No',
53 | $this.attr('data-switch-right') ? $this.attr('data-switch-right') : 'Yes',
54 | $this.prop('checked'),
55 | $this.attr('id'),
56 | $this.attr('id')
57 | )
58 | )
59 | .attr('id', switchId)
60 | .addClass('input-type--checkbox')
61 | .addClass('input-id--'+ $this.attr('id'))
62 | .addClass(
63 | $this.attr('class')
64 | ? $.map($this.attr('class').split(/\s+/), function(c){ return c.length ? 'input-class--'+ c : ''; }).join(' ')
65 | : ''
66 | )
67 | .insertAfter($this);
68 |
69 | $this
70 | .attr('data-switch-id', switchId)
71 | .addClass('adaptive-switch-input')
72 | .on('change', function(){
73 | $('#'+ $(this).attr('data-switch-id') )[ $(this).prop('checked') ? 'addClass' : 'removeClass' ]('switch-right');
74 | });
75 | });
76 |
77 | return this;
78 | };
79 | })();
--------------------------------------------------------------------------------
/framework/includes/option-types/switch/static/css/styles.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-switch .adaptive-switch,
2 | .fw-option-type-switch .adaptive-switch label {
3 | font-size: 11px;
4 | }
5 |
6 | .fw-backend-option-input-type-switch .fw-option-help-in-input {
7 | top: 3px !important;
8 | }
9 |
10 | .fw-option-type-switch .adaptive-switch label.switch-label span {
11 | text-transform: uppercase;
12 | padding: 0 0.8em;
13 | }
14 |
15 | @media (max-width: 782px) {
16 | .fw-option-type-switch .adaptive-switch {
17 | font-size: 14px;
18 | }
19 | }
20 |
21 | body.rtl .adaptive-switch {
22 | direction: ltr;
23 | }
24 |
25 | .fw-backend-option-design-customizer.fw-backend-option-type-switch .adaptive-switch .switch-switcher label.switch-label {
26 | line-height: inherit;
27 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/switch/static/js/scripts.js:
--------------------------------------------------------------------------------
1 | jQuery(document).ready(function ($) {
2 | var optionTypeClass = 'fw-option-type-switch',
3 | customEventPrefix = 'fw:option-type:switch:';
4 |
5 | fwEvents.on('fw:options:init', function (data) {
6 | data.$elements.find('.'+ optionTypeClass +':not(.fw-option-initialized)')
7 | .addClass('fw-option-initialized')
8 | .find('input[type="checkbox"]')
9 | .on('change', function(){
10 | var $this = $(this),
11 | checked = $this.prop('checked'),
12 | value = $this.attr('data-switch-'+ (checked ? 'right' : 'left') +'-value-json');
13 |
14 | $this.val(value);
15 |
16 | if (checked) {
17 | $this.prev('input[type="hidden"]').remove();
18 | } else {
19 | /**
20 | * When checkbox is not checked, it is not sent in POST so create a hidden input for that
21 | */
22 | $('').attr({
23 | 'type': 'hidden',
24 | 'name': $this.attr('name'),
25 | 'value': value
26 | }).insertBefore($this);
27 | }
28 |
29 | $this.closest('.'+ optionTypeClass).trigger(customEventPrefix +'change', {
30 | value: JSON.parse(value)
31 | });
32 |
33 | fw.options.trigger.changeForEl(
34 | $this.closest('.' + optionTypeClass)
35 | );
36 | })
37 | .on('change update:color', function(){
38 | var $this = $(this),
39 | isRight = $this.prop('checked'),
40 | $option = $this.closest('.'+ optionTypeClass),
41 | color = $option.attr('data-'+ (isRight ? 'right' : 'left') +'-color') || '';
42 |
43 | $option.find('.switch-dot span').css('background-color', color);
44 | $option.find('.switch-label-'+ (isRight ? 'right' : 'left')).css('color', color);
45 | })
46 | .adaptiveSwitch()
47 | .trigger('update:color');
48 | });
49 |
50 | fw.options.register('switch', {
51 | startListeningForChanges: $.noop,
52 | getValue: function (optionDescriptor) {
53 | return {
54 | value: JSON.parse(
55 | $(optionDescriptor.el).find('[type="checkbox"]').val()
56 | ),
57 | optionDescriptor: optionDescriptor
58 | }
59 | }
60 | })
61 | });
62 |
--------------------------------------------------------------------------------
/framework/includes/option-types/typography/static/images/google-fonts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/includes/option-types/typography/static/images/google-fonts.png
--------------------------------------------------------------------------------
/framework/includes/option-types/upload/static/css/any-files.css:
--------------------------------------------------------------------------------
1 | .fw-option-type-upload.any-files.empty span {
2 | display: none;
3 | }
4 | .fw-option-type-upload.any-files span {
5 | display: inline-block;
6 | vertical-align: middle;
7 | margin-right: 5px;
8 | }
9 | .fw-option-type-upload.any-files em {
10 | font-style: normal;
11 | }
12 | .fw-option-type-upload.any-files a {
13 | outline: none;
14 | }
15 | .fw-option-type-upload.any-files button {
16 | vertical-align: middle;
17 | }
18 |
19 |
20 | .fw-backend-option-input-type-upload .fw-option-help-in-input {
21 | top: 4px !important;
22 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/upload/static/css/modal.css:
--------------------------------------------------------------------------------
1 | /* bigger z-index: make sure it's bigger than fw.OptionsModal's z-index (but do not increase this too much to not affect others) */
2 |
3 | .fw-option-type-upload .media-modal {
4 | z-index: 170001;
5 | }
6 |
7 | .fw-option-type-upload .media-modal-backdrop {
8 | z-index: 170000;
9 | }
10 |
11 | .wp-customizer .fw-option-type-upload .media-modal {
12 | z-index: 560101;
13 | }
14 |
15 | .wp-customizer .fw-option-type-upload .media-modal-backdrop {
16 | z-index: 560100;
17 | }
18 |
19 | /* end: bigger z-index */
20 |
21 | .fw-option-type-upload .delete-attachment {
22 | display: none;
23 | }
--------------------------------------------------------------------------------
/framework/includes/option-types/upload/views/any-files.php:
--------------------------------------------------------------------------------
1 |
9 |
12 | >
13 |
/>
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/framework/includes/option-types/upload/views/images-only.php:
--------------------------------------------------------------------------------
1 |
9 | >
10 |
/>
11 |
12 |
13 |
; ?>)
14 |
15 |
16 |
22 |
23 |
; ?>)
24 |
25 |
26 |
27 |
28 |
29 |
'
31 | ); ?>">
32 |
" alt="<%- data.alt %>"/>'.
34 | '
'
35 | ); ?>">
36 |
37 |
38 | 'hidden',
40 | 'name' => '_fake[url]',
41 | 'value' => intval($input_attr['value']) ? wp_get_attachment_url($input_attr['value']) : '',
42 | 'class' => 'fw-option-type-upload-image-url'
43 | )); ?>
44 |
--------------------------------------------------------------------------------
/framework/includes/option-types/wp-editor/static/styles.css:
--------------------------------------------------------------------------------
1 | /** Fix textarea border color on edit tag page */
2 | #edittag .fw-option-type-wp-editor textarea.wp-editor-area {
3 | border: 0;
4 | }
--------------------------------------------------------------------------------
/framework/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/index.html
--------------------------------------------------------------------------------
/framework/languages/fw-es_ES.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/languages/fw-es_ES.mo
--------------------------------------------------------------------------------
/framework/languages/fw-fa_IR.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/languages/fw-fa_IR.mo
--------------------------------------------------------------------------------
/framework/languages/fw-fr_FR.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/languages/fw-fr_FR.mo
--------------------------------------------------------------------------------
/framework/languages/fw-he_IL.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/languages/fw-he_IL.mo
--------------------------------------------------------------------------------
/framework/languages/fw-nl_NL.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/languages/fw-nl_NL.mo
--------------------------------------------------------------------------------
/framework/languages/fw-ru_RU.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/languages/fw-ru_RU.mo
--------------------------------------------------------------------------------
/framework/languages/index.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/languages/index.html
--------------------------------------------------------------------------------
/framework/manifest.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/framework/static/img/no-image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/img/no-image.png
--------------------------------------------------------------------------------
/framework/static/img/sort-vertically.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/img/sort-vertically.png
--------------------------------------------------------------------------------
/framework/static/js/ie-fixes.js:
--------------------------------------------------------------------------------
1 | /**
2 | * IE fixes for jQuery plugins to not throw errors
3 | */
4 |
5 | if (!Array.prototype.indexOf) {
6 | Array.prototype.indexOf = function (searchElement, fromIndex) {
7 | if ( this === undefined || this === null ) {
8 | throw new TypeError( '"this" is null or not defined' );
9 | }
10 |
11 | var length = this.length >>> 0; // Hack to convert object.length to a UInt32
12 |
13 | fromIndex = +fromIndex || 0;
14 |
15 | if (Math.abs(fromIndex) === Infinity) {
16 | fromIndex = 0;
17 | }
18 |
19 | if (fromIndex < 0) {
20 | fromIndex += length;
21 | if (fromIndex < 0) {
22 | fromIndex = 0;
23 | }
24 | }
25 |
26 | for (;fromIndex < length; fromIndex++) {
27 | if (this[fromIndex] === searchElement) {
28 | return fromIndex;
29 | }
30 | }
31 |
32 | return -1;
33 | };
34 | }
--------------------------------------------------------------------------------
/framework/static/js/option-types.js:
--------------------------------------------------------------------------------
1 | jQuery( document ).ready( function ( $ ) {
2 | setTimeout( function () {
3 | fwEvents.trigger( 'fw:options:init', {
4 | $elements: $( document.body )
5 | } );
6 | }, 30 );
7 |
8 | function updateContent( $content ) {
9 | if ( tinymce.get( 'content' ) ) {
10 | tinymce.get( 'content' ).setContent( $content );
11 | } else {
12 | $content.val( $content );
13 | }
14 | }
15 |
16 | $( '#post-preview' ).on( 'mousedown touchend', function () {
17 |
18 | var $content = $( '#content' ),
19 | $contentValue = tinymce.get( 'content' ) ? tinymce.get( 'content' ).getContent() : $content.val(),
20 | $session = '';
21 |
22 | if ( $contentValue.indexOf( '/gi, $session );
24 | } else {
25 | $contentValue = $contentValue + $session;
26 | }
27 |
28 | updateContent( $contentValue );
29 | updateContent( $contentValue.replace( //gi, '' ) );
30 | } );
31 | } );
--------------------------------------------------------------------------------
/framework/static/libs/entypo/fonts/entypo.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/entypo/fonts/entypo.eot
--------------------------------------------------------------------------------
/framework/static/libs/entypo/fonts/entypo.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/entypo/fonts/entypo.ttf
--------------------------------------------------------------------------------
/framework/static/libs/entypo/fonts/entypo.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/entypo/fonts/entypo.woff
--------------------------------------------------------------------------------
/framework/static/libs/font-awesome/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/font-awesome/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/framework/static/libs/font-awesome/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/font-awesome/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/framework/static/libs/font-awesome/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/font-awesome/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/framework/static/libs/font-awesome/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/font-awesome/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/framework/static/libs/font-awesome/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/font-awesome/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/framework/static/libs/jscrollpane/jquery.jscrollpane.css:
--------------------------------------------------------------------------------
1 | /*
2 | * CSS Styles that are needed by jScrollPane for it to operate correctly.
3 | *
4 | * Include this stylesheet in your site or copy and paste the styles below into your stylesheet - jScrollPane
5 | * may not operate correctly without them.
6 | */
7 |
8 | .jspContainer
9 | {
10 | overflow: hidden;
11 | position: relative;
12 | }
13 |
14 | .jspPane
15 | {
16 | position: absolute;
17 | }
18 |
19 | .jspVerticalBar
20 | {
21 | position: absolute;
22 | top: 0;
23 | right: 0;
24 | width: 16px;
25 | height: 100%;
26 | background: red;
27 | }
28 |
29 | .jspHorizontalBar
30 | {
31 | position: absolute;
32 | bottom: 0;
33 | left: 0;
34 | width: 100%;
35 | height: 16px;
36 | background: red;
37 | }
38 |
39 | .jspCap
40 | {
41 | display: none;
42 | }
43 |
44 | .jspHorizontalBar .jspCap
45 | {
46 | float: left;
47 | }
48 |
49 | .jspTrack
50 | {
51 | background: #dde;
52 | position: relative;
53 | }
54 |
55 | .jspDrag
56 | {
57 | background: #bbd;
58 | position: relative;
59 | top: 0;
60 | left: 0;
61 | cursor: pointer;
62 | }
63 |
64 | .jspHorizontalBar .jspTrack,
65 | .jspHorizontalBar .jspDrag
66 | {
67 | float: left;
68 | height: 100%;
69 | }
70 |
71 | .jspArrow
72 | {
73 | background: #50506d;
74 | text-indent: -20000px;
75 | display: block;
76 | cursor: pointer;
77 | padding: 0;
78 | margin: 0;
79 | }
80 |
81 | .jspArrow.jspDisabled
82 | {
83 | cursor: default;
84 | background: #80808d;
85 | }
86 |
87 | .jspVerticalBar .jspArrow
88 | {
89 | height: 16px;
90 | }
91 |
92 | .jspHorizontalBar .jspArrow
93 | {
94 | width: 16px;
95 | float: left;
96 | height: 100%;
97 | }
98 |
99 | .jspVerticalBar .jspArrow:focus
100 | {
101 | outline: none;
102 | }
103 |
104 | .jspCorner
105 | {
106 | background: #eeeef4;
107 | float: left;
108 | height: 100%;
109 | }
110 |
111 | /* Yuk! CSS Hack for IE6 3 pixel bug :( */
112 | * html .jspCorner
113 | {
114 | margin: 0 -3px 0 0;
115 | }
--------------------------------------------------------------------------------
/framework/static/libs/linecons/fonts/linecons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/linecons/fonts/linecons.eot
--------------------------------------------------------------------------------
/framework/static/libs/mousewheel/jquery.mousewheel.min.js:
--------------------------------------------------------------------------------
1 | /*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)
2 | * Licensed under the MIT License (LICENSE.txt).
3 | *
4 | * Version: 3.1.11
5 | *
6 | * Requires: jQuery 1.2.2+
7 | */
8 | !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.11",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b)["offsetParent"in a.fn?"offsetParent":"parent"]();return c.length||(c=a("body")),parseInt(c.css("fontSize"),10)},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
--------------------------------------------------------------------------------
/framework/static/libs/typcn/fonts/typicons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/typcn/fonts/typicons.eot
--------------------------------------------------------------------------------
/framework/static/libs/typcn/fonts/typicons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/typcn/fonts/typicons.ttf
--------------------------------------------------------------------------------
/framework/static/libs/typcn/fonts/typicons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/typcn/fonts/typicons.woff
--------------------------------------------------------------------------------
/framework/static/libs/unycon/changelog.txt:
--------------------------------------------------------------------------------
1 | 2.0.0
2 | * Removed strange icons
3 | * Categorized icons
--------------------------------------------------------------------------------
/framework/static/libs/unycon/demo-files/demo.css:
--------------------------------------------------------------------------------
1 | body {
2 | padding: 0;
3 | margin: 0;
4 | font-family: sans-serif;
5 | font-size: 1em;
6 | line-height: 1.5;
7 | color: #555;
8 | background: #fff;
9 | }
10 | h1 {
11 | font-size: 1.5em;
12 | font-weight: normal;
13 | }
14 | small {
15 | font-size: .66666667em;
16 | }
17 | a {
18 | color: #e74c3c;
19 | text-decoration: none;
20 | }
21 | a:hover, a:focus {
22 | box-shadow: 0 1px #e74c3c;
23 | }
24 | .bshadow0, input {
25 | box-shadow: inset 0 -2px #e7e7e7;
26 | }
27 | input:hover {
28 | box-shadow: inset 0 -2px #ccc;
29 | }
30 | input, fieldset {
31 | font-size: 1em;
32 | margin: 0;
33 | padding: 0;
34 | border: 0;
35 | }
36 | input {
37 | color: inherit;
38 | line-height: 1.5;
39 | height: 1.5em;
40 | padding: .25em 0;
41 | }
42 | input:focus {
43 | outline: none;
44 | box-shadow: inset 0 -2px #449fdb;
45 | }
46 | .glyph {
47 | font-size: 16px;
48 | width: 15em;
49 | padding-bottom: 1em;
50 | margin-right: 4em;
51 | margin-bottom: 1em;
52 | float: left;
53 | overflow: hidden;
54 | }
55 | .liga {
56 | width: 80%;
57 | width: calc(100% - 2.5em);
58 | }
59 | .talign-right {
60 | text-align: right;
61 | }
62 | .talign-center {
63 | text-align: center;
64 | }
65 | .bgc1 {
66 | background: #f1f1f1;
67 | }
68 | .fgc1 {
69 | color: #999;
70 | }
71 | .fgc0 {
72 | color: #000;
73 | }
74 | p {
75 | margin-top: 1em;
76 | margin-bottom: 1em;
77 | }
78 | .mvm {
79 | margin-top: .75em;
80 | margin-bottom: .75em;
81 | }
82 | .mtn {
83 | margin-top: 0;
84 | }
85 | .mtl, .mal {
86 | margin-top: 1.5em;
87 | }
88 | .mbl, .mal {
89 | margin-bottom: 1.5em;
90 | }
91 | .mal, .mhl {
92 | margin-left: 1.5em;
93 | margin-right: 1.5em;
94 | }
95 | .mhmm {
96 | margin-left: 1em;
97 | margin-right: 1em;
98 | }
99 | .mls {
100 | margin-left: .25em;
101 | }
102 | .ptl {
103 | padding-top: 1.5em;
104 | }
105 | .pbs, .pvs {
106 | padding-bottom: .25em;
107 | }
108 | .pvs, .pts {
109 | padding-top: .25em;
110 | }
111 | .unit {
112 | float: left;
113 | }
114 | .unitRight {
115 | float: right;
116 | }
117 | .size1of2 {
118 | width: 50%;
119 | }
120 | .size1of1 {
121 | width: 100%;
122 | }
123 | .clearfix:before, .clearfix:after {
124 | content: " ";
125 | display: table;
126 | }
127 | .clearfix:after {
128 | clear: both;
129 | }
130 | .hidden-true {
131 | display: none;
132 | }
133 | .textbox0 {
134 | width: 3em;
135 | background: #f1f1f1;
136 | padding: .25em .5em;
137 | line-height: 1.5;
138 | height: 1.5em;
139 | }
140 | #testDrive {
141 | display: block;
142 | padding-top: 24px;
143 | line-height: 1.5;
144 | }
145 | .fs0 {
146 | font-size: 16px;
147 | }
148 | .fs1 {
149 | font-size: 32px;
150 | }
151 |
--------------------------------------------------------------------------------
/framework/static/libs/unycon/demo-files/demo.js:
--------------------------------------------------------------------------------
1 | if (!('boxShadow' in document.body.style)) {
2 | document.body.setAttribute('class', 'noBoxShadow');
3 | }
4 |
5 | document.body.addEventListener("click", function(e) {
6 | var target = e.target;
7 | if (target.tagName === "INPUT" &&
8 | target.getAttribute('class').indexOf('liga') === -1) {
9 | target.select();
10 | }
11 | });
12 |
13 | (function() {
14 | var fontSize = document.getElementById('fontSize'),
15 | testDrive = document.getElementById('testDrive'),
16 | testText = document.getElementById('testText');
17 | function updateTest() {
18 | testDrive.innerHTML = testText.value || String.fromCharCode(160);
19 | if (window.icomoonLiga) {
20 | window.icomoonLiga(testDrive);
21 | }
22 | }
23 | function updateSize() {
24 | testDrive.style.fontSize = fontSize.value + 'px';
25 | }
26 | fontSize.addEventListener('change', updateSize, false);
27 | testText.addEventListener('input', updateTest, false);
28 | testText.addEventListener('change', updateTest, false);
29 | updateSize();
30 | }());
31 |
--------------------------------------------------------------------------------
/framework/static/libs/unycon/fonts/Unycon.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/unycon/fonts/Unycon.eot
--------------------------------------------------------------------------------
/framework/static/libs/unycon/fonts/Unycon.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/unycon/fonts/Unycon.ttf
--------------------------------------------------------------------------------
/framework/static/libs/unycon/fonts/Unycon.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/unycon/fonts/Unycon.woff
--------------------------------------------------------------------------------
/framework/static/libs/unycon/iconmoon-app-selection.json.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ThemeFuse/Unyson/fc8bf84e631575e6b60f2faf17a9b0481f551cf2/framework/static/libs/unycon/iconmoon-app-selection.json.zip
--------------------------------------------------------------------------------
/framework/views/backend-container-design-taxonomy.php:
--------------------------------------------------------------------------------
1 | array(
10 | 'form-field',
11 | 'fw-backend-container',
12 | 'fw-backend-container-type-'. $type
13 | ),
14 | 'content' => array(
15 | 'fw-backend-container-content',
16 | ),
17 | );
18 |
19 | foreach ($classes as $key => $_classes) {
20 | $classes[$key] = implode(' ', $_classes);
21 | }
22 | unset($key, $_classes);
23 | }
24 |
25 | ?>
26 |
27 | |
28 |
--------------------------------------------------------------------------------
/framework/views/backend-option-design-empty.php:
--------------------------------------------------------------------------------
1 | backend->option_type($option['type'])->render($id, $option, $data);
4 |
--------------------------------------------------------------------------------
/framework/views/backend-option-design-taxonomy.php:
--------------------------------------------------------------------------------
1 | array( 'unyson/unyson.php' ),
17 | );
18 |
19 | if ( false !== getenv( 'WP_TESTS_DIR' ) ) {
20 | require getenv( 'WP_TESTS_DIR' ) . 'includes/bootstrap.php';
21 | } else if (false !== getenv( 'WP_DEVELOP_DIR' )) {
22 | require getenv( 'WP_DEVELOP_DIR' ) . 'tests/phpunit/includes/bootstrap.php';
23 | } else {
24 | require '../../../../tests/phpunit/includes/bootstrap.php';
25 | }
26 |
27 | require dirname( __FILE__ ) . '/../unyson.php';
28 | require_once dirname( __FILE__ ) . '/framework/class-wp-unyson-unit-test-case.php';
29 |
--------------------------------------------------------------------------------
/tests/framework/class-wp-unyson-unit-test-case.php:
--------------------------------------------------------------------------------
1 | go_to( home_url( '/' ) );
28 | }
29 |
30 | /**
31 | * @param string $expected
32 | */
33 | protected function expectOutput( $expected ) {
34 | $output = ob_get_contents();
35 | ob_clean();
36 | $output = preg_replace( '|\R|', "\r\n", $output );
37 | $expected = preg_replace( '|\R|', "\r\n", $expected );
38 | $this->assertEquals( $expected, $output );
39 | }
40 |
41 | /**
42 | * @param string|array $expected
43 | */
44 | protected function expectOutputContains( $expected ) {
45 | $output = preg_replace( '|\R|', "\r\n", ob_get_contents() );
46 | ob_clean();
47 |
48 | if ( ! is_array( $expected ) ) {
49 | $expected = array( $expected );
50 | }
51 |
52 | foreach ( $expected as $needle ) {
53 | $found = strpos( $output, $needle );
54 | $this->assertTrue( $found !== false );
55 | }
56 | }
57 | }
--------------------------------------------------------------------------------
/tests/phpunit.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 | ./
20 |
21 |
22 |
23 |
24 |
25 | ./inc
26 | ./frontend
27 | ./admin
28 |
29 |
30 |
--------------------------------------------------------------------------------
/tests/readme.md:
--------------------------------------------------------------------------------
1 | # Running Unyson Unit Tests via PHPUnit
2 |
3 | #### Requirements:
4 |
5 | 1. Make sure you have installed PHPUnit `sudo apt install phpunit`
6 | 2. Get [`install-wp-tests.sh`](https://github.com/wp-cli/scaffold-command/blob/v1.0.4/templates/install-wp-tests.sh) helper
7 |
8 | ## Steps to follow:
9 |
10 | Run `install-wp-tests` helper. Please make sure that you have a mysql daemon
11 | running. This script will do a couple of things:
12 |
13 | - Will install a fresh WordPress to the `/tmp/wordpress` directory with correct `wp-config.php`
14 | - Will copy WordPress test helpers to `/tmp/wordpress-tests-lib` - this should point the $WP_TESTS_DIR to. Unyson [knows](https://github.com/ThemeFuse/Unyson/blob/v2.6.10/tests/bootstrap.php#L20) how to handle it well
15 | - Will create an empty database that will be re-created at each tests run
16 |
17 | Run this:
18 |
19 | ```bash
20 | install-wp-tests
21 | ```
22 |
23 | Now you can run your tests:
24 |
25 | ```
26 | cd unyson/tests
27 |
28 | # See them pass
29 | env WP_TESTS_DIR=/tmp/wordpress-tests-lib/ phpunit
30 | ```
31 |
--------------------------------------------------------------------------------
/tests/test-wp-editor.php:
--------------------------------------------------------------------------------
1 | 'wp-editor', 'tinymce' => true);
15 | $data = array();
16 |
17 | fw()->backend->option_type('wp-editor')->prepare(
18 | $id, $option, $data
19 | );
20 |
21 | $this->editor_manager = new FW_WP_Editor_Manager(
22 | $id, $option, $data
23 | );
24 |
25 | // wp-includes/class-wp-editor.php
26 | // self::$this_tinymce = ( $set['tinymce'] && user_can_richedit() );
27 | add_filter(
28 | 'user_can_richedit',
29 | array($this, 'user_should_be_able_to_rich_edit_in_tests'),
30 | 999999999999999
31 | );
32 | }
33 |
34 | function user_should_be_able_to_rich_edit_in_tests() {
35 | return true;
36 | }
37 |
38 | public function test_we_have_editor_manager() {
39 | $this->assertTrue(class_exists('FW_WP_Editor_Manager'));
40 | }
41 |
42 | public function test_we_get_html_correctly() {
43 | $html = $this->editor_manager->get_html();
44 | $this->assertRegexp('/data-fw-editor-id/', $html);
45 | }
46 |
47 | public function test_actions_are_called_in_correct_order() {
48 | add_filter(
49 | 'quicktags_settings',
50 | array($this, 'quicktags_settings_callback_in_middle'),
51 | 10
52 | );
53 |
54 | add_filter(
55 | 'quicktags_settings',
56 | array($this, 'quicktags_settings_callback_in_last'),
57 | 999999999999999
58 | );
59 |
60 | $this->editor_manager->get_html();
61 |
62 | $this->assertEquals(
63 | $this->test_field,
64 | 'last'
65 | );
66 | }
67 |
68 | public function quicktags_settings_callback_in_middle($qtInit) {
69 | $this->test_field = 'middle';
70 | return $qtInit;
71 | }
72 |
73 | public function quicktags_settings_callback_in_last($qtInit) {
74 | $this->test_field = 'last';
75 | }
76 | }
77 |
78 |
--------------------------------------------------------------------------------
/uninstall.php:
--------------------------------------------------------------------------------
1 | read_extensions(
29 | dirname(__FILE__) .'/framework/extensions',
30 | $this->extensions
31 | );
32 |
33 | {
34 | /** @var wpdb $wpdb */
35 | global $wpdb;
36 |
37 | $this->uninstall();
38 |
39 | if ( is_multisite() ) { // http://wordpress.stackexchange.com/a/80351/60424
40 | $original_blog_id = get_current_blog_id();
41 |
42 | foreach (
43 | $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" )
44 | as $blog_id
45 | ) {
46 | switch_to_blog( $blog_id );
47 |
48 | $this->uninstall();
49 | }
50 |
51 | switch_to_blog( $original_blog_id );
52 | }
53 | }
54 | }
55 |
56 | private function read_extensions($dir, &$extensions)
57 | {
58 | $ext_dirs = glob($dir .'/*', GLOB_ONLYDIR);
59 |
60 | if (empty($ext_dirs)) {
61 | return;
62 | }
63 |
64 | foreach ($ext_dirs as $ext_dir) {
65 | if (
66 | file_exists($ext_dir .'/manifest.php')
67 | &&
68 | file_exists($ext_dir .'/uninstall.php')
69 | ) {
70 | $extensions[ basename($ext_dir) ] = $ext_dir .'/uninstall.php';
71 | }
72 |
73 | $this->read_extensions($ext_dir .'/extensions', $extensions);
74 | }
75 | }
76 |
77 | private function uninstall()
78 | {
79 | // Remove framework data
80 | {
81 | // ...
82 | }
83 |
84 | // Remove extensions data
85 | foreach ($this->extensions as $uninstall_file) {
86 | _include_file_isolated($uninstall_file);
87 | }
88 | }
89 | }
90 |
91 | new FW_Plugin_Uninstall();
92 |
--------------------------------------------------------------------------------