mirror of
https://github.com/documize/community.git
synced 2025-08-05 05:25:27 +02:00
moved emberjs to gui folder
This commit is contained in:
parent
6a18d18f91
commit
dc49dbbeff
999 changed files with 677 additions and 651 deletions
5
gui/app/templates/components/back-to-space.hbs
Normal file
5
gui/app/templates/components/back-to-space.hbs
Normal file
|
@ -0,0 +1,5 @@
|
|||
{{#link-to 'folder' folder.id folder.slug}}
|
||||
<div class="zone-sidebar-title">
|
||||
<i class="material-icons">arrow_back</i> {{folder.name}}
|
||||
</div>
|
||||
{{/link-to}}
|
72
gui/app/templates/components/customize/auth-settings.hbs
Normal file
72
gui/app/templates/components/customize/auth-settings.hbs
Normal file
|
@ -0,0 +1,72 @@
|
|||
<form class=>
|
||||
<div class="form-header">
|
||||
<div class="title">Authentication</div>
|
||||
<div class="tip">Determine the method for user authentication</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Provider</label>
|
||||
<div class="tip">External authentication servers, services must be accessible from the server running this Documize instance</div>
|
||||
{{#ui/ui-radio selected=isDocumizeProvider onClick=(action 'onDocumize')}}Documize — email/password{{/ui/ui-radio}}
|
||||
{{#ui/ui-radio selected=isKeycloakProvider onClick=(action 'onKeycloak')}}Keycloak — bring your own authentication server{{/ui/ui-radio}}
|
||||
</div>
|
||||
|
||||
{{#if isKeycloakProvider}}
|
||||
<div class="form-header">
|
||||
<div class="title">Keycloak Configuration</div>
|
||||
<div class="tip">Connection parameters — create a documize user in Master realm with 'manage-users' role against target realm</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Keycloak Server URL</label>
|
||||
<div class="tip">e.g. http://localhost:8888/auth</div>
|
||||
{{focus-input id="keycloak-url" type="text" value=keycloakConfig.url class=(if KeycloakUrlError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Keycloak Realm</label>
|
||||
<div class="tip">e.g. main</div>
|
||||
{{input id="keycloak-realm" type="text" value=keycloakConfig.realm class=(if keycloakRealmError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Keycloak Realm Public Key</label>
|
||||
<div class="tip">Copy the RSA Public Key from Realm Settings → Keys</div>
|
||||
{{textarea id="keycloak-publicKey" type="text" value=keycloakConfig.publicKey rows=7 class=(if KeycloakPublicKeyError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Keycloak OIDC Client ID</label>
|
||||
<div class="tip">e.g. account</div>
|
||||
{{input id="keycloak-clientId" type="text" value=keycloakConfig.clientId class=(if KeycloakClientIdError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Keycloak Group ID (Optional)</label>
|
||||
<div class="tip">If you want to sync users in a particular Group (e.g. 'Documize Users'), provide the Group ID (e.g. 511d8b61-1ec8-45f6-bc8d-5de64d54c9d2)</div>
|
||||
{{input id="keycloak-group" type="text" value=keycloakConfig.group}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Keycloak Username</label>
|
||||
<div class="tip">Used to connect with Keycloak and sync users with Documize (create user under Master Realm and assign 'view-users' role against Realm specified above)</div>
|
||||
{{input id="keycloak-admin-user" type="text" value=keycloakConfig.adminUser class=(if KeycloakAdminUserError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Keycloak Password</label>
|
||||
<div class="tip">Used to connect with Keycloak and sync users with Documize</div>
|
||||
{{input id="keycloak-admin-password" type="password" value=keycloakConfig.adminPassword class=(if KeycloakAdminPasswordError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Disable Logout</label>
|
||||
<div class="tip">Hide the logout button for Keycloak users</div>
|
||||
<div class="checkbox">
|
||||
{{input type="checkbox" checked=keycloakConfig.disableLogout}}
|
||||
<label for="allowAnonymousAccess">Do not show logout button</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Grant Add Space Permission</label>
|
||||
<div class="tip">Determine if Keycloak sync'ed users permission to add new spaces</div>
|
||||
<div class="checkbox">
|
||||
{{input type="checkbox" checked=keycloakConfig.defaultPermissionAddSpace}}
|
||||
<label for="allowAnonymousAccess">Can add spaces</label>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="regular-button button-blue" {{action 'onSave'}}>save</div>
|
||||
</form>
|
30
gui/app/templates/components/customize/general-settings.hbs
Normal file
30
gui/app/templates/components/customize/general-settings.hbs
Normal file
|
@ -0,0 +1,30 @@
|
|||
<form>
|
||||
<div class="form-header">
|
||||
<div class="title">Instance Settings</div>
|
||||
<div class="tip">Settings applicable to your Documize instance</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Title</label>
|
||||
<div class="tip">Describe the title of this Documize instance</div>
|
||||
{{focus-input id="siteTitle" type="text" value=model.general.title class=(if hasTitleInputError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Message</label>
|
||||
<div class="tip">Describe the purpose of this Documize instance</div>
|
||||
{{textarea id="siteMessage" rows="3" value=model.general.message class=(if hasMessageInputError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Anonymous Access</label>
|
||||
<div class="tip">Content within "Everyone" will be made available to anonymous users</div>
|
||||
<div class="checkbox">
|
||||
<input type="checkbox" id="allowAnonymousAccess" checked={{model.general.allowAnonymousAccess}} />
|
||||
<label for="allowAnonymousAccess">Allow anyone to access this Documize instance</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Conversion Service URL</label>
|
||||
<div class="tip">Endpoint for handling import/export (e.g. https://api.documize.com, <a href="https://docs.documize.com/s/WNEpptWJ9AABRnha/administration-guides/d/WO0pt_MXigAB6sJ7/general-options">view documentation</a>)</div>
|
||||
{{focus-input id="conversionEndpoint" type="text" value=model.general.conversionEndpoint class=(if hasConversionEndpointInputError 'error')}}
|
||||
</div>
|
||||
<div class="regular-button button-blue" {{ action 'save' }}>save</div>
|
||||
</form>
|
48
gui/app/templates/components/customize/global-settings.hbs
Normal file
48
gui/app/templates/components/customize/global-settings.hbs
Normal file
|
@ -0,0 +1,48 @@
|
|||
<form>
|
||||
<div class="form-header">
|
||||
<div class="title">Mail Server Settings</div>
|
||||
<div class="tip">Used for sending email notifications</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>SMTP Host</label>
|
||||
<div class="tip">e.g. my.host.com</div>
|
||||
{{focus-input id="smtp-host" type="text" value=model.smtp.host class=(if SMTPHostEmptyError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>SMTP Port</label>
|
||||
<div class="tip">e.g. 587</div>
|
||||
{{input id="smtp-port" type="text" value=model.smtp.port class=(if SMTPPortEmptyError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>SMTP Sender</label>
|
||||
<div class="tip">e.g. noreply@documize.com</div>
|
||||
{{input id="smtp-sender" type="text" value=model.smtp.sender class=(if SMTPSenderEmptyError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>SMTP User ID</label>
|
||||
<div class="tip">Your credentials</div>
|
||||
{{input id="smtp-userid" type="text" value=model.smtp.userid class=(if SMTPUserIdEmptyError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>SMTP Password</label>
|
||||
<div class="tip">Your credentials</div>
|
||||
{{input id="smtp-password" type="text" value=model.smtp.password class=(if SMTPPasswordEmptyError 'error')}}
|
||||
</div>
|
||||
<div class="regular-button button-blue" {{ action 'saveSMTP' }}>save</div>
|
||||
</form>
|
||||
|
||||
<div class="margin-top-50">
|
||||
</div>
|
||||
|
||||
<form class="form-bordered">
|
||||
<div class="form-header">
|
||||
<div class="title">Optional Edition License</div>
|
||||
<div class="tip">Only applies to Enterprise Edition</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>License</label>
|
||||
<div class="tip">XML format accepted</div>
|
||||
{{textarea value=model.license rows="15"}}
|
||||
</div>
|
||||
<div class="regular-button button-blue" {{ action 'saveLicense' }}>save</div>
|
||||
</form>
|
163
gui/app/templates/components/customize/user-admin.hbs
Normal file
163
gui/app/templates/components/customize/user-admin.hbs
Normal file
|
@ -0,0 +1,163 @@
|
|||
<div class="user-admin">
|
||||
<div class="form-header">
|
||||
<div class="title">User Management</div>
|
||||
<div class="tip">Set basic information, passwords and permissions for {{users.length}} users</div>
|
||||
</div>
|
||||
|
||||
<table class="basic-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="">
|
||||
<div class="input-inline input-transparent">
|
||||
{{focus-input type="text" placeholder="< type here to filter users >" value=filter}}
|
||||
</div>
|
||||
</th>
|
||||
<th class="no-width">Create spaces</th>
|
||||
<th class="no-width">Is administrator</th>
|
||||
<th class="no-width">Is active</th>
|
||||
<th class="no-width">
|
||||
{{#if hasSelectedUsers}}
|
||||
<div class="round-button round-button-small button-red" id="bulk-delete-users">
|
||||
<i class="material-icons">delete</i>
|
||||
</div>
|
||||
{{#dropdown-dialog target="bulk-delete-users" position="bottom right" button="Delete" color="flat-red" onAction=(action 'onBulkDelete')}}
|
||||
<p>Are you sure you want to delete selected users?</p>
|
||||
{{/dropdown-dialog}}
|
||||
{{/if}}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each filteredUsers as |user|}}
|
||||
<tr>
|
||||
<td class="{{unless user.active 'inactive-user'}} {{if user.admin 'admin-user'}}">
|
||||
<div class="selector pull-left">
|
||||
{{#unless user.me}}
|
||||
{{#if user.selected}}
|
||||
<i class="material-icons checkbox" {{action 'toggleSelect' user}}>check_box</i>
|
||||
{{else}}
|
||||
<i class="material-icons checkbox" {{action 'toggleSelect' user}}>check_box_outline_blank</i>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
</div>
|
||||
<div class="name">{{ user.fullname }}</div>
|
||||
<div class="email">{{ user.email }}</div>
|
||||
</td>
|
||||
<td class="no-width text-center">
|
||||
{{#if user.me}}
|
||||
<i class="material-icons color-gray">check_box</i>
|
||||
{{else if user.editor}}
|
||||
<i class="material-icons checkbox" {{action 'toggleEditor' user.id}}>check_box</i>
|
||||
{{else}}
|
||||
<i class="material-icons checkbox" {{action 'toggleEditor' user.id}}>check_box_outline_blank</i>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td class="no-width text-center">
|
||||
{{#if user.me}}
|
||||
<i class="material-icons color-gray">check_box</i>
|
||||
{{else if user.admin}}
|
||||
<i class="material-icons checkbox" {{action 'toggleAdmin' user.id}}>check_box</i>
|
||||
{{else}}
|
||||
<i class="material-icons checkbox" {{action 'toggleAdmin' user.id}}>check_box_outline_blank</i>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td class="no-width text-center">
|
||||
{{#if user.me}}
|
||||
<i class="material-icons color-gray">check_box</i>
|
||||
{{else if user.active}}
|
||||
<i class="material-icons checkbox" {{action 'toggleActive' user.id}}>check_box</i>
|
||||
{{else}}
|
||||
<i class="material-icons checkbox" {{action 'toggleActive' user.id}}>check_box_outline_blank</i>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td class="no-width text-center">
|
||||
{{#if user.me}}
|
||||
<div class="edit-button-{{user.id}} round-button-mono" title="Edit" {{action "edit" user.id}}>
|
||||
<i class="material-icons">edit</i>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="edit-button-{{user.id}} round-button-mono" title="Edit" {{action "edit" user.id}}>
|
||||
<i class="material-icons">edit</i>
|
||||
</div>
|
||||
<div class="button-gap"></div>
|
||||
<div class="delete-button-{{user.id}} round-button-mono" title="Delete" {{action "confirmDelete" user.id}}>
|
||||
<i class="material-icons">delete</i>
|
||||
</div>
|
||||
{{/if}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="dropdown-dialog edit-user-dialog">
|
||||
<div class="content">
|
||||
<form>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="input-control">
|
||||
<label>Firstname</label>
|
||||
{{input id="edit-firstname" type="text" value=editUser.firstname}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="input-control">
|
||||
<label>Lastname</label>
|
||||
{{input id="edit-lastname" type="text" value=editUser.lastname}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="input-control">
|
||||
<label>Email</label>
|
||||
{{input id="edit-email" type="text" value=editUser.email}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{#if isAuthProviderDocumize}}
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="input-control">
|
||||
<label>Password</label>
|
||||
<div class="tip">Optional new password</div>
|
||||
{{input id="edit-password" type="password" value=password.password}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="input-control">
|
||||
<label>Confirm Password</label>
|
||||
<div class="tip">Confirm new password</div>
|
||||
{{input id="edit-confirmPassword" type="password" value=password.confirmation}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</form>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="flat-button" {{action 'cancel'}}>
|
||||
cancel
|
||||
</div>
|
||||
<div class="flat-button flat-blue" {{action 'save'}}>
|
||||
save
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
<div class="dropdown-dialog delete-user-dialog">
|
||||
<div class="content">
|
||||
<p>Are you sure you want to delete user <span class="bold">{{deleteUser.fullname}}?</span></p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="flat-button" {{action 'cancel'}}>
|
||||
cancel
|
||||
</div>
|
||||
<div class="flat-button flat-red" {{action 'delete'}}>
|
||||
delete
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
21
gui/app/templates/components/customize/user-settings.hbs
Normal file
21
gui/app/templates/components/customize/user-settings.hbs
Normal file
|
@ -0,0 +1,21 @@
|
|||
{{#if isAuthProviderDocumize}}
|
||||
<form>
|
||||
<div class="form-header">
|
||||
<div class="title">Add user</div>
|
||||
<div class="tip">New users receive an invitation email with a random password</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Firstname</label>
|
||||
{{focus-input id="newUserFirstname" type="text" value=newUser.firstname class=(if hasFirstnameEmptyError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Lastname</label>
|
||||
{{input id="newUserLastname" type="text" value=newUser.lastname class=(if hasLastnameEmptyError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Email</label>
|
||||
{{input id="newUserEmail" type="text" value=newUser.email class=(if hasEmailEmptyError 'error')}}
|
||||
</div>
|
||||
<div class="regular-button button-blue" {{ action 'add' }}>Add</div>
|
||||
</form>
|
||||
{{/if}}
|
1
gui/app/templates/components/document/block-editor.hbs
Normal file
1
gui/app/templates/components/document/block-editor.hbs
Normal file
|
@ -0,0 +1 @@
|
|||
{{component editorType document=document folder=folder page=page meta=meta blockMode=true onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
72
gui/app/templates/components/document/content-linker.hbs
Normal file
72
gui/app/templates/components/document/content-linker.hbs
Normal file
|
@ -0,0 +1,72 @@
|
|||
{{#dropdown-dialog target=contentLinkerButtonId position="bottom right" button="Insert" color="flat-blue" onAction=(action 'onInsertLink')}}
|
||||
<div class="content-linker-dialog">
|
||||
<form>
|
||||
{{ui/ui-tab tabs=tabs onTabSelect=(action 'onTabSelect')}}
|
||||
|
||||
<div class="margin-top-40" />
|
||||
|
||||
{{#if showSections}}
|
||||
<ul class="link-list">
|
||||
{{#each candidates.pages as |p|}}
|
||||
<li class="link-item" {{ action 'setSelection' p }}>
|
||||
{{#ui/ui-selection selected=p.selected}}
|
||||
{{p.title}}
|
||||
{{/ui/ui-selection}}
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
|
||||
{{#if showAttachments}}
|
||||
<ul class="link-list">
|
||||
{{#each candidates.attachments as |a|}}
|
||||
<li class="link-item" {{ action 'setSelection' a }}>
|
||||
{{#ui/ui-selection selected=a.selected}}
|
||||
<img class="icon" src="/assets/img/attachments/{{document/file-icon a.context}}" />
|
||||
{{ a.title }}
|
||||
{{/ui/ui-selection}}
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
|
||||
{{#if showSearch}}
|
||||
<div class="input-control">
|
||||
<label>Search</label>
|
||||
<div class="tip">For content or attachments</div>
|
||||
{{focus-input id="content-linker-search" type="input" value=keywords placeholder="keyword search" autocomplete="off"}}
|
||||
</div>
|
||||
{{#unless hasMatches}}
|
||||
Nothing found.
|
||||
{{/unless}}
|
||||
<ul class="link-list">
|
||||
{{#each matches.documents as |m|}}
|
||||
<li class="link-item" {{ action 'setSelection' m }}>
|
||||
{{#ui/ui-selection selected=m.selected}}
|
||||
{{m.title}}
|
||||
{{/ui/ui-selection}}
|
||||
</li>
|
||||
{{/each}}
|
||||
{{#each matches.pages as |m|}}
|
||||
<li class="link-item" {{ action 'setSelection' m }}>
|
||||
{{#ui/ui-selection selected=m.selected}}
|
||||
{{m.title}}<br/><span class="color-gray">{{m.context}}</span>
|
||||
{{/ui/ui-selection}}
|
||||
</li>
|
||||
{{/each}}
|
||||
{{#each matches.attachments as |a|}}
|
||||
<li class="link-item" {{ action 'setSelection' a }}>
|
||||
{{#ui/ui-selection selected=a.selected}}
|
||||
<img class="icon" src="/assets/img/attachments/{{document/file-icon a.context}}" />
|
||||
{{ a.title }}
|
||||
{{/ui/ui-selection}}
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
|
||||
<div class="hide regular-button button-blue pull-right" {{ action 'onInsertLink' }}>Insert</div>
|
||||
<div class="hide clearfix" />
|
||||
</form>
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
|
@ -0,0 +1 @@
|
|||
{{component editorType document=document folder=folder page=page meta=meta onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
25
gui/app/templates/components/document/document-heading.hbs
Normal file
25
gui/app/templates/components/document/document-heading.hbs
Normal file
|
@ -0,0 +1,25 @@
|
|||
{{#unless editMode}}
|
||||
<div class="document-heading {{if isEditor 'cursor-pointer'}}" onclick={{if isEditor (action 'toggleEdit')}}>
|
||||
<h1 class="doc-title">{{document.name}}</h1>
|
||||
<div class="doc-excerpt">{{document.excerpt}}</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<form {{action "onSave" on="submit"}}>
|
||||
<div class="edit-document-heading">
|
||||
<div class="input-inline input-transparent edit-doc-title">
|
||||
{{focus-input id="document-name" type="text" value=docName class=(if hasNameError 'error-inline') placeholder="Name" autocomplete="off"}}
|
||||
</div>
|
||||
<div class="input-inline input-transparent edit-doc-excerpt">
|
||||
{{input id="document-excerpt" type="text" value=docExcerpt class=(if hasExcerptError 'error-inline') placeholder="Excerpt" autocomplete="off"}}
|
||||
</div>
|
||||
<div>
|
||||
<button type="submit" class="round-button-mono" {{action 'onSave'}}>
|
||||
<i class="material-icons color-green">check</i>
|
||||
</button>
|
||||
<div class="round-button-mono" {{action 'onCancel'}}>
|
||||
<i class="material-icons color-gray">close</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{{/unless}}
|
17
gui/app/templates/components/document/document-history.hbs
Normal file
17
gui/app/templates/components/document/document-history.hbs
Normal file
|
@ -0,0 +1,17 @@
|
|||
{{ui-select tagName="span" class="revision-picker" content=revisions action=(action 'onSelectRevision') optionValuePath="id" optionLabelPath="label"}}
|
||||
|
||||
<div id="restore-history-button" class="regular-button button-green pull-right">Restore</div>
|
||||
{{#dropdown-dialog target="restore-history-button" position="bottom right" button="Restore" color="flat-green" onAction=(action 'onRollback')}}
|
||||
<p>Are you sure you want to roll back to this version?</p>
|
||||
{{/dropdown-dialog}}
|
||||
<div class="clearfix" />
|
||||
<div class="margin-bottom-50" />
|
||||
|
||||
<div class="diff-zone">
|
||||
{{#if hasDiff}}
|
||||
<div class="is-a-page wysiwyg">
|
||||
{{{diff}}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="clearfix" />
|
||||
</div>
|
10
gui/app/templates/components/document/document-page.hbs
Normal file
10
gui/app/templates/components/document/document-page.hbs
Normal file
|
@ -0,0 +1,10 @@
|
|||
<div id="page-{{ page.id }}" class="is-a-page wysiwyg" data-id="{{ page.id }}" data-type="{{ page.contentType }}">
|
||||
{{#if editMode}}
|
||||
{{document/document-editor document=document folder=folder page=page meta=meta onCancel=(action 'onCancelEdit') onAction=(action 'onSavePage')}}
|
||||
{{else}}
|
||||
{{document/page-heading tagName=page.tagName document=document folder=folder page=page isEditor=isEditor tabMode=tabMode
|
||||
onEdit=(action 'onEdit') onSavePageAsBlock=(action 'onSavePageAsBlock')
|
||||
onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') onDeletePage=(action 'onDeletePage')}}
|
||||
{{section/base-renderer page=page}}
|
||||
{{/if}}
|
||||
</div>
|
7
gui/app/templates/components/document/document-tab.hbs
Normal file
7
gui/app/templates/components/document/document-tab.hbs
Normal file
|
@ -0,0 +1,7 @@
|
|||
<div id="page-{{ page.id }}" class="is-a-tab wysiwyg non-printable {{if expanded 'tab-max' 'tab-min'}}" data-id="{{ page.id }}" data-type="{{ page.contentType }}">
|
||||
{{document/tab-heading tagName=page.tagName document=document folder=folder page=page isEditor=isEditor
|
||||
onExpand=(action 'onExpand') onSavePageAsBlock=(action 'onSavePageAsBlock') onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') onDeletePage=(action 'onDeletePage')}}
|
||||
{{#if expanded}}
|
||||
{{section/base-renderer page=page}}
|
||||
{{/if}}
|
||||
</div>
|
103
gui/app/templates/components/document/document-view.hbs
Normal file
103
gui/app/templates/components/document/document-view.hbs
Normal file
|
@ -0,0 +1,103 @@
|
|||
<div class="document-view {{if (is-equal document.layout 'doc') 'document-view-unified'}}">
|
||||
|
||||
{{#if hasPages}}
|
||||
{{#each pages key="id" as |page index|}}
|
||||
{{#if isEditor}}
|
||||
<div class="start-section" data-index={{index}} data-before-id={{page.id}} id="add-section-button-{{page.id}}" {{action 'onShowSectionWizard' page}}>
|
||||
<div class="start-button">
|
||||
<div class="round-button round-button-small button-green">
|
||||
<i class="material-icons">add</i>
|
||||
</div>
|
||||
<div class="label">section</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="section-divider" />
|
||||
{{/if}}
|
||||
{{#if (is-equal page.pageType 'section')}}
|
||||
{{#document/document-page document=document folder=folder page=page isEditor=isEditor toEdit=toEdit pageId=pageId
|
||||
onSavePage=(action 'onSavePage') onSavePageAsBlock=(action 'onSavePageAsBlock')
|
||||
onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') onDeletePage=(action 'onDeletePage')}}
|
||||
{{/document/document-page}}
|
||||
{{/if}}
|
||||
{{#if (is-equal page.pageType 'tab')}}
|
||||
{{#document/document-tab document=document folder=folder page=page isEditor=isEditor pageId=pageId
|
||||
onSavePage=(action 'onSavePage') onSavePageAsBlock=(action 'onSavePageAsBlock')
|
||||
onCopyPage=(action 'onCopyPage') onMovePage=(action 'onMovePage') onDeletePage=(action 'onDeletePage')}}
|
||||
{{/document/document-tab}}
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
{{#if isEditor}}
|
||||
<div class="start-section" data-index="0" data-before-id="0" id="add-section-button-0" {{action 'onShowSectionWizard'}}>
|
||||
<div class="start-button">
|
||||
<div class="round-button round-button-small button-green">
|
||||
<i class="material-icons">add</i>
|
||||
</div>
|
||||
<div class="label">section</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{#if isEditor}}
|
||||
<div class="start-section start-section-empty-state" data-index="-1" data-before-id="0" id="add-section-button-0" {{action 'onShowSectionWizard'}}>
|
||||
<div class="start-button">
|
||||
<div class="round-button round-button-small button-green">
|
||||
<i class="material-icons">add</i>
|
||||
</div>
|
||||
<div class="label">section</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
<div id="wizard-placeholder" class="hide margin-top-50" />
|
||||
|
||||
<div id="new-section-wizard" class="new-section-wizard">
|
||||
<div class="input-inline input-transparent pull-left width-80">
|
||||
{{input type="text" id="new-section-name" value=newSectionName class=(if newSectionNameMissing 'section-name error-inline' 'section-name') placeholder="Name" autocomplete="off"}}
|
||||
</div>
|
||||
<div class="round-button-mono pull-right" {{action 'onHideSectionWizard'}}>
|
||||
<i class="material-icons color-gray">close</i>
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
|
||||
<div class="list-wrapper">
|
||||
<ul class="preset-list">
|
||||
{{#each sections as |section|}}
|
||||
<li class="item" {{action 'onInsertSection' section}}>
|
||||
<div class="icon">
|
||||
<img class="img" src="/sections/{{section.contentType}}.png" srcset="/sections/{{section.contentType}}@2x.png" />
|
||||
</div>
|
||||
<div class='title'>{{section.title}}</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
{{#if hasBlocks}}
|
||||
<div class="template-caption">Reusable content</div>
|
||||
<ul class="block-list">
|
||||
{{#each blocks as |block|}}
|
||||
<li class="item tooltipped" data-tooltip="{{block.firstname}} {{block.lastname}}, {{time-ago block.created}}, used: {{ block.used }}" data-tooltip-position="bottom center">
|
||||
<div class="block-actions">
|
||||
{{#link-to 'document.block' folder.id folder.slug document.id document.slug block.id}}
|
||||
<i class="material-icons">mode_edit</i>
|
||||
{{/link-to}}
|
||||
<i class="material-icons" id={{block.deleteId}}>delete</i>
|
||||
</div>
|
||||
<div class="details" {{action 'onInsertBlock' block}}>
|
||||
<div class='title'>{{block.title}}</div>
|
||||
<div class='desc'>{{block.excerpt}}</div>
|
||||
</div>
|
||||
{{#dropdown-dialog target=block.deleteId position="bottom left" button="Delete" color="flat-red" onAction=(action 'onDeleteBlock' block.id)}}
|
||||
<p>Are you sure you want to delete block<br/><span class="bold">{{block.title}}?</span></p>
|
||||
{{/dropdown-dialog}}
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<div class="template-caption">Reusable content appears below</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
74
gui/app/templates/components/document/page-heading.hbs
Normal file
74
gui/app/templates/components/document/page-heading.hbs
Normal file
|
@ -0,0 +1,74 @@
|
|||
<div class="page-title">
|
||||
<span id="page-title-{{ page.id }}">{{ page.title }}</span>
|
||||
<div id="page-toolbar-{{ page.id }}" class="pull-right page-toolbar hidden-xs hidden-sm">
|
||||
{{#if isEditor}}
|
||||
<div class="round-button-mono" {{action 'onEdit'}}>
|
||||
<i class="material-icons color-gray">mode_edit</i>
|
||||
</div>
|
||||
<div class="round-button-mono" id="page-menu-{{page.id}}">
|
||||
<i class="material-icons color-gray">more_vert</i>
|
||||
</div>
|
||||
|
||||
{{#dropdown-menu target=menuTarget position="top right" open="click" onOpenCallback=(action 'onMenuOpen') onCloseCallback=(action 'onMenuOpen')}}
|
||||
<ul class="menu">
|
||||
<li class="item" id={{copyButtonId}}>Copy</li>
|
||||
<li class="item" id={{moveButtonId}}>Move</li>
|
||||
<li class="item" id={{publishButtonId}}>Publish</li>
|
||||
<li class="divider"></li>
|
||||
<li class="item danger" id={{deleteButtonId}}>Delete</li>
|
||||
</ul>
|
||||
{{/dropdown-menu}}
|
||||
|
||||
{{#if menuOpen}}
|
||||
{{#dropdown-dialog target=deleteButtonId position="bottom right" button="Delete" color="flat-red" onAction=(action 'deletePage')}}
|
||||
<p>Are you sure you want to delete <span class="bold">{{page.title}}?</span></p>
|
||||
<p>
|
||||
{{input type="checkbox" id=checkId class="margin-left-20" checked=deleteChildren}}
|
||||
<label for="{{checkId}}"> Delete child sections</label>
|
||||
</p>
|
||||
{{/dropdown-dialog}}
|
||||
{{#dropdown-dialog id=publishDialogId target=publishButtonId position="bottom right" button="Publish" color="flat-green" focusOn=blockTitleId onAction=(action 'onSavePageAsBlock')}}
|
||||
<div class="form-header">
|
||||
<div class="tip">
|
||||
<span class="bold">{{folder.name}}:</span> Content Block
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Name</label>
|
||||
<div class="tip">Short title for reusable content block</div>
|
||||
{{input type="text" value=blockTitle id=blockTitleId}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Description</label>
|
||||
<div class="tip">Short description to help others understand<br/>the reusable content block</div>
|
||||
{{textarea rows="3" value=blockExcerpt id=blockExcerptId}}
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{#dropdown-dialog id=copyDialogId target=copyButtonId position="bottom right" button="Copy" color="flat-green" onOpenCallback=(action 'onCopyDialogOpen') onAction=(action 'onCopyPage')}}
|
||||
<div class="form-header">
|
||||
<div class="tip">
|
||||
<span class="bold">Copy:</span> {{page.title}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Target</label>
|
||||
<div class="tip">Select where the content should be copied to</div>
|
||||
{{ui-select cssClass="dropdown-page-toolbar" content=documentList action=(action 'onTargetChange') optionValuePath="id" optionLabelPath="name" selection=document}}
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{#dropdown-dialog id=moveDialogId target=moveButtonId position="bottom right" button="Move" color="flat-green" onOpenCallback=(action 'onCopyDialogOpen') onAction=(action 'onMovePage')}}
|
||||
<div class="form-header">
|
||||
<div class="tip">
|
||||
<span class="bold">Move:</span> {{page.title}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Target</label>
|
||||
<div class="tip">Select where the content should be moved to</div>
|
||||
{{ui-select cssClass="dropdown-page-toolbar" content=documentListOthers action=(action 'onTargetChange') optionValuePath="id" optionLabelPath="name"}}
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,16 @@
|
|||
<div class="sidebar-panel">
|
||||
<div class="title">Activity</div>
|
||||
<div class="document-sidebar-view-activity">
|
||||
<ul class="items">
|
||||
{{#each activity as |a|}}
|
||||
<li class="item">
|
||||
<div class="avatar-box">
|
||||
<div class="avatar">{{user-initials a.firstname a.lastname}}</div>
|
||||
</div>
|
||||
<div class="name">{{a.firstname}} {{a.lastname}}</div>
|
||||
<div class="detail {{a.activityColor}}">{{a.activityLabel}}, {{time-ago a.created}}</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,47 @@
|
|||
<div class="sidebar-panel">
|
||||
<div class="title">Attachments</div>
|
||||
<div class="document-sidebar-view-attachments">
|
||||
{{#if isEditor}}
|
||||
<div id="upload-document-files" class="upload-document-files">
|
||||
Drag-drop files or click to select files
|
||||
</div>
|
||||
{{/if}}
|
||||
<ul class="list">
|
||||
{{#each files key="id" as |a index|}}
|
||||
<li class="item">
|
||||
<img class="icon" src="/assets/img/attachments/{{document/file-icon a.extension}}" />
|
||||
<a href="{{ appMeta.endpoint }}/public/attachments/{{ appMeta.orgId }}/{{ a.id }}">
|
||||
<span class="file">{{ a.filename }}</span>
|
||||
</a>
|
||||
{{#if isEditor}}
|
||||
<div class="action round-button-mono">
|
||||
<i class="material-icons color-gray delete-attachment-{{a.id}}" title="Delete" {{action 'onConfirmDelete' a.id a.filename}}>delete</i>
|
||||
</div>
|
||||
{{/if}}
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{#if emptyState}}
|
||||
<div class="explainer">
|
||||
<div class="empty-state">
|
||||
There are no attachments
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div class="dropdown-dialog delete-attachment-dialog">
|
||||
<div class="content">
|
||||
<p>Are you sure you want to delete <span class="bold">{{deleteAttachment.name}}?</span></p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="flat-button" {{action 'onCancel'}}>
|
||||
cancel
|
||||
</div>
|
||||
<div class="flat-button flat-red" {{action 'onDelete'}}>
|
||||
delete
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1 @@
|
|||
<a id="index-{{page.id}}" class="link toc-index-item {{page.tocIndentCss}}" {{action 'onClick' page.id}}>{{page.title}}</a>
|
34
gui/app/templates/components/document/sidebar-view-index.hbs
Normal file
34
gui/app/templates/components/document/sidebar-view-index.hbs
Normal file
|
@ -0,0 +1,34 @@
|
|||
<div class="sidebar-panel">
|
||||
<div class="title">Index</div>
|
||||
<div class="document-sidebar-view-index">
|
||||
<div class="structure">
|
||||
{{#if this.session.authenticated}}
|
||||
{{#unless emptyState}}
|
||||
<div id="tocToolbar" class="hidden-xs hidden-sm toc-controls {{if state.actionablePage 'current-page' ''}}">
|
||||
<div id="toc-up-button" class="round-button-mono {{if state.upDisabled 'disabled'}}" data-tooltip="Move up" data-tooltip-position="top center" {{action 'pageUp'}}>
|
||||
<i class="material-icons">arrow_upward</i>
|
||||
</div>
|
||||
<div class="button-gap" />
|
||||
<div id="toc-down-button" class="round-button-mono {{if state.downDisabled 'disabled'}}" data-tooltip="Move down" data-tooltip-position="top center" {{action 'pageDown'}}>
|
||||
<i class="material-icons">arrow_downward</i>
|
||||
</div>
|
||||
<div class="button-gap" />
|
||||
<div id="toc-outdent-button" class="round-button-mono {{if state.outdentDisabled 'disabled'}}" data-tooltip="Outdent" data-tooltip-position="top center" {{action 'pageOutdent'}}>
|
||||
<i class="material-icons">format_indent_decrease</i>
|
||||
</div>
|
||||
<div class="button-gap" />
|
||||
<div id="toc-indent-button" class="round-button-mono {{if state.indentDisabled 'disabled'}}" data-tooltip="Indent" data-tooltip-position="top center" {{action 'pageIndent'}}>
|
||||
<i class="material-icons">format_indent_increase</i>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
|
||||
<ul class="index-list">
|
||||
{{#each pages key="id" as |p index|}}
|
||||
{{document/sidebar-view-index-entry page=p index=index onClick=(action 'onEntryClick')}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
112
gui/app/templates/components/document/sidebar-zone.hbs
Normal file
112
gui/app/templates/components/document/sidebar-zone.hbs
Normal file
|
@ -0,0 +1,112 @@
|
|||
<div class="sidebar-toolbar">
|
||||
<div class="round-button-mono" id="sidebar-zone-more-button">
|
||||
<i class="material-icons">more_horiz</i>
|
||||
</div>
|
||||
<div class="margin-top-20"></div>
|
||||
<div class="round-button-mono {{if (is-equal tab 'index') 'selected'}}" {{action 'onChangeTab' 'index'}}>
|
||||
<i class="material-icons">view_headline</i>
|
||||
</div>
|
||||
<div class="margin-top-20"></div>
|
||||
<div class="round-button-mono {{if (is-equal tab 'attachments') 'selected'}}" {{action 'onChangeTab' 'attachments'}}>
|
||||
<i class="material-icons">attach_file</i>
|
||||
</div>
|
||||
{{#if session.authenticated}}
|
||||
<div class="margin-top-20"></div>
|
||||
<div class="round-button-mono {{if (is-equal tab 'activity') 'selected'}}" {{action 'onChangeTab' 'activity'}}>
|
||||
<i class="material-icons">timeline</i>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div class="sidebar-common">
|
||||
{{#if document.template}}
|
||||
<div class="template-header">Template</div>
|
||||
{{/if}}
|
||||
{{document/tag-editor documentTags=document.tags isEditor=isEditor onChange=(action 'onTagChange')}}
|
||||
</div>
|
||||
|
||||
<div class="sidebar-wrapper">
|
||||
{{#if (is-equal tab 'index')}}
|
||||
{{document/sidebar-view-index document=document folder=folder pages=pages page=page isEditor=isEditor
|
||||
onPageSequenceChange=(action 'onPageSequenceChange') onPageLevelChange=(action 'onPageLevelChange') onGotoPage=(action 'onGotoPage')}}
|
||||
{{/if}}
|
||||
|
||||
{{#if (is-equal tab 'attachments')}}
|
||||
{{document/sidebar-view-attachments document=document isEditor=isEditor}}
|
||||
{{/if}}
|
||||
|
||||
{{#if (is-equal tab 'activity')}}
|
||||
{{document/sidebar-view-activity document=document pages=pages isEditor=isEditor}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{#dropdown-menu target="sidebar-zone-more-button" position="bottom left" open="click" onOpenCallback=(action 'onMenuOpen') onCloseCallback=(action 'onMenuOpen')}}
|
||||
<ul class="menu">
|
||||
{{#if session.authenticated}}
|
||||
{{#if (is-equal document.layout 'section')}}
|
||||
<li class="item" {{action 'onLayoutChange' 'doc'}}>Flat view</li>
|
||||
<li class="divider"></li>
|
||||
{{else}}
|
||||
<li class="item" {{action 'onLayoutChange' 'section'}}>Section view</li>
|
||||
<li class="divider"></li>
|
||||
{{/if}}
|
||||
{{#if pinState.isPinned}}
|
||||
<li class="item" {{action 'onUnpin'}}>Unpin</li>
|
||||
{{else}}
|
||||
<li class="item" id="pin-document-button">Pin</li>
|
||||
{{/if}}
|
||||
<li class="item" id="pin-document-button">
|
||||
{{#link-to 'document.history'}}History{{/link-to}}
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
{{/if}}
|
||||
|
||||
{{#if isEditor}}
|
||||
<li class="item" id="save-template-button">Template</li>
|
||||
<li class="divider"></li>
|
||||
{{/if}}
|
||||
|
||||
<li class="item" id="print-document-button" {{action 'onPrintDocument'}}>Print</li>
|
||||
|
||||
{{#if isEditor}}
|
||||
<li class="divider"></li>
|
||||
<li class="item danger" id="delete-document-button">Delete</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
{{/dropdown-menu}}
|
||||
|
||||
{{#if session.authenticated}}
|
||||
{{#if menuOpen}}
|
||||
{{#unless pinState.isPinned}}
|
||||
{{#dropdown-dialog target="pin-document-button" position="bottom left" button="Pin" color="flat-green" onAction=(action 'onPin') focusOn="pin-document-name" }}
|
||||
<div class="input-control">
|
||||
<label>Pin Document</label>
|
||||
<div class="tip">A 3 or 4 character name</div>
|
||||
{{input type='text' id="pin-document-name" value=pinState.newName}}
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isEditor}}
|
||||
{{#if menuOpen}}
|
||||
{{#dropdown-dialog target="delete-document-button" position="bottom left" button="Delete" color="flat-red" onAction=(action 'onDeleteDocument')}}
|
||||
<p>Are you sure you want to delete this document?</p>
|
||||
<p>There is no undo, so be careful.</p>
|
||||
{{/dropdown-dialog}}
|
||||
|
||||
{{#dropdown-dialog target="save-template-button" position="bottom left" button="Save as Template" color="flat-green" onAction=(action 'onSaveTemplate') focusOn="new-template-name" }}
|
||||
<div class="input-control">
|
||||
<label>Name</label>
|
||||
<div class="tip">Short name for this type of document</div>
|
||||
{{input type='text' id="new-template-name" value=saveTemplate.name}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Excerpt</label>
|
||||
<div class="tip">Explain use case for this template</div>
|
||||
{{textarea value=saveTemplate.description rows="3" id="new-template-desc"}}
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
92
gui/app/templates/components/document/tab-heading.hbs
Normal file
92
gui/app/templates/components/document/tab-heading.hbs
Normal file
|
@ -0,0 +1,92 @@
|
|||
<div class="page-title">
|
||||
<div class="icon">
|
||||
<img class="img" src="/sections/{{page.contentType}}.png" srcset="/sections/{{page.contentType}}@2x.png" />
|
||||
</div>
|
||||
<span id="page-title-{{ page.id }}">{{ page.title }}</span>
|
||||
<div id="page-toolbar-{{ page.id }}" class="pull-right page-toolbar hidden-xs hidden-sm">
|
||||
{{#unless expanded}}
|
||||
<div class="round-button-mono" {{action 'toggleExpand'}}>
|
||||
<i class="material-icons color-gray">expand_more</i>
|
||||
</div>
|
||||
{{else}}
|
||||
{{#if isEditor}}
|
||||
{{#link-to 'document.section' page.id}}
|
||||
<div class="round-button-mono">
|
||||
<i class="material-icons color-gray">mode_edit</i>
|
||||
</div>
|
||||
{{/link-to}}
|
||||
<div class="round-button-mono" id="page-menu-{{page.id}}">
|
||||
<i class="material-icons color-gray">more_vert</i>
|
||||
</div>
|
||||
<div class="round-button-mono" {{action 'toggleExpand'}}>
|
||||
<i class="material-icons color-gray">expand_less</i>
|
||||
</div>
|
||||
|
||||
{{#dropdown-menu target=menuTarget position="top right" open="click" onOpenCallback=(action 'onMenuOpen') onCloseCallback=(action 'onMenuOpen')}}
|
||||
<ul class="menu">
|
||||
<li class="item" id={{copyButtonId}}>Copy</li>
|
||||
<li class="item" id={{moveButtonId}}>Move</li>
|
||||
<li class="item" id={{publishButtonId}}>Publish</li>
|
||||
<li class="divider"></li>
|
||||
<li class="item danger" id={{deleteButtonId}}>Delete</li>
|
||||
</ul>
|
||||
{{/dropdown-menu}}
|
||||
|
||||
{{#if menuOpen}}
|
||||
{{#dropdown-dialog target=deleteButtonId position="bottom right" button="Delete" color="flat-red" onAction=(action 'deletePage')}}
|
||||
<p>Are you sure you want to delete <span class="bold">{{page.title}}?</span></p>
|
||||
<p>
|
||||
{{input type="checkbox" id=checkId class="margin-left-20" checked=deleteChildren}}
|
||||
<label for="{{checkId}}"> Delete child sections</label>
|
||||
</p>
|
||||
{{/dropdown-dialog}}
|
||||
{{#dropdown-dialog id=publishDialogId target=publishButtonId position="bottom right" button="Publish" color="flat-green" focusOn=blockTitleId onAction=(action 'onSavePageAsBlock')}}
|
||||
<div class="form-header">
|
||||
<div class="tip">
|
||||
<span class="bold">{{folder.name}}:</span> Content Block
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Name</label>
|
||||
<div class="tip">Short title for reusable content block</div>
|
||||
{{input type="text" value=blockTitle id=blockTitleId}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Description</label>
|
||||
<div class="tip">Short description to help others understand<br/>the reusable content block</div>
|
||||
{{textarea rows="3" value=blockExcerpt id=blockExcerptId}}
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{#dropdown-dialog id=copyDialogId target=copyButtonId position="bottom right" button="Copy" color="flat-green" onOpenCallback=(action 'onCopyDialogOpen') onAction=(action 'onCopyPage')}}
|
||||
<div class="form-header">
|
||||
<div class="tip">
|
||||
<span class="bold">Copy:</span> {{page.title}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Target</label>
|
||||
<div class="tip">Select where the content should be copied to</div>
|
||||
{{ui-select cssClass="dropdown-page-toolbar" content=documentList action=(action 'onTargetChange') optionValuePath="id" optionLabelPath="name" selection=document}}
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{#dropdown-dialog id=moveDialogId target=moveButtonId position="bottom right" button="Move" color="flat-green" onOpenCallback=(action 'onCopyDialogOpen') onAction=(action 'onMovePage')}}
|
||||
<div class="form-header">
|
||||
<div class="tip">
|
||||
<span class="bold">Move:</span> {{page.title}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Target</label>
|
||||
<div class="tip">Select where the content should be moved to</div>
|
||||
{{ui-select cssClass="dropdown-page-toolbar" content=documentListOthers action=(action 'onTargetChange') optionValuePath="id" optionLabelPath="name"}}
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<div class="round-button-mono" {{action 'toggleExpand'}}>
|
||||
<i class="material-icons color-gray">expand_less</i>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
</div>
|
||||
</div>
|
22
gui/app/templates/components/document/tag-editor.hbs
Normal file
22
gui/app/templates/components/document/tag-editor.hbs
Normal file
|
@ -0,0 +1,22 @@
|
|||
<div class="document-tags">
|
||||
{{#each tagz as |tg|}}
|
||||
<div class="chip">
|
||||
<span class="chip-text">#{{tg}}</span>
|
||||
{{#if isEditor}}
|
||||
<i class="material-icons pull-right" {{action 'removeTag' tg}}>close</i>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/each}}
|
||||
{{#if canAdd}}
|
||||
<div class="chip-action">
|
||||
<span id="add-tag-button" class="chip-text">add tag</span>
|
||||
</div>
|
||||
{{#dropdown-dialog target="add-tag-button" position="bottom left" button="Add" color="flat-green" onAction=(action 'addTag') focusOn="add-tag-field" onOpenCallback=(action 'onTagEditor') targetOffset="20px 0"}}
|
||||
<div class="input-control">
|
||||
<label>Tag</label>
|
||||
<div class="tip">Lowercase letters, numbers, dashes</div>
|
||||
{{focus-input id="add-tag-field" value=newTag type="text"}}
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{/if}}
|
||||
</div>
|
34
gui/app/templates/components/documize-setup.hbs
Normal file
34
gui/app/templates/components/documize-setup.hbs
Normal file
|
@ -0,0 +1,34 @@
|
|||
<div class="col-lg-9 col-md-9 col-sm-9">
|
||||
<div class="form-bordered">
|
||||
<div class="form-header">
|
||||
<div class="title">Let's setup Documize</div>
|
||||
<div class="tip">Database name is <em>{{model.dbname}}</em></div>
|
||||
</div>
|
||||
<div class="input-control input-transparent">
|
||||
<label>Team</label>
|
||||
<div class="tip">What's your tribe called?</div>
|
||||
{{focus-input id="siteTitle" type="text" value=model.title class=(if hasEmptyTitleError 'error')}}
|
||||
</div>
|
||||
<div class="input-control input-transparent">
|
||||
<label>Firstname</label>
|
||||
<div class="tip">What do people call you?</div>
|
||||
{{input id="adminFirstname" type="text" value=model.firstname class=(if hasEmptyFirstnameError 'error')}}
|
||||
</div>
|
||||
<div class="input-control input-transparent">
|
||||
<label>Lastname</label>
|
||||
<div class="tip">How the government refers to you</div>
|
||||
{{input id="adminLastname" type="text" value=model.lastname class=(if hasEmptyLastnameError 'error')}}
|
||||
</div>
|
||||
<div class="input-control input-transparent">
|
||||
<label>Email</label>
|
||||
<div class="tip">No spam. Ever!</div>
|
||||
{{input id="adminEmail" type="email" value=model.email class=(if hasEmptyEmailError 'error')}}
|
||||
</div>
|
||||
<div class="input-control input-transparent">
|
||||
<label>Password</label>
|
||||
<div class="tip">Something you can remember without writing it down.</div>
|
||||
{{input id="adminPassword" type="text" value=model.password class=(if hasEmptyPasswordError 'error')}}
|
||||
</div>
|
||||
<div class="regular-button button-green" {{ action 'save' }}>Setup</div>
|
||||
</div>
|
||||
</div>
|
17
gui/app/templates/components/dropdown-dialog.hbs
Normal file
17
gui/app/templates/components/dropdown-dialog.hbs
Normal file
|
@ -0,0 +1,17 @@
|
|||
<div id="{{contentId}}" class="dropdown-dialog">
|
||||
<form class="form" {{action 'onAction' on="submit"}}>
|
||||
<div class="content">
|
||||
{{yield}}
|
||||
</div>
|
||||
<div class="actions">
|
||||
{{#if showCancel}}
|
||||
<div class="flat-button" {{action 'onCancel'}}>cancel</div>
|
||||
{{/if}}
|
||||
{{#if hasSecondButton}}
|
||||
<div class="flat-button {{color2}}" {{action 'onAction2'}}>{{button2}}</div>
|
||||
{{/if}}
|
||||
<div class="flat-button {{color}} dropdown-dialog-action-button" {{action 'onAction'}}>{{button}}</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</form>
|
||||
</div>
|
3
gui/app/templates/components/dropdown-menu.hbs
Normal file
3
gui/app/templates/components/dropdown-menu.hbs
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div id="{{contentId}}" class="dropdown-menu non-printable">
|
||||
{{yield}}
|
||||
</div>
|
9
gui/app/templates/components/folder/document-tags.hbs
Normal file
9
gui/app/templates/components/folder/document-tags.hbs
Normal file
|
@ -0,0 +1,9 @@
|
|||
<div class="margin-top-10">
|
||||
{{#each tagz as |tg|}}
|
||||
{{#link-to "search" (query-params filter=tg)}}
|
||||
<div class="chip">
|
||||
<span class="chip-text">{{tg}}</span>
|
||||
</div>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</div>
|
55
gui/app/templates/components/folder/documents-list.hbs
Normal file
55
gui/app/templates/components/folder/documents-list.hbs
Normal file
|
@ -0,0 +1,55 @@
|
|||
<div class="documents-list">
|
||||
{{#each documents key="id" as |document|}}
|
||||
<div id="document-{{document.id}}">
|
||||
<div class="document-item {{if document.selected "selected-card"}}">
|
||||
{{#link-to 'document.index' folder.id folder.slug document.id document.slug class="link"}}
|
||||
<div class="title">{{ document.name }}</div>
|
||||
<div class="snippet">{{ document.excerpt }}</div>
|
||||
<div class="chips">{{folder/document-tags documentTags=document.tags}}</div>
|
||||
{{/link-to}}
|
||||
<div class="checkbox" {{action 'selectDocument' document.id}}>
|
||||
{{#if session.authenticated}}
|
||||
{{#if document.selected}}
|
||||
<i class="material-icons">check_box</i>
|
||||
{{else}}
|
||||
<i class="material-icons">check_box_outline_blank</i>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{#if canCreate}}
|
||||
<div class="wizard-item start-document" {{action 'onShowDocumentWizard' document.id}}>
|
||||
<div class="start-button">
|
||||
<div class="round-button round-button-small button-green">
|
||||
<i class="material-icons">add</i>
|
||||
</div>
|
||||
<div class="label">document</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="no-wizard-item" />
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
{{folder/start-document folder=folder isEditor=isEditor onImport=(action 'onImport') onHideDocumentWizard=(action 'onHideDocumentWizard')}}
|
||||
|
||||
{{#if emptyState}}
|
||||
{{#if canCreate}}
|
||||
<div class="start-document start-document-empty-state" {{action 'onShowDocumentWizard' ''}}>
|
||||
<div class="start-button">
|
||||
<div class="round-button round-button-small button-green">
|
||||
<i class="material-icons">add</i>
|
||||
</div>
|
||||
<div class="label">document</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
<div id="wizard-placeholder" class="hide" />
|
||||
|
||||
{{#if emptyState}}
|
||||
<div class="regular-button button-red margin-top-50" {{action 'onDelete'}}>delete space</div>
|
||||
{{/if}}
|
21
gui/app/templates/components/folder/folder-heading.hbs
Normal file
21
gui/app/templates/components/folder/folder-heading.hbs
Normal file
|
@ -0,0 +1,21 @@
|
|||
{{#unless editMode}}
|
||||
<div class="folder-heading {{if isFolderOwner 'cursor-pointer'}}" onclick={{if isFolderOwner (action 'toggleEdit')}}>
|
||||
<h1 class="folder-title">{{folder.name}}</h1>
|
||||
</div>
|
||||
{{else}}
|
||||
<form {{action "onSave" on="submit"}}>
|
||||
<div class="edit-folder-heading">
|
||||
<div class="input-inline input-transparent edit-folder-title">
|
||||
{{focus-input id="folder-name" type="text" value=folderName class=(if hasNameError 'error-inline') placeholder="Name" autocomplete="off"}}
|
||||
</div>
|
||||
<div>
|
||||
<button type="submit" class="round-button-mono" {{action 'onSave'}}>
|
||||
<i class="material-icons color-green">check</i>
|
||||
</button>
|
||||
<div class="round-button-mono" {{action 'onCancel'}}>
|
||||
<i class="material-icons color-gray">close</i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{{/unless}}
|
36
gui/app/templates/components/folder/folder-toolbar.hbs
Normal file
36
gui/app/templates/components/folder/folder-toolbar.hbs
Normal file
|
@ -0,0 +1,36 @@
|
|||
{{#if showToolbar}}
|
||||
<div class="pull-right hidden-xs hidden-sm">
|
||||
{{#if hasSelectedDocuments}}
|
||||
<div class="round-button button-blue" id="move-documents-button" data-tooltip="Move documents" data-tooltip-position="top center">
|
||||
<i class="material-icons">folder</i>
|
||||
</div>
|
||||
<div class="button-gap"></div>
|
||||
<div class="round-button button-red" id="delete-documents-button" data-tooltip="Delete documents" data-tooltip-position="top center">
|
||||
<i class="material-icons">delete</i>
|
||||
</div>
|
||||
{{#dropdown-dialog target="delete-documents-button" position="bottom right" button="Delete" color="flat-red" onAction=(action 'deleteDocuments')}}
|
||||
<p>Are you sure you want to delete selected documents?</p>
|
||||
<p>There is no undo!</p>
|
||||
{{/dropdown-dialog}}
|
||||
{{#dropdown-dialog target="move-documents-button" position="bottom right" button="Move" color="flat-blue" onAction=(action 'moveDocuments')}}
|
||||
<p class="heading">Select destination space</p>
|
||||
<ul class="move-document-options">
|
||||
{{#each movedFolderOptions as |folder|}}
|
||||
<li class="option {{if folder.selected "selected"}}" {{action 'setMoveFolder' folder.id}}>
|
||||
{{#if folder.selected}}
|
||||
<i class="material-icons">radio_button_checked</i>
|
||||
{{else}}
|
||||
<i class="material-icons">radio_button_unchecked</i>
|
||||
{{/if}}
|
||||
{{ folder.name }}
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/dropdown-dialog}}
|
||||
{{else}}
|
||||
<div class="margin-top-35"></div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="margin-bottom-20 clearfix" />
|
72
gui/app/templates/components/folder/sidebar-folders-list.hbs
Normal file
72
gui/app/templates/components/folder/sidebar-folders-list.hbs
Normal file
|
@ -0,0 +1,72 @@
|
|||
<div class="sidebar-panel">
|
||||
<div class="space-tools">
|
||||
{{#if showingDocument}}
|
||||
{{folder/start-document savedTemplates=savedTemplates folder=folder editor=folderService.canEditCurrentFolder
|
||||
onImport=(action 'onImport')
|
||||
onEditTemplate=(action 'onEditTemplate')
|
||||
onDocumentTemplate=(action 'onDocumentTemplate')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div class="folders-list">
|
||||
{{#if session.isEditor}}
|
||||
<div id="add-space-button" class="regular-button button-white">
|
||||
<i class="material-icons">add</i>
|
||||
<div class="name">Space</div>
|
||||
</div>
|
||||
{{#dropdown-dialog target="add-space-button" position="bottom left" button="Add" color="flat-green" onAction=(action 'addFolder') focusOn="new-folder-name" }}
|
||||
<div>
|
||||
<div class="input-control">
|
||||
<label>New space</label>
|
||||
<div class="tip">A repository for related documentation</div>
|
||||
{{input type='text' id="new-folder-name" class="mousetrap" value=newFolder}}
|
||||
</div>
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{/if}}
|
||||
|
||||
<div class="section">
|
||||
<div class="heading">EVERYONE</div>
|
||||
{{#unless hasPublicFolders}}
|
||||
<div class="message margin-left-15">No global spaces</div>
|
||||
{{/unless}}
|
||||
<ul class="list">
|
||||
{{#each publicFolders as |folder|}}
|
||||
{{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
|
||||
<li class="item">{{ folder.name }}</li>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{#if session.authenticated}}
|
||||
<div class="section">
|
||||
<div class="heading">TEAM</div>
|
||||
{{#unless hasProtectedFolders}}
|
||||
<div class="message margin-left-15">No protected spaces</div>
|
||||
{{/unless}}
|
||||
<ul class="list">
|
||||
{{#each protectedFolders as |folder|}}
|
||||
{{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
|
||||
<li class="item">{{ folder.name }}</li>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div class="heading">PERSONAL</div>
|
||||
{{#unless hasPrivateFolders}}
|
||||
<div class="message margin-left-15">No private spaces</div>
|
||||
{{/unless}}
|
||||
<ul class="list">
|
||||
{{#each privateFolders as |folder|}}
|
||||
{{#link-to 'folder' folder.id folder.slug class="link" activeClass='selected' }}
|
||||
<li class="item">{{ folder.name }}</li>
|
||||
{{/link-to}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
30
gui/app/templates/components/folder/sidebar-permissions.hbs
Normal file
30
gui/app/templates/components/folder/sidebar-permissions.hbs
Normal file
|
@ -0,0 +1,30 @@
|
|||
<div class="sidebar-panel">
|
||||
<div class="title">Space Permissions</div>
|
||||
<div class="sidebar-permissions folder-sidebar-form-wrapper">
|
||||
<table class="permissions-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>View</th>
|
||||
<th>Edit</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each permissions key="@index" as |permission|}}
|
||||
<tr>
|
||||
<td>{{permission.fullname}}</td>
|
||||
<td>
|
||||
<input type="checkbox" id="canView-{{permission.userId}}" checked={{permission.canView}} />
|
||||
<label for="canView-{{permission.userId}}"> </label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" id="canEdit-{{permission.userId}}" checked={{permission.canEdit}} />
|
||||
<label for="canEdit-{{permission.userId}}"> </label>
|
||||
</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="regular-button button-blue" {{action 'setPermissions'}}>Set</div>
|
||||
</div>
|
||||
</div>
|
16
gui/app/templates/components/folder/sidebar-share.hbs
Normal file
16
gui/app/templates/components/folder/sidebar-share.hbs
Normal file
|
@ -0,0 +1,16 @@
|
|||
<div class="sidebar-panel">
|
||||
<div class="title">Invite Users</div>
|
||||
<div class="sidebar-folder-share folder-sidebar-form-wrapper">
|
||||
<div class="input-control">
|
||||
<label>Email</label>
|
||||
<div class="tip">Comma separate multiple email addresses</div>
|
||||
{{focus-input id="inviteEmail" type="text" class="input-transparent" value=inviteEmail}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Message</label>
|
||||
<div class="tip">Explain why they are being invited</div>
|
||||
{{textarea id="explainInvite" value=inviteMessage class="input-transparent" rows="5"}}
|
||||
</div>
|
||||
<div class="regular-button button-blue" {{ action 'onShare' }}>Share</div>
|
||||
</div>
|
||||
</div>
|
67
gui/app/templates/components/folder/sidebar-zone.hbs
Normal file
67
gui/app/templates/components/folder/sidebar-zone.hbs
Normal file
|
@ -0,0 +1,67 @@
|
|||
<div class="sidebar-toolbar">
|
||||
{{#unless noFolder}}
|
||||
<div class="margin-top-20"></div>
|
||||
<div class="round-button-mono {{if (is-equal tab 'index') 'selected'}}" {{action 'onChangeTab' 'index'}}>
|
||||
<i class="material-icons">view_headline</i>
|
||||
</div>
|
||||
<div class="margin-top-20"></div>
|
||||
|
||||
{{#if session.authenticated}}
|
||||
{{#if isFolderOwner}}
|
||||
{{#if isAuthProviderDocumize}}
|
||||
<div class="round-button-mono {{if (is-equal tab 'share') 'selected'}}" {{action 'onChangeTab' 'share'}}>
|
||||
<i class="material-icons">person_add</i>
|
||||
</div>
|
||||
<div class="margin-top-20"></div>
|
||||
{{/if}}
|
||||
<div class="round-button-mono {{if (is-equal tab 'permissions') 'selected'}}" {{action 'onChangeTab' 'permissions'}}>
|
||||
<i class="material-icons">group</i>
|
||||
</div>
|
||||
<div class="margin-top-20"></div>
|
||||
{{/if}}
|
||||
<div class="round-button-mono" id="space-more-button">
|
||||
<i class="material-icons">more_horiz</i>
|
||||
</div>
|
||||
|
||||
{{#dropdown-menu target="space-more-button" position="bottom left" open="click" onOpenCallback=(action 'onMenuOpen') onCloseCallback=(action 'onMenuOpen')}}
|
||||
<ul class="menu">
|
||||
{{#if pinState.isPinned}}
|
||||
<li class="item" {{action 'onUnpin'}}>Unpin</li>
|
||||
{{else}}
|
||||
<li class="item" id="pin-space-button">Pin</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
{{/dropdown-menu}}
|
||||
|
||||
{{#if menuOpen}}
|
||||
{{#unless pinState.isPinned}}
|
||||
{{#dropdown-dialog target="pin-space-button" position="bottom left" button="Pin" color="flat-green" onAction=(action 'onPin') focusOn="pin-space-name" }}
|
||||
<div class="input-control">
|
||||
<label>Pin Space</label>
|
||||
<div class="tip">A 3 or 4 character name</div>
|
||||
{{input type='text' id="pin-space-name" value=pinState.newName}}
|
||||
</div>
|
||||
{{/dropdown-dialog}}
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
</div>
|
||||
|
||||
<div class="sidebar-common">
|
||||
{{layout/sidebar-intro title=appMeta.title message=appMeta.message}}
|
||||
</div>
|
||||
|
||||
<div class="sidebar-wrapper">
|
||||
{{#if (is-equal tab 'index')}}
|
||||
{{folder/sidebar-folders-list folders=folders folder=folder isFolderOwner=isFolderOwner onFolderAdd=(action 'onFolderAdd')}}
|
||||
{{/if}}
|
||||
|
||||
{{#if (is-equal tab 'share')}}
|
||||
{{folder/sidebar-share folders=folders folder=folder}}
|
||||
{{/if}}
|
||||
|
||||
{{#if (is-equal tab 'permissions')}}
|
||||
{{folder/sidebar-permissions folders=folders folder=folder}}
|
||||
{{/if}}
|
||||
</div>
|
35
gui/app/templates/components/folder/start-document.hbs
Normal file
35
gui/app/templates/components/folder/start-document.hbs
Normal file
|
@ -0,0 +1,35 @@
|
|||
<div id="new-document-wizard" class="new-document-wizard">
|
||||
|
||||
<div class="input-inline input-transparent pull-left width-80">
|
||||
{{input type="text" id="new-document-name" value=newDocumentName class=(if newDocumentNameMissing 'document-name error-inline' 'document-name mousetrap') placeholder="Name" autocomplete="off"}}
|
||||
</div>
|
||||
<div class="round-button-mono pull-right" {{action 'onHideDocumentWizard'}}>
|
||||
<i class="material-icons color-gray">close</i>
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
|
||||
<div id="import-document-button" class="import-document-button">
|
||||
Drag-drop or click to select .doc, .docx, .md, .markdown files
|
||||
</div>
|
||||
|
||||
<div class="list-wrapper">
|
||||
<ul class="template-list">
|
||||
{{#each savedTemplates key="id" as |template|}}
|
||||
<li class="item">
|
||||
{{#if isEditor}}
|
||||
{{#unless template.locked}}
|
||||
<div class="template-actions">
|
||||
<i class="material-icons" {{action 'editTemplate' template}}>mode_edit</i>
|
||||
</div>
|
||||
{{/unless}}
|
||||
{{/if}}
|
||||
<div class="details" {{action 'startDocument' template}}>
|
||||
<div class='title'>{{template.title}}</div>
|
||||
<div class='desc'>{{template.description}}</div>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
15
gui/app/templates/components/forgot-password.hbs
Normal file
15
gui/app/templates/components/forgot-password.hbs
Normal file
|
@ -0,0 +1,15 @@
|
|||
<form {{action 'forgot' on="submit"}}>
|
||||
{{#if sayThanks}}
|
||||
<div class="reset-thanks margin-bottom-30">Thanks. Check your email for instructions.</div>
|
||||
{{else}}
|
||||
<div class="input-control">
|
||||
<label>Email</label>
|
||||
{{focus-input type="email" value=email id="email" class=(if hasEmptyEmailError 'error')}}
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
<div class="margin-top-10 margin-bottom-20">
|
||||
<button type="submit" class="regular-button button-blue">Reset</button>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{#link-to 'auth.login'}}Sign In{{/link-to}}
|
||||
</form>
|
7
gui/app/templates/components/layout/sidebar-intro.hbs
Normal file
7
gui/app/templates/components/layout/sidebar-intro.hbs
Normal file
|
@ -0,0 +1,7 @@
|
|||
<div class="zone-sidebar-page-title">
|
||||
{{title}}
|
||||
{{yield}}
|
||||
</div>
|
||||
<div class="zone-sidebar-page-info">
|
||||
{{message}}
|
||||
</div>
|
3
gui/app/templates/components/layout/zone-container.hbs
Normal file
3
gui/app/templates/components/layout/zone-container.hbs
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div id="wrapper">
|
||||
{{yield}}
|
||||
</div>
|
5
gui/app/templates/components/layout/zone-content.hbs
Normal file
5
gui/app/templates/components/layout/zone-content.hbs
Normal file
|
@ -0,0 +1,5 @@
|
|||
<div class="page-container">
|
||||
<div id="page-content-wrapper">
|
||||
{{yield}}
|
||||
</div>
|
||||
</div>
|
3
gui/app/templates/components/layout/zone-document.hbs
Normal file
3
gui/app/templates/components/layout/zone-document.hbs
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div id="zone-document-content" class="zone-document-content col-lg-9 col-md-9 col-sm-9">
|
||||
{{yield}}
|
||||
</div>
|
83
gui/app/templates/components/layout/zone-navigation.hbs
Normal file
83
gui/app/templates/components/layout/zone-navigation.hbs
Normal file
|
@ -0,0 +1,83 @@
|
|||
<div id="zone-navigation" class="zone-navigation">
|
||||
<ul id="top-zone" class="top-zone">
|
||||
{{#if session.hasAccounts}}
|
||||
<li>
|
||||
<div id="accounts-button" class="round-button-mono button-white">
|
||||
<i class="material-icons">apps</i>
|
||||
</div>
|
||||
</li>
|
||||
{{else}}
|
||||
<li>
|
||||
{{#link-to 'folders' class='title'}}
|
||||
<div class="round-button-mono button-white" title={{appMeta.title}}>
|
||||
<i class="material-icons">apps</i>
|
||||
</div>
|
||||
{{/link-to}}
|
||||
</li>
|
||||
{{/if}}
|
||||
<li class="{{if view.folder 'selected'}}">
|
||||
{{#link-to 'folders' tagName="div" class="round-button-mono button-white"}}
|
||||
<i class="material-icons">home</i>
|
||||
{{/link-to}}
|
||||
</li>
|
||||
<li class="{{if view.search 'selected'}}">
|
||||
{{#link-to 'search' tagName="div" class="round-button-mono button-white"}}
|
||||
<i class="material-icons icon-tool">search</i>
|
||||
{{/link-to}}
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul id="pinned-zone" class="pinned-zone">
|
||||
{{#each pins as |pin|}}
|
||||
<li {{action 'jumpToPin' pin}} data-id={{pin.id}} id="pin-{{pin.id}}" data-tooltip="{{pin.pin}}" data-tooltip-position="right middle" class="pin"><span class="key">{{pin.pin}}</span></li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
<ul id="bottom-zone" class="bottom-zone">
|
||||
{{#if session.session.content.authenticated.user.admin}}
|
||||
<li id="workspace-settings" class="{{if view.settings 'selected'}}" data-tooltip="Settings" data-tooltip-position="right center">
|
||||
{{#link-to 'customize.general'}}
|
||||
<div class="round-button-mono button-white">
|
||||
<i class="material-icons icon-tool">tune</i>
|
||||
</div>
|
||||
{{/link-to}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{#if session.authenticated}}
|
||||
<li class="{{if view.profile 'selected'}}">
|
||||
{{#link-to 'profile'}}
|
||||
<div class="round-button-mono button-white">
|
||||
<i class="material-icons profile-link">{{session.user.initials}}</i>
|
||||
</div>
|
||||
{{/link-to}}
|
||||
</li>
|
||||
{{#if enableLogout}}
|
||||
<li id="workspace-logout" data-tooltip="Logout" data-tooltip-position="right center">
|
||||
{{#link-to 'auth.logout'}}
|
||||
<div class="round-button-mono button-white">
|
||||
<i class="material-icons icon-tool">exit_to_app</i>
|
||||
</div>
|
||||
{{/link-to}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<li id="workspace-login" data-tooltip="Login" data-tooltip-position="right center">
|
||||
{{#link-to 'auth.login'}}
|
||||
<div class="round-button-mono button-white">
|
||||
<i class="material-icons">lock_open</i>
|
||||
</div>
|
||||
{{/link-to}}
|
||||
</li>
|
||||
{{/if}}
|
||||
</ul>
|
||||
|
||||
{{#if session.hasAccounts}}
|
||||
{{#dropdown-menu target="accounts-button" position="bottom right" open="click" }}
|
||||
<ul class="menu">
|
||||
{{#each session.accounts as |account|}}
|
||||
<li class="item" {{action 'switchAccount' account.domain }}>{{account.title}}</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/dropdown-menu}}
|
||||
{{/if}}
|
||||
</div>
|
3
gui/app/templates/components/layout/zone-sidebar.hbs
Normal file
3
gui/app/templates/components/layout/zone-sidebar.hbs
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div id="sidebar-wrapper">
|
||||
{{yield}}
|
||||
</div>
|
81
gui/app/templates/components/onboard/share-folder.hbs
Normal file
81
gui/app/templates/components/onboard/share-folder.hbs
Normal file
|
@ -0,0 +1,81 @@
|
|||
<div class="col-lg-4 col-md-4 col-sm-4">
|
||||
<div class="sidebar">
|
||||
|
||||
<img class="logo" src="/assets/img/logo-color.png"/>
|
||||
|
||||
<div class="stage-1">
|
||||
<p>Let's set up your account</p>
|
||||
<div class="input-control">
|
||||
<label>Firstname</label>
|
||||
<div class="tip">Nickname or otherwise</div>
|
||||
<input id="stage-1-firstname" type="text" value="" />
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Lastname</label>
|
||||
<div class="tip">What the government calls you</div>
|
||||
<input id="stage-1-lastname" type="text" value="" />
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<div id="stage-1-next" class="regular-button button-green">Next →</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stage-2">
|
||||
<h2>Password</h2>
|
||||
<div class="input-control">
|
||||
<label>Password</label>
|
||||
<div class="tip">Between 6 and 50 characters</div>
|
||||
<input id="stage-2-password" type="password" value="" />
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Confirm Password</label>
|
||||
<div class="tip">Re-type your chosen password</div>
|
||||
<input id="stage-2-password-confirm" type="password" value="" />
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<div id="stage-2-next" class="regular-button button-green">Sign In →</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stage-3">
|
||||
<h1>Please Wait</h1>
|
||||
<p>Signing you in...</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-8 col-md-8 col-sm-8">
|
||||
<div class="rightbar">
|
||||
<div class="stage-1">
|
||||
<div class="account-name-preview">
|
||||
<div class="nav-icon"></div>
|
||||
<div class="title">DOCUMIZE</div>
|
||||
<img class="name-status" src="/assets/img/onboard/person.png" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stage-2">
|
||||
<div class="account-name-preview">
|
||||
<div class="nav-icon"></div>
|
||||
<div class="title">DOCUMIZE</div>
|
||||
<img class="password-status" src="/assets/img/onboard/lock.png" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="stage-3">
|
||||
<div class="account-name-preview">
|
||||
<div class="nav-icon"></div>
|
||||
<div class="title"></div>
|
||||
<div id="spinner-1" class="sk-spinner sk-spinner-wave">
|
||||
<div class="sk-rect1"></div>
|
||||
<div class="sk-rect2"></div>
|
||||
<div class="sk-rect3"></div>
|
||||
<div class="sk-rect4"></div>
|
||||
<div class="sk-rect5"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
19
gui/app/templates/components/password-reset.hbs
Normal file
19
gui/app/templates/components/password-reset.hbs
Normal file
|
@ -0,0 +1,19 @@
|
|||
<div class="login-form">
|
||||
<form {{action 'reset' on="submit"}}>
|
||||
<div class="input-control">
|
||||
<label>New Password</label>
|
||||
<div class="tip">Choose a strong password</div>
|
||||
{{focus-input type="password" value=password id="newPassword" class=(if hasPasswordError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Confirm Password</label>
|
||||
<div class="tip">Please type your new password again</div>
|
||||
{{input type="password" value=passwordConfirm id="passwordConfirm" class=(if hasConfirmError 'error')}}
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
<div class="margin-top-10 margin-bottom-20">
|
||||
<button type="submit" class="regular-button button-blue">Reset</button>
|
||||
<span class="{{unless mustMatch "hide"}} color-red margin-left-20">Passwords must match</span>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
15
gui/app/templates/components/search/search-results.hbs
Normal file
15
gui/app/templates/components/search/search-results.hbs
Normal file
|
@ -0,0 +1,15 @@
|
|||
<div class="search-results">
|
||||
<div class="heading">{{resultPhrase}}</div>
|
||||
<ul class="list">
|
||||
{{#each documents key="doc.id" as |result index|}}
|
||||
<li class="item">
|
||||
<a class="link" href="s/{{result.doc.folderId}}/{{result.doc.folderSlug}}/d/{{ result.doc.documentId }}/{{result.doc.documentSlug}}?page={{ result.doc.id }}">
|
||||
<div class="title">{{ result.doc.documentTitle }}</div>
|
||||
<div class="folder">{{ result.doc.folderName }}</div>
|
||||
<div class="excerpt">{{ result.doc.documentExcerpt }}</div>
|
||||
<div class="chips">{{search/tag-list documentTags=result.doc.documentTags}}</div>
|
||||
</a>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
7
gui/app/templates/components/search/tag-list.hbs
Normal file
7
gui/app/templates/components/search/tag-list.hbs
Normal file
|
@ -0,0 +1,7 @@
|
|||
<div class="chips">
|
||||
{{#each tagz as |tg|}}
|
||||
<div class="chip">
|
||||
<span class="chip-text">#{{tg}}</span>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
|
@ -0,0 +1,8 @@
|
|||
{{#section/base-editor document=document folder=folder page=page isDirty=(action 'isDirty') onCancel=(action 'onCancel')
|
||||
onAction=(action 'onAction')}}
|
||||
<div class="input-control">
|
||||
<label>Airtable embed code</label>
|
||||
<div class="tip">Paste the Airtable embed code snippet</div>
|
||||
{{textarea value=data rows="3" id="airtable-embed-code" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"}}
|
||||
</div>
|
||||
{{/section/base-editor}}
|
|
@ -0,0 +1,3 @@
|
|||
<div class="non-printable">
|
||||
{{{page.body}}}
|
||||
</div>
|
64
gui/app/templates/components/section/base-editor-inline.hbs
Normal file
64
gui/app/templates/components/section/base-editor-inline.hbs
Normal file
|
@ -0,0 +1,64 @@
|
|||
<div id={{containerId}} class="document-editor {{if blockMode 'document-editor-full'}}">
|
||||
<div class="toolbar">
|
||||
<div class="buttons pull-right">
|
||||
{{#if busy}}
|
||||
<img src="/assets/img/busy-gray.gif" class="busy-indicator" />
|
||||
{{/if}}
|
||||
|
||||
{{#if contentLinkerButton}}
|
||||
{{document/content-linker tagName="span" document=document folder=folder page=page onInsertLink=(action 'onInsertLink')}}
|
||||
<div class="round-button-mono" id={{contentLinkerButtonId}} data-tooltip="Reference link" data-tooltip-position="top center">
|
||||
<i class="material-icons color-blue">link</i>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if previewButton}}
|
||||
<div class="round-button-mono" {{action 'onPreview'}} id={{previewButtonId}} data-tooltip="Toggle Preview" data-tooltip-position="top center">
|
||||
<i class="material-icons color-gray">visibility</i>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="round-button-mono" {{action 'onAction'}}>
|
||||
<i class="material-icons color-green">check</i>
|
||||
</div>
|
||||
<div class="round-button-mono" {{action 'onCancel'}} id={{cancelId}}>
|
||||
<i class="material-icons color-gray">close</i>
|
||||
</div>
|
||||
</div>
|
||||
{{#if blockMode}}
|
||||
<div class="clearfix"></div>
|
||||
<div class="input-control">
|
||||
<label>Name</label>
|
||||
{{focus-input id="page-id-{{pageId}}" value=page.title class="mousetrap"}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Description</label>
|
||||
{{textarea id="page-excerpt-{{pageId}}" value=page.excerpt class="mousetrap" rows="3"}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="input-inline input-transparent edit-title pull-left">
|
||||
{{focus-input type="text" id=pageId value=page.title class=(if hasNameError 'error-inline') placeholder="Name" class="mousetrap"}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<div class="dropdown-dialog cancel-edits-dialog" id={{dialogId}}>
|
||||
<div class="content">
|
||||
<p>Do you want to cancel editing and lose unsaved changes?</p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="flat-button" {{action 'keepEditing'}}>
|
||||
no
|
||||
</div>
|
||||
<div class="flat-button flat-red" {{action 'discardEdits'}}>
|
||||
yes
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="canvas">
|
||||
{{yield}}
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
45
gui/app/templates/components/section/base-editor.hbs
Normal file
45
gui/app/templates/components/section/base-editor.hbs
Normal file
|
@ -0,0 +1,45 @@
|
|||
<div class="section-editor">
|
||||
<div class="buttons">
|
||||
{{#if busy}}
|
||||
<img src="/assets/img/busy-gray.gif" class="busy-indicator" />
|
||||
{{/if}}
|
||||
<div id="editor-cancel" class="flat-button flat-gray" {{action 'onCancel'}}>{{cancelLabel}}</div>
|
||||
<div class="button-gap" />
|
||||
<div class="regular-button button-green" {{action 'onAction'}}>{{actionLabel}}</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
<div class="title">
|
||||
<div class="input-control">
|
||||
<label>Title</label>
|
||||
<div class="tip">{{tip}}</div>
|
||||
{{focus-input type='text' id="page-title" value=page.title class="mousetrap"}}
|
||||
</div>
|
||||
{{#if hasExcerpt}}
|
||||
<div class="margin-top-30">
|
||||
<div class="input-control">
|
||||
<label>Excerpt</label>
|
||||
<div class="tip">Short description</div>
|
||||
{{textarea rows="3" id="page-excerpt" value=page.excerpt class="mousetrap"}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="dropdown-dialog cancel-edits-dialog">
|
||||
<div class="content">
|
||||
<p>Do you want to cancel editing and lose unsaved changes?</p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="flat-button" {{action 'keepEditing'}}>
|
||||
no
|
||||
</div>
|
||||
<div class="flat-button flat-red" {{action 'discardEdits'}}>
|
||||
yes
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="canvas">
|
||||
{{yield}}
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
3
gui/app/templates/components/section/base-renderer.hbs
Normal file
3
gui/app/templates/components/section/base-renderer.hbs
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div id="page-data-{{ page.id }}" class="wysiwyg">
|
||||
{{component (concat "section/" page.contentType "/type-renderer") page=page}}
|
||||
</div>
|
19
gui/app/templates/components/section/code/type-editor.hbs
Normal file
19
gui/app/templates/components/section/code/type-editor.hbs
Normal file
|
@ -0,0 +1,19 @@
|
|||
{{#section/base-editor-inline document=document folder=folder page=page tip="Concise name that describes code snippet" isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||
<div class="section-code-editor">
|
||||
<div class="syntax-selector">
|
||||
{{ui-select id=syntaxId
|
||||
content=syntaxOptions
|
||||
action=(action 'onSyntaxChange')
|
||||
optionValuePath="mode"
|
||||
optionLabelPath="name"
|
||||
selection=codeSyntax}}
|
||||
</div>
|
||||
<style>
|
||||
.CodeMirror {
|
||||
height: auto !important;
|
||||
font-size: 17px;
|
||||
}
|
||||
</style>
|
||||
{{focus-textarea value=pageBody id=editorId class="mousetrap"}}
|
||||
</div>
|
||||
{{/section/base-editor-inline}}
|
|
@ -0,0 +1,4 @@
|
|||
<style>
|
||||
.CodeMirror { height: auto !important;}
|
||||
</style>
|
||||
<textarea id="page-{{page.id}}-code" value={{codeBody}}></textarea>
|
42
gui/app/templates/components/section/gemini/type-editor.hbs
Normal file
42
gui/app/templates/components/section/gemini/type-editor.hbs
Normal file
|
@ -0,0 +1,42 @@
|
|||
{{#section/base-editor document=document folder=folder page=page busy=waiting tip="Gemini enterprise issue and ticketing software (https://www.countersoft.com)" isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||
|
||||
<div class="pull-left width-45">
|
||||
<div class="input-control">
|
||||
<label>Gemini URL</label>
|
||||
<div class="tip">e.g. http://helpdesk.countersoft.com</div>
|
||||
{{focus-input id="gemini-url" type="text" value=config.url readonly=isReadonly}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Username</label>
|
||||
<div class="tip">Gemini username</div>
|
||||
{{input id="gemini-username" type="text" value=config.username readonly=isReadonly}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>API Key</label>
|
||||
<div class="tip">Gemini user API key (from user profile)</div>
|
||||
{{input id="gemini-apikey" type="password" value=config.APIKey readonly=isReadonly}}
|
||||
</div>
|
||||
<div class="regular-button button-blue" {{ action 'auth' }}>Authenticate</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-left margin-left-40 width-45">
|
||||
{{#if authenticated}}
|
||||
<div class="input-control">
|
||||
<label>Workspace</label>
|
||||
<div class="tip">Select Gemini workspace for source of items to be displayed</div>
|
||||
<ul class="section-gemini-workspaces">
|
||||
{{#each workspaces as |card|}}
|
||||
<li class="section-gemini-workspace" data-tooltip="{{card.Title}}" data-tooltip-position="bottom center" id="gemini-workspace-{{card.Id}}">
|
||||
<div class="section-gemini-card" style="background-color:{{card.Color}};" {{action 'onWorkspaceChange' card.Id}}>{{card.Key}}</div>
|
||||
{{#if card.selected}}
|
||||
<div class="section-gemini-selected-card">✓</div>
|
||||
{{/if}}
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{/section/base-editor}}
|
|
@ -0,0 +1 @@
|
|||
{{{page.body}}}
|
64
gui/app/templates/components/section/github/type-editor.hbs
Normal file
64
gui/app/templates/components/section/github/type-editor.hbs
Normal file
|
@ -0,0 +1,64 @@
|
|||
{{#section/base-editor document=document folder=folder page=page busy=busy tip="GitHub is how people build software. (https://github.com)" isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||
<div class="section-github-editor">
|
||||
{{#if authenticated}}
|
||||
<div class="pull-left width-45">
|
||||
<div class="input-control">
|
||||
<label>Select repository</label>
|
||||
<div class="tip">Select organization or user whose repository you want to show</div>
|
||||
{{ui-select id="owners-dropdown" content=owners action=(action 'onOwnerChange') optionValuePath="id" optionLabelPath="name" selection=config.owner}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Show items since</label>
|
||||
<div class="tip">default is 7 days ago</div>
|
||||
{{input id="branch-since" value=config.branchSince type="text" }}<br>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>GitHub Views</label>
|
||||
<div class="tip">Select the views you want to show</div>
|
||||
<div class="github-view">
|
||||
{{input id="show-milestone" checked=config.showMilestones type="checkbox"}}
|
||||
<label>Show Milestones</label>
|
||||
<br/>
|
||||
{{input id="show-issues" checked=config.showIssues type="checkbox"}}
|
||||
<label>Show Issues</label>
|
||||
<br/>
|
||||
{{input id="show-commits" checked=config.showCommits type="checkbox" }}
|
||||
<label>Show Commits</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="pull-left width-10"> </div>
|
||||
|
||||
<div class="pull-left width-45">
|
||||
<div class="input-form">
|
||||
<div class="input-control">
|
||||
<label>Repositories</label>
|
||||
<div class="tip">Select the repository to show</div>
|
||||
<div class="github-board">
|
||||
{{#each config.lists as |list|}}
|
||||
<div class="github-list" {{action 'onListCheckbox' list.id}}>
|
||||
{{#if list.included}}
|
||||
<i class="material-icons widget-checkbox checkbox-gray github-list-checkbox">check_box</i>
|
||||
{{else}}
|
||||
<i class="material-icons widget-checkbox checkbox-gray github-list-checkbox">check_box_outline_blank</i>
|
||||
{{/if}}
|
||||
<span class="github-list-title">{{list.repo}} {{#if list.private}}(private){{/if}}</span>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="pull-left width-45">
|
||||
<div class="input-control">
|
||||
<label>Authentication</label>
|
||||
<div class="tip">Click to authenticate with Github</div>
|
||||
</div>
|
||||
<div class="regular-button button-blue" {{ action 'auth' }}>Authenticate</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/section/base-editor}}
|
|
@ -0,0 +1 @@
|
|||
{{{page.body}}}
|
|
@ -0,0 +1,28 @@
|
|||
{{#section/base-editor-inline document=document folder=folder page=page blockMode=blockMode
|
||||
contentLinkerButton=true onInsertLink=(action 'onInsertLink')
|
||||
previewButton=true onPreview=(action 'onPreview')
|
||||
isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||
|
||||
<style>
|
||||
.CodeMirror {
|
||||
height: auto !important;
|
||||
font-family: Helvetica;
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
.CodeMirror pre {
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="section-markdown-editor">
|
||||
{{#if editMode}}
|
||||
<textarea id={{editorId}} class="mousetrap">{{{pageBody}}}</textarea>
|
||||
{{else}}
|
||||
<div class="mousetrap wysiwyg section-markdown-preview">
|
||||
{{{pagePreview}}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{/section/base-editor-inline}}
|
|
@ -0,0 +1 @@
|
|||
{{{page.body}}}
|
|
@ -0,0 +1,45 @@
|
|||
{{#section/base-editor document=document folder=folder page=page busy=waiting tip="Papertrail cloud logging service (https://papertrailapp.com)" isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||
|
||||
<div class="pull-left width-45">
|
||||
<form {{ action 'auth' on="submit" }} >
|
||||
<div class="input-control">
|
||||
<label>Papertrail API Key</label>
|
||||
<div class="tip">API Token (from your profile)</div>
|
||||
{{focus-input id="papertrail-apitoken" type="password" value=config.APIToken }}
|
||||
</div>
|
||||
<div class="regular-button button-blue" {{ action 'auth' }} >
|
||||
{{#if authenticated}}
|
||||
Re-Authenticate
|
||||
{{else}}
|
||||
Authenticate
|
||||
{{/if}}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{{#if authenticated}}
|
||||
<div class="pull-left width-10"> </div>
|
||||
<div class="pull-left width-45">
|
||||
<form {{action 'onAction' on="submit"}}>
|
||||
<div class="input-control">
|
||||
<label>Search query</label>
|
||||
<div class="tip">Determine which log entries you want to display e.g. bob OR ("some phrase" AND sally)</div>
|
||||
{{input id="papertrail-query" type="text" class="mousetrap" value=config.query}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Maximum results</label>
|
||||
<div class="tip">How many log entries do you want?</div>
|
||||
{{input id="papertrail-max" type="number" class="mousetrap" value=config.max}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Group</label>
|
||||
<div class="tip">Optional Papertrail group</div>
|
||||
{{ui-select id="group-dropdown" prompt="<group>" content=options.groups action=(action 'onGroupsChange') optionValuePath="id" optionLabelPath="name" selection=config.group}}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="clearfix" />
|
||||
|
||||
{{/section/base-editor}}
|
|
@ -0,0 +1 @@
|
|||
{{{page.body}}}
|
|
@ -0,0 +1,5 @@
|
|||
{{#section/base-editor-inline document=document folder=folder page=page isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||
<div class="table-editor-wrapper wysiwyg">
|
||||
{{textarea value=pageBody id=editorId class="mousetrap"}}
|
||||
</div>
|
||||
{{/section/base-editor-inline}}
|
|
@ -0,0 +1 @@
|
|||
{{{page.body}}}
|
53
gui/app/templates/components/section/trello/type-editor.hbs
Normal file
53
gui/app/templates/components/section/trello/type-editor.hbs
Normal file
|
@ -0,0 +1,53 @@
|
|||
{{#section/base-editor document=document folder=folder page=page busy=busy
|
||||
tip="Trello is the visual way to manage your projects and organize anything (https://trello.com)"
|
||||
isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||
|
||||
{{#if authenticated}}
|
||||
|
||||
<div class="pull-left width-50">
|
||||
{{#if noBoards}}
|
||||
<div class="input-control">
|
||||
<div class="color-error">You have no team boards to share - personal boards are never shown.</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="input-control">
|
||||
<label>Select Board</label>
|
||||
<div class="tip">Choose lists to include from board</div>
|
||||
{{ui-select id="boards-dropdown" content=boards action=(action 'onBoardChange') optionValuePath="id" optionLabelPath="name" selection=config.board}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Lists</label>
|
||||
<div class="tip">Select lists to include</div>
|
||||
<div class="section-trello-board" style= {{boardStyle}}>
|
||||
<div class="section-trello-board-title">{{config.board.name}}</div>
|
||||
{{#each config.lists as |list|}}
|
||||
<div class="section-trello-list" {{action 'onListCheckbox' list.id}}>
|
||||
{{#if list.included}}
|
||||
<i class="material-icons widget-checkbox checkbox-gray section-trello-list-checkbox">check_box</i>
|
||||
{{else}}
|
||||
<i class="material-icons widget-checkbox checkbox-gray section-trello-list-checkbox">check_box_outline_blank</i>
|
||||
{{/if}}
|
||||
<span class="trello-list-title">{{list.name}}</span>
|
||||
</div>
|
||||
{{/each}}
|
||||
<div class="clearfix" />
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{else}}
|
||||
|
||||
<div class="pull-left width-50">
|
||||
<form>
|
||||
<div class="form-header">
|
||||
<div class="title">Authentication</div>
|
||||
<div class="tip">Click to authenticate with Trello</div>
|
||||
</div>
|
||||
<div class="regular-button button-blue" {{ action 'auth' }}>Authenticate</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{{/if}}
|
||||
|
||||
{{/section/base-editor}}
|
|
@ -0,0 +1,3 @@
|
|||
<div class="non-printable">
|
||||
{{{page.body}}}
|
||||
</div>
|
|
@ -0,0 +1,7 @@
|
|||
{{#section/base-editor-inline document=document folder=folder page=page
|
||||
blockMode=blockMode contentLinkerButton=true onInsertLink=(action 'onInsertLink')
|
||||
isDirty=(action 'isDirty') onCancel=(action 'onCancel') onAction=(action 'onAction')}}
|
||||
<div id={{editorId}} class="mousetrap wysiwyg wysiwyg-editor">
|
||||
{{{pageBody}}}
|
||||
</div>
|
||||
{{/section/base-editor-inline}}
|
|
@ -0,0 +1 @@
|
|||
{{{page.body}}}
|
12
gui/app/templates/components/ui-select.hbs
Normal file
12
gui/app/templates/components/ui-select.hbs
Normal file
|
@ -0,0 +1,12 @@
|
|||
<select {{action 'change' on='change'}} class={{cssClass}} readonly={{readonly}}>
|
||||
{{#if prompt}}
|
||||
<option disabled selected={{is-not selection}}>
|
||||
{{prompt}}
|
||||
</option>
|
||||
{{/if}}
|
||||
{{#each content key="@identity" as |item|}}
|
||||
<option value="{{read-path item optionValuePath}}" selected={{is-equal item selection}}>
|
||||
{{read-path item optionLabelPath}}
|
||||
</option>
|
||||
{{/each}}
|
||||
</select>
|
3
gui/app/templates/components/ui/ui-avatar.hbs
Normal file
3
gui/app/templates/components/ui/ui-avatar.hbs
Normal file
|
@ -0,0 +1,3 @@
|
|||
<div class="avatar" id="avatar-{{refId}}" data-tooltip="{{firstname}} {{lastname}}" data-tooltip-position="top center">
|
||||
{{user-initials firstname lastname}}
|
||||
</div>
|
8
gui/app/templates/components/ui/ui-checkbox.hbs
Normal file
8
gui/app/templates/components/ui/ui-checkbox.hbs
Normal file
|
@ -0,0 +1,8 @@
|
|||
<div class="ui-checkbox {{if selected 'ui-checkbox-selected'}}" {{action 'onCheck'}}>
|
||||
{{#if selected}}
|
||||
<i class="material-icons selected">check_box</i>
|
||||
{{else}}
|
||||
<i class="material-icons">check_box_outline_blank</i>
|
||||
{{/if}}
|
||||
{{yield}}
|
||||
</div>
|
8
gui/app/templates/components/ui/ui-radio.hbs
Normal file
8
gui/app/templates/components/ui/ui-radio.hbs
Normal file
|
@ -0,0 +1,8 @@
|
|||
<div class="ui-radio {{if selected 'ui-radio-selected'}}" {{action 'onCheck'}}>
|
||||
{{#if selected}}
|
||||
<i class="material-icons selected">radio_button_checked</i>
|
||||
{{else}}
|
||||
<i class="material-icons">radio_button_unchecked</i>
|
||||
{{/if}}
|
||||
{{yield}}
|
||||
</div>
|
6
gui/app/templates/components/ui/ui-selection.hbs
Normal file
6
gui/app/templates/components/ui/ui-selection.hbs
Normal file
|
@ -0,0 +1,6 @@
|
|||
<div class="widget-selection">
|
||||
<div class="option {{if selected 'selected'}}">
|
||||
{{yield}}
|
||||
<i class="material-icons">check</i>
|
||||
</div>
|
||||
</div>
|
5
gui/app/templates/components/ui/ui-tab.hbs
Normal file
5
gui/app/templates/components/ui/ui-tab.hbs
Normal file
|
@ -0,0 +1,5 @@
|
|||
<ul class="widget-tab">
|
||||
{{#each tabs as |tab|}}
|
||||
<li style={{myWidth}} class="tab {{if tab.selected 'selected'}}" {{action 'onTabSelect' tab}}>{{tab.label}}</li>
|
||||
{{/each}}
|
||||
</ul>
|
5
gui/app/templates/components/user-notification.hbs
Normal file
5
gui/app/templates/components/user-notification.hbs
Normal file
|
@ -0,0 +1,5 @@
|
|||
<div class="user-notification">
|
||||
{{#each notifications as |msg|}}
|
||||
<p class="message">{{msg}}</p>
|
||||
{{/each}}
|
||||
</div>
|
31
gui/app/templates/components/user-profile.hbs
Normal file
31
gui/app/templates/components/user-profile.hbs
Normal file
|
@ -0,0 +1,31 @@
|
|||
<div class="page-profile">
|
||||
<div class="form-header">
|
||||
<div class="title">About You</div>
|
||||
<div class="tip"></div>
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Firstname</label>
|
||||
{{focus-input id="firstname" type="text" value=model.firstname class=(if hasFirstnameError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Lastname</label>
|
||||
{{input id="lastname" type="text" value=model.lastname class=(if hasLastnameError 'error')}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Email</label>
|
||||
{{input id="email" type="text" value=model.email class=(if hasEmailError 'error')}}
|
||||
</div>
|
||||
{{#if isAuthProviderDocumize}}
|
||||
<div class="input-control">
|
||||
<label>Password</label>
|
||||
<div class="tip">New password</div>
|
||||
{{input id="password" type="password" value=password.password class=hasPasswordError}}
|
||||
</div>
|
||||
<div class="input-control">
|
||||
<label>Confirm Password</label>
|
||||
<div class="tip">Confirm your new password</div>
|
||||
{{input id="confirmPassword" type="password" value=password.confirmation class=hasConfirmPasswordError}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="regular-button button-blue" {{ action 'save' }}>save</div>
|
||||
</div>
|
159
gui/app/templates/components/widget-sample.hbs
Normal file
159
gui/app/templates/components/widget-sample.hbs
Normal file
|
@ -0,0 +1,159 @@
|
|||
<div class="basic-card">
|
||||
Hello
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
<br/>
|
||||
|
||||
|
||||
<div class="round-button-mono" id="sample-1" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">share</i>
|
||||
</div>
|
||||
<div class="round-button-mono" id="sample-2" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">clear</i>
|
||||
</div>
|
||||
<div class="round-button-mono" id="sample-" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">settings</i>
|
||||
</div>
|
||||
<div class="round-button-mono" id="delete-folder">
|
||||
<i class="material-icons">delete</i>
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
<br/>
|
||||
|
||||
|
||||
<div class="round-button button-red" id="sample-3" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">share</i>
|
||||
</div>
|
||||
<div class="round-button button-blue" id="sample-4" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">share</i>
|
||||
</div>
|
||||
<div class="round-button button-green" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">share</i>
|
||||
</div>
|
||||
<div class="round-button button-gray" id="" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">question_answer</i>
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
<br/>
|
||||
|
||||
|
||||
<div class="square-button button-red" id="sample-3" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">share</i>
|
||||
</div>
|
||||
<div class="square-button button-blue" id="sample-4" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">share</i>
|
||||
</div>
|
||||
<div class="square-button button-green" id="sample-dropdown-1" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">share</i>
|
||||
</div>
|
||||
<div class="square-button button-gray" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
<i class="material-icons">question_answer</i>
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
<br/>
|
||||
|
||||
|
||||
<div class="regular-button button-red" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
delete
|
||||
</div>
|
||||
<div class="regular-button button-blue" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
save
|
||||
</div>
|
||||
<div class="regular-button button-green" data-tooltip="Share folder" data-tooltip-position="top center">
|
||||
update
|
||||
</div>
|
||||
<div class="regular-button button-gray" id="dropdown-menu-1">
|
||||
menu
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
<br/>
|
||||
|
||||
|
||||
<div class="flat-button">
|
||||
cancel
|
||||
</div>
|
||||
<div class="flat-button flat-blue">
|
||||
Got it
|
||||
</div>
|
||||
<div class="flat-button flat-green">
|
||||
save
|
||||
</div>
|
||||
<div class="flat-button flat-red">
|
||||
delete
|
||||
</div>
|
||||
<div class="flat-button flat-gray">
|
||||
ok
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
<br/>
|
||||
|
||||
|
||||
<div class="chip">
|
||||
<span class="chip-text">#finance</span>
|
||||
<i class="material-icons right">clear</i>
|
||||
</div>
|
||||
<div class="chip">
|
||||
<span class="chip-text">#records</span>
|
||||
</div>
|
||||
<div class="clearfix" />
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
<div class="margin-left-50" style="width: 300px;">
|
||||
<div class="input-control">
|
||||
<label>Name</label>
|
||||
<input type="text" value="">
|
||||
</div>
|
||||
|
||||
<div class="input-control">
|
||||
<label>Email</label>
|
||||
<input type="text" value="">
|
||||
</div>
|
||||
|
||||
<div class="input-control">
|
||||
<label>Notes</label>
|
||||
<div class="tip">No more than 200 characters</div>
|
||||
<textarea rows="3"></textarea>
|
||||
</div>
|
||||
<div class="regular-button button-blue">
|
||||
save
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
|
||||
<div id="sample-dropdown-content-1" class="dropdown-dialog">
|
||||
<div class="content">
|
||||
<p>Are you sure you want to delete this folder?</p>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<div class="flat-button" {{action 'dropClose'}}>
|
||||
cancel
|
||||
</div>
|
||||
<div class="flat-button flat-red">
|
||||
delete
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
{{#dropdown-dialog target="delete-folder" position="bottom left" button="Add" color="flat-red" onAction=(action 'addFolder')}}
|
||||
<p>Are you sure you want to delete this folder?</p>
|
||||
<p>There is no undo!</p>
|
||||
{{/dropdown-dialog}}
|
||||
|
||||
{{#dropdown-dialog target="help-dropdown" position="bottom left" button="Got it" color="flat-blue" showCancel=false callback=false}}
|
||||
<p>Some text here to help you.</p>
|
||||
<p>That you can read.</p>
|
||||
{{/dropdown-dialog}}
|
||||
|
||||
{{#dropdown-menu target="dropdown-menu-1" position="bottom right"}}
|
||||
<ul class="menu">
|
||||
<li class="item" {{action 'showNotification' 'Yes, yes.'}}>Profile</li>
|
||||
<li class="item" {{action 'showNotification' 'Saved profile'}}>Settings</li>
|
||||
<li class="divider"></li>
|
||||
<li class="item">Sign out</li>
|
||||
</ul>
|
||||
{{/dropdown-menu}}
|
Loading…
Add table
Add a link
Reference in a new issue