Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
intranet-gtd-dashboard
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
project-open
intranet-gtd-dashboard
Commits
69e385d1
Commit
69e385d1
authored
Feb 01, 2010
by
po34devklaus
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
-- moved stuff to here which was initially placed in xml-rpc
parent
5ed915e7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
186 additions
and
6 deletions
+186
-6
intranet-gtd-dashboard-procs.tcl
tcl/intranet-gtd-dashboard-procs.tcl
+186
-6
No files found.
tcl/intranet-gtd-dashboard-procs.tcl
View file @
69e385d1
# /packages/intranet-gtd-dashboard/tcl/intranet-gtd-dashboard-procs.tcl
#
# Copyright (c
)
2003-20
06
]
project-open
[
# Copyright (c
)
2003-20
10
]
project-open
[
#
# All rights reserved. Please check
# http://www.project-open.com/license/ for details.
...
...
@@ -10,15 +10,195 @@ ad_library {
@author klaus.hofeditz@project-open.com
}
namespace
eval gtd-dashboard
{}
namespace
eval intranet-gtd-dashboard
{}
ad_register_proc GET /intranet-gtd-dashboard/rest/* intranet-gtd-dashboard::dispatchRest
ad_register_proc POST /intranet-gtd-dashboard/rest/* intranet-gtd-dashboard::dispatchRest
ad_proc -public intranet-gtd-dashboard::dispatchRest
{}
{
@return dispatches REST requests
@author Klaus Hofeditz
}
{
set user_id
[
ad_maybe_redirect_for_registration
]
set urlpieces
[
ns_conn urlv
]
set path
[
lrange
$urlpieces
2
[
llength
$urlpieces
]]
set url_query
[
ns_conn query
]
set header_vars
[
ns_conn form
]
set var_list
[
ad_ns_set_keys
$header
_vars
]
switch
[
lindex
$urlpieces
2
]
{
companies
{
return
[
intranet-gtd-dashboard::handle_rest_company
[
ns_conn method
]
$path
$url
_query
$user
_id
]
}
timesheet
{
doc_return 200
"text/plain"
[
intranet-gtd-dashboard::handle_rest_timesheet
[
ns_conn method
]
$path
$url
_query
$user
_id
]
}
projects
{
doc_return 200
"text/plain"
[
intranet-gtd-dashboard::handle_rest_project
[
ns_conn method
]
$path
$url
_query
$user
_id
]
}
action_items
{
doc_return 200
"text/plain"
[
intranet-gtd-dashboard::handle_action_items
[
ns_conn method
]
$path
$url
_query
$user
_id
]
}
default
{
ad_return_complaint 1
"ressource not available"
}
}
}
ad_proc -public intranet-gtd-dashboard::handle_rest_timesheet
{
method path url_query user_id
}
{
handles timesheet actions
}
{
# doc_return 200
"text/plain"
[
lindex
$path
1
]
# doc_return 200
"text/plain"
"
$method
$path
$url
_query
$param
"
set query_list
[
split
$url
_query &
]
foreach sub_list
$query
_list
{
set query_item
[
split
$sub
_list =
]
if
{
"scope"
==
[
lindex
$query
_item 0
]
}
{
set scope
[
lindex
$query
_item 1
]
}
else
if
{
"hours"
==
[
lindex
$query
_item 0
]
}
{
set hours
[
lindex
$query
_item 1
]
}
else
if
{
"hours_curr"
==
[
lindex
$query
_item 0
]
}
{
set hours_curr
[
lindex
$query
_item 1
]
}
}
set task_id
[
lindex
$path
1
]
if
{
"GET"
==$method
}
{
if
{
"today"
==$scope
}
{
doc_return 200
"text/plain"
[
db_string get_view_id
"select hours from im_hours where day::date = now()::date and project_id=
$task
_id"
-default 0
]
}
}
else
if
{
"POST"
==$method
}
{
if
{
"0"
!=$hours_curr
}
{
db_dml update
"update im_hours set hours =
$hours
where day::date = now()::date and project_id=
$task
_id"
}
else
{
set default_currency
[
ad_parameter -package_id
[
im_package_cost_id
]
"DefaultCurrency"
""
"EUR"
]
set billing_rate 0
set billing_currency
""
db_0or1row get_billing_rate
"
select hourly_cost as billing_rate,
currency as billing_currency
from im_employees
where employee_id =
$user
_id
"
if
{
""
==
$billing
_currency
}
{
set billing_currency
$default
_currency
}
set day_julian
[
db_string sysdate_as_julian
"select to_char(sysdate,'J') from dual"
]
db_dml hours_insert
"
insert into im_hours (
user_id, project_id,
day, hours,
billing_rate, billing_currency
) values (
$user
_id,
$task
_id,
to_date(:day_julian,'J'),
$hours
,
:billing_rate, :billing_currency
)"
}
}
}
ad_proc -public intranet-gtd-dashboard::handle_action_items
{
method path url_query user_id
}
{
@return project list / task list
}
{
set header_vars
[
ns_conn form
]
set var_list
[
ad_ns_set_keys
$header
_vars
]
ad_ns_set_to_tcl_vars
$header
_vars
if
{
""
!=
$item
_list
}
{
return
[
intranet-gtd-dashboard::write_gtd_list
$item
_list
$user
_id
]
}
else
{
return
"error: not items found"
}
}
ad_proc -public intranet-gtd-dashboard::render_json
{
object_list search_string
}
{
@tkes a list of objects returns them as a json structure
}
{
#
set output
"
\{\"
ResultSet
\"
:
\n\{\n\"
Result
\"
:
\[\n
"
# set output
"
\[\n
"
foreach sub_list
$object
_list
{
if
{
[
llength
$sub
_list
]
}
{
if
{
0 !=
[
llength
[
lindex
$sub
_list 0
]]
}
{
if
{
""
!=
$search
_string
}
{
if
{
[
string
first
[
string
tolower
$search
_string
]
[
string
tolower
[
lindex
$sub
_list 0
]]]
!= -1
}
{
append output
"
\{\"
Object
\"
:
\"
"
append output
[
string
map
{
 
;
""
}
[
lindex
$sub
_list 0
]
]
append output
"
\"
"
append output
",
\"
ObjectId
\"
:"
append output
[
string
map
{
 
;
""
}
[
lindex
$sub
_list 1
]
]
# append output
[
lindex
$sub
_list 1
]
append output
"
\}
,"
}
}
else
{
append output
"
\{\"
Object
\"
:
\"
"
append output
[
string
map
{
 
;
""
}
[
lindex
$sub
_list 0
]
]
append output
"
\"\}
,"
}
}
}
}
set output
"
[
string
range
$output
0
[
expr
[
string
length
$output
]
-2
]]
"
append output
"
\]\}\n\}
"
# append output
"
\n\]
"
}
ad_proc -public intranet-gtd-dashboard::handle_rest_project
{
method path url_query user_id
}
{
@return project list / task list
}
{
set query_list
[
split
$url
_query &
]
# find searchstring, object type, project_id
foreach sub_list
$query
_list
{
set query_item
[
split
$sub
_list =
]
if
{
"search_string"
==
[
lindex
$query
_item 0
]
}
{
set search_string
[
lindex
$query
_item 1
]
}
# project or task?
if
{
"object_type"
==
[
lindex
$query
_item 0
]
}
{
set object_type
[
lindex
$query
_item 1
]
}
if
{
"project_id"
==
[
lindex
$query
_item 0
]
}
{
set project_id
[
lindex
$query
_item 1
]
}
# last id used in <li> element
if
{
"last_id"
==
[
lindex
$query
_item 0
]
}
{
set last_id
[
lindex
$query
_item 1
]
}
# location
if
{
"location"
==
[
lindex
$query
_item 0
]
}
{
set location
[
lindex
$query
_item 1
]
}
}
# set project_id 27971
# Getting list of objects
switch
$object
_type
{
project
{
set object_list
[
im_project_list -exclude_subprojects_p 0 -exclude_status_id
[
im_project_status_closed
]
-project_id 0
]
set output
[
intranet-gtd-dashboard::render_json
$object
_list
$search
_string
]
}
task
{
set output
[
intranet-gtd-dashboard::render_output
[
im_gtd_task_list -restrict_to_project_id
$project
_id
]
task_table
$last
_id ts
$location
]
}
default
{
set
output
"Object Type not found"
}
}
return
$output
}
# ----------------------------------------------------------------------
# PM helper functions
# ----------------------------------------------------------------------
ad_proc -public gtd-dashboard::read_gtd_list
{
user_id
}
{
ad_proc -public intranet-gtd-dashboard::read_gtd_list
{
user_id
}
{
@reads gtd list
}
{
...
...
@@ -45,7 +225,7 @@ set sql "
return
$options
}
ad_proc -public gtd-dashboard::write_gtd_list
{
object_list user_id
}
{
ad_proc -public
intranet-
gtd-dashboard::write_gtd_list
{
object_list user_id
}
{
@writes gtd list
}
{
# delete current items
...
...
@@ -68,7 +248,7 @@ ad_proc -public gtd-dashboard::write_gtd_list { object_list user_id} {
}
ad_proc -public gtd-dashboard::render_output
{
object_list template last_id type location
}
{
ad_proc -public
intranet-
gtd-dashboard::render_output
{
object_list template last_id type location
}
{
@returns task html snippet created based on JSON object list
}
{
set ctr
[
expr
$last
_id*1
]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment