<!--
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="../../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-project-access">
  <template>
    <style include="shared-styles">
      .gwtLink {
        margin-bottom: 1em;
      }
      .gwtLink {
        display: none;
      }
      .admin .gwtLink {
        display: block;
      }
    </style>
    <style include="gr-menu-page-styles"></style>
    <main class$="[[_computeAdminClass(_isAdmin)]]">
      <div class="gwtLink">This is currently in read only mode.  To modify content, go to the
        <a href$="[[computeGwtUrl(path)]]" rel="external">Old UI</a>
      </div>
      <template is="dom-if" if="[[_inheritsFrom]]">
        <h3 id="inheritsFrom">Rights Inherit From
          <a href$="[[_computeParentHref(_inheritsFrom.name)]]" rel="noopener">
              [[_inheritsFrom.name]]</a>
        </h3>
      </template>
      <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>
    </main>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-project-access.js"></script>
</dom-module>
