2020-04-23 15:25:00 +12:00
<?php
2020-04-26 08:33:35 +12:00
2020-05-03 21:49:22 +12:00
use Appwrite\Database\Database;
2020-04-23 15:25:00 +12:00
use Utopia\View;
2020-04-26 08:33:35 +12:00
use Appwrite\Database\Validator\Authorization;
2020-04-23 15:25:00 +12:00
$collection = $this->getParam('collection', null);
2020-05-03 07:57:52 +12:00
$searchFiles = $this->getParam('searchFiles', null);
$searchDocuments = $this->getParam('searchDocuments', null);
$name = $collection->getAttribute('name', '');
2020-04-26 08:33:35 +12:00
$db = $this->getParam('db', null);
2020-04-24 23:24:04 +12:00
$rules = $collection->getAttribute('rules', []);
2020-04-26 08:33:35 +12:00
$namespace = 'project-document';
2020-04-28 06:36:21 +12:00
$collections = [];
2020-04-23 15:25:00 +12:00
?>
2020-04-28 06:36:21 +12:00
2020-05-03 21:49:22 +12:00
<?php echo $searchFiles -> render (); ?>
<?php foreach ( $rules as $rule ) : // Form to append child document
$key = (isset($rule['key'])) ? $rule['key'] : '';
$label = (isset($rule['label'])) ? $rule['label'] : '';
$type = (isset($rule['type'])) ? $rule['type'] : '';
$list = (isset($rule['list'])) ? $rule['list'] : [];
?>
<?php foreach ( $list as $item ) :
if($item === $collection->getId()) {
continue; // Do not allow rec recrusion
}
if(!isset($collections[$item])) {
Authorization::disable(); //TODO Try and avoid calling the DB from the template
$collections[$item] = $db->getDocument($item, false);
Authorization::reset();
}
$childCollection = $collections[$item];
if(!$childCollection->getId() || $childCollection->getCollection() !== Database::SYSTEM_COLLECTION_COLLECTIONS) {
continue;
}
$searchDocuments
->setParam('collection', $childCollection)
;
echo $searchDocuments->render(); ?>
<?php endforeach ; ?>
<?php endforeach ; ?>
2020-05-03 07:57:52 +12:00
<?php foreach ( $rules as $rule ) : // Form to append child document
2020-04-28 06:36:21 +12:00
$key = (isset($rule['key'])) ? $rule['key'] : '';
$label = (isset($rule['label'])) ? $rule['label'] : '';
$type = (isset($rule['type'])) ? $rule['type'] : '';
$list = (isset($rule['list'])) ? $rule['list'] : false;
$array = (isset($rule['array'])) ? $rule['array'] : false;
?>
2020-04-29 20:36:55 +12:00
<?php if ( $type !== 'document' && $array ) : ?>
< form class = "margin-bottom-no"
data-service="container.path"
data-event="collection-child-<?php echo $this -> escape ( $namespace . '.' . $key ); ?> "
data-scope="window.ls"
data-success="reset">
< input type = "hidden" name = "path" value = " <?php echo $this -> escape ( $namespace . '.' . $key ); ?> " />
< input type = "hidden" name = "type" value = "append" / >
< input type = "hidden" name = "value" value = "" / >
< / form >
<?php endif ; ?>
<?php if ( $type !== 'document' ) : ?>
<?php continue ; ?>
<?php endif ; ?>
2020-04-28 06:36:21 +12:00
<?php foreach ( $list as $item ) :
if($item === $collection->getId()) {
continue; // Do not allow rec recrusion
}
2020-05-03 21:49:22 +12:00
if(!isset($collections[$item])) {
Authorization::disable(); //TODO Try and avoid calling the DB from the template
$collections[$item] = $db->getDocument($item, false);
Authorization::reset();
}
$childCollection = $collections[$item];
2020-04-28 06:36:21 +12:00
2020-05-03 21:49:22 +12:00
if(!$childCollection->getId() || $childCollection->getCollection() !== Database::SYSTEM_COLLECTION_COLLECTIONS) {
2020-04-28 06:36:21 +12:00
continue;
}
?>
< form class = "margin-bottom-no"
data-service="container.path"
data-event="collection-child-<?php echo $this -> escape ( $namespace . '.' . $key ); ?> -<?php echo $this -> escape ( $childCollection -> getId ()); ?> "
data-scope="window.ls"
data-success="reset">
< input type = "hidden" name = "path" value = " <?php echo $this -> escape ( $namespace . '.' . $key ); ?> " />
< input type = "hidden" name = "type" value = "append" / >
< fieldset name = "value" data-cast-to = "object" >
< input name = "$id" type = "hidden" value = "" / >
< input name = "$collection" type = "hidden" value = " <?php echo $this -> escape ( $childCollection -> getId ()); ?> " />
< / fieldset >
< / form >
< script type = "text/html" id = "collection- <?php echo ( $array ) ? 'array-' : '' ; ?><?php echo $this -> escape ( $childCollection -> getId ()); ?> " >
<?php
$comp = new View(__DIR__.'/form.phtml');
$comp
->setParam('collection', $childCollection)
->setParam('namespace', ($array) ? 'node' : $namespace.'.'.$key)
->setParam('key', $key)
->setParam('array', $array)
->setParam('parent', 0)
;
echo $comp->render();
?>
< / script >
<?php endforeach ; ?>
<?php endforeach ; ?>
2020-05-03 07:57:52 +12:00
<?php foreach ( $rules as $rule ) : // Form to remove array $index key
2020-04-28 06:36:21 +12:00
$key = (isset($rule['key'])) ? $rule['key'] : '';
$label = (isset($rule['label'])) ? $rule['label'] : '';
$type = (isset($rule['type'])) ? $rule['type'] : '';
$list = (isset($rule['list'])) ? $rule['list'] : false;
$array = (isset($rule['array'])) ? $rule['array'] : false;
if(!$array) {
continue;
}
?>
< ul data-ls-loop = " <?php echo $this -> escape ( $namespace . '.' . $key ); ?> " data-ls-as = "xxx" >
< li >
< form
data-service="container.path"
data-event="splice-<?php echo $this -> escape ( $namespace . '.' . $key ); ?> -{{$index}}"
data-scope="window.ls"
data-success="reset">
< input type = "hidden" name = "path" value = " <?php echo $this -> escape ( $namespace . '.' . $key ); ?> " />
< input type = "hidden" name = "type" value = "splice" / >
< input type = "hidden" name = "value" data-ls-bind = "{{$index}}" / >
< / form >
< / li >
< / ul >
<?php endforeach ; ?>
2020-05-03 07:57:52 +12:00
2020-03-17 07:41:56 +13:00
< div
2020-05-03 07:57:52 +12:00
data-service="database.getDocument"
2020-03-17 07:41:56 +13:00
data-param-collection-id="{{router.params.collection}}"
2020-05-03 07:57:52 +12:00
data-param-document-id="{{router.params.id}}"
2020-03-17 07:41:56 +13:00
data-scope="sdk"
2020-05-03 07:57:52 +12:00
data-event="load,database.updateDocument"
data-name="project-document"
data-success="default">
2020-03-17 07:41:56 +13:00
2020-05-03 07:57:52 +12:00
< div class = "cover" >
< h1 class = "zone xl margin-bottom-large" >
< a data-ls-attrs = "href=/console/database/collection?id={{router.params.collection}}&project={{router.params.project}}" class = "back text-size-small" >< i class = "icon-left-open" ></ i > <?php echo $this -> escape ( $name ); ?> </ a >
< br / >
< span data-ls-if = "({{project-document.$id}})" data-ls-bind = "Document" > < / span >
< span data-ls-if = "(!{{project-document.$id}})" data-ls-bind = "Document" > < / span >
< / h1 >
< / div >
2020-04-21 06:47:26 +12:00
2020-05-03 07:57:52 +12:00
< div data-ui-modal class = "modal width-large box close" data-button-hide = "on" data-open-event = "open-json" >
< button type = "button" class = "close pull-end" data-ui-modal-close = "" > < i class = "icon-cancel" > < / i > < / button >
< h2 > JSON View< / h2 >
2020-04-21 06:47:26 +12:00
2020-05-03 07:57:52 +12:00
< div class = "margin-bottom" >
< input type = "hidden" data-ls-bind = "{{project-document}}" data-forms-code / >
2020-04-21 06:47:26 +12:00
< / div >
2020-05-03 07:57:52 +12:00
< button data-ui-modal-close = "" type = "button" class = "reverse" > Cancel< / button >
< / div >
< div class = "zone xl margin-bottom-no" >
< ul class = "phases clear" data-ui-phases data-selected = "{{router.params.tab}}" >
< li data-state = "/console/database/document?id={{router.params.id}}&collection={{router.params.collection}}&project={{router.params.project}}" >
< h2 > Update< / h2 >
< div class = "row responsive margin-top-negative" >
< div class = "col span-8 margin-bottom" >
< form
data-analytics-event="submit"
data-analytics-category="console"
data-analytics-label="Update Database Document"
data-service="{{|documentAction}}"
data-name="project-document"
data-scope="sdk"
data-event="submit"
data-success="alert,trigger{{|documentSuccess}}"
data-success-param-alert-text="Updated document successfully"
data-success-param-trigger-events="database.updateDocument"
data-success-param-redirect-url="/console/database/document?id={{serviceData.$id}}& collection={{router.params.collection}}& project={{router.params.project}}"
data-failure="alert"
data-failure-param-alert-text="Failed to update document"
data-failure-param-alert-classname="error">
< label > < / label >
< div class = "box" >
2020-05-04 17:04:30 +12:00
<!-- <div class="document - nav" data - forms - nav>
< ul class = "text-align-end margin-end-small" >
<?php foreach ( $rules as $rule ) : // Form to append child document
$key = (isset($rule['key'])) ? $rule['key'] : '';
$label = (isset($rule['label'])) ? $rule['label'] : '';
$type = (isset($rule['type'])) ? $rule['type'] : '';
$list = (isset($rule['list'])) ? $rule['list'] : [];
?>
< li class = "text-size-small" >
< span class = "link text-fade" data-forms-nav-link = " <?php echo $this -> escape ( $key ); ?> " > <?php echo $this -> escape ( $label ); ?> </ span >
< / li >
<?php endforeach ; ?>
< / ul >
< / div > -->
2020-05-03 07:57:52 +12:00
<?php if ( empty ( $rules )) : ?>
< div class = "margin-bottom-xl margin-top-xl margin-end margin-start text-align-center" >
< h4 class = "text-fade text-size-small" > No attribute rules added yet.< br / > < br / > < a data-ls-attrs = "href=/console/database/collection/settings?id={{router.params.collection}}&project={{router.params.project}}" > Update Collection< / a > < / h4 >
< / div >
<?php else : ?>
<?php
$comp = new View(__DIR__.'/form.phtml');
$comp
->setParam('collection', $collection)
->setParam('collections', $collections)
->setParam('namespace', $namespace)
->setParam('key', 'data')
->setParam('parent', 1)
;
echo $comp->render();
?>
< div class = "toggle margin-bottom" data-ls-ui-open >
< i class = "icon-plus pull-end margin-top-tiny" > < / i >
< i class = "icon-minus pull-end margin-top-tiny" > < / i >
< h3 class = "margin-bottom-large" > Permissions< / h3 >
< label for = "collection-read" > Read Access < span class = "text-size-small" > (< a data-ls-attrs = "href={{env.HOME}}/docs/permissions" target = "_blank" > Learn more< / a > )< / span > < / label >
< input type = "hidden" id = "collection-read" name = "read" data-forms-tags data-cast-to = "json" data-ls-bind = "{{project-document.$permissions.read}}" placeholder = "User ID, Team ID or Role" / >
< label for = "collection-write" > Write Access < span class = "text-size-small" > (< a data-ls-attrs = "href={{env.HOME}}/docs/permissions" target = "_blank" > Learn more< / a > )< / label >
< input type = "hidden" id = "collection-write" name = "write" data-forms-tags data-cast-to = "json" data-ls-bind = "{{project-document.$permissions.write}}" placeholder = "User ID, Team ID or Role" / >
< / div >
< button data-ls-if = "({{project-document.$id}})" > Update< / button >
< button data-ls-if = "(!{{project-document.$id}})" > Create< / button >
<?php endif ; ?>
< / div >
< / form >
< / div >
< div class = "col span-4 sticky-top" >
< div data-ls-if = "({{project-document.$id}})" >
< label > Document ID< / label >
< div class = "input-copy margin-bottom" >
< input type = "text" autocomplete = "off" placeholder = "" data-ls-bind = "{{project-document.$id}}" disabled data-forms-copy class = "margin-bottom-no" / >
< / div >
< / div >
< label > Collection ID< / label >
< div class = "input-copy margin-bottom" >
< input type = "text" autocomplete = "off" placeholder = "" data-ls-bind = "{{router.params.collection}}" disabled data-forms-copy class = "margin-bottom-no" / >
< / div >
< ul class = "margin-bottom-large text-fade text-size-small" data-ls-if = "({{project-document.$id}})" >
< li class = "margin-bottom-small" > < i class = "icon-angle-circled-right margin-start-tiny margin-end-tiny" > < / i > < button data-ls-ui-trigger = "open-json" class = "link text-size-small" > View as JSON< / button > < / li >
< / ul >
2020-03-30 08:38:15 +13:00
2020-05-03 07:57:52 +12:00
< div data-ls-if = "({{project-document.$id}})" >
< form name = "database.deleteDocument" class = "margin-bottom"
2020-03-30 08:38:15 +13:00
data-analytics-event="submit"
data-analytics-category="console"
2020-05-03 07:57:52 +12:00
data-analytics-label="Delete Collection Document"
data-service="database.deleteDocument"
2020-03-30 08:38:15 +13:00
data-event="submit"
2020-05-03 07:57:52 +12:00
data-param-collection-id="{{router.params.collection}}"
data-param-document-id="{{project-document.$id}}"
data-confirm="Are you sure you want to delete this document?"
data-success="alert,trigger,redirect"
data-success-param-alert-text="Document deleted successfully"
data-success-param-trigger-events="database.deleteDocument"
data-success-param-redirect-url="/console/database/collection?id={{router.params.collection}}& project={{router.params.project}}"
2020-03-30 08:38:15 +13:00
data-failure="alert"
2020-05-03 07:57:52 +12:00
data-failure-param-alert-text="Failed to delete collection"
2020-03-30 08:38:15 +13:00
data-failure-param-alert-classname="error">
2020-05-03 07:57:52 +12:00
< button type = "submit" class = "danger fill" > Delete Document< / button >
2020-03-30 08:38:15 +13:00
< / form >
< / div >
2020-03-17 07:41:56 +13:00
< / div >
2020-05-03 07:57:52 +12:00
< / div >
< / li >
2020-05-21 09:31:56 +12:00
<!-- <li data - ls - if="{{project - document.$id}}" data - state="/console/database/document/activity?id={{router.params.id}}&collection={{router.params.collection}}&project={{router.params.project}}">
2020-05-03 07:57:52 +12:00
< h2 > Activity< / h2 >
2020-05-21 09:31:56 +12:00
< / li > -->
2020-05-03 07:57:52 +12:00
< / ul >
2020-03-17 07:41:56 +13:00
< / div >
2020-05-03 21:49:22 +12:00
< / div >