<form id="dataset-edit" method="post" |
<form id="dataset-edit" method="post" |
py:attrs="{'class':'has-errors'} if errors else {}" |
py:attrs="{'class':'has-errors'} if errors else {}" |
xmlns:i18n="http://genshi.edgewall.org/i18n" |
xmlns:i18n="http://genshi.edgewall.org/i18n" |
xmlns:py="http://genshi.edgewall.org/" |
xmlns:py="http://genshi.edgewall.org/" |
xmlns:xi="http://www.w3.org/2001/XInclude"> |
xmlns:xi="http://www.w3.org/2001/XInclude"> |
|
|
|
|
<div class="error-explanation" py:if="error_summary"> |
<div class="error-explanation" py:if="error_summary"> |
<h2>Errors in form</h2> |
<h2>Errors in form</h2> |
<p>The form contains invalid entries:</p> |
<p>The form contains invalid entries:</p> |
<ul> |
<ul> |
<li py:for="key, error in error_summary.items()">${"%s: %s" % (key, error)} |
<li py:for="key, error in error_summary.items()">${"%s: %s" % (key, error)} |
<py:if test="key=='Resources'"> |
<py:if test="key=='Resources'"> |
<ul> |
<ul> |
<py:for each="idx, errordict in enumerate(errors.get('resources', []))"> |
<py:for each="idx, errordict in enumerate(errors.get('resources', []))"> |
<li py:if="errordict"> |
<li py:if="errordict"> |
Resource ${idx}: |
Resource ${idx}: |
<ul> |
<ul> |
<li py:for="thiskey, thiserror in errordict.items()">${thiskey}: <py:for each="errorinfo in thiserror">${errorinfo}; </py:for></li> |
<li py:for="thiskey, thiserror in errordict.items()">${thiskey}: <py:for each="errorinfo in thiserror">${errorinfo}; </py:for></li> |
</ul> |
</ul> |
</li> |
</li> |
</py:for> |
</py:for> |
</ul> |
</ul> |
</py:if> |
</py:if> |
</li> |
</li> |
</ul> |
</ul> |
</div> |
</div> |
|
|
<fieldset id="basic-information"> |
<fieldset id="basic-information"> |
<dl> |
<dl> |
<dt class="title-label"><label class="field_opt" for="title">Title</label></dt> |
<dt class="title-label"><label class="field_opt" for="title">Title</label></dt> |
<dd class="title-field"> |
<dd class="title-field"> |
<input id="title" |
<input id="title" |
class="js-title" |
class="js-title" |
name="title" type="text" |
name="title" type="text" |
value="${data.get('title', '')}" |
value="${data.get('title', '')}" |
placeholder="${_('A short descriptive title for the dataset')}" |
placeholder="${_('A short descriptive title for the dataset')}" |
/> |
/> |
</dd> |
</dd> |
<dd class="title-instructions field_error" py:if="errors.get('title', '')">${errors.get('title', '')}</dd> |
<dd class="title-instructions field_error" py:if="errors.get('title', '')">${errors.get('title', '')}</dd> |
|
|
<dt class="name-label"><label class="field_req" for="name">Url</label></dt> |
<dt class="name-label"><label class="field_req" for="name">Url</label></dt> |
<dd class="name-field"> |
<dd class="name-field"> |
<span class="js-url-text url-text">${url(controller='package', action='index')+'/'}<span class="js-url-viewmode js-url-suffix"> </span><a href="#" style="display: none;" class="url-edit js-url-editlink js-url-viewmode">(edit)</a></span> |
<span class="js-url-text url-text">${h.url(controller='package', action='index')+'/'}<span class="js-url-viewmode js-url-suffix"> </span><a href="#" style="display: none;" class="url-edit js-url-editlink js-url-viewmode">(edit)</a></span> |
<input style="display: none;" id="name" maxlength="100" name="name" type="text" class="url-input js-url-editmode js-url-input" value="${data.get('name', '')}" /> |
<input style="display: none;" id="name" maxlength="100" name="name" type="text" class="url-input js-url-editmode js-url-input" value="${data.get('name', '')}" /> |
<p class="js-url-is-valid"> </p> |
<p class="js-url-is-valid"> </p> |
</dd> |
</dd> |
<dd style="display: none;" class="js-url-editmode name-instructions basic">2+ characters, lowercase, using only 'a-z0-9' and '-_'</dd> |
<dd style="display: none;" class="js-url-editmode name-instructions basic">2+ characters, lowercase, using only 'a-z0-9' and '-_'</dd> |
<dd class="js-url-editmode name-instructions field_error" py:if="errors.get('name', '')">${errors.get('name', '')}</dd> |
<dd class="js-url-editmode name-instructions field_error" py:if="errors.get('name', '')">${errors.get('name', '')}</dd> |
|
|
<dt class="homepage-label"><label class="field_opt" for="url">Home Page</label></dt> |
<dt class="homepage-label"><label class="field_opt" for="url">Home Page</label></dt> |
<dd class="homepage-field"><input id="url" name="url" type="text" value="${data.get('url', '')}"/></dd> |
<dd class="homepage-field"><input id="url" name="url" type="text" value="${data.get('url', '')}"/></dd> |
<dd class="homepage-instructions instructions basic">The URL for the web page describing the data (not the data itself).</dd> |
<dd class="homepage-instructions instructions basic">The URL for the web page describing the data (not the data itself).</dd> |
<dd class="homepage-instructions hints">e.g. http://www.example.com/growth-figures.html</dd> |
<dd class="homepage-instructions hints">e.g. http://www.example.com/growth-figures.html</dd> |
<dd class="homepage-instructions field_error" py:if="errors.get('url', '')">${errors.get('url', '')}</dd> |
<dd class="homepage-instructions field_error" py:if="errors.get('url', '')">${errors.get('url', '')}</dd> |
|
|
<dt class="license-label"><label class="field_opt" for="license_id">License</label></dt> |
<dt class="license-label"><label class="field_opt" for="license_id">License</label></dt> |
<dd class="license-field"> |
<dd class="license-field"> |
<select id="license_id" name="license_id"> |
<select id="license_id" name="license_id"> |
<py:for each="licence_desc, licence_id in c.licences"> |
<py:for each="licence_desc, licence_id in c.licences"> |
<option value="${licence_id}" py:attrs="{'selected': 'selected' if data.get('license_id', '') == licence_id else None}" >${licence_desc}</option> |
<option value="${licence_id}" py:attrs="{'selected': 'selected' if data.get('license_id', '') == licence_id else None}" >${licence_desc}</option> |
</py:for> |
</py:for> |
</select> |
</select> |
</dd> |
</dd> |
<dd class="license-instructions instructions basic">The licence under which the dataset is released.</dd> |
<dd class="license-instructions instructions basic">The licence under which the dataset is released.</dd> |
|
|
<dt class="description-label"><label class="field_opt" for="notes">Description</label></dt> |
<dt class="description-label"><label class="field_opt" for="notes">Description</label></dt> |
<dd class="description-field"><div class="markdown-editor"> |
<dd class="description-field"><div class="markdown-editor"> |
<ul class="button-row"> |
<ul class="button-row"> |
<li><button class="pretty-button js-markdown-edit depressed">Edit</button></li> |
<li><button class="pretty-button js-markdown-edit depressed">Edit</button></li> |
<li><button class="pretty-button js-markdown-preview">Preview</button></li> |
<li><button class="pretty-button js-markdown-preview">Preview</button></li> |
</ul> |
</ul> |
<textarea class="markdown-input" name="notes" id="notes" placeholder="${_('Start with a summary sentence ...')}">${data.get('notes','')}</textarea> |
<textarea class="markdown-input" name="notes" id="notes" placeholder="${_('Start with a summary sentence ...')}">${data.get('notes','')}</textarea> |
<div class="markdown-preview" style="display: none;"></div> |
<div class="markdown-preview" style="display: none;"></div> |
<span class="hints">You can use <a href="http://daringfireball.net/projects/markdown/syntax" target="_blank">Markdown formatting</a> here.</span> |
<span class="hints">You can use <a href="http://daringfireball.net/projects/markdown/syntax" target="_blank">Markdown formatting</a> here.</span> |
<!-- |
<!-- |
<dd class="instructions basic">The main description of the dataset</dd> |
<dd class="instructions basic">The main description of the dataset</dd> |
<dd class="instructions further">It is often displayed with the dataset title. In particular, it should start with a short sentence that describes the dataset succinctly, because the first few words alone may be used in some views of the datasets.</dd> |
<dd class="instructions further">It is often displayed with the dataset title. In particular, it should start with a short sentence that describes the dataset succinctly, because the first few words alone may be used in some views of the datasets.</dd> |
--> |
--> |
</div></dd> |
</div></dd> |
</dl> |
</dl> |
</fieldset> |
</fieldset> |
|
|
<fieldset id="resources"> |
<fieldset id="resources"> |
<div class="instructions basic"><h3>Resources: the files and APIs associated with this dataset</h3></div> |
<div class="instructions basic"><h3>Resources: the files and APIs associated with this dataset</h3></div> |
<table class="resource-table-edit"> |
<table class="resource-table-edit"> |
<thead> |
<thead> |
<tr> |
<tr> |
<th class="field_req resource-url">Resource</th> |
<th class="field_req resource-url">Resource</th> |
<th class="resource-delete-link"></th> |
<th class="resource-delete-link"></th> |
</tr> |
</tr> |
</thead> |
</thead> |
<tbody class="js-resource-editor"> |
<tbody class="js-resource-editor"> |
</tbody> |
</tbody> |
</table> |
</table> |
|
|
|
|
<div class="resource-add"> |
<div class="resource-add"> |
<ul class="button-row"> |
<ul class="button-row"> |
<li><h4>Add a resource:</h4></li> |
<li><h4>Add a resource:</h4></li> |
<li><button class="pretty-button js-link-file">Link to a file</button></li> |
<li><button class="pretty-button js-link-file">Link to a file</button></li> |
<li><button class="pretty-button js-link-api">Link to an API</button></li> |
<li><button class="pretty-button js-link-api">Link to an API</button></li> |
<li class="js-upload-file ckan-logged-in" style="display: none;"><button class="pretty-button js-upload-file">Upload a file</button></li> |
<li class="js-upload-file ckan-logged-in" style="display: none;"><button class="pretty-button js-upload-file">Upload a file</button></li> |
</ul> |
</ul> |
</div> |
</div> |
</fieldset> |
</fieldset> |
|
|
<fieldset id="groups"> |
<fieldset id="groups"> |
<h3>Groups</h3> |
<h3>Groups</h3> |
<dl> |
<dl> |
<py:for each="num, group in enumerate(data.get('groups', []))"> |
<py:for each="num, group in enumerate(data.get('groups', []))"> |
<?python |
<?python |
authorized_group = [group_authz for group_authz in c.groups_authz if group_authz['id'] == group['id']] |
authorized_group = [group_authz for group_authz in c.groups_authz if group_authz['id'] == group['id']] |
authorized_group = authorized_group[0] if authorized_group else None |
authorized_group = authorized_group[0] if authorized_group else None |
?> |
?> |
|
|
<dt py:if="'id' in group"> |
<dt py:if="'id' in group"> |
<input type="${'checkbox' if authorized_group else 'hidden'}" name="groups__${num}__id" checked="checked" value="${group['id']}" /> |
<input type="${'checkbox' if authorized_group else 'hidden'}" name="groups__${num}__id" checked="checked" value="${group['id']}" /> |
<input type="hidden" name="groups__${num}__name" value="${group.get('name', authorized_group['name'] if authorized_group else '')}" /> |
<input type="hidden" name="groups__${num}__name" value="${group.get('name', a |