diff --git a/omega-web/src/coffee/popup.coffee b/omega-web/src/coffee/popup.coffee index 3d43933..e91cf4f 100644 --- a/omega-web/src/coffee/popup.coffee +++ b/omega-web/src/coffee/popup.coffee @@ -263,19 +263,42 @@ module.controller 'PopupCtrl', ($scope, $window, $q, omegaTarget, omegaTarget.state('currentProfileCanAddRule') ).then (value) -> $scope.currentProfileCanAddRule = value - if $scope.currentProfileCanAddRule - currentDomain = $scope.currentDomain - currentDomainEscaped = currentDomain.replace('.', '\\.') + + $scope.prepareConditionForm = -> + currentDomain = $scope.currentDomain + currentDomainEscaped = currentDomain.replace(/\./g, '\\.') + domainLooksLikeIp = false + if currentDomain.indexOf(':') >= 0 + domainLooksLikeIp = true + if currentDomain[0] != '[' + currentDomain = '[' + currentDomain + ']' + currentDomainEscaped = currentDomain.replace(/\./g, '\\.') + .replace(/\[/g, '\\[').replace(/\]/g, '\\]') + else if currentDomain[currentDomain.length - 1] >= 0 + domainLooksLikeIp = true + + if domainLooksLikeIp + conditionSuggestion = + 'HostWildcardCondition': currentDomain + 'HostRegexCondition': '^' + currentDomainEscaped + '$' + 'UrlWildcardCondition': '*://' + currentDomain + '/*' + 'UrlRegexCondition': '://' + currentDomainEscaped + '(:\\d+)?/' + 'KeywordCondition': currentDomain + else conditionSuggestion = 'HostWildcardCondition': '*.' + currentDomain 'HostRegexCondition': '(^|\\.)' + currentDomainEscaped + '$' 'UrlWildcardCondition': '*://*.' + currentDomain + '/*' - 'UrlRegexCondition': '://([^/.]+\\.)*' + currentDomainEscaped + '/' + 'UrlRegexCondition': + '://([^/.]+\\.)*' + currentDomainEscaped + '(:\\d+)?/' 'KeywordCondition': currentDomain - $scope.rule = - condition: - conditionType: 'HostWildcardCondition' - pattern: conditionSuggestion['HostWildcardCondition'] - profileName: preselectedProfileNameForCondition - $scope.$watch 'rule.condition.conditionType', (type) -> - $scope.rule.condition.pattern = conditionSuggestion[type] + + $scope.rule = + condition: + conditionType: 'HostWildcardCondition' + pattern: conditionSuggestion['HostWildcardCondition'] + profileName: preselectedProfileNameForCondition + $scope.$watch 'rule.condition.conditionType', (type) -> + $scope.rule.condition.pattern = conditionSuggestion[type] + + $scope.showConditionForm = true diff --git a/omega-web/src/popup.jade b/omega-web/src/popup.jade index 7673c0e..543ba2c 100644 --- a/omega-web/src/popup.jade +++ b/omega-web/src/popup.jade @@ -59,7 +59,7 @@ html(lang='en' ng-app='omegaPopup' ng-controller='PopupCtrl' ng-csp) span(omega-profile-inline='p' options='availableProfiles' disp-name='dispNameFilter') li.divider(ng-show='!!currentDomain && validResultProfiles.length') li(ng-show='!!currentProfileCanAddRule') - a(href='#' role='button' ng-click='showConditionForm = true' data-shortcut='addRule') + a(href='#' role='button' ng-click='prepareConditionForm()' data-shortcut='addRule') span.glyphicon.glyphicon-plus = ' ' span {{'popup_addCondition' | tr}}