1
0
Fork 0
mirror of synced 2024-07-03 21:50:34 +12:00
appwrite/app/views/console/users/index.phtml

410 lines
23 KiB
PHTML
Raw Normal View History

2019-05-09 18:54:39 +12:00
<?php
$providers = $this->getParam('providers', []);
?>
<div class="cover">
2020-02-28 06:44:03 +13:00
<h1 class="zone xl margin-bottom-large">
<a data-ls-attrs="href=/console/home?project={{router.params.project}}" class="back text-size-small"><i class="icon-left-open"></i> Home</a>
<br />
<span>Users</span>
2019-05-09 18:54:39 +12:00
</h1>
</div>
2019-05-13 01:03:30 +12:00
<div class="zone xl">
2019-05-09 20:23:22 +12:00
<ul class="phases clear" data-ui-phases data-selected="{{router.params.tab}}">
<li data-state="/console/users?project={{router.params.project}}">
2019-05-09 18:54:39 +12:00
2019-08-14 09:07:41 +12:00
<h2>Users</h2>
2019-08-14 16:40:05 +12:00
<div data-ui-modal class="box modal close" data-button-text="" data-button-class="fly round" data-button-icon="icon-plus">
<button type="button" class="close pull-end" data-ui-modal-close=""><i class="icon-cancel"></i></button>
<h1>Create User</h1>
<form
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
data-analytics-label="Create User"
2020-01-31 06:12:29 +13:00
data-service="users.create"
2019-08-14 16:40:05 +12:00
data-event="submit"
data-success="alert,trigger,reset"
data-success-param-alert-text="Created user successfully"
2020-02-24 19:59:10 +13:00
data-success-param-trigger-events="users.create"
2019-08-14 16:40:05 +12:00
data-failure="alert"
data-failure-param-alert-text="Failed to create user"
data-failure-param-alert-classname="error">
<label for="user-name">Name</label>
<input type="text" class="full-width" id="user-name" name="name" required autocomplete="off" />
<label for="user-email">Email</label>
<input type="email" class="full-width" id="user-email" name="email" required autocomplete="off" />
<label for="user-password">Password</label>
2019-10-24 05:08:00 +13:00
<input type="password" class="full-width" id="user-password" name="password" required pattern=".{6,}" title="Six or more characters" autocomplete="off" />
2019-08-14 16:40:05 +12:00
<hr />
<button type="submit">Create</button> &nbsp; <button data-ui-modal-close="" type="button" class="reverse">Cancel</button>
</form>
</div>
2019-08-14 16:57:27 +12:00
<form class="box padding-small margin-bottom search"
2020-01-31 06:12:29 +13:00
data-service="users.list"
2019-08-11 07:05:36 +12:00
data-event="submit"
data-param-search="{{router.params.search}}"
2019-08-15 01:50:40 +12:00
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
2019-08-14 09:15:04 +12:00
data-param-offset=""
2020-04-22 16:29:37 +12:00
data-param-order-type="DESC"
2019-08-11 07:05:36 +12:00
data-scope="sdk"
data-name="project-users"
data-success="state"
data-success-param-state-keys="search,offset">
2019-08-23 08:37:34 +12:00
<div class="row thin responsive">
2019-08-11 07:05:36 +12:00
<div class="col span-10">
<input name="search" id="searchUsers" type="search" autocomplete="off" placeholder="Search" class="margin-bottom-no" data-ls-bind="{{router.params.search}}">
2019-05-09 18:54:39 +12:00
</div>
2020-02-28 06:44:03 +13:00
<div class="col span-2 desktops-only">
2019-08-23 22:10:38 +12:00
<button class="fill" title="Search" aria-label="Search"><i class="icon-search"></i></button>
2019-05-09 18:54:39 +12:00
</div>
</div>
2019-08-11 07:05:36 +12:00
</form>
2019-05-09 18:54:39 +12:00
2019-08-11 07:05:36 +12:00
<div
2020-01-31 06:12:29 +13:00
data-service="users.list"
2020-01-31 09:58:49 +13:00
data-event="load,users.create,users.update,users.delete"
2019-08-11 20:47:11 +12:00
data-param-search="{{router.params.search}}"
2019-08-15 01:50:40 +12:00
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
2019-08-11 20:47:11 +12:00
data-param-offset="{{router.params.offset}}"
2020-04-22 16:29:37 +12:00
data-param-order-type="DESC"
2019-08-11 07:05:36 +12:00
data-scope="sdk"
data-name="project-users">
2019-05-09 18:54:39 +12:00
2019-08-11 07:05:36 +12:00
<div data-ls-if="0 == {{project-users.sum}}" class="box margin-bottom">
2020-02-25 02:47:35 +13:00
<h3 class="margin-bottom-small text-bold">No Users Found</h3>
2019-08-06 16:44:34 +12:00
2019-08-11 07:05:36 +12:00
<p class="margin-bottom-no">Create your first user to get started</p>
</div>
2019-05-09 18:54:39 +12:00
2020-02-24 08:27:02 +13:00
<div data-ls-if="0 != {{project-users.sum}}">
<div class="margin-bottom-small margin-end-small text-align-end text-size-small"><span data-ls-bind="{{project-users.sum}}"></span> users found</div>
2019-08-14 16:40:05 +12:00
2019-08-11 07:05:36 +12:00
<div class="box margin-bottom">
<table class="vertical">
<thead>
<tr>
2020-04-19 16:17:48 +12:00
<th width="40"></th>
<th width="180">Name</th>
2020-03-01 19:33:19 +13:00
<th>Email</th>
2020-03-15 17:54:55 +13:00
<th width="140">Status</th>
2020-03-01 19:33:19 +13:00
<th width="120">Joined</th>
2019-08-11 07:05:36 +12:00
</tr>
</thead>
<tbody data-ls-loop="project-users.users" data-ls-as="user">
<tr>
2019-08-14 16:57:27 +12:00
<td class="hide">
2019-08-24 17:00:09 +12:00
<img src="" data-ls-attrs="src={{user|gravatar}}" data-size="45" alt="User Avatar" class="avatar pull-start" loading="lazy" width="30" height="30" />
2019-08-11 07:05:36 +12:00
</td>
<td data-title="Name: ">
2020-02-17 20:16:11 +13:00
<a data-ls-attrs="href=/console/users/view?id={{user.$id}}&project={{router.params.project}}">
2019-10-13 10:53:03 +13:00
<span data-ls-bind="{{user.name}}"></span>
<span data-ls-if="{{user.name}} === ''">-----</span>
</a>
2019-08-11 07:05:36 +12:00
</td>
<td data-title="Email: ">
2019-08-24 07:07:17 +12:00
<small data-ls-bind="{{user.email}}"></span>
2019-08-11 07:05:36 +12:00
</td>
<td data-title="Status: ">
2020-02-10 10:37:28 +13:00
<span data-ls-if="{{user.emailVerification}} === true">
2020-03-01 19:33:19 +13:00
<span class="tag green">Verified</span>
2019-08-11 07:05:36 +12:00
</span>
2020-02-10 10:37:28 +13:00
<span data-ls-if="{{user.emailVerification}} !== true">
2020-03-01 19:33:19 +13:00
<span class="tag">Unverified</span>
2019-08-11 07:05:36 +12:00
</span>
<span data-ls-if="{{user.status}} === <?php echo \Appwrite\Auth\Auth::USER_STATUS_BLOCKED; ?>">
2020-03-01 19:33:19 +13:00
<span class="tag red">Blocked</span>
2019-08-11 07:05:36 +12:00
</span>
</td>
2019-08-24 07:07:17 +12:00
<td data-title="Created: "><small data-ls-bind="{{user.registration|date-text}}"></small></td>
2019-08-11 07:05:36 +12:00
</tr>
</tbody>
</table>
</div>
2019-08-14 09:07:41 +12:00
</div>
2019-05-09 18:54:39 +12:00
2019-08-14 09:07:41 +12:00
<div class="clear text-align-center paging">
<form
2020-01-31 06:12:29 +13:00
data-service="users.list"
2019-08-14 09:07:41 +12:00
data-event="submit"
data-param-search="{{router.params.search}}"
2019-08-15 01:50:40 +12:00
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
2020-04-22 16:29:37 +12:00
data-param-order-type="DESC"
2019-08-14 09:07:41 +12:00
data-scope="sdk"
data-name="project-users"
data-success="state"
data-success-param-state-keys="search,offset">
<button name="offset" data-paging-back data-offset="{{router.params.offset}}" data-sum="{{project-users.sum}}" class="margin-end round small" aria-label="Back"><i class="icon-left-open"></i></button>
</form>
2019-08-13 02:19:54 +12:00
2019-08-14 09:07:41 +12:00
<span data-ls-bind="{{router.params.offset|pageCurrent}} / {{project-users.sum|pageTotal}}"></span>
2019-08-11 07:05:36 +12:00
2019-08-14 09:07:41 +12:00
<form
2020-01-31 06:12:29 +13:00
data-service="users.list"
2019-08-14 09:07:41 +12:00
data-event="submit"
data-param-search="{{router.params.search}}"
2019-08-15 01:50:40 +12:00
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
2020-04-22 16:29:37 +12:00
data-param-order-type="DESC"
2019-08-14 09:07:41 +12:00
data-scope="sdk"
data-name="project-users"
data-success="state"
data-success-param-state-keys="search,offset">
<button name="offset" data-paging-next data-offset="{{router.params.offset}}" data-sum="{{project-users.sum}}" class="margin-start round small" aria-label="Next"><i class="icon-right-open"></i></button>
</form>
2019-05-09 18:54:39 +12:00
</div>
</div>
</li>
2019-08-11 18:15:23 +12:00
2019-05-09 20:23:22 +12:00
<li data-state="/console/users/teams?project={{router.params.project}}">
2019-05-13 01:03:30 +12:00
<h2>Teams</h2>
2019-05-09 18:54:39 +12:00
2020-02-28 06:44:03 +13:00
<div data-ui-modal class="box modal close" data-button-text="" data-button-class="fly round" data-button-icon="icon-plus">
2019-08-14 16:40:05 +12:00
<button type="button" class="close pull-end" data-ui-modal-close=""><i class="icon-cancel"></i></button>
<h1>Create Team</h1>
<form
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
data-analytics-label="Create Team"
2020-01-31 06:12:29 +13:00
data-service="teams.create"
2019-08-14 16:40:05 +12:00
data-event="submit"
data-success="alert,trigger,reset"
data-success-param-alert-text="Created team successfully"
2020-02-24 19:59:10 +13:00
data-success-param-trigger-events="filter-teams-changed,teams.create"
2019-08-14 16:40:05 +12:00
data-failure="alert"
data-failure-param-alert-text="Failed to create team"
data-failure-param-alert-classname="error">
<label for="team-name">Name</label>
<input type="text" class="full-width" id="team-name" name="name" required autocomplete="off" />
2020-02-28 06:44:03 +13:00
<hr />
2019-08-14 16:40:05 +12:00
<button type="submit">Create</button> &nbsp; <button data-ui-modal-close="" type="button" class="reverse">Cancel</button>
</form>
</div>
2019-08-14 16:57:27 +12:00
<form class="box padding-small margin-bottom search"
2020-01-31 06:12:29 +13:00
data-service="teams.list"
2019-08-14 16:40:05 +12:00
data-event="submit"
data-param-search="{{router.params.search}}"
2019-08-15 01:50:40 +12:00
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
2019-08-14 16:40:05 +12:00
data-param-offset=""
2020-04-22 16:29:37 +12:00
data-param-order-type="DESC"
2019-08-14 16:40:05 +12:00
data-scope="sdk"
data-name="project-teams"
data-success="state"
data-success-param-state-keys="search,offset">
2019-08-23 08:37:34 +12:00
<div class="row thin responsive">
2019-08-14 16:40:05 +12:00
<div class="col span-10">
<input name="search" id="searchTeams" type="search" autocomplete="off" placeholder="Search" class="margin-bottom-no" data-ls-bind="{{router.params.search}}">
2019-05-09 18:54:39 +12:00
</div>
2020-02-28 06:44:03 +13:00
<div class="col span-2 desktops-only">
2019-08-23 22:10:38 +12:00
<button class="fill" title="Search" aria-label="Search"><i class="icon-search"></i></button>
2019-05-09 18:54:39 +12:00
</div>
</div>
2019-08-14 16:40:05 +12:00
</form>
2019-05-09 18:54:39 +12:00
2019-08-14 16:40:05 +12:00
<div
2020-01-31 06:12:29 +13:00
data-service="teams.list"
2020-01-31 09:58:49 +13:00
data-event="load,teams.create,teams.update,teams.delete"
2019-08-14 16:40:05 +12:00
data-param-search="{{router.params.search}}"
2019-08-15 01:50:40 +12:00
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
2019-08-14 16:40:05 +12:00
data-param-offset="{{router.params.offset}}"
2020-04-22 16:29:37 +12:00
data-param-order-type="DESC"
2019-08-14 16:40:05 +12:00
data-scope="sdk"
data-name="project-teams">
2020-02-24 08:27:02 +13:00
<div data-ls-if="0 == {{project-teams.sum}}" class="box margin-bottom">
2020-02-25 02:47:35 +13:00
<h3 class="margin-bottom-small text-bold">No Teams Found</h3>
2019-08-14 16:40:05 +12:00
<p class="margin-bottom-no">Create your first team to get started</p>
</div>
2020-02-24 08:27:02 +13:00
<div data-ls-if="0 != {{project-teams.sum}}">
<div class="margin-bottom-small margin-end-small text-align-end text-size-small"><span data-ls-bind="{{project-teams.sum}}"></span> results found</div>
2019-08-14 16:40:05 +12:00
<div class="box margin-bottom">
<table class="vertical">
<thead>
<tr>
2020-04-19 16:17:48 +12:00
<th width="40"></th>
2020-03-01 19:33:19 +13:00
<th>Name</th>
<th width="150">Members</th>
2019-08-14 16:40:05 +12:00
<th width="150">Created</th>
</tr>
</thead>
<tbody data-ls-loop="project-teams.teams" data-ls-as="team">
<tr>
2019-08-15 18:03:10 +12:00
<td class="hide">
2019-08-24 17:00:09 +12:00
<img src="" data-ls-attrs="src={{team.name|gravatar}}" data-size="45" alt="Collection Avatar" class="avatar margin-end pull-start" loading="lazy" width="30" height="30" />
2019-08-15 18:03:10 +12:00
</td>
2019-08-14 16:40:05 +12:00
<td data-title="Name: ">
2020-02-28 06:44:03 +13:00
<div data-ui-modal class="box modal close" data-button-text="{{team.name}}" data-button-class="link">
2019-08-14 16:40:05 +12:00
<h1>Update Team</h1>
<form
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
data-analytics-label="Update Team"
2020-01-31 06:12:29 +13:00
data-service="teams.update"
2019-08-14 16:40:05 +12:00
data-scope="sdk"
data-event="submit"
data-success="alert,trigger"
data-success-param-alert-text="Updated team successfully"
2020-02-24 19:59:10 +13:00
data-success-param-trigger-events="teams.update"
2019-08-14 16:40:05 +12:00
data-failure="alert"
data-failure-param-alert-text="Failed to update team"
data-failure-param-alert-classname="error">
2020-02-17 20:16:11 +13:00
<label for="name">ID</label>
2019-08-14 16:40:05 +12:00
<div class="input-copy">
2020-04-02 10:41:29 +13:00
<input data-ls-attrs="id=team-id-{{team.$id}}" name="teamId" data-forms-copy type="text" disabled data-ls-bind="{{team.$id}}" />
2019-08-14 16:40:05 +12:00
</div>
<label for="name">Name</label>
2020-04-02 10:41:29 +13:00
<input data-ls-attrs="id=team-name-{{team.$id}}" name="name" type="text" autocomplete="off" data-ls-bind="{{team.name}}">
2019-05-09 18:54:39 +12:00
2020-02-28 06:44:03 +13:00
<hr />
2019-08-14 16:40:05 +12:00
<button>Update</button> &nbsp; <button data-ui-modal-close="" type="button" class="reverse">Cancel</button>
</form>
</div>
</td>
2020-02-12 23:38:31 +13:00
<td data-title="Members: "><span data-ls-bind="{{team.sum}} members"></span></td>
2019-08-24 07:07:17 +12:00
<td data-title="Date Created: "><small data-ls-bind="{{team.dateCreated|date-text}}"></small></td>
2019-08-14 16:40:05 +12:00
</tr>
</tbody>
</table>
2019-05-09 18:54:39 +12:00
</div>
</div>
2019-08-14 16:40:05 +12:00
<div class="clear text-align-center paging">
<form
2020-01-31 06:12:29 +13:00
data-service="teams.list"
2019-08-14 16:40:05 +12:00
data-event="submit"
data-param-search="{{router.params.search}}"
2019-08-15 01:50:40 +12:00
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
2020-04-22 16:29:37 +12:00
data-param-order-type="DESC"
2019-08-14 16:40:05 +12:00
data-scope="sdk"
data-name="project-teams"
data-success="state"
data-success-param-state-keys="search,offset">
<button name="offset" data-paging-back data-offset="{{router.params.offset}}" data-sum="{{project-teams.sum}}" class="margin-end round small" aria-label="Back"><i class="icon-left-open"></i></button>
</form>
<span data-ls-bind="{{router.params.offset|pageCurrent}} / {{project-teams.sum|pageTotal}}"></span>
<form
2020-01-31 06:12:29 +13:00
data-service="teams.list"
2019-08-14 16:40:05 +12:00
data-event="submit"
data-param-search="{{router.params.search}}"
2019-08-15 01:50:40 +12:00
data-param-limit="<?php echo APP_PAGING_LIMIT; ?>"
2020-04-22 16:29:37 +12:00
data-param-order-type="DESC"
2019-08-14 16:40:05 +12:00
data-scope="sdk"
data-name="project-teams"
data-success="state"
data-success-param-state-keys="search,offset">
<button name="offset" data-paging-next data-offset="{{router.params.offset}}" data-sum="{{project-teams.sum}}" class="margin-start round small" aria-label="Next"><i class="icon-right-open"></i></button>
</form>
</div>
2019-05-09 18:54:39 +12:00
</div>
</li>
2019-08-11 18:15:23 +12:00
2019-05-09 20:23:22 +12:00
<li data-state="/console/users/providers?project={{router.params.project}}">
2020-02-17 00:41:03 +13:00
<h2>OAuth2 Providers</h2>
2020-01-14 22:22:56 +13:00
2019-09-29 08:31:14 +13:00
<div class="box margin-bottom margin-top-large"
2020-01-31 06:12:29 +13:00
data-service="projects.get"
2020-01-31 09:58:49 +13:00
data-event="load,projects.create,projects.update,projects.deleteProject"
2019-09-29 08:31:14 +13:00
data-name="console-project"
data-param-project-id="{{router.params.project}}"
data-scope="console">
2019-05-09 18:54:39 +12:00
<ul class="list">
2020-01-14 01:43:00 +13:00
<?php foreach ($providers as $provider => $data):
if (isset($data['enabled']) && !$data['enabled']) { continue; }
if (isset($data['mock']) && $data['mock']) { continue; }
?>
2019-05-09 18:54:39 +12:00
<li class="clear <?php echo (isset($data['enabled']) && !$data['enabled']) ? 'dev-feature' : ''; ?>">
2020-02-28 06:44:03 +13:00
<div data-ui-modal class="modal close" data-button-alias="none" data-open-event="provider-update-<?php echo $provider; ?>">
<button type="button" class="close pull-end" data-ui-modal-close=""><i class="icon-cancel"></i></button>
2020-02-17 00:41:03 +13:00
<h1><?php echo ucfirst($provider); ?> OAuth2 Settings</h1>
2019-05-09 18:54:39 +12:00
2019-08-08 06:10:53 +12:00
<form
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
2020-02-17 00:41:03 +13:00
data-analytics-label="Update Project OAuth2"
data-service="projects.updateOAuth2"
2019-08-08 06:10:53 +12:00
data-scope="console"
data-event="submit"
data-param-project-id="{{router.params.project}}"
data-success="alert,trigger"
2020-02-17 00:41:03 +13:00
data-success-param-alert-text="Updated project OAuth2 settings successfully"
2020-02-24 19:59:10 +13:00
data-success-param-trigger-events="projects.update"
2019-08-08 17:09:49 +12:00
data-failure="alert"
2020-02-17 00:41:03 +13:00
data-failure-param-alert-text="Failed to update project OAuth2 settings"
2019-08-09 01:43:24 +12:00
data-failure-param-alert-classname="error">
2019-08-06 18:42:47 +12:00
<input name="provider" id="provider<?php echo ucfirst($provider); ?>" type="hidden" autocomplete="off" value="<?php echo $provider; ?>">
2019-05-09 18:54:39 +12:00
2020-02-17 00:41:03 +13:00
<label for="oauth2<?php echo ucfirst($provider); ?>Appid">App ID</label>
<input name="appId" id="oauth2<?php echo ucfirst($provider); ?>Appid" type="text" autocomplete="off" data-ls-bind="{{console-project.usersOauth2<?php echo ucfirst($provider); ?>Appid}}">
2019-05-09 18:54:39 +12:00
2020-02-17 00:41:03 +13:00
<label for="oauth2<?php echo ucfirst($provider); ?>Secret">App Secret</label>
<input name="secret" id="oauth2<?php echo ucfirst($provider); ?>Secret" type="text" autocomplete="off" data-ls-bind="{{console-project.usersOauth2<?php echo ucfirst($provider); ?>Secret}}">
2019-05-09 18:54:39 +12:00
<div class="info row thin margin-bottom margin-top">
<div class="col span-1">
<i class="icon-info-circled text-sign"></i>
</div>
<div class="col span-11">
2020-02-17 00:41:03 +13:00
<p>To complete set up, add this OAuth2 redirect URI to your <?php echo ucfirst($provider); ?> app configuration.</p>
2019-05-09 18:54:39 +12:00
<div class="input-copy">
2020-02-17 00:41:03 +13:00
<input data-forms-copy type="text" disabled data-ls-bind="{{env.PROTOCOL}}://{{env.DOMAIN}}/v1/account/sessions/oauth2/callback/<?php echo $provider; ?>/{{router.params.project}}" class="margin-bottom-no" />
2019-05-09 18:54:39 +12:00
</div>
</div>
</div>
2019-05-13 08:27:33 +12:00
<button>Update</button> &nbsp; <button data-ui-modal-close="" type="button" class="reverse">Cancel</button>
2019-05-09 18:54:39 +12:00
</form>
</div>
2020-02-28 06:44:03 +13:00
<span data-ls-if="
{{console-project.usersOauth2<?php echo ucfirst($provider); ?>Appid}} &&
{{console-project.usersOauth2<?php echo ucfirst($provider); ?>Secret}}">
<button class="switch on pull-end margin-top-small" data-ls-ui-trigger="provider-update-<?php echo $provider; ?>"></button>
</span>
<span data-ls-if="
!{{console-project.usersOauth2<?php echo ucfirst($provider); ?>Appid}} ||
!{{console-project.usersOauth2<?php echo ucfirst($provider); ?>Secret}}">
<button class="switch pull-end margin-top-small" data-ls-ui-trigger="provider-update-<?php echo $provider; ?>"></button>
</span>
2020-04-22 16:29:37 +12:00
<img src="/images/oauth2/<?php echo strtolower($provider); ?>.png?buster=<?php echo APP_CACHE_BUSTER; ?>" alt="<?php echo ucfirst($provider); ?> Logo" class="pull-start provider margin-end" />
2019-05-09 18:54:39 +12:00
<span>
2019-08-06 16:44:34 +12:00
<?php echo ucfirst($provider); ?>
2019-05-09 18:54:39 +12:00
</span>
<p class="margin-bottom-no margin-top-small text-one-liner">
2020-02-17 00:41:03 +13:00
<a href="<?php echo $data['developers']; ?>" target="_blank" rel="noopener">OAuth2 Developer Docs<i class="icon-link-ext"></i></a>
2019-05-09 18:54:39 +12:00
</p>
</li>
<?php endforeach; ?>
</ul>
</div>
</li>
</ul>
</div>