Skip to content

Commit 84fd83e

Browse files
committed
Merge branch 'nb74dev'
2 parents 41c4c38 + 872004b commit 84fd83e

29 files changed

Lines changed: 1948 additions & 92 deletions

README.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ This is NetBeans plugin for WordPress.
1717
- create new theme action
1818
- hyperlink navigate
1919
- create new plugin action
20+
- custom content name
21+
- run command (wp-cli)
2022

2123
### Impotant Files
2224
It contains wp-config.php
@@ -26,9 +28,14 @@ You can create a new WordPress project with Wizard.
2628

2729
1. set Tools > Options > PHP > WordPress > download url(e.g. http://wordpress.org/latest.zip) or local file path(e.g. /path/to/wordpress.zip)
2830
2. check New Project > PHP > PHP Application > ... > Framework > WordPress PHP Web Blog/CMS
29-
3. choose options
31+
3. select options (url / local file / wp-cli)
3032
4. finish
3133

34+
### Custome Content Name
35+
36+
If you want to use custom content name(default is `wp-content`), please set your content name to the project properties.
37+
(project properties > Framework > WordPress)
38+
3239
#### options
3340
- Set format to project : set format option to project.properties
3441
- create wp-config.php : copy from wp-config-sample.php
@@ -86,13 +93,28 @@ This is very simple feature.
8693
- add main plugin file (plugins/plugin_name/plugin_name.php)
8794
- add readme file (plugins/plugin_name/readme.txt)
8895

89-
### Hyperlink Navigate
96+
### Hyperlink Navigation
9097
This feature is available the followings:
9198
- add_filter, remove_filter
9299
- add_action, remove_action
93100

94101
Hold down Ctrl key on first or second parameter. If text color is changed to blue, Click there.
95102
Then caret position go to function. (first parameter is available when there are the same function names as parameter name : in this case, caret doesn't necessarily go to right position)
96103

104+
### Run Command
105+
106+
We can run wp-cli commands. *Please notice that this action needs so much time to get command list at first time.*
107+
108+
1. Set wp-cli script path to Options. Tools > Options > PHP > WordPress
109+
2. Select WordPress Project node
110+
3. Right-click > WordPress > RunCommand...
111+
112+
#### wp-cli
113+
114+
Please see the followings:
115+
116+
- https://github.com/wp-cli/wp-cli
117+
- http://wp-cli.org/
118+
97119
## License
98120
[Common Development and Distribution License (CDDL) v1.0 and GNU General Public License (GPL) v2](http://netbeans.org/cddl-gplv2.html)

manifest.mf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ Manifest-Version: 1.0
22
OpenIDE-Module: org.netbeans.modules.php.wordpress
33
OpenIDE-Module-Layer: org/netbeans/modules/php/wordpress/resources/layer.xml
44
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/php/wordpress/Bundle.properties
5-
OpenIDE-Module-Specification-Version: 0.4.8
5+
OpenIDE-Module-Specification-Version: 0.6.0
66

nbproject/genfiles.properties

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
build.xml.data.CRC32=69bd7669
1+
build.xml.data.CRC32=c16cf6ec
22
build.xml.script.CRC32=f6cbff90
3-
build.xml.stylesheet.CRC32=a56c6a5b@2.56.1
3+
build.xml.stylesheet.CRC32=a56c6a5b@2.62.1
44
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
55
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
6-
nbproject/build-impl.xml.data.CRC32=69bd7669
6+
nbproject/build-impl.xml.data.CRC32=c16cf6ec
77
nbproject/build-impl.xml.script.CRC32=bfa38a5f
8-
nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.56.1
8+
nbproject/build-impl.xml.stylesheet.CRC32=238281d1@2.62.1

nbproject/platform.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ cluster.path=\
77
${nbplatform.active.dir}/ide:\
88
${nbplatform.active.dir}/apisupport:\
99
${nbplatform.active.dir}/nb:\
10+
${nbplatform.active.dir}/webcommon:\
1011
${nbplatform.active.dir}/java
1112
nbjdk.active=default
1213
nbplatform.active=default

nbproject/project.xml

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,15 @@
6969
<specification-version>1.29.1</specification-version>
7070
</run-dependency>
7171
</dependency>
72+
<dependency>
73+
<code-name-base>org.netbeans.modules.extexecution</code-name-base>
74+
<build-prerequisite/>
75+
<compile-dependency/>
76+
<run-dependency>
77+
<release-version>2</release-version>
78+
<specification-version>1.39.1</specification-version>
79+
</run-dependency>
80+
</dependency>
7281
<dependency>
7382
<code-name-base>org.netbeans.modules.lexer</code-name-base>
7483
<build-prerequisite/>
@@ -102,7 +111,16 @@
102111
<compile-dependency/>
103112
<run-dependency>
104113
<release-version>0</release-version>
105-
<implementation-version/>
114+
<specification-version>0.15.1</specification-version>
115+
</run-dependency>
116+
</dependency>
117+
<dependency>
118+
<code-name-base>org.netbeans.modules.php.api.executable</code-name-base>
119+
<build-prerequisite/>
120+
<compile-dependency/>
121+
<run-dependency>
122+
<release-version>0-1</release-version>
123+
<specification-version>0.19.1</specification-version>
106124
</run-dependency>
107125
</dependency>
108126
<dependency>
@@ -111,15 +129,15 @@
111129
<compile-dependency/>
112130
<run-dependency>
113131
<release-version>0</release-version>
114-
<implementation-version/>
132+
<specification-version>0.12.1</specification-version>
115133
</run-dependency>
116134
</dependency>
117135
<dependency>
118136
<code-name-base>org.netbeans.modules.php.api.phpmodule</code-name-base>
119137
<build-prerequisite/>
120138
<compile-dependency/>
121139
<run-dependency>
122-
<implementation-version/>
140+
<specification-version>2.26.1</specification-version>
123141
</run-dependency>
124142
</dependency>
125143
<dependency>
@@ -180,6 +198,14 @@
180198
<specification-version>8.5.1</specification-version>
181199
</run-dependency>
182200
</dependency>
201+
<dependency>
202+
<code-name-base>org.openide.io</code-name-base>
203+
<build-prerequisite/>
204+
<compile-dependency/>
205+
<run-dependency>
206+
<specification-version>1.42.1</specification-version>
207+
</run-dependency>
208+
</dependency>
183209
<dependency>
184210
<code-name-base>org.openide.loaders</code-name-base>
185211
<build-prerequisite/>

src/org/netbeans/modules/php/wordpress/WordPressActionsExtender.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,15 @@
4444
import java.util.ArrayList;
4545
import java.util.List;
4646
import javax.swing.Action;
47+
import org.netbeans.modules.php.api.util.StringUtils;
4748
import org.netbeans.modules.php.spi.framework.PhpModuleActionsExtender;
49+
import org.netbeans.modules.php.spi.framework.actions.RunCommandAction;
50+
import org.netbeans.modules.php.wordpress.commands.WordPressCli;
4851
import org.netbeans.modules.php.wordpress.ui.actions.CodeCompletionRefreshAction;
4952
import org.netbeans.modules.php.wordpress.ui.actions.CreatePluginAction;
5053
import org.netbeans.modules.php.wordpress.ui.actions.CreateThemeAction;
54+
import org.netbeans.modules.php.wordpress.ui.actions.WordPressRunCommandAction;
55+
import org.netbeans.modules.php.wordpress.ui.options.WordPressOptions;
5156
import org.openide.util.NbBundle;
5257

5358
/**
@@ -62,6 +67,20 @@ public String getMenuName() {
6267
return Bundle.LBL_MenuName();
6368
}
6469

70+
@Override
71+
public RunCommandAction getRunCommandAction() {
72+
// If wp-cli path is invalid, run command action is not added to context menu.
73+
String wpCliPath = WordPressOptions.getInstance().getWpCliPath();
74+
if (StringUtils.isEmpty(wpCliPath)) {
75+
return null;
76+
}
77+
String error = WordPressCli.validate(wpCliPath);
78+
if (error != null) {
79+
return null;
80+
}
81+
return WordPressRunCommandAction.getInstance();
82+
}
83+
6584
@Override
6685
public List<? extends Action> getActions() {
6786
List<Action> actions = new ArrayList<Action>();

src/org/netbeans/modules/php/wordpress/WordPressPhpModuleExtender.java

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,15 @@
5252
import java.net.URL;
5353
import java.net.URLConnection;
5454
import java.util.ArrayList;
55+
import java.util.Collections;
5556
import java.util.HashMap;
5657
import java.util.HashSet;
5758
import java.util.List;
5859
import java.util.Locale;
5960
import java.util.Map;
6061
import java.util.Set;
62+
import java.util.concurrent.ExecutionException;
63+
import java.util.concurrent.Future;
6164
import java.util.logging.Level;
6265
import java.util.logging.Logger;
6366
import java.util.regex.Matcher;
@@ -66,10 +69,13 @@
6669
import javax.net.ssl.HttpsURLConnection;
6770
import javax.swing.JComponent;
6871
import javax.swing.event.ChangeListener;
72+
import org.netbeans.modules.php.api.executable.InvalidPhpExecutableException;
6973
import org.netbeans.modules.php.api.phpmodule.PhpModule;
7074
import org.netbeans.modules.php.api.util.FileUtils;
7175
import org.netbeans.modules.php.api.util.FileUtils.ZipEntryFilter;
76+
import org.netbeans.modules.php.api.util.StringUtils;
7277
import org.netbeans.modules.php.spi.framework.PhpModuleExtender;
78+
import org.netbeans.modules.php.wordpress.commands.WordPressCli;
7379
import org.netbeans.modules.php.wordpress.preferences.WordPressPreferences;
7480
import org.netbeans.modules.php.wordpress.ui.options.WordPressOptions;
7581
import org.netbeans.modules.php.wordpress.ui.wizards.NewProjectConfigurationPanel;
@@ -187,7 +193,6 @@ public Set<FileObject> extend(PhpModule pm) throws ExtendingException {
187193
panel.setAllEnabled(panel.getWpConfigPanel(), false);
188194

189195
FileObject sourceDirectory = pm.getSourceDirectory();
190-
Set<FileObject> files = new HashSet<FileObject>();
191196
if (panel.useUrl()) {
192197
// url
193198
String urlPath = panel.getUrlLabel();
@@ -197,26 +202,55 @@ public Set<FileObject> extend(PhpModule pm) throws ExtendingException {
197202
} catch (MalformedURLException ex) {
198203
Exceptions.printStackTrace(ex);
199204
} catch (IOException ex) {
200-
Exceptions.printStackTrace(ex);
205+
throw new ExtendingException(ex.getLocalizedMessage());
201206
}
202207
} else if (panel.useLocalFile()) {
203208
// local file
204209
String path = panel.getLocalFileLabel();
205210
try {
206211
FileUtils.unzip(path, FileUtil.toFile(sourceDirectory), new ZipEntryFilterImpl());
207212
} catch (IOException ex) {
208-
Exceptions.printStackTrace(ex);
213+
throw new ExtendingException(ex.getLocalizedMessage());
214+
}
215+
216+
} else if (panel.useWpCli()) {
217+
try {
218+
// params
219+
ArrayList<String> params = new ArrayList<String>(2);
220+
WordPressOptions options = WordPressOptions.getInstance();
221+
String locale = options.getWpCliDownloadLocale();
222+
if (!StringUtils.isEmpty(locale)) {
223+
params.add(String.format(WordPressCli.LOCALE_PARAM, locale));
224+
}
225+
String version = options.getWpCliDownloadVersion();
226+
if (!StringUtils.isEmpty(version)) {
227+
params.add(String.format(WordPressCli.VERSION_PARAM, version));
228+
}
229+
230+
// run
231+
WordPressCli wpCli = WordPressCli.getDefault(false);
232+
Future<Integer> result = wpCli.download(pm, params);
233+
if (result != null) {
234+
result.get();
235+
}
236+
} catch (InvalidPhpExecutableException ex) {
237+
throw new ExtendingException(ex.getLocalizedMessage());
238+
} catch (InterruptedException ex) {
239+
Thread.currentThread().interrupt();
240+
} catch (ExecutionException ex) {
241+
throw new ExtendingException(ex.getLocalizedMessage());
209242
}
210243
} else {
211244
// do nothing
212-
return files;
245+
return Collections.emptySet();
213246
}
214247

215248
// set format
216249
if (panel.useFormatOption()) {
217250
WordPressPreferences.setWordPressFormat(pm);
218251
}
219252

253+
Set<FileObject> files = new HashSet<FileObject>();
220254
if (sourceDirectory != null) {
221255
// create wp-config.php
222256
if (panel.isSelectedCreateConfig()) {

src/org/netbeans/modules/php/wordpress/WordPressPhpProvider.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,14 @@
5252
import org.netbeans.modules.php.spi.editor.EditorExtender;
5353
import org.netbeans.modules.php.spi.framework.PhpFrameworkProvider;
5454
import org.netbeans.modules.php.spi.framework.PhpModuleActionsExtender;
55+
import org.netbeans.modules.php.spi.framework.PhpModuleCustomizerExtender;
5556
import org.netbeans.modules.php.spi.framework.PhpModuleExtender;
5657
import org.netbeans.modules.php.spi.framework.PhpModuleIgnoredFilesExtender;
5758
import org.netbeans.modules.php.spi.framework.commands.FrameworkCommandSupport;
59+
import org.netbeans.modules.php.wordpress.commands.WordPressCommandSupport;
60+
import org.netbeans.modules.php.wordpress.customizer.WordPressCustomizerExtender;
5861
import org.netbeans.modules.php.wordpress.editor.WordPressEditorExtender;
62+
import org.netbeans.modules.php.wordpress.preferences.WordPressPreferences;
5963
import org.openide.filesystems.FileObject;
6064
import org.openide.filesystems.FileUtil;
6165
import org.openide.util.ImageUtilities;
@@ -67,14 +71,13 @@
6771
*/
6872
public class WordPressPhpProvider extends PhpFrameworkProvider {
6973

70-
private static WordPressPhpProvider INSTANCE = new WordPressPhpProvider();
74+
private static final WordPressPhpProvider INSTANCE = new WordPressPhpProvider();
7175
private static final String ICON_PATH = "org/netbeans/modules/php/wordpress/resources/wordpress_badge_8.png"; // NOI18N
7276
private final BadgeIcon badgeIcon;
7377
private static final Set<String> WP_DIRS = new HashSet<String>();
7478

7579
static {
7680
WP_DIRS.add("wp-admin"); // NOI18N
77-
WP_DIRS.add("wp-content"); // NOI18N
7881
WP_DIRS.add("wp-includes"); // NOI18N
7982
}
8083

@@ -110,6 +113,12 @@ public boolean isInPhpModule(PhpModule pm) {
110113
return false;
111114
}
112115
}
116+
117+
// content name
118+
FileObject content = sourceDirectory.getFileObject(WordPressPreferences.getCustomContentName(pm));
119+
if (content == null) {
120+
return false;
121+
}
113122
}
114123
return true;
115124
}
@@ -152,7 +161,12 @@ public PhpModuleIgnoredFilesExtender getIgnoredFilesExtender(PhpModule pm) {
152161

153162
@Override
154163
public FrameworkCommandSupport getFrameworkCommandSupport(PhpModule pm) {
155-
return null;
164+
return new WordPressCommandSupport(pm);
165+
}
166+
167+
@Override
168+
public PhpModuleCustomizerExtender createPhpModuleCustomizerExtender(PhpModule phpModule) {
169+
return new WordPressCustomizerExtender(phpModule);
156170
}
157171

158172
@Override

0 commit comments

Comments
 (0)