forked from extern/egroupware
Mobile template:
- Fix links are not shown in view mode for infolog - implement timesheet and resources view mode
This commit is contained in:
parent
b4d8b9e747
commit
60f6f71430
@ -1079,7 +1079,7 @@ class infolog_ui
|
|||||||
'url' => 'menuaction=infolog.infolog_ui.edit&info_id=$id',
|
'url' => 'menuaction=infolog.infolog_ui.edit&info_id=$id',
|
||||||
'popup' => Link::get_registry('infolog', 'add_popup'),
|
'popup' => Link::get_registry('infolog', 'add_popup'),
|
||||||
'group' => $group=1,
|
'group' => $group=1,
|
||||||
'mobileViewTemplate' => 'edit?'.filemtime(Api\Etemplate\Widget\Template::rel2path('/infolog/templates/mobile/edit.xet'))
|
'mobileViewTemplate' => 'view?'.filemtime(Api\Etemplate\Widget\Template::rel2path('/infolog/templates/mobile/view.xet'))
|
||||||
),
|
),
|
||||||
'parent' => array(
|
'parent' => array(
|
||||||
'caption' => 'View parent with children',
|
'caption' => 'View parent with children',
|
||||||
|
242
infolog/templates/mobile/view.xet
Normal file
242
infolog/templates/mobile/view.xet
Normal file
@ -0,0 +1,242 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id: edit.xet 54611 2015-12-22 17:01:32Z nathangray $ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="infolog.view.description" template="" lang="" group="0" version="1.6.001">
|
||||||
|
<textbox multiline="true" id="info_des" no_lang="1" width="99.7%" height="250" resize_ratio="0"/>
|
||||||
|
</template>
|
||||||
|
<template id="infolog.view.links" template="" lang="" group="0" version="1.3.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="th">
|
||||||
|
<description value="Existing links"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<link-string id="filelinks"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="infolog.view.project" template="" lang="" group="0" version="1.5.004">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description value="Project"/>
|
||||||
|
<link-entry id="pm_id" only_app='projectmanager' onchange="app.infolog.submit_if_not_empty" blur="None" class="infolog_projectName"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Price"/>
|
||||||
|
<hbox>
|
||||||
|
<textbox type="float" id="info_price" size="10"/>
|
||||||
|
<projectmanager-pricelist id="pl_id" onchange="window.app.infolog.et2.getWidgetById('info_price').set_value(this.options[this.selectedIndex].text.lastIndexOf('(') < 0 ? '' : this.options[this.selectedIndex].text.slice(this.options[this.selectedIndex].text.lastIndexOf('(')+1,-1));" options="None" />
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="planned time" for="info_planned_time"/>
|
||||||
|
<date-duration id="info_planned_time" display_format="$cont[duration_format]" class="infolog_date_duration" hours_per_day="$cont[hours_per_workday]"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Re-planned time" for="info_replanned_time"/>
|
||||||
|
<date-duration id="info_replanned_time" display_format="$cont[duration_format]" class="infolog_date_duration" hours_per_day="$cont[hours_per_workday]"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description statustext="Leave blank to get the used time calculated by timesheet entries" value="used time" for="info_used_time"/>
|
||||||
|
<date-duration id="info_used_time" span="2" display_format="$cont[duration_format]" class="infolog_date_duration" hours_per_day="$cont[hours_per_workday]"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="infolog.view.customfields" template="" lang="" group="0" version="1.0.1.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<box width="100%" overflow="auto">
|
||||||
|
<customfields options="@info_type"/>
|
||||||
|
</box>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="infolog.view.details" template="" lang="" group="0" version="1.9.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description value="CC"/>
|
||||||
|
<taglist-email id="info_cc" width="100%" empty_label="email"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Responsible" for="info_responsible"/>
|
||||||
|
<menulist width="100%">
|
||||||
|
<menupopup type="select-account" statustext="select a responsible user: a person you want to delegate this task" id="info_responsible" multiple="true" no_lang="1" tags="true" class="et2_fullWidth" account_type="both" empty_label="User or group" onchange="app.infolog.onchangeResponsible"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Category" for="info_cat"/>
|
||||||
|
<menulist class="et2_fullWidth">
|
||||||
|
<menupopup type="select-cat" statustext="select a category for this entry" id="info_cat" options="None"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row >
|
||||||
|
<description value="Parent" font_style="1"/>
|
||||||
|
<link-entry id="info_id_parent" onchange="if(egw && widget) { if(widget._oldValue) window.opener.egw.dataStoreUID(egw.appName+"::"+widget._oldValue,false);window.opener.egw.dataStoreUID(egw.appName+"::"+widget.getValue(),false);}" options="infolog" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Location" for="info_location"/>
|
||||||
|
<textbox id="info_location" size="60" maxlength="255" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Priority" for="info_priority"/>
|
||||||
|
<menulist class="et2_fullWidth">
|
||||||
|
<menupopup statustext="select a priority for this task" id="info_priority"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Date completed" for="info_datecompleted"/>
|
||||||
|
<date-time statustext="Date completed (leave it empty to have it automatic set if status is done or billed)" id="info_datecompleted" onchange="app.infolog.status_changed(this.id, form::name('info_status'), form::name('info_percent'), form::name('info_datecompleted'))" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Contact" for="info_from"/>
|
||||||
|
<textbox blur="@blur_title" class="et2_fullWidth" statustext="Custom contact-information, leave emtpy to use information from most recent link" id="info_from" size="60" maxlength="255"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Phone/Email" for="info_addr"/>
|
||||||
|
<hbox>
|
||||||
|
<textbox statustext="Custom contact-address, leave empty to use information from most recent link" id="info_addr" size="60" maxlength="255" class="et2_fullWidth _inputFullWidth"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="infolog.view.ownership" template="" lang="" group="0" version="16.1.00">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row disabled="!@info_owner">
|
||||||
|
<description value="Owner"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-account" id="info_owner" readonly="true"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Created"/>
|
||||||
|
<date-time id="info_created" readonly="true"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Private" for="info_access"/>
|
||||||
|
<checkbox statustext="should this entry only be visible to you and people you grant privat access via the ACL" id="info_access" options="private,public"/>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row>
|
||||||
|
<description value="Last modified"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-account" id="info_modifier" readonly="true"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description/>
|
||||||
|
<date-time id="info_datemodified" readonly="true"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="infolog.view" template="" lang="" group="0" version="1.9.101">
|
||||||
|
<grid border="1" width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row disabled="@hidebuttons" class="dialogHeadbar" >
|
||||||
|
<hbox span="all" width="100%">
|
||||||
|
<button statustext="Apply the changes" id="button[apply]" image="apply" background_image="1"/>
|
||||||
|
<button statustext="delete this entry" id="button[delete]" onclick="if($cont[info_anz_subs]) return $cont[info_anz_subs]; et2_dialog.confirm(widget,'Delete this entry','Delete');" image="delete" background_image="1" span="all"/>
|
||||||
|
<buttononly statustext="Insert timestamp into description field" id="timestamp" class="infologExtraButton infologTimestamp" background_image="1" image="timestamp" onclick="app.infolog.insert_text('info_des');"/>
|
||||||
|
<checkbox label="notification" id="no_notifications"/>
|
||||||
|
<textbox type="integer" id="info_number" readonly="true" class="entry_id"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@showsearchbuttons" class="dialogHeadbar">
|
||||||
|
<hbox span="all" width="100%">
|
||||||
|
<button label="Search" id="button[search]" image="search" background_image="1"/>
|
||||||
|
<button label="Cancel" id="button[cancelsearch]" image="cancel" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Title" for="info_subject"/>
|
||||||
|
<textbox statustext="a short subject for the entry" id="info_subject" class="et2_fullWidth et2_required" maxlength="255" span="5" tabindex="1"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Type" for="info_type"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist class="et2_fullWidth">
|
||||||
|
<menupopup statustext="Type of the log-entry: Note, Phonecall or ToDo" id="info_type" no_lang="1" onchange="widget.getInstanceManager().submit(null,false,true); return false;" />
|
||||||
|
</menulist>
|
||||||
|
<textbox align="right" type="integer" id="info_number" readonly="true"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Contact"/>
|
||||||
|
<link-entry id="info_contact" span="4"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Startdate" for="info_startdate"/>
|
||||||
|
<date-time statustext="when should the ToDo or Phonecall be started, it shows up from that date in the filter open or own open (startpage)" id="info_startdate" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Enddate" for="info_enddate"/>
|
||||||
|
<date-time statustext="til when should the ToDo or Phonecall be finished" id="info_enddate" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Status" for="info_status"/>
|
||||||
|
<menulist class="et2_fullWidth">
|
||||||
|
<menupopup statustext="@status_help" id="info_status" onchange="app.infolog.status_changed(this.id, form::name('info_status'), form::name('info_percent'), form::name('info_datecompleted'))"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Completed" for="info_percent"/>
|
||||||
|
<menulist class="et2_fullWidth" span="4">
|
||||||
|
<menupopup type="select-percent" statustext="Percent completed" id="info_percent" onchange="app.infolog.status_changed(this.id, form::name('info_status'), form::name('info_percent'), form::name('info_datecompleted'))"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<tabbox id="tabs" span="all" width="100%" align_tabs="v">
|
||||||
|
<tabs>
|
||||||
|
<tab id="description" label="Description" statustext="longer textual description"/>
|
||||||
|
<tab id="details" label="Details" statustext="Location, priority , ..."/>
|
||||||
|
<tab id="links" label="Links" statustext="Links of this entry"/>
|
||||||
|
<tab id="project" label="Projectmanager" statustext="Project settings: price, times"/>
|
||||||
|
<tab id="customfields" label="Customfields" statustext="Custom fields"/>
|
||||||
|
<tab id="ownership" label="Ownership" statustext="Ownership"/>
|
||||||
|
</tabs>
|
||||||
|
<tabpanels>
|
||||||
|
<template id="infolog.view.description"/>
|
||||||
|
<template id="infolog.view.details"/>
|
||||||
|
<template id="infolog.view.links"/>
|
||||||
|
<template id="infolog.view.project"/>
|
||||||
|
<template id="infolog.view.customfields"/>
|
||||||
|
<template id="infolog.view.ownership"/>
|
||||||
|
</tabpanels>
|
||||||
|
</tabbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
@ -196,6 +196,8 @@ class resources_ui
|
|||||||
'popup' => Link::get_registry('resources', 'add_popup'),
|
'popup' => Link::get_registry('resources', 'add_popup'),
|
||||||
'group' => $group=1,
|
'group' => $group=1,
|
||||||
'disableClass' => 'rowNoEdit',
|
'disableClass' => 'rowNoEdit',
|
||||||
|
'onExecute' => Api\Header\UserAgent::mobile()?'javaScript:app.resources.viewEntry':'',
|
||||||
|
'mobileViewTemplate' => 'view?'.filemtime(Api\Etemplate\Widget\Template::rel2path('/resources/templates/mobile/view.xet'))
|
||||||
),
|
),
|
||||||
'add' => array(
|
'add' => array(
|
||||||
'caption' => 'New resource',
|
'caption' => 'New resource',
|
||||||
|
178
resources/templates/mobile/view.xet
Normal file
178
resources/templates/mobile/view.xet
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id$ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="resources.view.general" template="" lang="" group="0" version="">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description value="Inventory number"/>
|
||||||
|
<textbox id="inventory_number" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Accessory of"/>
|
||||||
|
<vbox class="et2_fullWidth">
|
||||||
|
<menulist class="et2_fullWidth">
|
||||||
|
<menupopup id="accessory_of" no_lang="1" />
|
||||||
|
</menulist>
|
||||||
|
<description id="accessory_label"/>
|
||||||
|
</vbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Description (short)"/>
|
||||||
|
<textbox statustext="Short description of resource" id="short_description" size="50" maxlength="100" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Storage information"/>
|
||||||
|
<textbox statustext="Information about storage" id="storage_info" maxlength="100" size="50" class="et2_fullWidth" span="all"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Location"/>
|
||||||
|
<textbox statustext="Where to find this resource?" id="location" maxlength="100" size="50" class="et2_fullWidth" />
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description disabled="true" value="Buyable"/>
|
||||||
|
<checkbox disabled="true" statustext="Is resource buyable?" id="buyable" span="all" class="et2_fullWidth" />
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Picture"/>
|
||||||
|
<grid>
|
||||||
|
<columns>
|
||||||
|
<column width="10%"/>
|
||||||
|
<column width="90%"/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
|
||||||
|
<row>
|
||||||
|
<radio id="picture_src" options="gen_src"/>
|
||||||
|
<description value="Use general resources icon"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<radio id="picture_src" options="cat_src"/>
|
||||||
|
<description value="Use the category's icon"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<radio id="picture_src" options="own_src"/>
|
||||||
|
<description value="Use own picture"/>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="resources.view.page" template="" lang="" group="0" version="">
|
||||||
|
<htmlarea statustext="Web-Site for this resource" id="long_description" height="200" toolbar="true"/>
|
||||||
|
</template>
|
||||||
|
<template id="resources.view.custom" template="" lang="" group="0" version="">
|
||||||
|
<grid width="100%" height="245" class="row_on" spacing="0" padding="0" overflow="auto">
|
||||||
|
<columns>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="th" height="20">
|
||||||
|
<description value="Custom fields"/>
|
||||||
|
</row>
|
||||||
|
<row valign="top">
|
||||||
|
<customfields/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="resources.view.ownership" template="" lang="" group="0" version="">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="dialogOperators">
|
||||||
|
<description value="Created by"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-account" id="res_owner" readonly="true"/>
|
||||||
|
</menulist>
|
||||||
|
<date-time id="res_created" readonly="true" align="right"/>
|
||||||
|
</hbox>
|
||||||
|
<description/>
|
||||||
|
<description value="Last modified"/>
|
||||||
|
<hbox>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-account" id="res_modifier" readonly="true"/>
|
||||||
|
</menulist>
|
||||||
|
<date-time id="res_modified" readonly="true" align="right"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="resources.view" template="" lang="" group="0" version="1.9.002">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row class="dialogHeadbar" >
|
||||||
|
<hbox>
|
||||||
|
<button id="button[apply]" image="apply" background_image="1"/>
|
||||||
|
<button id="button[delete]" onclick="et2_dialog.confirm(widget,'Do you really want do delte this resource?','Delete')" image="delete" background_image="1"/>
|
||||||
|
<textbox type="integer" id="res_id" readonly="true" class="entry_id"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description/>
|
||||||
|
<box>
|
||||||
|
<hbox class="avatar">
|
||||||
|
<image src="resource_picture" href="$cont[picture_original]" expose_view="true" align="center"/>
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
</box>
|
||||||
|
</row>
|
||||||
|
<row class="dialogHeader">
|
||||||
|
<description value="Name"/>
|
||||||
|
<textbox statustext="Name of resource" id="name" needed="1" class="et2_fullWidth et2_required" span="4"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Quantity"/>
|
||||||
|
<textbox statustext="Quantity of resource" id="quantity" size="5" maxlength="10" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Category"/>
|
||||||
|
<menulist span="3">
|
||||||
|
<menupopup align="right" statustext="Which category does this resource belong to?" id="cat_id" needed="1" no_lang="1" class="et2_fullWidth" />
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Usable"/>
|
||||||
|
<textbox statustext="How many of them are useable?" id="useable" size="5" maxlength="10" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Bookable"/>
|
||||||
|
<checkbox statustext="Is resource bookable?" id="bookable" span="3"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<tabbox id="tabs" span="all" width="100%" tab_height="250" align_tabs="v">
|
||||||
|
<tabs>
|
||||||
|
<tab id="page" label="Description" statustext="Informations about the location of resource"/>
|
||||||
|
<tab id="general" label="Details" statustext="General informations about resource"/>
|
||||||
|
<tab id="custom" label="Custom" statustext="Pictures or resource"/>
|
||||||
|
<tab id="ownership" label="Ownership"/>
|
||||||
|
</tabs>
|
||||||
|
<tabpanels>
|
||||||
|
<template id="resources.view.page"/>
|
||||||
|
<template id="resources.view.general"/>
|
||||||
|
<template id="resources.view.custom"/>
|
||||||
|
<template id="resources.view.ownership"/>
|
||||||
|
</tabpanels>
|
||||||
|
</tabbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
@ -954,7 +954,7 @@ class timesheet_ui extends timesheet_bo
|
|||||||
'group' => $group=1,
|
'group' => $group=1,
|
||||||
'disableClass' => 'th',
|
'disableClass' => 'th',
|
||||||
'onExecute' => Api\Header\UserAgent::mobile()?'javaScript:app.timesheet.viewEntry':'',
|
'onExecute' => Api\Header\UserAgent::mobile()?'javaScript:app.timesheet.viewEntry':'',
|
||||||
'mobileViewTemplate' => 'edit?'.filemtime(Api\Etemplate\Widget\Template::rel2path('/timesheet/templates/mobile/edit.xet'))
|
'mobileViewTemplate' => 'view?'.filemtime(Api\Etemplate\Widget\Template::rel2path('/timesheet/templates/mobile/view.xet'))
|
||||||
),
|
),
|
||||||
/*
|
/*
|
||||||
'view' => array(
|
'view' => array(
|
||||||
|
155
timesheet/templates/mobile/view.xet
Normal file
155
timesheet/templates/mobile/view.xet
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE overlay PUBLIC "-//Stylite AG//eTemplate 2//EN" "http://www.egroupware.org/etemplate2.dtd">
|
||||||
|
<!-- $Id: edit.xet 52376 2015-04-01 20:03:04Z nathangray $ -->
|
||||||
|
<overlay>
|
||||||
|
<template id="timesheet.view.general" template="" lang="" group="0" version="1.7.002">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description value="Project" for="ts_project"/>
|
||||||
|
<hbox disabled="@pm_integration=none">
|
||||||
|
<link-entry id="pm_id" onchange="app.timesheet.pm_id_changed" only_app='projectmanager' blur='None' class="et2_fullWidth"/>
|
||||||
|
</hbox>
|
||||||
|
<hbox disabled="@pm_integration=full" span="all">
|
||||||
|
<textbox blur="@ts_project_blur" id="ts_project" size="65" maxlength="80" class="et2_fullWidth"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row disabled="@ts_viewtype">
|
||||||
|
<description value="Unitprice" for="ts_unitprice"/>
|
||||||
|
<hbox disabled="@pm_integration=none" >
|
||||||
|
<textbox type="float" id="ts_unitprice" span="all" size="10" width="30%"/>
|
||||||
|
<projectmanager-pricelist id="pl_id" width="70%" onchange="window.app.timesheet.et2.getWidgetById('ts_unitprice').set_value(this.options[this.selectedIndex].text.lastIndexOf('(') < 0 ? '' : this.options[this.selectedIndex].text.slice(this.options[this.selectedIndex].text.lastIndexOf('(')+1,-1));" options="None"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row class="row" disabled="!@ts_viewtype">
|
||||||
|
<description value="comment"/>
|
||||||
|
<textbox multiline="true" id="ts_description_short" rows="5" cols="50" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="row" disabled="@ts_viewtype">
|
||||||
|
<description value="Quantity" for="ts_quantity"/>
|
||||||
|
<textbox type="float" blur="@ts_quantity_blur" statustext="empty if identical to duration" id="ts_quantity" precision="3" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row class="row" disabled="@ts_viewtype">
|
||||||
|
<description value="Category" for="cat_id"/>
|
||||||
|
<menulist span="all">
|
||||||
|
<menupopup type="select-cat" id="cat_id" options="None,,,timesheet" class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="timesheet.view.notes" template="" lang="" group="0" version="1.5.001">
|
||||||
|
<textbox multiline="true" id="ts_description" rows="9" cols="70" class="et2_fullWidth" height="250" resize_ratio="0"/>
|
||||||
|
</template>
|
||||||
|
<template id="timesheet.view.customfields" template="" lang="" group="0" version="1.5.001">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<box width="100%" overflow="auto">
|
||||||
|
<customfields options="@info_type"/>
|
||||||
|
</box>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="timesheet.view.ownership" template="" lang="" group="0" version="16.1.00">
|
||||||
|
<grid width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row>
|
||||||
|
<description value="User" for="ts_owner"/>
|
||||||
|
<menulist >
|
||||||
|
<menupopup id="ts_owner" no_lang="1" class="et2_fullWidth"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@ts_modified">
|
||||||
|
<description value="Last modified"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup type="select-account" id="ts_modifier" readonly="true"/>
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description/>
|
||||||
|
<date-time id="ts_modified" readonly="true" align="left"/>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
<template id="timesheet.view" template="" lang="" group="0" version="1.9.002">
|
||||||
|
<grid border="1" width="100%">
|
||||||
|
<columns>
|
||||||
|
<column width = "120"/>
|
||||||
|
<column/>
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row disabled="@hidebuttons" class="dialogHeadbar" >
|
||||||
|
<hbox span="all" width="100%">
|
||||||
|
<button statustext="Saves this entry and add a new one" id="button[save_new]" image="save_new" background_image="1"/>
|
||||||
|
<button statustext="Applies the changes made" id="button[apply]" image="apply" background_image="1"/>
|
||||||
|
<button statustext="Delete this entry" id="button[delete]" onclick="et2_dialog.confirm(widget,'Delete this entry','Delete')" image="delete" background_image="1"/>
|
||||||
|
<textbox type="integer" id="ts_id" readonly="true" class="entry_id"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row disabled="!@showsearchbuttons" class="dialogHeadbar">
|
||||||
|
<hbox span="all" width="100%">
|
||||||
|
<button label="Search" id="button[search]" image="search" background_image="1"/>
|
||||||
|
<button label="Cancel" id="button[cancelsearch]" image="cancel" background_image="1"/>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
<row disabled="@ts_viewtype">
|
||||||
|
<description value="Title"/>
|
||||||
|
<textbox blur="@ts_title_blur" id="ts_title" size="65" maxlength="255" class="et2_fullWidth et2_required" tabindex="1"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Date"/>
|
||||||
|
<date id="ts_start" needed="1" options=",8"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Starttime"/>
|
||||||
|
<date-timeonly id="start_time" options="H:i" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Duration" for="ts_duration"/>
|
||||||
|
<date-duration id="ts_duration" options=",hm" class="et2_fullWidth" />
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="or endtime" class="et2_noWrap"/>
|
||||||
|
<date-timeonly id="end_time" options="H:i" class="et2_fullWidth"/>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<description value="Status"/>
|
||||||
|
<menulist>
|
||||||
|
<menupopup statustext="select a status of the timesheet" id="ts_status" class="et2_fullWidth" options="please select" />
|
||||||
|
</menulist>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<tabbox id="tabs" span="all" width="100%" align_tabs="v">
|
||||||
|
<tabs>
|
||||||
|
<tab id="notes" label="Description"/>
|
||||||
|
<tab id="general" label="Details"/>
|
||||||
|
<tab id="customfields" label="Custom Fields"/>
|
||||||
|
<tab id="ownership" label="Ownership"/>
|
||||||
|
</tabs>
|
||||||
|
<tabpanels class="dialog-main-timeframe">
|
||||||
|
<template id="timesheet.view.notes"/>
|
||||||
|
<template id="timesheet.view.general"/>
|
||||||
|
<template id="timesheet.view.customfields"/>
|
||||||
|
<template id="timesheet.view.ownership"/>
|
||||||
|
</tabpanels>
|
||||||
|
</tabbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
</template>
|
||||||
|
</overlay>
|
Loading…
Reference in New Issue
Block a user