patx/gitman

update ux for non pages repos pages settings

Commit 0892b99 · patx · 2026-05-05T23:28:23-04:00

Changeset
0892b9958edbf83e733ca111e68dcf0038c22e23
Parents
e28d4c5f5dd3fe607181f8bacc75c36ca233c390

View source at this commit

Comments

No comments yet.

Log in to comment

Diff

diff --git a/templates/repo_settings.tpl b/templates/repo_settings.tpl
index 39c595b..150cc49 100644
--- a/templates/repo_settings.tpl
+++ b/templates/repo_settings.tpl
@@ -27,14 +27,20 @@
   <h2>Pages</h2>
   <p class="muted">Pages URL: <a href="{{pages_settings['url']}}">{{pages_settings["url"]}}</a></p>
   % if pages_settings["docs_publishable"]:
-    <form method="post">
+    <form class="panel-heading" method="post">
       {{!csrf_field()}}
       <input type="hidden" name="action" value="update_pages">
-      <label>
-        <input type="checkbox" name="pages_docs_enabled" value="1"{{" checked" if pages_settings["docs_enabled"] else ""}}>
-        Publish this repository's docs/ directory at {{pages_settings["url"]}}
-      </label>
-      <button class="button" type="submit">Save Pages settings</button>
+      <input type="hidden" name="pages_docs_enabled" value="{{0 if pages_settings['docs_enabled'] else 1}}">
+      <div>
+        % if pages_settings["docs_enabled"]:
+          <p><strong>Published</strong></p>
+          <p class="muted">This repository's docs/ directory is published at {{pages_settings["url"]}}.</p>
+        % else:
+          <p><strong>Not published</strong></p>
+          <p class="muted">Publish this repository's docs/ directory at {{pages_settings["url"]}}.</p>
+        % end
+      </div>
+      <button class="button" type="submit">{{"Unpublish Pages" if pages_settings["docs_enabled"] else "Publish Pages"}}</button>
     </form>
   % else:
     <p>Push static site files to this repository root to publish the user Pages site.</p>
diff --git a/tests/test_app.py b/tests/test_app.py
index d8743ce..322a998 100644
--- a/tests/test_app.py
+++ b/tests/test_app.py
@@ -793,10 +793,15 @@ def test_pages_host_serves_user_site_and_enabled_project_docs(isolated_app):
     settings_response = client.get("/alice/project/settings")
     assert settings_response.status_code == 200
     assert "Publish this repository" in settings_response.text
+    assert 'type="checkbox"' not in settings_response.text
+    assert 'name="pages_docs_enabled" value="1"' in settings_response.text
+    assert "Publish Pages" in settings_response.text
 
     response = client.post("/alice/project/settings", {"action": "update_pages", "pages_docs_enabled": "1"})
     assert response.status_code == 200
     assert "Pages settings updated." in response.text
+    assert 'name="pages_docs_enabled" value="0"' in response.text
+    assert "Unpublish Pages" in response.text
 
     response = client.get("/project/", headers={"Host": "alice.gitman.io"})
     assert response.status_code == 200