richtabor / merlinwp Goto Github PK
View Code? Open in Web Editor NEWBetter WordPress Theme Onboarding
Home Page: https://merlinwp.com
License: GNU General Public License v3.0
Better WordPress Theme Onboarding
Home Page: https://merlinwp.com
License: GNU General Public License v3.0
Being able to skip any part of the wizard is pretty important for a user's control of the process. We don't want a situation where a user has to sit with their wizard half-done while they're locating licenses, trying to validate a key (if they've purchased from outside of EDD), or if they simply don't have one.
I vote we revert #68 and add the button back in. Maybe it could have a custom label string, for example "Add Later" instead of "Skip", but we really need to have a way for folks to continue with the setup process.
What do you think?
Hi,
I have couple of required plugin and rest of them are recommended plugins. But Merlin is installing them all in my opinion.
There should be headings for required and recommended plugins and also selection for what plugins we want to install.
Thanks
Someone might have already mentioned this but would be awesome to be able to selectively uncheck/check which plugins are to be installed (like everything else), other than ones that are required.
I also put together a little preview video for my buyers, sorry mic volume/gain was a little low on my Blue mic, this is using the Redux Framework option.
Hi,
You are using theme name as prefix for this it should be custom prefix which we can pass from config or it can be template name as If a theme has long name the prefix is too long which is not developer friendly.
so instead of do_action( $this->theme . '_merlin_license_form' )
we can do is do_action( $this->theme->template . '_merlin_license_form' )
Thanks
@richtabor @primozcigler Has this been implemented yet? I specified the URL for each but I'm not seeing the preview images displayed anywhere just the plain old select drop?
When using the import demo content, pass without errors but the content is not imported completely.
I tested it with a content with 96 images but the images were placeholders and really small.
The plugin One Click Demo Import uses WP import 2.0 and works fine with all the XML Import Files I tested.
Maybe something like that can be implemented.
@primozcigler I think having the "theme" prefix here is not necessary and keeps the wizard bound to themes only (looking into the future). As EDD licenses are for plugins and themes, I'd suggest that we remove the "theme" prefix from the license step/vars/everything.
For example, theme_license_step
and theme-license
.
What do you think?
I'm not 💯sure, but it would be great if the default widgets (if it's a new WP install) could be removed/inactive when widgets are imported.
Hi,
If the step is not successfully completed the button got disabled and not working.
Thanks
@primozcigler wrote:
The zip gets build by gulp tasks AFAIK. But it's not documented (AFAIK).
As opposed to release ZIP usage source code usage could be documented in README.
Hi,
do you plan to implement the integration with EDD SL? I mean the license activation and updating.
Any news on the release date? Looking forward to using it.
Would be awesome to add support for Redux along with batch processing the import into chunks to avoid server timeout issues, just like the new WordPress Importer V2 plugin handles everything.
https://github.com/humanmade/WordPress-Importer
More than willing to throw some funds into the project as I'm sure a bunch of other authors out there would be as well, make this the best damn theme onboarding process the community has ever seen!
I'd like for menus to also import as part of the content importer. That'd be awesome. 🙌
Hi Rich,
Congratulations on the fantastic plugin.
Unfortunately for me, it does not serve because all my themes have more than one demo.
I believe that this is also the case for other authors.
Do you have any plans to add more than a demo available for the user to choose.?
merlin.js:351 Uncaught TypeError: Cannot read property 'toLowerCase' of null at Object.ajax_callback [as success] (merlin.js:351) at i (load-scripts.php:2) at Object.fireWith [as resolveWith] (load-scripts.php:2) at y (load-scripts.php:4) at XMLHttpRequest.c (load-scripts.php:4)
I think it may be a good idea to add a "don't refresh this page" badge of some sort on the content importer screen, that appears once the importer starts working.
Thank for great library. I think adding coding standard rule set will make contributing easier.
WARNING: Found a translation function that is missing a text-domain. Function __, with the arguments 'Skipping attachment "%s", fetching attachments disabled'
WARNING: Found a translation function that is missing a text-domain. Function __, with the arguments 'Cannot import auto-draft posts'
WARNING: file_put_contents was found in the file class-merlin-downloader.php File operations should use the WP_Filesystem methods instead of direct PHP filesystem calls.
Line 41: $saved_file = file_put_contents( $this->download_directory_path . $filename, $content );
WARNING: file_get_contents was found in the file class-merlin-widget-importer.php File operations should use the WP_Filesystem methods instead of direct PHP filesystem calls.
Line 69: $data = file_get_contents( $file );
WARNING: file_get_contents was found in the file class-merlin-customizer-importer.php File operations should use the WP_Filesystem methods instead of direct PHP filesystem calls.
Line 61: $raw = file_get_contents( $import_file_path );
@richtabor A WP plugin ZIP must have one directory in it and all files in that dir.
I was trying to test the demo theme and i found an bug on it.
On path york-pro/inc/admin/tgmpa/class-tgm-plugin-activation.php
on line 2108, the function tests function_exists( 'york-pro' )
and if false, declare function tgmpa(...) {...
.
What it should do is test if tgmpa exists.
The problem:
If i have an plugin with TGMPA configured, it will try to redeclare the function and kill wordpress.
I've tried to find an repo for this theme to report this issue.
Please consider putting the zip into releases.
A binary file is redundant and conflicts with a source code repo.
key error returned
This appears to be an invalid license key for.
but, the key is working
screencast how it looks https://www.youtube.com/watch?v=8gzBlamwVP4
Hey Rich,
Firstly, WOW, this is absolutely fantastic, great work!
Issue:
Wanting to override Merlin_Helper class to change texts without modifying /merlin/ contents in theme integration.
Attempted:
Copying Merlin_Helper class to functions.php and defining class before Merlin is included.
Outcome:
Fatal Error: : Call to a member function helper_wizard() on a non-object in...
Proposal
merlin.php line 231:
if ( ! class_exists( 'Merlin_Helper' ) and true == $this->help_mode ) {
Removing the class check here means that the class can be overridden by defining in functions.php before Merlin is included. Since the class check also takes place in includes/class-merlin-helper.php I'm thinking that the additional class check in the above is un-needed.
Cheers - Tom
I have one person out of over 5400 getting this error below, he was running PHP 5.6.3 had him upgrade to 7 still the same thing. Nobody else is having the issue so I'm sure its some sort of server config problem, but anyone know what would cause this?
call_user_func_array() expects parameter 1 to be a valid callback, cannot access protected method Merlin::post_install_check() in /home/blackfin/public_html/nestwiser.com/wp-includes/class-wp-hook.php on line 288
Plugins does`t activated, when the plugin is already installed but requires activation. Merlin misses the activation step.
For ex:
Plugins is not activated. I understand that Merlin works for a clean installation. Very often buyers change themes but plugins remain.
Check it please. Thank you!
Warning: call_user_func_array() expects parameter 1 to be a valid callback, cannot access protected method Merlin::post_install_check() in /wp-includes/class-wp-hook.php on line 288
How to repeat?
linux hosting, Apache, php7
Wordpress in multisite mode
open the plugin installation page
click add new
select plugin
click install
After installation, the activation screen for the network shows an error message
Gulp needs to minify merlin.js.
Can MerlinWP be used for setting up a plugin instead?
Hi,
Shouldn't we take out all the html out of merlin class and make template files easy to find and edit content.
Thanks
Hey Richard,
Hope you are doing great.
First of all I want to thank you for doing an amazing job as an Envato Theme Reviewer and for this great project.
I played a little with the importer and it's really amazing. Can't wait for the official release to add it to my theme. It gives the user a whole different experience. When do you think of releasing it?
I also wanted to ask you, do you think of adding a theme auto updater as Envato WordPress Theme Setup Wizard? It would really be a great feature for this importer.
Best regards,
Gino
Here are few issues I found reviewing based on Theme Review guideline.
all plugins
or no plugins
. Checkboxes would be good for each plugins in the list. All recommended plugins may not be necessary for a site.Hey Rich,
I was pulling my hair out trying to find out why the users and options section on the import always failed. I thought i was doing something wrong but then noticed the included york-pro demo theme.
When i tested this on the york demo the same issue appeared. The users will never import and the options displays that it failed however it looks like all options were imported.
I'll keep testing however it looks like the user transient is never set so that function never executes, regarding the options i'm not sure what would be causing this. If you need anything else let me know.
<?php
if ( ! class_exists( 'Merlin' ) ) {
return;
}
$wizard = new Merlin(
$config = array(
'directory' => '',
'merlin_url' => 'merlin',
'child_action_btn_url' => 'https://codex.wordpress.org/Child_Themes',
'help_mode' => false,
'dev_mode' => NORFOLK_DEVELOPMENT,
'branding' => false,
),
$strings = array(
'admin-menu' => esc_html__( 'Theme Setup' , 'norfolk' ),
'title%s%s%s%s' => esc_html__( '%s%s Themes ‹ Theme Setup: %s%s' , 'norfolk' ),
'return-to-dashboard' => esc_html__( 'Return to the dashboard' , 'norfolk' ),
'btn-skip' => esc_html__( 'Skip' , 'norfolk' ),
'btn-next' => esc_html__( 'Next' , 'norfolk' ),
'btn-start' => esc_html__( 'Start' , 'norfolk' ),
'btn-no' => esc_html__( 'Cancel' , 'norfolk' ),
'btn-plugins-install' => esc_html__( 'Install' , 'norfolk' ),
'btn-child-install' => esc_html__( 'Install' , 'norfolk' ),
'btn-content-install' => esc_html__( 'Install' , 'norfolk' ),
'btn-import' => esc_html__( 'Import' , 'norfolk' ),
'welcome-header%s' => esc_html__( 'Welcome to %s' , 'norfolk' ),
'welcome-header-success%s' => esc_html__( 'Hi. Welcome back' , 'norfolk' ),
'welcome%s' => esc_html__( 'This wizard will set up your theme, install plugins, and import content. It is optional & should take only a few minutes.' , 'norfolk' ),
'welcome-success%s' => esc_html__( 'You may have already run this theme setup wizard. If you would like to proceed anyway, click on the "Start" button below.' , 'norfolk' ),
'child-header' => esc_html__( 'Install Child Theme' , 'norfolk' ),
'child-header-success' => esc_html__( 'You\'re good to go!' , 'norfolk' ),
'child' => esc_html__( 'Let\'s build & activate a child theme so you may easily make theme changes.' , 'norfolk' ),
'child-success%s' => esc_html__( 'Your child theme has already been installed and is now activated, if it wasn\'t already.' , 'norfolk' ),
'child-action-link' => esc_html__( 'Learn about child themes' , 'norfolk' ),
'child-json-success%s' => esc_html__( 'Awesome. Your child theme has already been installed and is now activated.' , 'norfolk' ),
'child-json-already%s' => esc_html__( 'Awesome. Your child theme has been created and is now activated.' , 'norfolk' ),
'plugins-header' => esc_html__( 'Install Plugins' , 'norfolk' ),
'plugins-header-success' => esc_html__( 'You\'re up to speed!' , 'norfolk' ),
'plugins' => esc_html__( 'Let\'s install some essential WordPress plugins to get your site up to speed.' , 'norfolk' ),
'plugins-success%s' => esc_html__( 'The required WordPress plugins are all installed and up to date. Press "Next" to continue the setup wizard.' , 'norfolk' ),
'plugins-action-link' => esc_html__( 'Advanced' , 'norfolk' ),
'import-header' => esc_html__( 'Import Content' , 'norfolk' ),
'import' => esc_html__( 'Let\'s import content to your website, to help you get familiar with the theme.' , 'norfolk' ),
'import-action-link' => esc_html__( 'Advanced' , 'norfolk' ),
'ready-header' => esc_html__( 'All done. Have fun!' , 'norfolk' ),
'ready%s' => esc_html__( 'Your theme has been all set up. Enjoy your new theme by %s.' , 'norfolk' ),
'ready-action-link' => esc_html__( 'Extras' , 'norfolk' ),
'ready-big-button' => esc_html__( 'View your website' , 'norfolk' ),
'ready-link-1' => wp_kses( sprintf( '<a href="%1$s" target="_blank">%2$s</a>', 'https://wordpress.org/support/', esc_html__( 'Explore WordPress', 'norfolk' ) ), array( 'a' => array( 'href' => array(), 'target' => array() ) ) ),
'ready-link-2' => wp_kses( sprintf( '<a href="%1$s" target="_blank">%2$s</a>', 'https://themebeans.com/contact/', esc_html__( 'Get Theme Support', 'norfolk' ) ), array( 'a' => array( 'href' => array(), 'target' => array() ) ) ),
'ready-link-3' => wp_kses( sprintf( '<a href="'.admin_url( 'customize.php' ).'" target="_blank">%s</a>', esc_html__( 'Start Customizing', 'norfolk' ) ), array( 'a' => array( 'href' => array(), 'target' => array() ) ) ),
)
);
function norfolk_demo_import_files() {
return array(
array(
'import_file_name' => 'Demo Import',
'import_file_url' => 'http://vlthemes.com/demo_content/norfolk/demo-content.xml',
'import_widget_file_url' => 'http://vlthemes.com/demo_content/norfolk/widgets.json',
'import_customizer_file_url' => 'http://vlthemes.com/demo_content/norfolk/customizer1.dat',
'import_notice' => __( 'A special note for this import.', 'your-textdomain' ),
// 'preview_url' => '',
),
);
}
add_filter( 'merlin_import_files', 'norfolk_demo_import_files' );
var_dump(norfolk_demo_import_files());
No php errors, no errors in console log, nothing. Demo import started and after a few seconds ended.
GIF -> http://take.ms/acql8
Can you check this config file?
Thank you!
It is causing by the inline script that added by the Polylang https://github.com/polylang/polylang/blob/440d2f1f553fb2b05d90eb13081d30a305f3d583/admin/admin-base.php#L165
themes.php?page=merlin&step=child:839 Uncaught ReferenceError: ajaxurl is not defined
Looks like the latest version bump is missing single quotes around the version number.
Fatal error: syntax error, unexpected '.1' (T_DNUMBER) in /merlin/merlin.php on line 141
if ( ! defined( 'MERLIN_VERSION' ) ) { define( 'MERLIN_VERSION', 1.0.1 ); }
should be
if ( ! defined( 'MERLIN_VERSION' ) ) { define( 'MERLIN_VERSION', '1.0.1' ); }
Great ui/ux for installing themes and plugins smoothly! 💯
In merlin installation page found this issue on wp_debug mode true.
Notice : ob_end_clean(): failed to delete buffer. No buffer to delete in /**/york-pro/inc/admin/merlin/merlin.php on line 351
Thanks! 👍
Was looking through the filters and I see its possible to set "Home" or a custom page title as the front page, however, it would be nice to be able to set this on a per demo basis within the array, for example:
Adding the following:
import_home_page_title
import_slider_revolution
array(
'import_file_name' => 'Vacation Rentals Slider',
'import_file_url' => 'http://www.your_domain.com/merlin/demo-content2.xml',
'import_widget_file_url' => 'http://www.your_domain.com/merlin/widgets2.json',
'import_home_page_title' => 'Homepage Agent',
'import_slider_revolution' => 'http://www.your_domain.com/merlin/listing-showcase.zip',
'import_redux' => array(
array(
'file_url' => 'http://www.your_domain.com/merlin/redux_options2.json',
'option_name' => 'redux_option_name2',
),
),
'import_preview_image_url' => 'http://contempothemes.com/wp-real-estate-7/multi-demo/wp-content/plugins/aqua-style-switcher/images/screenshots/vaca-slider-screenshot.jpg',
'import_notice' => __( 'A special note for this import.', 'your-textdomain' ),
'preview_url' => 'http://contempothemes.com/wp-real-estate-7/vacation-rentals-demo',
),
@richtabor @capuderg @primozcigler The loading icon is great for quick imports but when you're dealing with larger ones it gives the user no idea of where they're really at, which is just plain bad for UX. I think adding a nice progress bar or percentage on each of the items "Content", "Widgets", "Sliders", etc…example:
[28-Feb-2018 14:13:51 UTC] PHP Notice: Undefined index: selected_index in
\merlin\merlin.php on line 1349
[28-Feb-2018 14:14:00 UTC] PHP Notice: Undefined index: selected_index in
\merlin\merlin.php on line 1349
[28-Feb-2018 14:14:00 UTC] PHP Deprecated: Non-static method Merlin_Widget_Importer::unset_default_widgets() should not be called statically in
\merlin\includes\class-merlin-widget-importer.php on line 23
[28-Feb-2018 14:14:00 UTC] PHP Warning: Missing argument 2 for add_action(), called in \merlin\vendor\proteusthemes\wp-content-importer-v2\src\Importer.php on line 516 and defined in \wp-includes\plugin.php on line 398
[28-Feb-2018 14:14:00 UTC] PHP Notice: Undefined variable: function_to_add in \wp-includes\plugin.php on line 399
p.s. Merlin configure to import 3 local demo
p.p.s. test on php 7 apache OpenServer
PHP Fatal error: Uncaught Error: Class 'ProteusThemes\WPContentImporter2\Importer' not found in \wp-content\themes\itcode\inc\merlin\merlin.php
Hi.
Just checking out Merlin (good name by the way since it is very magical like :D), which seems rather awesome and insightful of you as the Wordpress onboarding process, I agree lacks much actual "onboarding" from Wordpress itself and/or with the use of multiple other plugins.
In just getting started, I was hoping that the paths were a little more white labelish, meaning not needing to have the actual merlin
directory in my theme. The wording of merlin
is not consistent with my theme's folder naming. So all seems well with the very small adjustment in the screenshots below.
Thought I would mention and suggest, if you feel fit for the context of your plugin. Thank you! And cheers to forward success of your magical like ideas and solutions. #Salute
Hey @capuderg, licensing looks great.
There's just one bit I'm running into while trying to implement a filter for the license activation. Essentially, I have my theme license options setup a bit different, under one option, as such:
Here's a gist of what I'm trying to implement, though I'm running into a TypeError: null is not an object (evaluating 'r.success')
JS error upon trying to activate a license.
Am I approaching this wrong? I'd appreciate any insights!
Hi,
Let the developer add multiple demos so user can select which demo he wants to import.
Thanks
Is it possible to add an uncheck Media option to the Import Content panel?
Not sure if i have missed a setting within merlin. But when testing merlinwp in my theme the options import goes red and i'm unable to see what could be causing the issue, is there a way to log when the import fails?
There are still few instances where the formatting can be improved to meet PHPCS + WP coding standards properly.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.