Merge pull request #618 from pelmers/channel_link
Re-implement click to join functionality.
This commit is contained in:
commit
e167bdd112
3 changed files with 12 additions and 7 deletions
|
@ -24,7 +24,7 @@ weechat.filter('toArray', function () {
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
weechat.filter('irclinky', ['$filter', function($filter) {
|
weechat.filter('irclinky', function() {
|
||||||
return function(text) {
|
return function(text) {
|
||||||
if (!text) {
|
if (!text) {
|
||||||
return text;
|
return text;
|
||||||
|
@ -36,12 +36,12 @@ weechat.filter('irclinky', ['$filter', function($filter) {
|
||||||
// "#1" is much more likely to be "number 1" than "IRC channel #1".
|
// "#1" is much more likely to be "number 1" than "IRC channel #1".
|
||||||
// Thus, we only match channels beginning with a # and having at least one letter in them.
|
// Thus, we only match channels beginning with a # and having at least one letter in them.
|
||||||
var channelRegex = /(^|[\s,.:;?!"'()+@-\~%])(#+[^\x00\x07\r\n\s,:]*[a-z][^\x00\x07\r\n\s,:]*)/gmi;
|
var channelRegex = /(^|[\s,.:;?!"'()+@-\~%])(#+[^\x00\x07\r\n\s,:]*[a-z][^\x00\x07\r\n\s,:]*)/gmi;
|
||||||
// This is SUPER nasty, but ng-click does not work inside a filter, as the markup has to be $compiled first, which is not possible in filter afaik.
|
// Call the method we bound to window.openBuffer when we instantiated
|
||||||
// Therefore, get the scope, fire the method, and $apply. Yuck. I sincerely hope someone finds a better way of doing this.
|
// the Weechat controller.
|
||||||
var substitute = '$1<a href="#" onclick="var $scope = angular.element(event.target).scope(); $scope.openBuffer(\'$2\'); $scope.$apply();">$2</a>';
|
var substitute = '$1<a href="#" onclick="openBuffer(\'$2\');">$2</a>';
|
||||||
return text.replace(channelRegex, substitute);
|
return text.replace(channelRegex, substitute);
|
||||||
};
|
};
|
||||||
}]);
|
});
|
||||||
|
|
||||||
weechat.filter('inlinecolour', function() {
|
weechat.filter('inlinecolour', function() {
|
||||||
return function(text) {
|
return function(text) {
|
||||||
|
|
|
@ -15,6 +15,11 @@ weechat.config(['$compileProvider', function ($compileProvider) {
|
||||||
weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', '$log', 'models', 'connection', 'notifications', 'utils', 'settings',
|
weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', '$log', 'models', 'connection', 'notifications', 'utils', 'settings',
|
||||||
function ($rootScope, $scope, $store, $timeout, $log, models, connection, notifications, utils, settings) {
|
function ($rootScope, $scope, $store, $timeout, $log, models, connection, notifications, utils, settings) {
|
||||||
|
|
||||||
|
window.openBuffer = function(channel) {
|
||||||
|
$scope.openBuffer(channel);
|
||||||
|
$scope.$apply();
|
||||||
|
};
|
||||||
|
|
||||||
$scope.command = '';
|
$scope.command = '';
|
||||||
$scope.themes = ['dark', 'light'];
|
$scope.themes = ['dark', 'light'];
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,11 @@ describe('Filters', function() {
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should linkify IRC channels', inject(function(irclinkyFilter) {
|
it('should linkify IRC channels', inject(function(irclinkyFilter) {
|
||||||
expect(irclinkyFilter('#foo')).toEqual('<a href="#" onclick="var $scope = angular.element(event.target).scope(); $scope.openBuffer(\'#foo\'); $scope.$apply();">#foo</a>');
|
expect(irclinkyFilter('#foo')).toEqual('<a href="#" onclick="openBuffer(\'#foo\');">#foo</a>');
|
||||||
}));
|
}));
|
||||||
|
|
||||||
it('should not mess up IRC channels surrounded by HTML entities', inject(function(irclinkyFilter) {
|
it('should not mess up IRC channels surrounded by HTML entities', inject(function(irclinkyFilter) {
|
||||||
expect(irclinkyFilter('<"#foo">')).toEqual('<"<a href="#" onclick="var $scope = angular.element(event.target).scope(); $scope.openBuffer(\'#foo">\'); $scope.$apply();">#foo"></a>');
|
expect(irclinkyFilter('<"#foo">')).toEqual('<"<a href="#" onclick="openBuffer(\'#foo">\');">#foo"></a>');
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue