diff --git a/apps/files/js/newfilemenu.js b/apps/files/js/newfilemenu.js
index 0a67aba202bc3a2c1517d3c97a7ea8ab8044053a..175eb1d1a75ccb80a87bb6b9c838927fd677b5d0 100644
--- a/apps/files/js/newfilemenu.js
+++ b/apps/files/js/newfilemenu.js
@@ -56,6 +56,28 @@
 			}
 
 			this._fileList = options && options.fileList;
+
+			this._menuItems = [{
+				id: 'file',
+				displayName: t('files', 'Text file'),
+				templateName: t('files', 'New text file.txt'),
+				iconClass: 'icon-filetype-text',
+				fileType: 'file',
+				actionHandler: function(name) {
+					self._fileList.createFile(name);
+				}
+		        }, {
+				id: 'folder',
+				displayName: t('files', 'Folder'),
+				templateName: t('files', 'New folder'),
+				iconClass: 'icon-folder',
+				fileType: 'folder',
+				actionHandler: function(name) {
+					self._fileList.createDirectory(name);
+				}
+		        }];
+
+			OC.Plugins.attach('OCA.Files.NewFileMenu', this);
 		},
 
 		template: function(data) {
@@ -163,7 +185,14 @@
 
 				if (checkInput()) {
 					var newname = $input.val();
-					self._createFile(fileType, newname);
+
+					/* Find the right actionHandler that should be called.
+					 * Actions is retrieved by using `actionSpec.id` */
+					action = _.filter(self._menuItems, function(item) {
+						return item.id == $target.attr('data-action');
+					}).pop();
+					action.actionHandler(newname);
+
 					$form.remove();
 					$target.find('.displayname').removeClass('hidden');
 					OC.hideMenus();
@@ -172,23 +201,21 @@
 		},
 
 		/**
-		 * Creates a file with the given type and name.
-		 * This calls the matching methods on the attached file list.
-		 *
-		 * @param {string} fileType file type
-		 * @param {string} name file name
-		 */
-		_createFile: function(fileType, name) {
-			switch(fileType) {
-				case 'file':
-					this._fileList.createFile(name);
-					break;
-				case 'folder':
-					this._fileList.createDirectory(name);
-					break;
-				default:
-					console.warn('Unknown file type "' + fileType + '"');
-			}
+		* Add a new item menu entry in the “New” file menu (in
+		* last position). By clicking on the item, the
+		* `actionHandler` function is called.
+		*
+		* @param {Object} actionSpec item’s properties
+		*/
+		addMenuEntry: function(actionSpec) {
+			this._menuItems.push({
+				id: actionSpec.id,
+				displayName: actionSpec.displayName,
+				templateName: actionSpec.templateName,
+				iconClass: actionSpec.iconClass,
+				fileType: actionSpec.fileType,
+				actionHandler: actionSpec.actionHandler,
+		        });
 		},
 
 		/**
@@ -198,19 +225,7 @@
 			this.$el.html(this.template({
 				uploadMaxHumanFileSize: 'TODO',
 				uploadLabel: t('files', 'Upload'),
-				items: [{
-					id: 'file',
-					displayName: t('files', 'Text file'),
-					templateName: t('files', 'New text file.txt'),
-					iconClass: 'icon-filetype-text',
-					fileType: 'file'
-				}, {
-					id: 'folder',
-					displayName: t('files', 'Folder'),
-					templateName: t('files', 'New folder'),
-					iconClass: 'icon-folder',
-					fileType: 'folder'
-				}]
+				items: this._menuItems
 			}));
 			OC.Util.scaleFixForIE8(this.$('.svg'));
 		},