Project import generated by Copybara.
GitOrigin-RevId: d9e9e3fb4e31372ec1fb43b178994ca78fa8fe70
diff --git a/templates/sitewide/project-create-page.ezt b/templates/sitewide/project-create-page.ezt
new file mode 100644
index 0000000..9bcb447
--- /dev/null
+++ b/templates/sitewide/project-create-page.ezt
@@ -0,0 +1,117 @@
+[define category_css]css/ph_detail.css[end]
+[include "../framework/header.ezt" "hidetabs"]
+
+<h2>Create a new project</h2>
+
+[if-any read_only][include "../framework/read-only-rejection.ezt"]
+[else]
+
+<form action="createProject.do" method="POST" id="create_project_form"
+ style="margin:1em" enctype="multipart/form-data">
+ <input type="hidden" name="token" value="[form_token]">
+
+
+ Project name:<br>
+ <input size="30" type="text" id="projectname" name="projectname" autocomplete="off"
+ value="[initial_name]">
+ <span class="graytext">Example: my-project-name</span>
+ <div class="fielderror">
+ <span id="projectnamefeedback">
+ [if-any errors.projectname][errors.projectname][end]
+ </span>
+ </div>
+
+ [include "../framework/project-descriptive-fields.ezt"]
+ <br>
+
+ Viewable by:
+ [include "../framework/project-access-part.ezt" "checksubmit"]
+ <br>
+
+ <input type="submit" id="submit_btn" name="btn" value="Create project">
+</form>
+
+
+<script type="text/javascript" nonce="[nonce]">
+runOnLoad(function() {
+ [# TODO(jrobbins): move this to compiled Javascript. ]
+ var submit = document.getElementById('submit_btn');
+ submit.disabled = 'disabled';
+ var projectname = document.getElementById('projectname');
+ var access = document.getElementById('access');
+ var summary = document.getElementById('summary');
+ var description = document.getElementById('description');
+ var cg = document.getElementById('cg');
+ var oldName = '';
+ projectname.focus();
+ var solelyDigits = /^[[]-0-9]+$/
+ var hasUppercase = /[[]A-Z]/
+ var projectRE = /^[[]a-z0-9][[]-a-z0-9]*$/
+
+ function checkprojectname() {
+ name = projectname.value;
+ if (name != oldName) {
+ oldName = name;
+ feedback = document.getElementById('projectnamefeedback');
+ submit.disabled='disabled';
+ if (name == '') {
+ feedback.textContent = '';
+ } else if (hasUppercase.test(name)) {
+ feedback.textContent = 'Must be all lowercase';
+ } else if (solelyDigits.test(name)) {
+ feedback.textContent = 'Must include a lowercase letter';
+ } else if (!projectRE.test(name)) {
+ feedback.textContent = 'Invalid project name';
+ } else if (name.length > [max_project_name_length]) {
+ feedback.textContent = 'Project name is too long';
+ } else if(name[[]name.length - 1] == '-') {
+ feedback.textContent = "Project name cannot end with a '-'";
+ } else {
+ feedback.textContent = '';
+ checkname();
+ checksubmit();
+ }
+ }
+ }
+
+ var checkname = debounce(function() {
+ _CP_checkProjectName(projectname.value);
+ });
+
+ function checkempty(elemId) {
+ var elem = document.getElementById(elemId);
+ feedback = document.getElementById(elemId + 'feedback');
+ if (elem.value.length == 0) {
+ feedback.textContent = 'Please enter a ' + elemId;
+ } else {
+ feedback.textContent = ' ';
+ }
+ checksubmit();
+ }
+
+ function checksubmit() {
+ feedback = document.getElementById('projectnamefeedback');
+ submit.disabled='disabled';
+ if (projectname.value.length > 0 &&
+ summary.value.length > 0 &&
+ description.value.length > 0 &&
+ (cg == undefined || cg.value.length > 1) &&
+ feedback.textContent == '') {
+ submit.disabled='';
+ }
+ }
+ setInterval(checkprojectname, 700); [# catch changes that were not keystrokes.]
+ $("projectname").addEventListener("keyup", checkprojectname);
+ $("summary").addEventListener("keyup", function() { checkempty("summary"); });
+ $("description").addEventListener("keyup", function() { checkempty("description"); });
+ $("create_project_form").addEventListener("submit", function () {
+ $("submit_btn").value = "Creating project...";
+ $("submit_btn").disabled = "disabled";
+ });
+
+});
+</script>
+
+[end][# not read-only]
+
+[include "../framework/footer.ezt"]