<!--
Copyright (C) 2017 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<link rel="import" href="../../../bower_components/polymer/polymer.html">

<link rel="import" href="../../../behaviors/gr-access-behavior/gr-access-behavior.html">
<link rel="import" href="../../../behaviors/base-url-behavior/base-url-behavior.html">
<link rel="import" href="../../../behaviors/gr-url-encoding-behavior.html">

<link rel="import" href="../../../styles/gr-menu-page-styles.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../core/gr-navigation/gr-navigation.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../gr-access-section/gr-access-section.html">

<script src="../../../scripts/util.js"></script>

<dom-module id="gr-repo-access">
  <template>
    <style include="shared-styles">
      gr-button {
        display: none;
      }
      .admin gr-button.visible {
        display: inline-block;
        margin: 1em 0;
      }
      .weblink {
        margin-right: .2em;
      }
      .weblinks {
        display: none;
      }
      .weblinks.show {
        display: block;
      }
    </style>
    <style include="gr-menu-page-styles"></style>
    <main class$="[[_computeAdminClass(_isAdmin, _canUpload)]]">
      <template is="dom-if" if="[[_inheritsFrom]]">
        <h3 id="inheritsFrom">Rights Inherit From
          <a href$="[[_computeParentHref(_inheritsFrom.name)]]" rel="noopener">
              [[_inheritsFrom.name]]</a>
        </h3>
      </template>
      <div class$="weblinks [[_computeWebLinkClass(_weblinks)]]">
        History:
        <template is="dom-repeat" items="[[_weblinks]]" as="link">
          <a href="[[link.url]]" class="weblink" rel="noopener" target="[[link.target]]">
            [[link.name]]
          </a>
        </template>
      </div>
      <gr-button id="editBtn"
          class$="[[_computeShowEditClass(_sections)]]"
          on-tap="_handleEdit">[[_editOrCancel(_editing)]]</gr-button>
      <gr-button id="saveBtn"
          primary
          class$="[[_computeShowSaveClass(_editing)]]"
          on-tap="_handleSaveForReview"
          disabled$="[[!_modified]]">
            Save for review</gr-button>
      <template
          is="dom-repeat"
          items="{{_sections}}"
          as="section">
        <gr-access-section
            capabilities="[[_capabilities]]"
            section="{{section}}"
            labels="[[_labels]]"
            editing="[[_editing]]"
            groups="[[_groups]]"></gr-access-section>
      </template>
      <gr-button id="addReferenceBtn"
          class$="[[_computeShowSaveClass(_editing)]]"
          on-tap="_handleCreateSection">Add Reference</gr-button>
    </main>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-repo-access.js"></script>
</dom-module>
