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

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113
Последнее редактирование:

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Имя текущего шаблона из шаблона возможно узнать так:
C#:
return project.Name;
 

ibred

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 470
Благодарностей
8 692
Баллы
113
Не совсем то. Сам файл шаблона может называться "SuperProject.xmlz", а его имя в ZP: "Example2". Вот, собственно, мне нужно получить "Example2".
макрос {-Project.Name-}
а расширение можно откусить регуляркой..

upload_2015-12-20_16-37-29.png
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113
макрос {-Project.Name-}
а расширение можно откусить регуляркой..
Вы видимо невнимательно прочитали мой пост выше. Даже на Вашем примере, название шаблона "3446.xmlz", но имя таски этого шаблона в ZennoPoster может быть "Example", например.
Мне нужно получить ИМЕННО НАЗВАНИЕ ТАСКИ, а не имя шаблона.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 470
Благодарностей
8 692
Баллы
113
Вы видимо невнимательно прочитали мой пост выше. Даже на Вашем примере, название шаблона "3446.xmlz", но имя таски этого шаблона в ZennoPoster может быть "Example", например.
Мне нужно получить ИМЕННО НАЗВАНИЕ ТАСКИ, а не имя шаблона.
это для Зеннобокса нужно?
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113
это для Зеннобокса нужно?
Да.
Я могу обратиться к таске по названию шаблона, но проблема в том, что клиент мог её (таску) переименовать и тогда шаблон перестанет корректно работать.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 470
Благодарностей
8 692
Баллы
113
Да.
Я могу обратиться к таске по названию шаблона, но проблема в том, что клиент мог её (таску) переименовать и тогда шаблон перестанет корректно работать.
на сколько я в курсе, клиент не может переименовывать в зеннобоксе проекты..
проектировщик (тот кто выписывает проект в ЗБ) назначает имя проекту, отличное от имени файла..
 
Последнее редактирование:

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113
на сколько я в курсе, клиент не может переименовывать в зеннобоксе проекты..
проектировщик назначает имя проекту, отличное от имени файла..
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
Понимаете о чем я? :-)
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 470
Благодарностей
8 692
Баллы
113
упс, даже не знал, что в ЗБ можно переименовывать проекты.. o_O:ah:
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113
Неужели никто не знает? :cm:
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
а зачем вам имя?

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

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113
а зачем вам имя?

вот так можно получить id проекта добавленного
project.TaskId;
Просто у меня версия 5.4.*, не поддерживающая project.TaskId; :ah:
Обновиться в данный момент проблематично. Поэтому ищу альтернативы. Я правильно понимаю, что получить имя задания невозможно, только id?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Да.
:(
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 544
Баллы
113
А вот и нет :-) как говорится «не прошло и года».
Подтянул знания в 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;

     }
   }
}
 

rich7

Client
Регистрация
18.02.2016
Сообщения
66
Благодарностей
40
Баллы
18

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с rich7 какие-либо сделки.

А вот и нет :-) как говорится «не прошло и года».
Подтянул знания в 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

doc

Client
Регистрация
30.03.2012
Сообщения
8 607
Благодарностей
4 600
Баллы
113
Спасибо за решение, очень помогли.
Но если в 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;
            }
        }
    }
}
если просто нужно выяснить имя, то достаточно просто регуляркой выпарсить, отталкиваясь от айдишника
 

Konrod_m

Client
Регистрация
18.09.2014
Сообщения
1 662
Благодарностей
920
Баллы
113

zennoX

Client
Регистрация
05.04.2014
Сообщения
482
Благодарностей
131
Баллы
43

Konrod_m

Client
Регистрация
18.09.2014
Сообщения
1 662
Благодарностей
920
Баллы
113
Либо вопрос сформулировал не корректно, либо топик тот изучал не внимательно.. мне надо, чтобы шаблон после старта получил свое имя из постера.

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

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

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

zennoX

Client
Регистрация
05.04.2014
Сообщения
482
Благодарностей
131
Баллы
43
Либо вопрос сформулировал не корректно, либо топик тот изучал не внимательно.. мне надо, чтобы шаблон после старта получил свое имя из постера.

на данный момент выкручиваюсь получая 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;
и оттуда вытаскивать что нужно
 
  • Спасибо
Реакции: redman и Konrod_m

Konrod_m

Client
Регистрация
18.09.2014
Сообщения
1 662
Благодарностей
920
Баллы
113
Как вариант -

C#:
var id = Guid.Parse(project.TaskId);
var task_info = ZennoPoster.GetTaskInfo(id);
return task_info;
и оттуда вытаскивать что нужно
Спасибо. в результате получаем кучу данных по проекту, из которых отдельным кубиком получается спарсить название проекта регуляркой
 

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