137 lines
12 KiB
HTML
137 lines
12 KiB
HTML
<!DOCTYPE html>
|
|
<!--
|
|
Copyright 2017 The SwitchyOmega Authors. Please see the AUTHORS file
|
|
for details.
|
|
|
|
This file is part of SwitchyOmega.
|
|
|
|
SwitchyOmega is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
SwitchyOmega is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with SwitchyOmega. If not, see <http://www.gnu.org/licenses/>.
|
|
-->
|
|
<html lang="en" ng-app="omegaPopup" ng-controller="PopupCtrl" ng-csp>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>{{'popup_title' | tr}} (Zer​oOmega)</title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
|
<link rel="stylesheet" href="lib/bootstrap/css/bootstrap.min.css">
|
|
<link rel="stylesheet" href="css/popup.css">
|
|
<style class="om-style">{{customCss}}</style>
|
|
</head>
|
|
<body ng-class="{"with-condition-form": showConditionForm}">
|
|
<ul ng-hide="showConditionForm || proxyNotControllable || showRequestInfo" class="popup-menu-nav nav nav-pills nav-stacked">
|
|
<li ng-repeat="profile in builtinProfiles" ng-class="{active: isActive(profile.name), "bg-info": isEffective(profile.name)}" class="profile"><a href="#" role="button" ng-attr-tabindex="{{100 + $index}}" ng-click="applyProfile(profile)" title="{{getProfileTitle(profile)}}" data-shortcut="+{{profile.name}}"><span omega-profile-inline="profile" icon="getIcon(profile)" options="availableProfiles" disp-name="dispNameFilter"></span></a></li>
|
|
<li ng-show="!requestInfoProvided && !!externalProfile" ng-class="{active: isActive(""), "bg-info": isEffective("")}" class="profile external-profile"><a href="#" role="button" ng-click="nameExternal.open = true" title="{{getProfileTitle(externalProfile)}}" data-shortcut="external">
|
|
<form name="nameExternalForm" ng-submit="nameExternalForm.$valid && saveExternal()"><span omega-profile-icon="externalProfile" icon="getIcon(externalProfile, "normal")" options="availableProfiles" disp-name="dispNameFilter"></span> <span ng-show="!nameExternal.open">{{'popup_externalProfile' | tr}}</span>
|
|
<input ng-show="!!nameExternal.open" ng-model="externalProfile.name" ng-blur="nameExternalForm.$valid && saveExternal()" placeholder="{{"popup_externalProfileName" | tr}}" ui-validate="validateProfileName" autofocus class="form-control">
|
|
</form></a></li>
|
|
<li ng-show="!!requestInfoProvided" class="request-info bg-warning"><a href="#" role="button" ng-click="showRequestInfo = true" data-shortcut="requestInfo"><span class="glyphicon glyphicon-warning-sign text-warning"></span> {{'popup_requestErrorCount' | tr:[requestInfo.errorCount]}}</a></li>
|
|
<li class="divider"></li>
|
|
<li ng-repeat="profile in customProfiles" ng-class="{active: isActive(profile.name), "bg-info": isEffective(profile.name)}" dropdown class="profile custom-profile"><a href="#" role="button" ng-click="applyProfile(profile)" ng-if="!profile.validResultProfiles" title="{{getProfileTitle(profile)}}"><span omega-profile-inline="profile" icon="getIcon(profile)" options="availableProfiles" disp-name="dispNameFilter"></span></a><a href="#" role="button" ng-click="applyProfile(profile)" ng-if="!!profile.validResultProfiles" title="{{getProfileTitle(profile)}}" class="profile-with-default-edit"><span omega-profile-inline="profile" icon="getIcon(profile)" options="availableProfiles" disp-name="dispNameFilter"></span> [{{profile.defaultProfileName}}]
|
|
<button role="button" dropdown-toggle href="#" ng-click="$event.stopPropagation()" class="dropdown-toggle btn btn-default"><span class="glyphicon glyphicon-chevron-down"></span></button></a>
|
|
<ul ng-if="!!profile.validResultProfiles" class="dropdown-menu">
|
|
<li ng-repeat="p in profile.validResultProfiles" ng-class="{active: p.name == profile.defaultProfileName}"><a href="#" role="button" ng-click="setDefaultProfile(profile.name, p.name)" title="{{getProfileTitle(profile)}}"><span omega-profile-inline="p" options="availableProfiles" disp-name="dispNameFilter"></span></a></li>
|
|
</ul>
|
|
</li>
|
|
<li ng-show="!!currentDomain && validResultProfiles.length" class="divider"></li>
|
|
<li ng-show="!!currentProfileCanAddRule && !!currentDomain"><a href="#" role="button" ng-click="prepareConditionForm()" data-shortcut="addRule"><span class="glyphicon glyphicon-plus"></span> <span>{{'popup_addCondition' | tr}}</span></a></li>
|
|
<li ng-show="!!currentDomain && validResultProfiles.length" dropdown is-open="tempRuleMenu.open"><a href="#" role="button" dropdown-toggle data-shortcut="tempRule" class="dropdown-toggle"><span class="glyphicon glyphicon-filter"></span> <span class="current-domain">{{currentDomain}}</span><span class="caret"></span></a>
|
|
<ul class="dropdown-menu">
|
|
<li ng-repeat="profile in validResultProfiles" ng-class="{active: profile.name == currentTempRuleProfile}" ng-show="!!currentTempRuleProfile || validResultProfiles.length == 1 || profile.name != currentProfileName"><a href="#" role="button" ng-click="addTempRule(currentDomain, profile.name)" title="{{getProfileTitle(profile)}}"><span omega-profile-inline="profile" options="availableProfiles" disp-name="dispNameFilter"></span></a></li>
|
|
</ul>
|
|
</li>
|
|
<li class="divider"></li>
|
|
<li><a href="#" role="button" ng-click="openOptions()" data-shortcut="option"><span class="glyphicon glyphicon-wrench"></span> <span>{{'popup_showOptions' | tr}}</span></a></li>
|
|
</ul>
|
|
<form name="conditionForm" style="display: none;" ng-style="{display: showConditionForm ? "block" : "none"}" ng-submit="addCondition(rule.condition, rule.profileName)" class="condition-form">
|
|
<fieldset>
|
|
<legend>{{'popup_addConditionTo' | tr}} <span class="profile-inline"><span omega-profile-inline="currentProfile" options="availableProfiles" disp-name="dispNameFilter"></span></span>
|
|
</legend>
|
|
<div class="form-group">
|
|
<label>{{'options_conditionType' | tr}}
|
|
<button type="button" ng-click="openConditionHelp()" class="btn btn-link btn-sm clear-padding">{{"options_showConditionTypeHelp" | tr}} <span class="glyphicon glyphicon-new-window"></span>
|
|
</button>
|
|
</label>
|
|
<select ng-model="rule.condition.conditionType" class="form-control">
|
|
<option value="HostWildcardCondition">{{'condition_HostWildcardCondition' | tr}}</option>
|
|
<option value="HostRegexCondition">{{'condition_HostRegexCondition' | tr}}</option>
|
|
<option value="UrlWildcardCondition">{{'condition_UrlWildcardCondition' | tr}}</option>
|
|
<option value="UrlRegexCondition">{{'condition_UrlRegexCondition' | tr}}</option>
|
|
<option value="KeywordCondition">{{'condition_KeywordCondition' | tr}}</option>
|
|
</select>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>{{'options_conditionDetails' | tr}}</label><span class="input-group">
|
|
<input type="text" required ng-model="rule.condition.pattern" autofocus class="form-control condition-details"><span class="input-group-btn">
|
|
<button type="button" ng-click="toggleSubDomainLevel()" class="btn btn-default"><i class="glyphicon glyphicon-transfer"></i></button></span></span>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>{{'options_resultProfile' | tr}}</label>
|
|
<div omega-profile-select="validResultProfiles" ng-model="rule.profileName" disp-name="dispNameFilter" options="availableProfiles"></div>
|
|
</div>
|
|
<div class="condition-controls">
|
|
<button type="button" ng-click="returnToMenu()" class="btn btn-default">{{'dialog_cancel' | tr}}</button>
|
|
<button type="submit" ng-disabled="conditionForm.$invalid" class="btn btn-primary">{{'popup_addCondition' | tr}}</button>
|
|
</div>
|
|
</fieldset>
|
|
</form>
|
|
<div ng-show="proxyNotControllable" class="proxy-not-controllable">
|
|
<p class="text-danger">{{'popup_proxyNotControllable_' + proxyNotControllable | tr}}</p>
|
|
<p class="help-block">{{('popup_proxyNotControllableDetails_' + proxyNotControllable | tr) || ('popup_proxyNotControllableDetails' | tr)}}</p>
|
|
<p class="proxy-not-controllable-controls">
|
|
<button ng-click="closePopup()" class="btn btn-default">{{'dialog_cancel' | tr}}</button>
|
|
<button ng-click="openManage()" class="btn btn-primary">{{'popup_proxyNotControllableManage' | tr}}</button>
|
|
</p>
|
|
</div>
|
|
<div ng-show="showRequestInfo" class="request-info-details"></div>
|
|
<form style="display: none;" ng-style="{display: showRequestInfo ? "block" : "none"}" ng-submit="addConditionForDomains(domainsForCondition, profileForDomains)" class="request-info-details">
|
|
<fieldset>
|
|
<legend ng-show="!!currentProfileCanAddRule">{{'popup_addConditionTo' | tr}} <span class="profile-inline"><span omega-profile-inline="currentProfile" options="availableProfiles" disp-name="dispNameFilter"></span></span>
|
|
</legend>
|
|
<legend ng-show="!currentProfileCanAddRule">{{'popup_requestErrorHeading' | tr}} </legend>
|
|
<div class="text-warning">{{'popup_requestErrorWarning' | tr}}</div>
|
|
<p class="help-block">{{'popup_requestErrorWarningHelp' | tr}}</p>
|
|
<p ng-show="!!currentProfileCanAddRule" class="help-block">{{'popup_requestErrorAddCondition' | tr}} </p>
|
|
<div>
|
|
<button ng-click="toggleSummarDetail($event)" class="btn btn-default btn-xs btn-link"><i class="glyphicon glyphicon-transfer"></i></button>
|
|
<button ng-click="inspectNetworkTraffic($event)" class="btn btn-default btn-xs btn-link"><i class="glyphicon glyphicon-dashboard"></i></button>
|
|
</div>
|
|
<div ng-repeat="domain in requestInfo.domains track by domain.domain" class="checkbox">
|
|
<label>
|
|
<input type="checkbox" ng-model="domainsForCondition[domain.domain]" autofocus ng-if="$index === 0">
|
|
<input type="checkbox" ng-model="domainsForCondition[domain.domain]" ng-if="$index > 0"><span class="label label-warning">{{domain.errorCount}}</span> {{domain.domain}}
|
|
</label>
|
|
</div>
|
|
<div ng-show="!!currentProfileCanAddRule" class="form-group">
|
|
<label>{{'options_resultProfileForSelectedDomains' | tr}}</label>
|
|
<div omega-profile-select="validResultProfiles" ng-model="profileForDomains" disp-name="dispNameFilter" options="availableProfiles"></div>
|
|
</div>
|
|
<p ng-show="!currentProfileCanAddRule" class="help-block">{{'popup_requestErrorCannotAddCondition' | tr}}</p>
|
|
<div class="condition-controls">
|
|
<button type="button" ng-click="returnToMenu()" class="btn btn-default">{{'dialog_cancel' | tr}}</button>
|
|
<button type="button" ng-click="addTempConditionForDomains(domainsForCondition, profileForDomains)" ng-show="!!currentProfileCanAddRule" class="btn btn-default">{{'Add temp condition'}}</button>
|
|
<button type="submit" ng-show="!!currentProfileCanAddRule" class="btn btn-primary">{{'popup_addCondition' | tr}}</button>
|
|
<button type="button" ng-show="!currentProfileCanAddRule" ng-click="openOptions("#!/general")" class="btn btn-default pull-right">{{'popup_configureMonitorWebRequests' | tr}}</button>
|
|
</div>
|
|
</fieldset>
|
|
</form>
|
|
<script src="js/log_error.js"></script>
|
|
<script src="lib/zero-dependencies/iframeResizer/iframeResizer.contentWindow.min.js"></script>
|
|
<script src="lib/jquery/jquery.min.js"></script>
|
|
<script src="lib/angular/angular.min.js"></script>
|
|
<script src="lib/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
|
|
<script src="lib/angular-ui-utils/validate.min.js"></script>
|
|
<script src="js/omega_target_web.js"></script>
|
|
<script src="js/omega_decoration.js"></script>
|
|
<script src="js/popup.js"></script>
|
|
</body>
|
|
</html> |