Custom "Open with" actions

Creating a custom “Open with..” file contextual menu option:

The plugin folder structure

  • Create a new empty folder inside “customizables/custom_actions/”. For this example we'll name it “hello”.
  • Create a file “customizables/custom_actions/hello/app.php”

The PHP class

Inside “customizables/custom_actions/hello/app.php”, start with the following example:

<?php
 
class custom_hello {//required class name "custom_<folder-name>"
 
	var $online = true; //set this to true if the plugin requires Internet connection. it also makes the option show after the plugins that Web File Share comes with.
 
	var $disabled = false; //you can use this or the method bellow
	function isDisabled() {//optional method for dynamically enabling/disabling this plugin
		return false;
	}
 
	function init() {//required method
		//contains only configuration data
		//no other functionality here
 
		$this->JSconfig = array(
			//required
			"title" => self::t("Hello World"),
 
			"popup" => true, //opens a popup and runs the method run() inside
 
				//popup styling
				'iconCls' => 'fa fa-fw fa-file-text-o', //CSS class for menu item icon, remove the bellow if using this
				"icon" => 'url/to/icon.png', //image file for menu item icon, remove the above if using this
				"loadingMsg" => self::t('The plugin is loading. Please wait.'),
				"width" => 500,
				"height" => 500,
 
				"external" => true, //makes the popup an actual browser popup instead of an in-page one
 
			"ajax" => true, //instead of the popup above, it makes an Ajax call for the run() method
 
 
			"multiple" => true, //show menu item also when multiple files are being selected
			"onlyMultiple" => true, //show menu item ONLY when multiple files are being selected
 
			"folder" => true, //show menu item only for folders
 
			'extensions' => [
				'pdf' //show only for PDF files
			],
			'useWith' => [//the above setting takes precedence over this one
				'txt',  //show only for plain text files
				'office', //show only for office files
				'noext' //.. and files without extension
			],
			"requiredUserPerms" => ["download", "upload"]
		);
	}
 
	static function t($text) {//utility method for allowing the plugin to be translated to various languages
		$section = 'Custom Actions: Hello World'; //the translation section
		return \WebFileShare\Lang::t($text, $section);
	}
 
	function run() {//called inside the popup, or by the Ajax request
 
		\WebFileShare::checkPerms("download");//important security stuff!
 
 
		echo 'Hello World!';
		echo '\\';
		echo 'Relative file path: '.$this->data['filePath'];
		echo '\\';
		echo 'Full file path: '.$this->data['fileName'];
		echo '\\';
		echo 'File name: '.$this->data['relativePath'];
		echo '\\';
		echo 'Full path of plugin folder: '.$this->path;
 
 
		//add the action to the user activity log
		\WebFileShare\Log::add(false, "preview", [
			"relative_path" => $this->data['relativePath'],
			"full_path" => $this->data['filePath'],
			"method" => "Hello"
		]);
	}
 
	function dummy() {
		//your popup can access this method through the following URL: ?module=custom_actions&action=hello&method=dummy
	}
}
Attached Files
There are no attachments for this article.
Comments
There are no comments for this article. Be the first to post a comment.
Name
Email
Security Code Security Code
Related Articles RSS Feed
Calculating MD5 Checksums
Viewed 1561 times since Thu, Mar 6, 2014
Counting file downloads
Viewed 2576 times since Thu, Mar 6, 2014
External Login Form
Viewed 1569 times since Wed, Nov 22, 2017
Custom file actions
Viewed 1601 times since Wed, Mar 5, 2014
Automatic Login
Viewed 1286 times since Wed, Nov 22, 2017
File reference
Viewed 1623 times since Tue, Jun 10, 2014
Running custom scripts when users perform various actions
Viewed 2341 times since Thu, Mar 6, 2014
Custom CSS
Viewed 1096 times since Wed, Nov 22, 2017
Translating Web File Share
Viewed 19224 times since Wed, Mar 5, 2014
Adding links to the menu
Viewed 1627 times since Thu, Mar 6, 2014
MENU