The Omni Group Forums

The Omni Group Forums (http://forums.omnigroup.com/index.php)
-   OmniFocus 1 for Mac (http://forums.omnigroup.com/forumdisplay.php?f=38)
-   -   So Task->Duplicate only works in project mode? (http://forums.omnigroup.com/showthread.php?t=22073)

CatOne 2011-09-06 11:49 AM

So Task->Duplicate only works in project mode?
 
Doggone-it… so many crappy things about stuff that's disabled in context mode. And so many ugly things about project mode and not being able to hide things :-(

Greg Jones 2011-09-06 12:27 PM

You can duplicate a task in context mode, but it requires a work-around. If you option-drag a task to the same, or another, context in the Sidebar, the task will be duplicated. I've never understood myself why the Duplicate command doesn't work.

CatOne 2011-09-06 12:33 PM

[QUOTE=Greg Jones;101404]You can duplicate a task in context mode, but it requires a work-around. If you option-drag a task to the same, or another, context in the Sidebar, the task will be duplicated. I've never understood myself why the Duplicate command doesn't work.[/QUOTE]

Thanks for the tip!

I sorta figure duplicate doesn't work for the same reason sorting doesn't work :-/

I'm sure Rob Trew has a script which will do this (basically, a check-in which generates a follow-up task in 1-2 week's time) but I'm not loaded with scripts and it sure would be easy and fast for me to just do this manually.

There just so much UI friction in OmniFocus sometimes. And don't get me started on the split view in a task on the iPhone, or I might never get stopped. Functionality is great, scalability is great, UI and usability are poor :-(

whpalmer4 2011-09-06 02:06 PM

This has come up before. It'll probably come up again.

If you duplicate (or create) a task in project mode, you can immediately see where it went and put it where you want it. Not so in context mode. Maybe you always want your duplicate task tucked in right behind the original, but I can't think of the last time where that was what I wanted to do with a duplicate. If you're in a restrictive view (next or available actions only in a sequential project, for example) the newly created action might not even appear (it doesn't in project mode). If you are going to modify the duplicate (changing the context, for example), it may get whisked off elsewhere in the display unless you are using a combination of view settings that makes context mode look similar to project mode. Given all of that, and the ease of right-click Focus in New Window where you can see what you are doing and don't have to disturb the current view, color me unconvinced that there's a far better way to do this. One might take the absence of the ability to paste into a context view in OmniFocus for iPad as an indication that they aren't actively moving to change this, either.

Sounds like you might want something like Curt Clifton's [URL="http://www.rose-hulman.edu/~clifton/software.html#Await"]Complete and Await Reply[/URL] script if you are doing this frequently.

skillet 2011-09-14 10:11 AM

[QUOTE=whpalmer4;101408]
If you duplicate (or create) a task in project mode, you can immediately see where it went and put it where you want it. Not so in context mode. Maybe you always want your duplicate task tucked in right behind the original... If you're in a restrictive view (next or available actions only in a sequential project, for example) the newly created action might not even appear (it doesn't in project mode). If you are going to modify the duplicate (changing the context, for example), it may get whisked off elsewhere in the display unless you are using a combination of view settings that makes context mode look similar to project mode. Given all of that, and the ease of right-click Focus in New Window where you can see what you are doing and don't have to disturb the current view, [/QUOTE]

whpalmer4 you know OmniFocus much better than I do, so thanks for your explanations and helping explain why something shouldn't work. For me it is always helpful to understand the logic of why a requested feature might be bad for the way a program works.

I need help in understanding why an action would get whisked away if you duplicate it and you are still in the same view you were currently seeing the action. Wouldn't it have all the same values and still be visible?

Maybe there is a better way then duplicating an action for for what I need it for.

I am really just trying to duplicate an action that has a weekly or monthly repeating value and get back to it in a few days later. I don't want to just change the start day because when I complete the action, in the following week it will show up on the day I forwarded it to. I don't want to leave the original start date and keep seeing it the next few days as an available or next action and have to remind myself that I can't do that today.

So after duplicating the action I forward it and take off the repeat value, then mark the original repeating action as done (so it shows up on the same day next week) and then delete it (since it really wasn't done that day).

It would be nice to applescript all of those things in one step but the duplicating part has me the most hung up.

Is there no way for a script to check it's own context and project and then duplicate like "[URL="http://www.cerquant.com/omnifocus_scripts"]Delegated[/URL]" or [URL="http://www.rose-hulman.edu/~clifton/software.html#Await"]"Complete and Await Reply"[/URL] does?

DrJJWMac 2011-09-14 12:20 PM

[QUOTE=skillet;101814]...I don't want to leave the original start date and keep seeing it the next few days as an available or next action and have to remind myself that I can't do that today.

So after duplicating the action I forward it and take off the repeat value, then mark the original repeating action as done (so it shows up on the same day next week) and then delete it (since it really wasn't done that day). ...[/QUOTE]

At the risk of sounding as if I am saying that you are doing this wrong (which is not what I mean) ... perhaps you are approaching your problem the wrong way. In a nutshell, it seems to me that you are playing games in OF to hide the fact that you do not want to do or cannot yet do a certain task on a certain list. Maybe instead, you should be deciding on one "action right now" list that you to reference when you really are doing actions. From that point, all other lists (perspectives, views ... whatever) exist only for reviewing projects/groups/actions/contexts ... where you purposely choose actions to move to your "action right now" list. Then, you should find a respectable way to keep your repeating actions off your "action right now" list until you really are ready to do it.

I think flagging is the most mentioned method for setting up an equivalent of an "action right now" list.

Just sharing what seems to be a tangential thought process that I had as I considered how to stop playing within OF to shift around my work loads and instead use OF to stay on top of what I am doing. Otherwise, I would imagine an AppleScript can be found or made to move tasks around as you want.

HTH

--
JJW

skillet 2011-09-14 12:54 PM

Thanks JJW for your comments, I posted all of that in hopes I can get help on a script or a better way to overcome this conveluted methode because you are right it is games with OF I am playing.

If I understand you correctly adding a standard tag like the day of the week to the comments or anything other than using the start date for the actions I view as actionable.

Currently I use flags for things I really should do for the day, like help someone out, practice goals I have etc., but that are not actually due that day. Repeating actions often don't fit into that category, so I couldn't flag them according to that method.

Anyway sorry if I have pulled this thread too far off topic. Duplicating an action with an AppleScript is still a dream of mine.

whpalmer4 2011-09-14 02:54 PM

[QUOTE=skillet;101814]
I need help in understanding why an action would get whisked away if you duplicate it and you are still in the same view you were currently seeing the action. Wouldn't it have all the same values and still be visible?
[/quote]
I mentioned the whisking away would happen after you modified the duplicate (setting a new due or start date, for example, when grouping or sorting by same).
[quote]
I am really just trying to duplicate an action that has a weekly or monthly repeating value and get back to it in a few days later. I don't want to just change the start day because when I complete the action, in the following week it will show up on the day I forwarded it to. I don't want to leave the original start date and keep seeing it the next few days as an available or next action and have to remind myself that I can't do that today.
[/quote]
Okay, you've got a repeating task with a regular schedule, but this time around the schedule needs to be different. I just leave it as scheduled and mark it off when it gets done; my start and due perspectives (and forecast view on iPhone/iPad for due items) show me the things haven't been done on schedule, so they aren't immediately out of sight and out of mind. I have a look back at the start of the day and try to knock off any leftover items I can before turning to the new day's items, and when I exhaust the day's list or get near the end of the day, I'll look back again. Doing my project reviews also helps provide a safety net.

That said, I think it wouldn't be too hard to make a script that marked the item as complete (so the next one would be generated), then changed the original to be incomplete and non-repeating. But what do we do about the date? Does the script prompt for the new date, or just assign one, or leave that to the user? I'll give you three guesses as to which option is easiest to code :-)

If you were to create such a script, it might look something like this:

[code]
-- Reschedule Repeating Task

-- Solves issue of a repeating task that needs the current instance rescheduled without
-- disturbing the scheduling of future instances. Current instance is marked complete to
-- generate the next instance, then set not to repeat and optionally rescheduled.

-- if pOffertoReschedule is true, prompt user for rescheduling, otherwise leave dates unmolested
property pOffertoReschedule : true

on run
tell application "OmniFocus"
tell front document
tell document window 1
set oTrees to selected trees of content
set lngTrees to count of oTrees
if (lngTrees > 0) then
if (lngTrees = 1) then
set oTask to value of (first item of oTrees)
if (repetition of oTask is not missing value) then
my RescheduleRepeatingTask(oTask)
else
display alert quote & name of oTask & quote & " is not a repeating task, ignoring"
end if
else
display alert "Select only one row!"
end if
else
display alert "No content selected!"
end if
end tell
end tell
end tell
end run

on RescheduleRepeatingTask(oTask)
using terms from application "OmniFocus"

set completed of oTask to true -- cause OmniFocus to duplicate task
set repetition of oTask to missing value -- clear repeat
set canReschedule to false
if (pOffertoReschedule is true) then
display dialog "Reschedule by how many days?" buttons {"Cancel", "OK"} ¬
default button 2 default answer "1"
set rescheduleDays to (text returned of the result) as integer

-- attempt to move start and due dates back by rescheduleDays
try
tell oTask to set {theStartDate, theDueDate} to {start date, due date}
set {newStartDate, newDueDate} to {theStartDate, theDueDate}

if (theDueDate is not missing value) then
set newDueDate to (theDueDate + (days * rescheduleDays))
set canReschedule to true
end if
if (theStartDate is not missing value) then
set newStartDate to (theStartDate + (days * rescheduleDays))
set canReschedule to true
end if
if (canReschedule) then
tell oTask to set {start date, due date} to {newStartDate, newDueDate}
else
display alert "No start or due date for existing task, duplicated but not rescheduled"
end if
on error
display alert "Failed to reschedule existing task"
end try
end if

set completed of oTask to false -- reactivate original task

end using terms from
end RescheduleRepeatingTask
[/code]

skillet 2011-09-14 03:33 PM

whpalmer4 (Bill) you are such a HUGE help, this answers many questions! I plan on spending a long time digesting this one and learning all I can from it.

[QUOTE=whpalmer4;101832]

But what do we do about the date? Does the script prompt for the new date, or just assign one, or leave that to the user?

[/QUOTE]

I was planning on using Dan's "[URL="http://forums.omnigroup.com/showthread.php?t=7057&highlight=defer"]Defer[/URL]" script to ask for how long to defer it. I always like to defer from the current date; it's less thinking involved when trying to crank through a list.

[QUOTE=whpalmer4;101832]

I'll give you three guesses as to which option is easiest to code :-)

[/QUOTE]

I choose "C" leave that to the user. Thanks for showing me all three and for all the comments you made in your script, very helpful!

What is the "o" for in oTask? Is it for "on"? I gather "p" is a note that it's a property.

whpalmer4 2011-09-14 04:26 PM

[QUOTE=skillet;101834]
I was planning on using Dan's "[URL="http://forums.omnigroup.com/showthread.php?t=7057&highlight=defer"]Defer[/URL]" script to ask for how long to defer it. I always like to defer from the current date; it's less thinking involved when trying to crank through a list.
[/quote]
The logic in there now is very similar to the older version of Dan's script that I run, assuming you choose the option to adjust both start and due dates (which is what I do). Most of my deferring is just moving repeating actions to the same time next week, though now that someone finally wrote this script maybe I'll start using it :-)
[quote]
What is the "o" for in oTask? Is it for "on"? [/QUOTE]

Onomatopoeic :-)

Nah, I inherited it from Rob's code fragment, you'd have to ask him. Output? Original? I don't like to have names that are too similar to predefined names, and prefer not to rely on remembering rules (not a "language lawyer"!) about picky details. Is "Task" different than "task" in Applescript? In all cases? No such worries with "oTask"! I think I've probably read more of Rob's Applescript than anyone else's, so some of his style may have rubbed off on me, especially the part about writing scripts for others instead of focusing on one's own work at times :-)

DrJJWMac 2011-09-14 04:51 PM

[QUOTE=skillet;101823]...Currently I use flags for things I really should do for the day, like help someone out, practice goals I have etc., but that are not actually due that day. Repeating actions often don't fit into that category, so I couldn't flag them according to that method. ....[/QUOTE]

In essence then, you have a perspective (flagged) that does not show the repeat action. When you are truly intending to do the repeat action, flag it. Otherwise, consider it showing in your unflagged lists only as "available now for ongoing daily/weekly ... review" rather than "available now to do now". Then, you could stop worrying about how to shuffle the task off to a different date, only later to "re-shuffle" and then "re-shuffle" and then ... someday eventually maybe marking that task truly to do.

Just a thought.

ps -- You will have to unflag the repeat task before you check it off complete or your new repeat task will return as being flagged.

--
JJW

skillet 2011-09-15 06:16 PM

[QUOTE=whpalmer4;101836]
Though now that someone finally wrote this script maybe I'll start using it :-)
[/QUOTE]

Let me know how you like it ;)

I spent about 4 hours today trying to write a script that worked on multiple selected actions and...
1) would not run if there is any repeating actions selected.
2) duplicate selected actions.
3) mark them as [In Progress] in the action name.
4) mark them as complete.
5) select the original actions (I might have to do this on only one action at a time because of this).
6) forward only the start dates from today's date by a given amount. Not the original start date if it was say yesterday.

This script does step 6 but unfortunately it does not keep the original start time.

[CODE](*
# DESCRIPTION #

This script "snoozes" the currently selected actions or projects by setting the start date to given number of days in the future.


# LICENSE #

Copyright © 2010 Dan Byler (contact: dbyler@gmail.com)
Licensed under MIT License (http://www.opensource.org/licenses/mit-license.php)


# CHANGE HISTORY #

0.2c (2010-06-22)
- Actual fix for autosave

0.2b (2010-06-21)
- Encapsulated autosave in "try" statements in case this fails

0.2 (2010-06-15)
- Fixed Growl code
- Added performance optimization (thanks, Curt Clifton)
- Changed from LGPL to MIT license (MIT is less restrictive)

0.1: Original release. (Thanks to Curt Clifton, Nanovivid, and Macfaninpdx for various pieces of code)


# INSTALLATION #

- Copy to ~/Library/Scripts/Applications/Omnifocus
- If desired, add to the OmniFocus toolbar using View > Customize Toolbar... within OmniFocus


# KNOWN BUGS #

- When the script is invoked from the OmniFocus toolbar and canceled, OmniFocus returns an error. This issue does not occur when invoked from the script menu, a FastScripts or Quicksilver trigger, etc.

*)

property showAlert : false --if true, will display success/failure alerts
property useGrowl : true --if true, will use Growl for success/failure alerts
property defaultSnooze : 1 --number of days to snooze by default
property alertItemNum : ""
property alertDayNum : ""
property growlAppName : "Dan's Scripts"
property allNotifications : {"General", "Error"}
property enabledNotifications : {"General", "Error"}
property iconApplication : "OmniFocus.app"


tell application "OmniFocus"
tell front document
tell (first document window whose index is 1)
set theSelectedItems to selected trees of content
set numItems to (count items of theSelectedItems)
if numItems is 0 then
set alertName to "Error"
set alertTitle to "Script failure"
set alertText to "No valid task(s) selected"
my notify(alertName, alertTitle, alertText)
return
end if

display dialog "Snooze start date for how many days from today?" default answer defaultSnooze buttons {"Cancel", "OK"} default button 2
set snoozeLength to (the text returned of the result) as integer
set todayStart to (current date) - (get time of (current date))
if snoozeLength is not 1 then
set alertDayNum to "s"
end if
set selectNum to numItems
set successTot to 0
set autosave to false
repeat while selectNum > 0
set selectedItem to value of item selectNum of theSelectedItems
set succeeded to my snooze(selectedItem, todayStart, snoozeLength)
if succeeded then set successTot to successTot + 1
set selectNum to selectNum - 1
end repeat
set autosave to true
set alertName to "General"
set alertTitle to "Script complete"
if successTot > 1 then set alertItemNum to "s"
set alertText to successTot & " item" & alertItemNum & " snoozed. The item" & alertItemNum & " will become available in " & snoozeLength & " day" & alertDayNum & "." as string
end tell
end tell
my notify(alertName, alertTitle, alertText)
end tell

on snooze(selectedItem, todayStart, snoozeLength)
set success to false
tell application "OmniFocus"
try
set newStart to (todayStart + (86400 * snoozeLength))
set start date of selectedItem to newStart
set success to true
end try
end tell
return success
end snooze

on notify(alertName, alertTitle, alertText)
if showAlert is false then
return
else if useGrowl is true then
--check to make sure Growl is running
tell application "System Events" to set GrowlRunning to ((application processes whose (name is equal to "GrowlHelperApp")) count)
if GrowlRunning = 0 then
--try to activate Growl
try
do shell script "/Library/PreferencePanes/Growl.prefPane/Contents/Resources/GrowlHelperApp.app/Contents/MacOS/GrowlHelperApp > /dev/null 2>&1 &"
do shell script "~/Library/PreferencePanes/Growl.prefPane/Contents/Resources/GrowlHelperApp.app/Contents/MacOS/GrowlHelperApp > /dev/null 2>&1 &"
end try
delay 0.2
tell application "System Events" to set GrowlRunning to ((application processes whose (name is equal to "GrowlHelperApp")) count)
end if
--notify
if GrowlRunning ≥ 1 then
try
tell application "GrowlHelperApp"
register as application growlAppName all notifications allNotifications default notifications allNotifications icon of application iconApplication
notify with name alertName title alertTitle application name growlAppName description alertText
end tell
end try
else
set alertText to alertText & "

p.s. Don't worry—the Growl notification failed but the script was successful."
display dialog alertText with icon 1
end if
else
display dialog alertText with icon 1
end if
end notify
[/CODE]


I downloaded Script Debugger like you use Bill and that was helpful. I was able to modify your scripts.
1) get it to check if actions had a repeat so it wouldn't run if they did.
2) Forward only the start date (sadly not from today's date but from the original start date but at least it kept the same start time).
3) Marked the actions as complete.

Still need to figure out how to get it to work with your append text to action name and how to duplicate a non repeating action if that is even possible.

*UPDATE: Found this forum for how to duplicate a non repeating action. [url]http://forums.omnigroup.com/showpost.php?p=101869&postcount=7[/url]

I plan on posting an update when I am able to work this out.

[QUOTE=whpalmer4;101836]

Onomatopoeic :-)

[/QUOTE]

Nice that is good! Thanks for a new word in my vocabulary, now if only I can remember that in the future.

[QUOTE=whpalmer4;101836]

Is "Task" different than "task" in Applescript? In all cases? No such worries with "oTask"! I think I've probably read more of Rob's Applescript than anyone else's, so some of his style may have rubbed off on me, especially the part about writing scripts for others instead of focusing on one's own work at times :-)[/QUOTE]

That makes sense thanks for the tip.

skillet 2011-09-15 06:17 PM

[QUOTE=DrJJWMac;101837]In essence then, you have a perspective (flagged) that does not show the repeat action. When you are truly intending to do the repeat action, flag it. Otherwise, consider it showing in your unflagged lists only as "available now for ongoing daily/weekly ... review" rather than "available now to do now". Then, you could stop worrying about how to shuffle the task off to a different date, only later to "re-shuffle" and then "re-shuffle" and then ... someday eventually maybe marking that task truly to do.

Just a thought.

ps -- You will have to unflag the repeat task before you check it off complete or your new repeat task will return as being flagged.

--
JJW[/QUOTE]

Thanks for the ideas, also your ps helped clarify the method described. Thanks for taking the time to explain this.

skillet 2011-09-17 05:42 PM

[QUOTE=skillet;101864]
I plan on posting an update when I am able to work this out.
[/QUOTE]

Ok I didn't work this out whpalmer4 did in [URL="http://forums.omnigroup.com/showthread.php?p=101930#post101930"]post 8[/URL]

It's even better than I thought it could be. It works on multiple actions and doesn't need to check if actions are repeating since it duplicates them and removes the repeat and flag. Here's the AppleScript he compiled.

[CODE]--*** This script uses four scripts combined
-- Some code from Dan Byler's "Snooze" script
(* # LICENSE #

Copyright © 2010 Dan Byler (contact: dbyler@gmail.com)
Licensed under MIT License (http://www.opensource.org/licenses/mit-license.php)
*)

--http://forums.omnigroup.com/showthread.php?p=101869#post101869 post 7 by scb
--***Copy a list of selected tasks , or an individual task, to non repeating and remove flags if any. The original task is marked as completed.

property prependText : "[Follow-Up] "

property showAlert : false --if true, will display success/failure alerts
property useGrowl : true --if true, will use Growl for success/failure alerts
property defaultSnooze : 1 --number of days to snooze by default
property alertItemNum : ""
property alertDayNum : ""
property growlAppName : "Dan's Scripts"
property allNotifications : {"General", "Error"}
property enabledNotifications : {"General", "Error"}
property iconApplication : "OmniFocus.app"

tell application "OmniFocus"
activate
tell default document
set FrontWindow to first document window whose index is 1
tell FrontWindow

display dialog "Snooze start date for how many days from today?" default answer defaultSnooze buttons {"Cancel", "OK"} default button 2
set snoozeLength to (the text returned of the result) as integer
set todayStart to (current date) - (get time of (current date))
if snoozeLength is not 1 then
set alertDayNum to "s"
end if

if ((count of leaves of selected trees of content) is 0) then
set theItems to value of selected trees of content
else
set theItems to (value of leaves of selected trees of content) as list
end if

set successTot to 0
repeat with anItem in theItems
if (class of anItem) is list then
repeat with subItem in anItem
if (class of subItem is task or class of subItem is inbox task) then

set newitem to duplicate subItem to after subItem
set repetition of newitem to missing value
set flagged of newitem to false
set completed of subItem to true
set name of subItem to prependText & name of subItem
set succeeded to my snooze(newitem, todayStart, snoozeLength)
if succeeded then set successTot to successTot + 1

end if
end repeat

else if (class of anItem is task or class of anItem is inbox task) then
set newitem to duplicate anItem to after anItem
set repetition of newitem to missing value
set flagged of newitem to false
set completed of anItem to true
set name of anItem to prependText & name of anItem
set succeeded to my snooze(newitem, todayStart, snoozeLength)
if succeeded then set successTot to successTot + 1

end if
end repeat
set alertName to "General"
set alertTitle to "Script complete"
if successTot > 1 then set alertItemNum to "s"
set alertText to successTot & " item" & alertItemNum & " snoozed. The item" & alertItemNum & " will become available in " & snoozeLength & " day" & alertDayNum & "." as string
my notify(alertName, alertTitle, alertText)
end tell
end tell
end tell


-- ***Now change only the start date from absolute date (today's date) and not relative date. Keep due date the same since that doesn't typically change (if so I would change that by hand or with another Dan's defer script)

--***The only thing I would change about this is to keep the start time (but not date) the same as it was, and not change it to 12AM like this script does. I really like that it moves it from today's date because that way I know the exact date all the selected actions will be on.

on snooze(selectedItem, todayStart, snoozeLength)
set success to false
tell application "OmniFocus"
try
set oldStart to start date of selectedItem
set daysBetween to (todayStart - oldStart) / days as integer -- compute # of full days between orig start date+time and start of today
-- new start is old start + daysBetween + snooze + 1 (because snoozeLength 1 means starts tomorrow, not today)
set newStart to oldStart + (days * (daysBetween + snoozeLength))
set start date of selectedItem to newStart
set success to true
end try
end tell
return success
end snooze

on notify(alertName, alertTitle, alertText)
if showAlert is false then
return
else if useGrowl is true then
--check to make sure Growl is running
tell application "System Events" to set GrowlRunning to ((application processes whose (name is equal to "GrowlHelperApp")) count)
if GrowlRunning = 0 then
--try to activate Growl
try
do shell script "/Library/PreferencePanes/Growl.prefPane/Contents/Resources/GrowlHelperApp.app/Contents/MacOS/GrowlHelperApp > /dev/null 2>&1 &"
do shell script "~/Library/PreferencePanes/Growl.prefPane/Contents/Resources/GrowlHelperApp.app/Contents/MacOS/GrowlHelperApp > /dev/null 2>&1 &"
end try
delay 0.2
tell application "System Events" to set GrowlRunning to ((application processes whose (name is equal to "GrowlHelperApp")) count)
end if
--notify
if GrowlRunning ≥ 1 then
try
tell application "GrowlHelperApp"
register as application growlAppName all notifications allNotifications default notifications allNotifications icon of application iconApplication
notify with name alertName title alertTitle application name growlAppName description alertText
end tell
end try
else
set alertText to alertText & "

p.s. Don't worry—the Growl notification failed but the script was successful."
display dialog alertText with icon 1
end if
else
display dialog alertText with icon 1
end if
end notify[/CODE]

mcogilvie 2011-12-27 08:44 AM

[QUOTE=whpalmer4;101408]This has come up before. It'll probably come up again.

If you duplicate (or create) a task in project mode, you can immediately see where it went and put it where you want it. Not so in context mode. Maybe you always want your duplicate task tucked in right behind the original, but I can't think of the last time where that was what I wanted to do with a duplicate.[/QUOTE]

I'm sorry, I think this is stupid behavior. 90% of the time, I do want the duplicate right behind the original because I'm dealing with a simple project. One could always change it in project view if necessary.

whpalmer4 2011-12-27 10:40 AM

Send feedback to Omni. If enough other people express that opinion, they'll consider changing it, though part of the calculus will undoubtedly be to look at whether the proposed change will make it more or less likely that they'll get support contacts from confused users. The current behavior inconveniences some, but doesn't generate frustrated users reporting "I tried Duplicate but nothing shows up!" My guess is that the count of people who have actually complained about this implementation decision is pretty small, relatively speaking.

Or you could use AppleScript to implement something that would do the Duplicate operation despite being in Context mode. Such a script might look something like this:

[code]

tell application "OmniFocus"
tell first document window of front document
set selTrees to selected trees of content
repeat with i from 1 to count of items of selTrees
try
set targetItem to value of item i of selTrees
set newItem to duplicate targetItem to after targetItem
on error
display alert "Time to learn some AppleScript!"
end try
end repeat
end tell
end tell
[/code]

It would suffer from the same problems, such as duplicated items not appearing next to the original (if grouping by Added, for example) or at all (if duplicating a sequential action in a Next Action view).

skillet 2011-12-27 01:18 PM

1 Attachment(s)
[QUOTE=mcogilvie;105407]I'm sorry, I think this is stupid behavior. 90% of the time, I do want the duplicate right behind the original because I'm dealing with a simple project. One could always change it in project view if necessary.[/QUOTE]

That frustrated me to, try this script and see if it work the way you like. You can turn on in the script if you want flags to be turned off on the duplicate.

Whpalmer4 (one of my OmniFocus script hero's) the script you posted duplicates the first selected action the amount of actions you have selected.

whpalmer4 2011-12-27 02:18 PM

Hmm, it didn't do that for me, but maybe I changed something after that test. Thanks for the report, I'll have a look back at the Mac.


All times are GMT -8. The time now is 09:35 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.