Как получить "имя таски" в ZP?

  • Автор темы Автор темы ibred
  • Дата начала Дата начала

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Реакции
3 564
Баллы
113
Последнее редактирование:
Имя текущего шаблона из шаблона возможно узнать так:
C#:
Развернуть Свернуть Копировать
return project.Name;
 
Имя текущего шаблона из шаблона возможно узнать так:
C#:
Развернуть Свернуть Копировать
return project.Name;
Не совсем то. Сам файл шаблона может называться "SuperProject.xmlz", а его имя в ZP: "Example2". Вот, собственно, мне нужно получить "Example2".
 
Не совсем то. Сам файл шаблона может называться "SuperProject.xmlz", а его имя в ZP: "Example2". Вот, собственно, мне нужно получить "Example2".
макрос {-Project.Name-}
а расширение можно откусить регуляркой..

upload_2015-12-20_16-37-29.png
 
макрос {-Project.Name-}
а расширение можно откусить регуляркой..
Вы видимо невнимательно прочитали мой пост выше. Даже на Вашем примере, название шаблона "3446.xmlz", но имя таски этого шаблона в ZennoPoster может быть "Example", например.
Мне нужно получить ИМЕННО НАЗВАНИЕ ТАСКИ, а не имя шаблона.
 
Вы видимо невнимательно прочитали мой пост выше. Даже на Вашем примере, название шаблона "3446.xmlz", но имя таски этого шаблона в ZennoPoster может быть "Example", например.
Мне нужно получить ИМЕННО НАЗВАНИЕ ТАСКИ, а не имя шаблона.
это для Зеннобокса нужно?
 
это для Зеннобокса нужно?
Да.
Я могу обратиться к таске по названию шаблона, но проблема в том, что клиент мог её (таску) переименовать и тогда шаблон перестанет корректно работать.
 
Да.
Я могу обратиться к таске по названию шаблона, но проблема в том, что клиент мог её (таску) переименовать и тогда шаблон перестанет корректно работать.
на сколько я в курсе, клиент не может переименовывать в зеннобоксе проекты..
проектировщик (тот кто выписывает проект в ЗБ) назначает имя проекту, отличное от имени файла..
 
Последнее редактирование:
на сколько я в курсе, клиент не может переименовывать в зеннобоксе проекты..
проектировщик назначает имя проекту, отличное от имени файла..
zb_rename.gif

Пытаюсь решить этот вопрос для ZB, но в целом, это актуально и в ZennoPoster.
Ещё раз изложу мысль, может как-то не так сформулировал изначально:
Есть шаблон:
2015-12-20_16-50-44.jpg
Загружая его в ZennoPoster или в ZennoBox. Мы можем переименовать имя задания для этого шаблона, например на:
2015-12-20_16-49-14.jpg

Мне необходимо получить в переменную "имя задания" текущего шаблона. То есть, на данном примере, это "Send Wall".
А {-Project.Name-} и return project.Name; получат в переменную project_n1.xmlz
Понимаете о чем я? :-)
 
  • Спасибо
Реакции: MaxLucky
упс, даже не знал, что в ЗБ можно переименовывать проекты.. o_O:ah:
 
Неужели никто не знает? :cm:
 
а зачем вам имя?

вот так можно получить id проекта добавленного
project.TaskId;
 
  • Спасибо
Реакции: Yuriy Zymlex и Ribas
а зачем вам имя?

вот так можно получить id проекта добавленного
project.TaskId;
Просто у меня версия 5.4.*, не поддерживающая project.TaskId; :ah:
Обновиться в данный момент проблематично. Поэтому ищу альтернативы. Я правильно понимаю, что получить имя задания невозможно, только id?
 
Да.
:(
 
А вот и нет :) как говорится «не прошло и года».
Подтянул знания в C# и соорудил решение данного вопроса:
Код:
Развернуть Свернуть Копировать
string taskName = string.Empty;
var tasksList = new List<string>(ZennoPoster.TasksList);

for(int a = 0; a < tasksList.Count; a++)
   {
   var projectDir = project.Directory+"\\"+project.Name;
   var tasks = ZennoPoster.TasksList;
   foreach(var task in tasks)
   {
     var doc = new System.Xml.XmlDocument();
     doc.LoadXml("<Task>" + task + "</Task>");
     var DirNode = doc.SelectSingleNode("Task/Project/ProjectFileLocation");
     if(DirNode != null && DirNode.InnerText.Equals(projectDir))
     {
         if (Global.Variables.IsProjectMaker) if (!Global.Variables.IsDebugMode) break;
         taskName = doc.SelectSingleNode("Task/Name").InnerText;
         return taskName;

     }
   }
}
 
А вот и нет :-) как говорится «не прошло и года».
Подтянул знания в C# и соорудил решение данного вопроса:
Код:
Развернуть Свернуть Копировать
string taskName = string.Empty;
var tasksList = new List<string>(ZennoPoster.TasksList);

for(int a = 0; a < tasksList.Count; a++)
   {
   var projectDir = project.Directory+"\\"+project.Name;
   var tasks = ZennoPoster.TasksList;
   foreach(var task in tasks)
   {
     var doc = new System.Xml.XmlDocument();
     doc.LoadXml("<Task>" + task + "</Task>");
     var DirNode = doc.SelectSingleNode("Task/Project/ProjectFileLocation");
     if(DirNode != null && DirNode.InnerText.Equals(projectDir))
     {
         if (Global.Variables.IsProjectMaker) if (!Global.Variables.IsDebugMode) break;
         taskName = doc.SelectSingleNode("Task/Name").InnerText;
         return taskName;

     }
   }
}

Спасибо за решение, очень помогли.
Но если в ZP есть другой таск проекта, тогда имя будет последнего таска, поэтому немного дополнил Ваш код, может кому пригодится.
Код:
Развернуть Свернуть Копировать
string taskName, taskId = string.Empty;
var tasksList = new List < string > (ZennoPoster.TasksList);

for (int a = 0; a < tasksList.Count; a++) 
{
    var projectDir = project.Directory + "\\" + project.Name;
    var tasks = ZennoPoster.TasksList;
    foreach(var task in tasks) 
    {
        var doc = new System.Xml.XmlDocument();
        doc.LoadXml("<Task>" + task + "</Task>");
        var DirNode = doc.SelectSingleNode("Task/Project/ProjectFileLocation");
        if (DirNode != null && DirNode.InnerText.Equals(projectDir)) 
        {
            if (Global.Variables.IsProjectMaker) if (!Global.Variables.IsDebugMode) break;
            taskId = doc.SelectSingleNode("Task/Id").InnerText;
            taskName = doc.SelectSingleNode("Task/Name").InnerText;
            if (taskId == project.TaskId) 
            {
                return taskName;
            }
        }
    }
}
 
  • Спасибо
Реакции: Bas и kul0n
Спасибо за решение, очень помогли.
Но если в ZP есть другой таск проекта, тогда имя будет последнего таска, поэтому немного дополнил Ваш код, может кому пригодится.
Код:
Развернуть Свернуть Копировать
string taskName, taskId = string.Empty;
var tasksList = new List < string > (ZennoPoster.TasksList);

for (int a = 0; a < tasksList.Count; a++)
{
    var projectDir = project.Directory + "\\" + project.Name;
    var tasks = ZennoPoster.TasksList;
    foreach(var task in tasks)
    {
        var doc = new System.Xml.XmlDocument();
        doc.LoadXml("<Task>" + task + "</Task>");
        var DirNode = doc.SelectSingleNode("Task/Project/ProjectFileLocation");
        if (DirNode != null && DirNode.InnerText.Equals(projectDir))
        {
            if (Global.Variables.IsProjectMaker) if (!Global.Variables.IsDebugMode) break;
            taskId = doc.SelectSingleNode("Task/Id").InnerText;
            taskName = doc.SelectSingleNode("Task/Name").InnerText;
            if (taskId == project.TaskId)
            {
                return taskName;
            }
        }
    }
}
если просто нужно выяснить имя, то достаточно просто регуляркой выпарсить, отталкиваясь от айдишника
 

Либо вопрос сформулировал не корректно, либо топик тот изучал не внимательно.. мне надо, чтобы шаблон после старта получил свое имя из постера.

на данный момент выкручиваюсь получая ID шаблона после запуска через

Guid id = Guid.Parse(project.TaskId);
return id;

Дальше он по своему ID ищет себя в базе и там берет задание для работы.
 
Последнее редактирование:
Либо вопрос сформулировал не корректно, либо топик тот изучал не внимательно.. мне надо, чтобы шаблон после старта получил свое имя из постера.

на данный момент выкручиваюсь получая ID шаблона после запуска через

Guid id = Guid.Parse(project.TaskId);
return id;

Дальше он по своему ID ищет себя в базе и там берет задание для работы.
Как вариант -

C#:
Развернуть Свернуть Копировать
var id = Guid.Parse(project.TaskId);
var task_info = ZennoPoster.GetTaskInfo(id);
return task_info;

и оттуда вытаскивать что нужно
 
Как вариант -

C#:
Развернуть Свернуть Копировать
var id = Guid.Parse(project.TaskId);
var task_info = ZennoPoster.GetTaskInfo(id);
return task_info;

и оттуда вытаскивать что нужно

Спасибо. в результате получаем кучу данных по проекту, из которых отдельным кубиком получается спарсить название проекта регуляркой
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)