/* * Copyright (c) 2014 * * This file is licensed under the Affero General Public License version 3 * or later. * * See the COPYING-README file. * */ (function(OC, OCA, $) { "use strict"; /** * Construct a new FileActions instance * @constructs Files */ var Comment = function() { this.initialize(); }; Comment.prototype = { fileList: null, /** * Initialize the file search */ initialize: function() { var self = this; this.fileAppLoaded = function() { return !!OCA.Files && !!OCA.Files.App; }; function inFileList($row, result) { return false; if (! self.fileAppLoaded()) { return false; } var dir = self.fileList.getCurrentDirectory().replace(/\/+$/,''); var resultDir = OC.dirname(result.path); return dir === resultDir && self.fileList.inList(result.name); } function hideNoFilterResults() { var $nofilterresults = $('.nofilterresults'); if ( ! $nofilterresults.hasClass('hidden') ) { $nofilterresults.addClass('hidden'); } } /** * * @param {jQuery} $row * @param {Object} result * @param {int} result.id * @param {string} result.comment * @param {string} result.authorId * @param {string} result.authorName * @param {string} result.link * @param {string} result.fileName * @param {string} result.path * @returns {*} */ this.renderCommentResult = function($row, result) { if (inFileList($row, result)) { return null; } hideNoFilterResults(); /*render preview icon, show path beneath filename, show size and last modified date on the right */ this.updateLegacyMimetype(result); var $pathDiv = $('
').addClass('path').text(result.path); var $avatar = $('
'); $avatar.addClass('avatar') .css('display', 'inline-block') .css('vertical-align', 'middle') .css('margin', '0 5px 2px 3px'); if (result.authorName) { $avatar.avatar(result.authorId, 21, undefined, false, undefined, result.authorName); } else { $avatar.avatar(result.authorId, 21); } $row.find('td.info div.name').after($pathDiv).text(result.comment).prepend($('').addClass('path').css('margin-right', '5px').text(result.authorName)).prepend($avatar); $row.find('td.result a').attr('href', result.link); $row.find('td.icon') .css('background-image', 'url(' + OC.imagePath('core', 'actions/comment') + ')') .css('opacity', '.4'); var dir = OC.dirname(result.path); // "result.path" does not include a leading "/", so "OC.dirname" // returns the path itself for files or folders in the root. if (dir === result.path) { dir = '/'; } $row.find('td.info a').attr('href', OC.generateUrl('/apps/files/?dir={dir}&scrollto={scrollto}', {dir: dir, scrollto: result.fileName}) ); return $row; }; this.handleCommentClick = function($row, result, event) { if (self.fileAppLoaded() && self.fileList.id === 'files') { self.fileList.changeDirectory(OC.dirname(result.path)); self.fileList.scrollTo(result.name); return false; } else { return true; } }; this.updateLegacyMimetype = function (result) { // backward compatibility: if (!result.mime && result.mime_type) { result.mime = result.mime_type; } }; this.setFileList = function (fileList) { this.fileList = fileList; }; OC.Plugins.register('OCA.Search.Core', this); }, attach: function(search) { search.setRenderer('comment', this.renderCommentResult.bind(this)); search.setHandler('comment', this.handleCommentClick.bind(this)); } }; OCA.Search.comment = new Comment(); })(OC, OCA, $);